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 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 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 MERCHANTABILITY or fitness for a particle PURPOSE. See GNU General Public License for more details. You shoshould have your ed 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, howlist ): Result = [] While len (result) 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 )) |