• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

LuckyNOOB

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

helloworld
hellocat
worldhello
worldcat
cathello
catworld

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

Gaius_Marius

Приветсвую, нужна программа для создания паролей из ключевых слов. Например есть ключевые слова (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

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

m0nstr

Green Team
19.06.2018
95
71
BIT
0
зачем python?
man crunch
очень мощная штука, умеет сливать, переворачивать, подсталять, переводить в разные СС, даже китайские иероглифы поддерживает
 

Proxy n1nja

Green Team
28.06.2018
118
149
BIT
0

Вложения

  • 635706398906202464.jpg
    635706398906202464.jpg
    99,1 КБ · Просмотры: 685

LuckyNOOB

Green Team
28.03.2018
51
3
BIT
1
А cupp не подойдет ?
Cupp вроде не абсолютно все варианты делает

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

zSRGz

Member
18.07.2019
17
0
BIT
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

Green Team
31.07.2017
29
31
BIT
1
Вот скрипт на 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

Codeby Academy
Gold Team
05.05.2019
1 940
228
BIT
1 773
Скажи пожалуйста где и как запустить этот скрипт ?
Первый способ "ПРОСТОЙ":
  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

Platinum
05.08.2018
1 080
2 475
BIT
0
Лично я решил данную задачку при помощи itertools.permutations

И какая польза от этого сообщения? Выложить код нужно было. Задача-то весьма простая, вот для первого поста код, кроме вывода в консоль, в файл сохранит.

111.png
 

LuckyNOOB

Green Team
28.03.2018
51
3
BIT
1
Хорошо. Если важен код, вот моя, хоть и кривая, но более функциональная версия
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

Codeby Academy
Gold Team
05.05.2019
1 940
228
BIT
1 773
Весь код выше написан с фразой "лишь бы работал", с чем он прекрасно справляется, так что претензии в сторону красоты кода прошу оставить при себе.
Все мы когда-то писали такой код )

Через пол года, а может раньше, ты откроешь свой файл, увидишь строку (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:
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Также следует помнить, что при ограничении кол-ва символов, могут создаваться одинаковые строки. Их можно удалить функцией ниже

При правильно составленном коде, дубликатов НЕ должно быть в принципе. Ну раз они создаются, никаких специальных функций для удаления делать не нужно. Для этого есть SET. Простенький пример -
Python:
x = {1, 10, 100, 5, 1, 26, 100, 3}
print(x)

Выведет без дубликатов
{1, 3, 100, 5, 10, 26}

Кроме этого сет является неупорядоченной коллекцией, то есть вывод уже сразу будет рамдомным, что в большинстве случаев полезно. Если нужно упорядочить, то вывод делать через любую подходящую сортировку.
 

shoma525

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

helloworld
hellocat
worldhello
worldcat
cathello
catworld

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

как говорится одна голова хорошо но чем больше тем лучше ! ваши предположения человек с ником doncarleone какой пароль мог вписать ???))))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!