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之eval()函数危险性浅析
Jul 03 Python
Python实现二分查找算法实例
May 26 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
Python设计模式之原型模式实例详解
Jan 18 Python
pytorch 实现tensor与numpy数组转换
Dec 27 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
Python任务自动化工具tox使用教程
Mar 17 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
python开发飞机大战游戏
Jul 15 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
DedeCms模板安装/制作概述
2007/03/11 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
python与mysql数据库交互的实现
2020/01/06 Python
Python多线程正确用法实例解析
2020/05/30 Python
python中的yield from语法快速学习
2020/11/06 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
工厂厂长的职责
2013/12/12 职场文书
妇女干部培训方案
2014/05/12 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
python中pymysql包操作数据库方法
2022/04/19 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android