This article illustrates the implementation of Python's randomly generated credit card number. Share to everyone for your reference. The specific analysis is as follows:
This Python code generates the credit card number according to the credit card number generation rule randomly, can pass the verification, only for the study reference, please do not use for the illegal use, otherwise the consequence is conceited.
#! / usr / bin / python
"" "
gencc: A simple program to generate credit card numbers that pass the
MOD 10 check (Luhn formula).
Usefull for testing e-commerce sites during development.
Copyright 2003-2012 Graham King
This program is free software; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"" "
# Different naming convention, because translated from PHP
# pylint: disable = C0103
from random import Random
import copy
visaPrefixList = [
['4', '5', '3', '9'],
['4', '5', '5', '6'],
['4', '9', '1', '6'],
['4', '5', '3', '2'],
['4', '9', '2', '9'],
['4', '0', '2', '4', '0', '0', '7', '1'],
['4', '4', '8', '6'],
['4', '7', '1', '6'],
['4']] mastercardPrefixList = [
['5', '1'], ['5', '2'], ['5', '3'], ['5', '4'], ['5', '5']] amexPrefixList = [['3', '4'], ['3', '7']] discoverPrefixList = [['6', '0', '1', '1']] dinersPrefixList = [
['3', '0', '0'],
['3', '0', '1'],
['3', '0', '2'],
['3', '0', '3'],
['3', '6'],
['3', '8']] enRoutePrefixList = [['2', '0', '1', '4'], ['2', '1', '4', '9']] jcbPrefixList = [['3', '5']] voyagerPrefixList = [['8', '6', '9', '9']] def completed_number (prefix, length):
"" "
'prefix' is the start of the CC number as a string, any number of digits.
'length' is the length of the CC number to generate. Typically 13 or 16
"" "
ccnumber = prefix
# generate digits
while len (ccnumber) <(length-1):
digit = str (generator.choice (range (0, 10)))
ccnumber.append (digit)
# Calculate sum
sum = 0
pos = 0
reversedCCnumber = [] reversedCCnumber.extend (ccnumber)
reversedCCnumber.reverse ()
while pos <length-1:
odd = int (reversedCCnumber [pos]) * 2
if odd> 9:
odd-= 9
sum + = odd
if pos! = (length-2):
sum + = int (reversedCCnumber [pos + 1])
pos + = 2
# Calculate check digit
checkdigit = ((sum / 10 + 1) * 10-sum)% 10
ccnumber.append (str (checkdigit))
return '' .join (ccnumber)
def credit_card_number (rnd, prefixList, length, howMany):
result = [] while len (result) <howMany:
ccnumber = copy.copy (rnd.choice (prefixList))
result.append (completed_number (ccnumber, length))
return result
def output (title, numbers):
result = [] result.append (title)
result.append ('-' * len (title))
result.append ('\ n'.join (numbers))
result.append ('')
return '\ n'.join (result)
##
# Main
##
generator = Random ()
generator.seed () # Seed from current time
print ("darkcoding credit card generator \ n")
mastercard = credit_card_number (generator, mastercardPrefixList, 16, 10)
print (output ("Mastercard", mastercard))
visa16 = credit_card_number (generator, visaPrefixList, 16, 10)
print (output ("VISA 16 digit", visa16))
visa13 = credit_card_number (generator, visaPrefixList, 13, 5)
print (output ("VISA 13 digit", visa13))
amex = credit_card_number (generator, amexPrefixList, 15, 5)
print (output ("American Express", amex))
# Minor cards
discover = credit_card_number (generator, discoverPrefixList, 16, 3)
print (output ("Discover", discover))
diners = credit_card_number (generator, dinersPrefixList, 14, 3)
print (output ("Diners Club / Carte Blanche", diners))
enRoute = credit_card_number (generator, enRoutePrefixList, 15, 3)
print (output ("enRoute", enRoute))
jcb = credit_card_number (generator, jcbPrefixList, 16, 3)
print (output ("JCB", jcb))
voyager = credit_card_number (generator, voyagerPrefixList, 15, 3)
print (output ("Voyager", voyager))
The results are as follows:
darkcoding credit card generator
Mastercard
----------
5249241445603178
5474662131739768
5581517450441661
5588253309068355
5514774944030079
5122826749528287
5152966434002124
5268127987312292
5385676074198087
5330181839518097
VISA 16 digit
-------------
4539503803848378
4716973052847436
4556149936260376
4486565514724761
4556309354978160
4486560485591158
4916213564870669
4486704671699934
4532839100193192
4486613519985266
VISA 13 digit
-------------
4929905559973
4556870828321
4916868200216
4556189916056
4024007171180
American Express
----------------
376197656730660
342421777432696
342896016604918
343458311286898
374543958196088
Discover
--------
6011676180456692
6011298953567876
6011699666196053
Diners Club / Carte Blanche
---------------------------
30066643308583
38302315481859
38251784096120
enRoute
-------
214935400146170
201435309964331
201450317314858
JCB
---
3506641780149880
3561856856065701
3508395818816022
Voyager
-------
869984254736122
869938197246102
869921075232782
Hope this article is helpful to everyone's Python programming.
Articles you may be interested in: Python's method of randomly generating mobile phone numbers and regular verification of mobile phone numbersPython's method of randomly generating mobile phone numbers and numbers Example of a method for creating a random phone number in Python
Example of shooting function Python mobile phone number attribution query code