Guest User

Untitled

a guest
Jul 18th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. """
  4. gencc: A simple program to generate credit card numbers that pass the MOD 10 check
  5. (Luhn formula).
  6. Usefull for testing e-commerce sites during development.
  7.  
  8. Copyright 2003 Graham King
  9.  
  10. This program is free software; you can redistribute it and/or modify
  11. it under the terms of the GNU General Public License as published by
  12. the Free Software Foundation; either version 2 of the License, or
  13. (at your option) any later version.
  14.  
  15. This program is distributed in the hope that it will be useful,
  16. but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. GNU General Public License for more details.
  19.  
  20. You should have received a copy of the GNU General Public License
  21. along with this program; if not, write to the Free Software
  22. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23. """
  24.  
  25. from random import Random
  26. import sys
  27. import copy
  28.  
  29. visaPrefixList = [ ['4', '5', '3', '9'],
  30. ['4', '5', '5', '6'],
  31. ['4', '9', '1', '6'],
  32. ['4', '5', '3', '2'],
  33. ['4', '9', '2', '9'],
  34. ['4', '0', '2', '4', '0', '0', '7', '1'],
  35. ['4', '4', '8', '6'],
  36. ['4', '7', '1', '6'],
  37. ['4'] ]
  38.  
  39. mastercardPrefixList = [ ['5', '1'],
  40. ['5', '2'],
  41. ['5', '3'],
  42. ['5', '4'],
  43. ['5', '5'] ]
  44.  
  45. amexPrefixList = [ ['3', '4'],
  46. ['3', '7'] ]
  47.  
  48. discoverPrefixList = [ ['6', '0', '1', '1'] ]
  49.  
  50.  
  51. """
  52. 'prefix' is the start of the CC number as a string, any number of digits.
  53. 'length' is the length of the CC number to generate. Typically 13 or 16
  54. """
  55. def completed_number(prefix, length):
  56.  
  57. ccnumber = prefix
  58.  
  59. # generate digits
  60.  
  61. while len(ccnumber) < (length - 1):
  62. digit = generator.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])
  63. ccnumber.append(digit)
  64.  
  65.  
  66. # Calculate sum
  67.  
  68. sum = 0
  69. pos = 0
  70.  
  71. reversedCCnumber = []
  72. reversedCCnumber.extend(ccnumber)
  73. reversedCCnumber.reverse()
  74.  
  75. while pos < length - 1:
  76.  
  77. odd = int( reversedCCnumber[pos] ) * 2
  78. if odd > 9:
  79. odd -= 9
  80.  
  81. sum += odd
  82.  
  83. if pos != (length - 2):
  84.  
  85. sum += int( reversedCCnumber[pos+1] )
  86.  
  87. pos += 2
  88.  
  89. # Calculate check digit
  90.  
  91. checkdigit = ((sum / 10 + 1) * 10 - sum) % 10
  92.  
  93. ccnumber.append( str(checkdigit) )
  94.  
  95. return ''.join(ccnumber)
  96.  
  97. def credit_card_number(generator, prefixList, length, howMany):
  98.  
  99. result = []
  100.  
  101. for i in range(howMany):
  102.  
  103. ccnumber = copy.copy( generator.choice(prefixList) )
  104.  
  105. result.append( completed_number(ccnumber, length) )
  106.  
  107. return result
  108.  
  109. def output(title, numbers):
  110.  
  111. result = []
  112. result.append(title)
  113. result.append( '-' * len(title) )
  114. result.append( '\n'.join(numbers) )
  115. result.append( '' )
  116.  
  117. return '\n'.join(result)
  118.  
  119. #
  120. # Main
  121. #
  122.  
  123. generator = Random()
  124. generator.seed() # Seed from current time
  125.  
  126. ## Generated CC nos
  127.  
  128. mastercard = credit_card_number(generator, mastercardPrefixList, 16, 10)
  129. print output("Mastercard", mastercard)
  130.  
  131. visa16 = credit_card_number(generator, visaPrefixList, 16, 10)
  132. print output("VISA 16 digit", visa16)
  133.  
  134. visa13 = credit_card_number(generator, visaPrefixList, 13, 5)
  135. print output("VISA 13 digit", visa13)
  136.  
  137. amex = credit_card_number(generator, amexPrefixList, 15, 5)
  138. print output("American Express", amex)
  139.  
  140. discover = credit_card_number(generator, discoverPrefixList, 16, 3)
  141. print output("Discover", discover)
Add Comment
Please, Sign In to add comment