OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python311
/
lib
/
python3.11
/
site-packages
/
validators
Server IP: 2a02:4780:11:1594:0:ef5:22d7:a
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
01/09/2025 02:18:04 AM
rwxr-xr-x
📄
__init__.py
1.86 KB
05/14/2024 03:18:23 PM
rw-r--r--
📁
__pycache__
-
05/14/2024 03:18:23 PM
rwxr-xr-x
📄
_extremes.py
1.01 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
_tld.txt
9.4 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
between.py
2.39 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
btc_address.py
1.62 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
card.py
5.63 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
country.py
14.57 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
cron.py
2.23 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
domain.py
2.4 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
email.py
2.72 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
encoding.py
1.34 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
finance.py
3.22 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
hashes.py
3.21 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
hostname.py
4.05 KB
05/14/2024 03:18:23 PM
rw-r--r--
📁
i18n
-
05/14/2024 03:18:23 PM
rwxr-xr-x
📄
iban.py
1.05 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
ip_address.py
4.34 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
length.py
1.45 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
mac_address.py
865 bytes
05/14/2024 03:18:23 PM
rw-r--r--
📄
py.typed
0 bytes
05/14/2024 03:18:23 PM
rw-r--r--
📄
slug.py
750 bytes
05/14/2024 03:18:23 PM
rw-r--r--
📄
uri.py
1.78 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
url.py
7.23 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
utils.py
3.1 KB
05/14/2024 03:18:23 PM
rw-r--r--
📄
uuid.py
1.04 KB
05/14/2024 03:18:23 PM
rw-r--r--
Editing: card.py
Close
"""Card.""" # standard import re # local from .utils import validator @validator def card_number(value: str, /): """Return whether or not given value is a valid generic card number. This validator is based on [Luhn's algorithm][1]. [1]: https://github.com/mmcloughlin/luhn Examples: >>> card_number('4242424242424242') # Output: True >>> card_number('4242424242424241') # Output: ValidationError(func=card_number, args={'value': '4242424242424241'}) Args: value: Generic card number string to validate Returns: (Literal[True]): If `value` is a valid generic card number. (ValidationError): If `value` is an invalid generic card number. """ if not value: return False try: digits = list(map(int, value)) odd_sum = sum(digits[-1::-2]) even_sum = sum(sum(divmod(2 * d, 10)) for d in digits[-2::-2]) return (odd_sum + even_sum) % 10 == 0 except ValueError: return False @validator def visa(value: str, /): """Return whether or not given value is a valid Visa card number. Examples: >>> visa('4242424242424242') # Output: True >>> visa('2223003122003222') # Output: ValidationError(func=visa, args={'value': '2223003122003222'}) Args: value: Visa card number string to validate Returns: (Literal[True]): If `value` is a valid Visa card number. (ValidationError): If `value` is an invalid Visa card number. """ pattern = re.compile(r"^4") return card_number(value) and len(value) == 16 and pattern.match(value) @validator def mastercard(value: str, /): """Return whether or not given value is a valid Mastercard card number. Examples: >>> mastercard('5555555555554444') # Output: True >>> mastercard('4242424242424242') # Output: ValidationError(func=mastercard, args={'value': '4242424242424242'}) Args: value: Mastercard card number string to validate Returns: (Literal[True]): If `value` is a valid Mastercard card number. (ValidationError): If `value` is an invalid Mastercard card number. """ pattern = re.compile(r"^(51|52|53|54|55|22|23|24|25|26|27)") return card_number(value) and len(value) == 16 and pattern.match(value) @validator def amex(value: str, /): """Return whether or not given value is a valid American Express card number. Examples: >>> amex('378282246310005') # Output: True >>> amex('4242424242424242') # Output: ValidationError(func=amex, args={'value': '4242424242424242'}) Args: value: American Express card number string to validate Returns: (Literal[True]): If `value` is a valid American Express card number. (ValidationError): If `value` is an invalid American Express card number. """ pattern = re.compile(r"^(34|37)") return card_number(value) and len(value) == 15 and pattern.match(value) @validator def unionpay(value: str, /): """Return whether or not given value is a valid UnionPay card number. Examples: >>> unionpay('6200000000000005') # Output: True >>> unionpay('4242424242424242') # Output: ValidationError(func=unionpay, args={'value': '4242424242424242'}) Args: value: UnionPay card number string to validate Returns: (Literal[True]): If `value` is a valid UnionPay card number. (ValidationError): If `value` is an invalid UnionPay card number. """ pattern = re.compile(r"^62") return card_number(value) and len(value) == 16 and pattern.match(value) @validator def diners(value: str, /): """Return whether or not given value is a valid Diners Club card number. Examples: >>> diners('3056930009020004') # Output: True >>> diners('4242424242424242') # Output: ValidationError(func=diners, args={'value': '4242424242424242'}) Args: value: Diners Club card number string to validate Returns: (Literal[True]): If `value` is a valid Diners Club card number. (ValidationError): If `value` is an invalid Diners Club card number. """ pattern = re.compile(r"^(30|36|38|39)") return card_number(value) and len(value) in {14, 16} and pattern.match(value) @validator def jcb(value: str, /): """Return whether or not given value is a valid JCB card number. Examples: >>> jcb('3566002020360505') # Output: True >>> jcb('4242424242424242') # Output: ValidationError(func=jcb, args={'value': '4242424242424242'}) Args: value: JCB card number string to validate Returns: (Literal[True]): If `value` is a valid JCB card number. (ValidationError): If `value` is an invalid JCB card number. """ pattern = re.compile(r"^35") return card_number(value) and len(value) == 16 and pattern.match(value) @validator def discover(value: str, /): """Return whether or not given value is a valid Discover card number. Examples: >>> discover('6011111111111117') # Output: True >>> discover('4242424242424242') # Output: ValidationError(func=discover, args={'value': '4242424242424242'}) Args: value: Discover card number string to validate Returns: (Literal[True]): If `value` is a valid Discover card number. (ValidationError): If `value` is an invalid Discover card number. """ pattern = re.compile(r"^(60|64|65)") return card_number(value) and len(value) == 16 and pattern.match(value)