Python随机生成信用卡卡号的实现方法


Posted in Python onMay 14, 2015

本文实例讲述了Python随机生成信用卡卡号的实现方法。分享给大家供大家参考。具体分析如下:

这段Python代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。

#!/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))

运行结果如下:

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程序设计有所帮助。

Python 相关文章推荐
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Python使用pdb调试代码的技巧
May 03 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
python中最小二乘法详细讲解
Feb 19 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
Python数据分析之绘图和可视化详解
Jun 02 Python
讲解Python中运算符使用时的优先级
May 14 #Python
讲解Python中的标识运算符
May 14 #Python
在Python中使用成员运算符的示例
May 13 #Python
总结Python中逻辑运算符的使用
May 13 #Python
解析Python中的二进制位运算符
May 13 #Python
整理Python中的赋值运算符
May 13 #Python
实例说明Python中比较运算符的使用
May 13 #Python
You might like
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
浅谈php自定义错误日志
2015/02/13 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
img标签中onerror用法
2009/08/13 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
js实现无缝滚动图
2017/02/22 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
Python Flask基础教程示例代码
2018/02/07 Python
python如何定义带参数的装饰器
2018/03/20 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Python序列类型的打包和解包实例
2019/12/21 Python
浅谈Python3中print函数的换行
2020/08/05 Python
基于python实现坦克大战游戏
2020/10/27 Python
python openCV自制绘画板
2020/10/27 Python
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
大型车展策划方案
2014/02/01 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python
netty 实现tomcat的示例代码
2022/06/05 Servers