- Регистрация
- 31.12.2019
- Сообщения
- 6,460
- Реакции
- 9
Несколько дней назад мне перепал архив с 1+ лямами строк различных сс. Как оказалось, в этом архиве даже номера карт были невалид.
Мне стало интересно откуда тогда этот архив взялся (я его нашел на старом сервере) и кто его автор.
По итогу вместо поисков мне почему-то стало интересна эта тема и я решил сесть за написание скрипта на питоне, который бы генерировал данные от карт + фул инфу о кх.
Зачем я это делал? Не знаю. Возможно видел в этом какую-то перспективу, если бы существовал какой нибудь чекер, который мог прогнать условные 1 миллион сс.
Так же была идея сесть за написание скрипта, который бы генерировал все возможные комбинации срока карты + цвв, от указанного номера карты.
Есть две версии этого скрипта.
Первая версия генерирует номер карты случайно, нужно лишь указать тип карты (виза\мастеркард и т.д)
Вторая версия генерирует номер карты по нужному для вас бину.
Я скину обе. Может кому-то пригодится.
Заранее извините за говно-код. Лепил это для себя, а не на продакшн.
#pip install Faker
Вторая версия, с генерацией по нужному бину:
Мне стало интересно откуда тогда этот архив взялся (я его нашел на старом сервере) и кто его автор.
По итогу вместо поисков мне почему-то стало интересна эта тема и я решил сесть за написание скрипта на питоне, который бы генерировал данные от карт + фул инфу о кх.
Зачем я это делал? Не знаю. Возможно видел в этом какую-то перспективу, если бы существовал какой нибудь чекер, который мог прогнать условные 1 миллион сс.
Так же была идея сесть за написание скрипта, который бы генерировал все возможные комбинации срока карты + цвв, от указанного номера карты.
Есть две версии этого скрипта.
Первая версия генерирует номер карты случайно, нужно лишь указать тип карты (виза\мастеркард и т.д)
Вторая версия генерирует номер карты по нужному для вас бину.
Я скину обе. Может кому-то пригодится.
Заранее извините за говно-код. Лепил это для себя, а не на продакшн.
#pip install Faker
Код:
import random
from faker import Faker
fakeit = Faker()
gen = int(input("Введите количество для генерации сс: "))
f = open("cc.txt", 'w')
for card in range (gen):
np = str(fakeit.credit_card_number(card_type='visa')) + "|" + str(random.randint(2, 12)).zfill(2) + "|" + str(random.randint(2021, 2025)) + "|" + str(fakeit.credit_card_security_code()) + "|" + str(fakeit.name()) + "|" + str(fakeit.date_of_birth(tzinfo=None, minimum_age=20, maximum_age=55)) + "|" + str(fakeit.building_number()) + " " + str(fakeit.city()) + " " + " " + str(fakeit.street_address()) + " " + str(fakeit.postcode()) + "|" + str(fakeit.ssn()) + "|" + str(fakeit.phone_number()) + "\n"
f.write(str(np))
f.close()
Вторая версия, с генерацией по нужному бину:
Код:
import random
from faker import Faker
fakeit = Faker()
f = open("cc.txt", 'w')
BIN = input("Введите бин: ")
col = int(input("Введите количество для генерации номера карты: "))
def luhn_checksum(card_number):
def digits_of(n):
return [int(d) for d in str(n)]
digits = digits_of(card_number)
odd_digits = digits[-1::-2]
even_digits = digits[-2::-2]
checksum = 0
checksum += sum(odd_digits)
for d in even_digits:
checksum += sum(digits_of(d*2))
return checksum % 10
def is_luhn_valid(card_number):
return luhn_checksum(card_number) == 0
for cc in range (col):
Number = str(BIN) + str(random.randint(0000000000, 9999999999))
ex = str(random.randint(2, 12)) + "/" + str(random.randint(21, 25))
cvv = random.randint(100, 999)
f.write(
str(Number) + "\n"
)
f.close()
ff = open("cc.txt", 'r')
qa = open("valid cc.txt", 'w')
for cc in range(col):
m = ff.readline()
result = is_luhn_valid(int(m))
if result == True:
qa.write(str(m))
ff.close()
qa.close()
print("Валидных карт: " + str(len(open("valid cc.txt", 'r').readlines())))
gen = int(input("Введите количество для генерации сс+full info: "))
qa = open("valid cc.txt", 'r')
f = open("cc.txt", 'w')
for card in range (gen):
Number = qa.readline().rstrip('\n')
np = str(Number) + "|" + str(random.randint(2, 12)).zfill(2) + "|" + str(random.randint(2021, 2025)) + "|" + str(fakeit.credit_card_security_code()) + "|" + str(fakeit.name()) + "|" + str(fakeit.date_of_birth(tzinfo=None, minimum_age=20, maximum_age=55)) + "|" + str(fakeit.building_number()) + " " + str(fakeit.city()) + " " + " " + str(fakeit.street_address()) + " " + str(fakeit.postcode()) + "|" + str(fakeit.ssn()) + "|" + str(fakeit.phone_number()) + "\n"
f.write(str(np))
qa.close()
f.close()
Автор: NaMneCash