Создание базы паролей по ключевым словам

LuckyNOOB

LuckyNOOB

Active member
28.03.2018
44
2
Приветсвую, нужна программа для создания паролей из ключевых слов. Например есть ключевые слова (hello, world, cat)
Надо получить нечто подобное

helloworld
hellocat
worldhello
worldcat
cathello
catworld

Программы которые будут создавать набор символов (например из world => owlrd) не нужны
 
Gaius_Marius

Gaius_Marius

New member
06.02.2019
1
1
Приветсвую, нужна программа для создания паролей из ключевых слов. Например есть ключевые слова (hello, world, cat)
Надо получить нечто подобное

helloworld
hellocat
worldhello
worldcat
cathello
catworld

Программы которые будут создавать набор символов (например из world => owlrd) не нужны

Вот скрипт на Python. Ключевые слова закинь в файл rand_key.txt

Python:
import random

with open('rand_key.txt', 'r', encoding='utf-8') as file:
    list = file.read().splitlines()

def passgen():   
    a = random.choice(list).replace(' ','')
    b = random.choice(list).replace(' ','')
    result = a+b
    return result

for i in range(20):
    print(passgen())
Пример:
beholdapalehorsehorsegames
palominohorsehorseracing
horsenameswarhorse
arabianhorsehorsedrawing
trojanhorsearabianhorse
horsecumbeholdapalehorse
horsedrawingdarkhorsecomics
 
  • Нравится
Реакции: Глюк
A

am29f010b

Три утилиты Windowsd/Linux/Mac (для разнообразия), скачать

─[user@Https]─[~]
└──╼ $'/test/combinator.bin' '/1.txt' '/1.txt'
hellohello
helloworld
hellocat
worldhello
worldworld
worldcat
cathello
catworld
catcat
┌─[user@Https]─[~]
└──╼ $'/test/combinator3.bin' '/1.txt' '/1.txt' '/1.txt'
hellohellohello
hellohelloworld
hellohellocat
helloworldhello
helloworldworld
helloworldcat
hellocathello
hellocatworld
hellocatcat
worldhellohello
worldhelloworld
worldhellocat
worldworldhello
worldworldworld
worldworldcat
worldcathello
worldcatworld
worldcatcat
cathellohello
cathelloworld
cathellocat
catworldhello
catworldworld
catworldcat
catcathello
catcatworld
catcatcat
┌─[user@Https]─[~]
└──╼ $'/test/combipow.bin' '1.txt'
hello
world
helloworld
cat
hellocat
worldcat
helloworldcat
┌─[user@Https]─[~]
└──╼ $
 
LuckyNOOB

LuckyNOOB

Active member
28.03.2018
44
2
Хочу заново поднять тему. Есть ли способ сделать примерно такую базу?
Входные данные:
я ты мы
Вывод:
Код:
я
ты
мы
яты
ямы
тыя
тымы
мыя
мыты
ятымы
ямыты
тыямы
тымыя
мыяты
мытыя
Ну естественно чтобы можно было использовать больше 3 слов. Можно готовую программу можно примерный алгоритм (пишу под python).
 
m0nstr

m0nstr

Well-known member
19.06.2018
87
70
зачем python?
man crunch
очень мощная штука, умеет сливать, переворачивать, подсталять, переводить в разные СС, даже китайские иероглифы поддерживает
 
LuckyNOOB

LuckyNOOB

Active member
28.03.2018
44
2
зачем python?
man crunch
очень мощная штука, умеет сливать, переворачивать, подсталять, переводить в разные СС, даже китайские иероглифы поддерживает
Пытался. Сделать такой же вывод как у меня не смог. Если ты знаешь как сделать, напиши.
 
Z

zSRGz

Member
18.07.2019
17
0
Python:
import random


def factorial(num, plus):
    res = 1
    for i in range(plus, num + plus):
        res *= i
    return res


def gen(wordlist):
    lst = []
    last = 0
    result = wordlist[:]
    while True:
        random.shuffle(result)
        if ''.join(result[last:]) not in lst:
            lst.append(''.join(result[last:]))
        if len(lst) % factorial(len(result[last:]), last + 1) == 0:
            last += 1
        if last == len(wordlist):
            return lst
Вот. На моем дохлом Целероне за 10мин 40 000 паролей сгенерировал (8 ключей). Если что кол-во паролей можно рассчитать вот так.
К примеру 8. 8! + 8 * 6 * 5 * 4 * 3 * 2 + 8 * 6 * 5 * 4 * 3 + 8 * 6 * 5 * 4 + 8 * 6 * 5 + 8 * 6 + 8 = 107 912.
Надеюсь помог.
 
Последнее редактирование:
FlowLight

FlowLight

Active member
31.07.2017
25
27
Вот скрипт на Python. Ключевые слова закинь в файл rand_key.txt

Python:
import random

with open('rand_key.txt', 'r', encoding='utf-8') as file:
    list = file.read().splitlines()

def passgen(): 
    a = random.choice(list).replace(' ','')
    b = random.choice(list).replace(' ','')
    result = a+b
    return result

for i in range(20):
    print(passgen())
Пример:
beholdapalehorsehorsegames
palominohorsehorseracing
horsenameswarhorse
arabianhorsehorsedrawing
trojanhorsearabianhorse
horsecumbeholdapalehorse
horsedrawingdarkhorsecomics
Скажи пожалуйста где и как запустить этот скрипт ?
 
