Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 29.03.2020
Сообщений: 59

Метод грубой силы (метод полного перебора)

25.09.2023, 16:04. Показов 2015. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание состоит из того, что нужно сперва захешировать строку EE14C41E92EC5C97B54CF9B74E25B с помощью алгоритма MD5, а потом при помощи метода грубой силы найти PIN-код карты, состоящий из 4 цифр.

Дана строка EE14C41E92EC5C97B54CF9B74E25B.
Задания:
1. С помощью алгоритма MD5 захешировать строку, что у меня получилось.
2. Эта строка хеш-функции шифрует PIN-код карточки банковской. Известно, что он состоит из 4-х цифр. Нужно с помощью метода грубой силы найти этот PIN-код. Тут как не пытался, пин-код не находит совсем.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import hashlib     
 
 
sSourceData = "EE14C41E92EC5C97B54CF9B74E25B"
# Создаётся массив байтов из входных данных
tmpSource = sSourceData.encode('ascii')
 
# Выполнется расчёт хеша входных данных
tmpHash = hashlib.md5(tmpSource).hexdigest()  
print(f"{tmpHash} Len = {len(tmpHash)}")
 
# Реализация метода грубой силы для поиска пин-кода
digits = "1234567890"
 
target_hash = sSourceData.lower()  
for d1 in digits:
    for d2 in digits:
        for d3 in digits:
            for d4 in digits:
                pin = f"{d1}{d2}{d3}{d4}"
                pin_hash = hashlib.md5(pin.encode('ascii')).hexdigest()
                if pin_hash == target_hash:
                    print(f"Найденый PIN-код: {pin}")
                    break
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2023, 16:04
Ответы с готовыми решениями:

Метод грубой силы при обработке графов
Всем привет! Вот условие задачи: дано около 20 топологий графа (две наиболее простых и понятных приведены на рисунке -...

Все возможные комбинации пароля. Метод грубой силы (полный перебор)
Вопрос собственно заключается в том, почему при выводе в консоль всех возможных комбинаций пароля, пишет непонятные символы,как показано на...

Метод полного перебора
Доброго времени суток ! Задали сделать курсовой в маткаде " определить абсолютный максимум функции отклика процесса методом полного...

6
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2023, 17:15
Farewell Shizue, Тоже не находит.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from hashlib import md5
from string import digits
from itertools import product
 
source_data = "EE14C41E92EC5C97B54CF9B74E25B"
source_hash = md5(source_data.encode()).hexdigest()
 
print(source_data.encode())
print(source_hash)
 
for pin in product(digits, repeat=4):
    if md5(''.join(pin).encode()).hexdigest() == source_hash:
        print(pin)
        break
Добавлено через 19 минут
Farewell Shizue, Вообще, мне кажется, что с заданием что-то "не так".
Осмелюсь предположить, что данная строка ("EE14C41E92EC5C97B54CF9B74E25B"), это и есть искомый хэш.
И надо найти комбинацию из четырех цифр (PIN), хэш-ем которой она является.

Единственная загвоздка в том, что длина MD5 = 32 байта. А данная строка имеет длину 29 байт =(
1
0 / 0 / 0
Регистрация: 29.03.2020
Сообщений: 59
25.09.2023, 17:26  [ТС]
Думаю, нужно захешироать все-таки эту строку, получится хеш из 32-х символов и потом найти из этого хеша пин-код
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2023, 17:30
Цитата Сообщение от Farewell Shizue Посмотреть сообщение
Думаю, нужно захешироать все-таки эту строку, получится хеш из 32-х символов и потом найти из этого хеша пин-код
Ок, т.е. вы предполагаете, что хэш строки "EE14C41E92EC5C97B54CF9B74E25B" должен совпасть с хэшем какой-либо строки из диапазона от "0000" до "9999" включительно?

Но вроде мы это только что эмпирически выяснили, в коде выше, что это не так.

Причем у вас в строках 15 и 22 ошибка. Вы как раз пытаетесь сравнить хэш пин-кода преобразованного в строку, с искомой строкой приведенной к нижнему регистру.

Вам надо сравнивать pin_hash и tmpHash, а у вас там target_hash который равен sSourceData.lower().
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
25.09.2023, 20:00
Цитата Сообщение от Farewell Shizue Посмотреть сообщение
Дана строка EE14C41E92EC5C97B54CF9B74E25B.
Это не строка. Это хэш без 3 последних цифр.
Искомый пин: 3522

Цитата Сообщение от anton78spb Посмотреть сообщение
Единственная загвоздка в том, что длина MD5 = 32 байта. А данная строка имеет длину 29 байт =(
MD5 - это 16 байт. Один байт (0-255) кодируется 2-мя 16-ричными цифрами.
3
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2023, 21:20
Лучший ответ Сообщение было отмечено Farewell Shizue как решение

Решение

Цитата Сообщение от Red white socks Посмотреть сообщение
Это не строка. Это хэш без 3 последних цифр.
Было у меня такое предположение, проверить совпадение первых 29 символов, но надо было убегать с работы, не успел.
Цитата Сообщение от Red white socks Посмотреть сообщение
MD5 - это 16 байт. Один байт (0-255) кодируется 2-мя 16-ричными цифрами.
Да, все верно, описался.

Добавлено через 1 минуту
Python
1
2
3
4
5
6
7
8
9
10
from hashlib import md5
from string import digits
from itertools import product
 
source_data = "EE14C41E92EC5C97B54CF9B74E25B".lower()
 
for pin in product(digits, repeat=4):
    if md5(''.join(pin).encode()).hexdigest()[:29] == source_data:
        print(*pin)
        break
Code
1
2
3
4
5
3 5 2 2
 
 
** Process exited - Return Code: 0 **
Press Enter to exit terminal
Добавлено через 7 минут
Или вот так.
Python
1
2
3
4
5
6
7
8
9
10
from hashlib import md5
from string import digits
from itertools import product
 
source_data = "EE14C41E92EC5C97B54CF9B74E25B".lower()
 
for pin in product(digits, repeat=4):
    if source_data in md5(''.join(pin).encode()).hexdigest():
        print(*pin)
        break
2
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
26.09.2023, 12:02
Меня терзают смутные сомнения

А точно, обсуждение брутфорса (восстановление пин-кода по хэш), не противоречит правилам форума?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2023, 12:02
Помогаю со студенческими работами здесь

Метод полного перебора
Pascal ABC В копилке находится N монет различных достоинств общим весом G граммов. Вес каждой монеты определенной стоимости дан в...

Задача на метод полного перебора
В обозначении (a)x буква x представляет основание системы счисления, а буква a – число, записанное в соответствующей системе. Напишите...

Задача на метод полного перебора
Составить алгоритм и программу поиска пары точек, расстояние между которыми наименьшее (не нулевое!) способом полным перебором. Количество...

Задача коммивояжера,метод полного перебора
Мне нужна написать программу, которая решает задачу коммивояжера (метод полного перебора) на C# или C++ или Си или Pascal.Кто чем может...

Метод полного перебора. Задача о назначениях
Всем привет, ребят очень нужна помощь в решении задачи!!! Нужно написать код программы на с#, где будет реализован алгоритм "полного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru