本文实例讲述了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程序设计有所帮助。