f22

f22

Red Team
05.05.2019
1 182
96
Скажи пожалуйста где и как запустить этот скрипт ?
Первый способ "ПРОСТОЙ":
  1. Заходишь сюда
  2. В левой части под названием Files кликаешь по иконке создания файла, обзываешь его rand_key.txt.
  3. В среднем окне пишешь нужные тебе слова, из которых потом будет формироваться список паролей
  4. В файл main.py вставляешь код, что написан выше.
  5. Нажимаешь Зелёную кнопку run и в правом синем поле у тебя появляются варианты паролей.
В итоге должно получиться как-то так

Второй способ "ИНТЕРЕСНЫЙ":

Скачиваешь установщик Python под свою систему.
Обычно скрипт сайта всегда угадывает Windows у тебя ли иная ОС.

После установки, создаёшь папку, к примеру brute_py_prog. В ней создаёшь текстовый файл,
вставляешь туда текст программы и сохраняешь этот файл с расширением py.
Например, brute.py. В эту же папку кладёшь файл rand_key.txt с нужными тебе вариантами ключей.

Чтобы сгенерированные пароли не только показались на экране, но и сохранились в файл,
нужно немного доработать код. Например, так:

Python:
import random

with open('rand_key.txt', 'r', encoding='utf-8') as file:
    list = file.read().splitlines()

def passgen():
    a = random.choice(list).replace(' ','')
    b = random.choice(list).replace(' ','')
    result = a+b
    return result

array_to_save = []

for i in range(20):
    gen_pass = passgen()
    print(gen_pass)
    array_to_save.append(gen_pass)

with open("result.txt", "w+") as writer:
    for _ in array_to_save:
        writer.write(_ + "\n")

Дальше два раза кликаешь по файлу brute.py и получаешь в той же
папке новый файл result.txt с нужными тебе данными.


Ну а далее, начинается увлекательное приключение в мир кодинга,
сопровождаемое желанием что-то сделать с этим кодом, улучшить его, ну и так далее.
 
Последнее редактирование:
explorer

explorer

Red Team
05.08.2018
790
1 700
Лично я решил данную задачку при помощи itertools.permutations
И какая польза от этого сообщения? Выложить код нужно было. Задача-то весьма простая, вот для первого поста код, кроме вывода в консоль, в файл сохранит.

111.png
 
LuckyNOOB

LuckyNOOB

Active member
28.03.2018
44
2
Хорошо. Если важен код, вот моя, хоть и кривая, но более функциональная версия
Python:
def generator(self):
    comb = User.addwords(User) #Все ключевые слова
    start = time.time()
    STR_TO_WRITE = ""
    for i in range(User.data['comb']): #User.data['comb'] - кол-во комбинаций
        end = list(itertools.permutations(comb, i + 1))
        for z in range(len(end)):
            if User.data['limit'] == True: #limit - ограничение длины от limit_from до limit_to
                if len(''.join(end[z])) >= int(User.data['limit_from']) and len(''.join(end[z])) <= int(User.data['limit_to']):
                    STR_TO_WRITE += (''.join(end[z]) + "\n")
                else:
                    STR_TO_WRITE += (''.join(end[z]) + "\n")
Вывод варьируется от настроек. Так, выходной файл может иметь ограничение по символам и ограничение по количеству комбинаций (кол-во комбинаций - int)
Также следует помнить, что при ограничении кол-ва символов, могут создаваться одинаковые строки. Их можно удалить функцией ниже
Python:
def remove_dubl(self):
    ft, temp = mkstemp() # создать temp-файл
    lines = set()
    with open(temp, 'w', encoding='utf8') as t, open(User.data['name'], encoding='utf8') as f:
        for line in f: # читать file построчно
            if line not in lines: # для line, отсутствующих в lines
                lines.add(line) # сохранить line в lines
                t.write(line) # записать line в temp-файл
    close(ft) # закрыть temp-файл
    move(temp, User.data['name']) # переместить/переименовать temp-файл в file
Весь код выше написан с фразой "лишь бы работал", с чем он прекрасно справляется, так что претензии в сторону красоты кода прошу оставить при себе.
Данный скрипт работает и в случае если кому-либо понадобится целиковая программа, а не по частям, можете написать в ЛС.
 
f22

f22

Red Team
05.05.2019
1 182
96
Весь код выше написан с фразой "лишь бы работал", с чем он прекрасно справляется, так что претензии в сторону красоты кода прошу оставить при себе.
Все мы когда-то писали такой код )

Через пол года, а может раньше, ты откроешь свой файл, увидишь строку (110 символов!)
Python:
for z in range(len(end)):
    if User.data['limit'] == True: #limit - ограничение длины от limit_from до limit_to
        if len(''.join(end[z])) >= int(User.data['limit_from']) and len(''.join(end[z])) <= int(User.data['limit_to']):
прослезишься и поймёшь, что программу надо переписывать )
И дело тут не в красоте, и не в претензиях.
Код изначально должен быть поддерживаемым, в том числе и автором.
А чтобы поддерживать непонятный код, нужно тратить уйму времени, которое можно было бы потратить на что-то продуктивное.

Добавлю лишь одно, не в обиду, - обо всём коде говорит одна только эта строка
Python:
if User.data['limit'] == True:
 
Мы в соцсетях: