本文实例讲述了Python随机生成信用卡卡号的实现方法。分享给大家供大家参考。具体分析如下:
这段Python代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/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))
|
运行结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
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
|
希望本文所述对大家的Python程序设计有所帮助。