美文网首页
Python随机生成信用卡卡号源码

Python随机生成信用卡卡号源码

作者: fengqinyang | 来源:发表于2019-05-07 10:54 被阅读0次

    把开发过程重要的代码段珍藏起来,下边代码段是关于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:

            if odd > 9:

                odd -= 9

            sum += odd

            if pos != (length - 2):

                sum += int(reversedCCnumber[pos + 1])

            pos += 2

        # Calculate check digit

        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('n'.join(numbers))

        result.append('')

        return 'n'.join(result)

    #

    # Main

    #

    generator = Random()

    generator.seed()        # Seed from current time

    print("darkcoding credit card generatorn")

    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))

    相关文章

      网友评论

          本文标题:Python随机生成信用卡卡号源码

          本文链接:https://www.haomeiwen.com/subject/mrteoqtx.html