Что такое хэш рулетки
Хеширование и расшифровка MD5 хеш-кода
Что такое MD5?
MD5 является одним из алгоритмов хеширования на 128-битной основе. Под хешированием понимают преобразование входных данных по определенному алгоритму в битовую строку определенной длины. При этом полученный в ходе вычислений результат представлен в шестнадцатеричной системе исчисления. Она называется хешем, хеш-суммой или хеш-кодом.
Процесс хеширования широко применяется в программировании и веб-индустрии. В основном для создания уникальных значений в ассоциативных массивах, идентификаторов.
Область применения хеш-кодов:
MD5 как стандарт хеширования был разработан в 1991 году для создания уникального хеш-кода от заданного значения с последующей проверкой его подлинности.
То есть хеш, полученный от функции, работа которой основана на этом алгоритме, выдает строку в 16 байт (128) бит. И эта строка включает в себя 16 шестнадцатеричных чисел. При этом изменение хотя бы одного ее символа приведет к последующему бесповоротному изменению значений всех остальных битов строки:
Проблемы надежности MD5
Казалось бы, такая характеристика MD5 должна обеспечивать 100% гарантии неуязвимости и сохранения данных. Но даже этого оказалось мало. В ходе проводимых исследований учеными был выявлен целый ряд прорех и уязвимостей в этом уже распространенном на тот момент алгоритме. Основной причиной слабой защищенности MD5 является относительно легкое нахождение коллизий при шифровании.
Проще говоря, чем больше вероятность нахождения коллизий, тем надежность используемого алгоритма ниже. Вероятность нахождения коллизий при шифровании более надежными хеш-функциями практически сводится к 0.
То есть большая вероятность расшифровки паролей MD5 является основной причиной отказа от использования этого алгоритма. Многие криптологи ( специалисты по шифрованию данных ) связывают низкую надежность MD5 с малой длиной получаемого хеш-кода.
Область применения алгоритма хеширования:
Обзор средств для декодирования хеш-кода MD5
Иногда при работе с компьютером или поврежденными базами данных требуется декодировать зашифрованное с помощью MD5 значение хеша.
Удобнее всего использовать специализированные ресурсы, предоставляющие возможность сделать это online :
Если происмотреться к значениям декодинга, отображенных на показонном выше рисунке, то становится понятно, что процесс расшифровки почти не дает результатов. Эти ресурсы представляют собой одну или несколько объединенных между собой баз данных, в которые занесены расшифровки самых простых слов.
При этом данные декодирования хеша MD5 даже такой распространенной части пароля как « админ » нашлись лишь в одной базе. Поэтому хеши паролей, состоящих из более сложных и длинных комбинаций символов, практически невозможно расшифровать.
Основы безопасности при использовании MD5
Этот стандарт кодирования является одним из самых распространенных методов защиты данных не только в прикладном, но и в веб-программировании. Поэтому не будет лишним обезопасить свой md5 hash от намеренного взлома.
Основным способом, гарантирующим безопасность хеша вашего пароля, является использование « соли ». Он основан на добавлении к паролю нескольких случайных символов и последующем хешировании результата.
Во многих языках программирования для этого используются специальные классы и функции. Не являются исключением из правил и серверные языки программирования.
Создать хеш-код MD5 в php можно с помощью нескольких функций:
При использовании функции md5() в PHP для задания значения соли используют методы генерации случайных чисел. Например, rand() :
Кроме применения « соли » было разработано еще несколько методов защиты хеша MD5 :
В статье приведены лишь начальные сведения об обеспечении безопасности хеша, полученного с помощью этого алгоритма. Самым простым и эффективным из них является использование уникального значения « соли », которая позволяет существенно « насолить » злоумышленнику и « подсластить » жизнь владельцу взламываемого пароля.
MD5 hash for « roulette »
The MD5 hash of:
roulette
is:
8d36f55401a198f65061479f5b2134ca
You can attempt to reverse the MD5 hash which was just generated, to reverse it into the originally provided string:
Reverse a MD5 hash
Feel free to experiment MD5 hashing with more strings. Just enter a new string and submit the form to convert it into another MD5 hash.
Convert a string to a MD5 hash
Latest succesful MD5 reverses
What is a MD5 hash?
MD5 (Message Digest algorithm, 5th version) is an algorithm which converts a given sequence of characters into another unique sequence of characters, with a fixed length, called «hash». For instance, the MD5 hash of the word password is 5f4dcc3b5aa765d61d8327deb882cf99.
These hashes are mostly used to validate file integrity, to encrypt sensitive data (like passwords), and to generate unique identifiers.
Is it secure?
MD5 hashes are theoretically impossible to reverse directly, ie, it is not possible to retrieve the original string from a given hash using only mathematical operations.
Most web sites and applications store their user passwords into databases with MD5 encryption. This method appears to be safe as it seems impossible to retrieve original user passwords if, say, a hacker manages to have a look at the database content.
Unfortunately, there is a way to decrypt a MD5 hash, using a dictionary populated with strings and their MD5 counterpart. As most users use very simple passwords (like «123456», «password», «abc123», etc), MD5 dictionaries make them very easy to retrieve.
This website uses a MD5 reverse dictionary containing several millions of entries, which you can use with MD5 hashes from your application.
If some of the hashes you enter can be reversed, consider using another way of generating hashes, like using stronger algorithms (SHA-2, Whirlpool, etc), combining algorithms, and using a «salt».
Взлом рулетки на Гидре, что думаете по этому поводу?
Есть идеи по взлому рулетки на Гидре с помощью ее хэша md5? Хэш шифрует сочитание символов : номер рулетки.загаданное число.случайный коэффициент из 18-20 цифр. В данном случае 69018676.28.5021391486231266
нашёл вроде рабочий софт на рулетку https://dropmefiles.com/1fSAk
День, когда Все наконец выспались
Даркнет и Служба внешней разведки
На сайте Службы Внешней Разведки (СВР) пользователями была обнаружена единственная кнопка на английском языке «Report Information»
По ссылке инструкция как из-за пределов России передать ценные разведданные по сети TOR
В фильме показано как непросто приходится бессознательным американским гражданам в их попытках достучаться до российской разведки с целью обмена родины на пышный силикон
Но цифровая трансформация российской государственной машины пошла навстречу и таким алчным иностранным гражданам. Теперь каждый может почувствовать себя шпионом не выходя из дома
Успешный опыт внедрения цифровых ГосУслуг для населения переносится на внешний контур
Оплата скорее всего будет в биткоинах по курсу ЦБ на дату слива информации.
Также утверждается, что это первая приемная в даркнете среди всех европейских разведывательных ведомств
Вы почти приспособились к тьме.
Как спецслужбы найдут тебя
Представьте себе ситуацию: вы сотрудник спецслужбы, и ваша задача – вычислить особо опасного преступника, занимающегося шантажом и появляющегося в сети периодически и только для передачи данных. Для преступной деятельности он завел отдельный ноутбук, из которого «вырезал» микрофон, колонки и камеру. Разумное решение, учитывая, что колонки тоже умеют слушать.
В качестве операционной системы он использует Tails, хотя для максимальной анонимности стоило бы взять Whonix. Так или иначе, весь трафик идет через Tor, он не доверяет VPN, да и для работы в Даркнете Tor ему все равно необходим.
Для общения он использует Jabber с PGP-шифрованием, он мог бы поставить и Телеграм, но это представитель старой школы преступников. Даже если у вас будет доступ к серверу Jabber, вы сможете получить лишь зашифрованные данные и IP-адреса Тор. Это бесполезная информация.
Преступник работает по принципу «молчание-золото», лишнего не скажет, ссылки или файла не откроет. Известно лишь, что он должен находиться в одной стране с вами. Казалось бы, шансов установить его личность нет, но это иллюзия, установить его личность можно несмотря на все принимаемые им меры.
Описанный случай идеален для применения тайминг-атаки по мессенджеру. Первым делом необходима программа, которая будет отслеживать и записывать все входы и выходы пользователя. Он появился в сети – система сразу отмечает у себя время, ушел – система записала время выхода.
Лог выглядит примерно так: таблица входов и выходов
Теперь на руках у вас есть лог его активности за несколько дней, пришло время воспользоваться системой ОРМ (оперативно-розыскных мероприятий). Подобные системы есть в распоряжении спецслужб большинства стран, в России это СОРМ. Нужно выяснить, кто в эти временные промежутки +/- 5 минут в вашей стране подключался к сети Tor.
Мы знаем, что цель, которую необходимо деанонимизировать, подключилась 22.04.2018 в 11:07 и отключилась в 12:30. В эти же временные точки (+/- 5 минут) на территории страны подключились к сети Tor и отключились от нее 3000 человек. Мы берем эти 3000 и смотрим, кто из них снова подключился в 14:17 и отключился в 16:54, как думаете, сколько человек останется?
Так, шаг за шагом, круг сужается, и в итоге вам удастся вычислить место выхода в сеть преступника. Чем чаще он заходит в сеть и чем меньше в это время других пользователей, тем быстрее сработает тайминг-атака.
Что может помешать проведению тайминг-атаки.
Постоянная смена точек выхода в сеть делает подобную атаку бессмысленной. Если же цель периодически меняет точки выхода, это может затруднить поиск, но является заранее допустимым вариантом и не способно запутать систему.
Мы надеемся, что наши читатели не относятся к разыскиваемым преступникам и им не придется кочевать из одного кафе с публичным Wi-Fi в другое. Однако вторым советом против тайминг-атаки стоит воспользоваться каждому. Речь идет об отключении на уровне мессенджера передачи информации о статусе либо установлении постоянного статуса «офлайн». Большинство мессенджеров предоставляют одну из подобных возможностей.
Вот так это выглядит в Телеграм:
Если в вашем мессенджере возможно скрыть данные о вашем статусе, скройте эту информацию.
Дополнительным инструментом защиты от тайминг-атаки может стать прекращение включения мессенджера вместе с подключением к сети. Как вы можете понять из описания атаки, сверяется время входа/выхода в сеть и появление на связи/уход в офлайн в мессенджере. Допускается погрешность, но она не должна быть очень большой. Если цель атаки подключится к Tor и лишь спустя час запустит мессенджер, очень сложно будет связать вход в сеть и статус в мессенджере. Кроме этого, тайминг-атаки абсолютно бесполезны против анонимного мессенджера Bitmessage.
В даркнете продают устройство, которое делает 15 клонов бесконтактных карт в секунду
Популярность такого рода мошенничества растет прямо пропорционально количеству карт с RFID чипами у населения. Похоже, скоро человек, тесно прижимающийся к другим пассажирам в общественном транспорте, будет вызвать мысли вовсе не об извращенцах, а о кардерах.
The CC Buddies назвали свое устройство Contactless Infusion X5 и уверяют, что с ним атакующему даже не придется ни к кому прижиматься – достаточно просто пройти сквозь толпу, к примеру, в подземке или на концерте. Находясь на достаточно близком расстоянии, девайс копирует данные с современных бесконтактных карт и записывает их во внутреннее хранилище. Впоследствии злоумышленник подключит прибор к компьютеру через USB-порт, а специальное приложение, которое The CC Buddies продают в комплекте с устройством, позволит извлечь украденную информацию. Немаловажен и тот факт, что прибор весит всего 70 граммов, а его размеры более чем скромны: 98 x 65 x 12,8 мм.
«Contactless Infusion X5 – первое устройство для хакинга бесконтактных банковских карт на черном рынке. Продукт был создан и разработан The CC Buddies. Contactless Infusion X5 способен распознать и считать карту ЛЮБОГО банка на расстоянии всего 8 сантиметров! Чтение происходит на потрясающей скорости — 1024 кбит/с, то есть этот мощный бесконтактный ридер считывает примерно 15 банковских карт в секунду!»
— пишут создатели устройства в своем объявлении.
Contactless Infusion X5 собирает данные о номере карты и сроке ее действия. Если RFID чип карты также содержит и другие данные, будь то имя владельца, его адрес или выписка о последних операциях по счету, прибор похитит и эту информацию. Создатели устройства утверждают, что оно читает данные о любых карт на частоте 13,56 МГц.
Информацию о картах Contactless Infusion X5 хранит в зашифрованном виде. Программа, которую предоставляют злоумышленники, позволит расшифровать данные и скачать их на компьютер, работающий под управлением Windows XP или выше. Затем можно приступать к печати фальшивых копий. Пока ПО хакерской группы работает только с банковскими картами, но в будущем авторы обещают расширить его функциональность.
Проверяем честность игры в рулетку на смарт-контракте Ethereum
Мало кто нынче не слышал о криптовалютах и, в частности, Bitcoin. В 2014-м году, на волне интереса к биткоину, появилась новая криптовалюта — Ethereum. Сегодня, в 2017-м, она является второй по капитализации после биткоина. Одним из важнейших её отличий от биткоина является использование тьюринг-полной виртуальной машины — EVM. Подробнее про эфир можно прочитать в его Yellow Paper.
Когда все ставки сделаны, игрок нажимает кнопку «Играть» и, через MetaMask, отправляет пари* в Ethereum-блокчейн, на адрес смарт-контракта игры. Контракт определяет выпавшее число, рассчитывает результаты ставок и, в случае необходимости, отсылает выигрыш игроку.
* — Я буду использовать термин пари для обозначения набора ставок (т.е. пар тип ставки — количество жетонов на ставку), которые игрок делает в рамках одного раунда. Если вы знаете более корректный термин, напишите мне пожалуйста, я исправлю.
Для того, чтобы понять честно ли работает игра (то есть, не манипулирует ли казино определением выпавшего числа в свою пользу) проанализируем работу смарт-контракта.
Его адрес указан на сайте игры. Кроме того, перед подтверждением оплаты можно проверить на какой адрес будет отправлено пари. Я проанализирую контракт по адресу 0xDfC328c19C8De45ac0117f836646378c10e0CdA3. Etherscan показывает его код, а для удобного просмотра можно использовать Solidity Browser.
Работа контракта начинается с вызова функции placeBet():
Для новичков в Solidity поясню, что модификаторы public и payable означают, что функция является частью API контракта и что при её вызове можно отправить эфир. При этом информация об отправителе и количестве отправленного эфира будет доступна через переменную msg.
Параметрами вызова является битовая маска типов ставок и два 32-байтных массива с количеством жетонов на каждый из типов. Догадаться об этом можно посмотрев на определение типа GameInfo и функций getBetValueByGamble(), getBetValue().
Отмечу, что getBetValue() возвращает сумму ставки уже не в жетонах, а в wei.
Первым делом placeBet() проверяет, что контракт не выключен и затем начинаются проверки пари.
Массив gambles является хранилищем всех сыгранных в данном контракте пари. placeBet() находит все пари в своём блоке и проверяет не присылал ли данный игрок другое пари в этом блоке и не превышено ли разрешенное количество пари на блок. Затем проверяются ограничения на минимальную и максимальную сумму ставки.
В случае любой ошибки выполнение контракта прерывается командой throw, которая откатывает транзакцию, возвращая эфир игроку.
Далее переданные в функцию параметры сохраняются в структуре GameInfo.Здесь нам важно, что поле wheelResult инициализируется числом 37.
После ещё одной проверки, что сумма ставок совпадает с присланным количеством эфира происходит распределение токенов RLT, обрабатывается реферальная программа, информация о пари сохраняется в gambles и создаётся событие PlayerBet с номером и суммой пари, которое затем видно в веб-части игры.
В параметрах вызова передаётся массив с номерами пари, которые требуют расчёта, и для каждого вызывается ProcessGame.
Параметрами вызова являются номер ставки и количество блоков которое должно пройти между ставкой и её обработкой. При вызове из ProcessGames() или ProcessGameExt() этот параметр в настоящее время равен 1, это значение можно узнать из результата вызова getSettings().
В случае, если номер блока, в котором происходит обработка, больше чем на 255 блоков отстоит от блока пари, оно не может быть обработано: хэш блока доступен только для последних 256 блоков, а он нужен для определения выпавшего числа.
Далее выполняется проверка не был ли уже рассчитан результат игры (помните, wheelResult инициализровался числом 37, которое выпасть не может?) и прошло ли уже необходимое количество блоков.
Если условия выполнены, производится вызов getRandomNumber() для определения выпавшего числа, вызовом getGameResult() рассчитывается выигрыш. Если он не нулевой, эфир посылается игроку: g.player.send(playerWinnings). Затем создаётся событие EndGame, которое может быть прочитано из веб-части игры.
Посмотрим самое интересное, то как определяется выпавшее число: функцию getRandomNumber().
Её аргументы — адрес игрока и номер блока, в котором была сделана ставка. Первым делом функция получает хэш блока, отстоящего от блока ставки на BlockDelay блоков в будущее.
Это важный момент, поскольку если игрок сможет каким-то образом узнать хэш этого блока заранее, он может сформировать ставку, которая гарантированно выиграет. Если вспомнить, что в Ethereum существуют Uncle-блоки, тут может быть проблема и требуется дальнейший анализ.
Далее рассчитывается SHA-3 от склейки адреса игрока и полученного хэша блока. Выпавшее число вычисляется путём взятия остатка от деления результата SHA-3 на 37.
С моей точки зрения, алгоритм вполне честный и казино никакого преимущества перед игроком не имеет.
Интересно посмотреть, также, как рассчитывается выигрыш. Как мы видели, это делает функция getGameResult().
Параметром сюда передаётся структура GameInfo с данными о рассчитываемом пари. А её поле wheelResult уже заполнено выпавшим числом.
Видим цикл по всем типам ставок, в котором проверяется битовая маска game.bets и если бит проверяемого типа установлен, то запрашивается winMatrix.getCoeff(). winMatrix — это контракт по адресу 0x073D6621E9150bFf9d1D450caAd3c790b6F071F2, загруженный в конструкторе SmartRoulettee().
В качестве параметра этой функции передаётся комбинация типа ставки и выпавшего числа:
Разбор кода контракта WinMatrix я оставлю вам в качестве домашнего задания, но ничего неожиданного там нет: генерируется матрица коэфициентов и при вызове getCoeff() возвращается нужный. При желании его легко проверить вызовом этой функции вручную на странице контракта.
Взлом хешей с помощью HashCat
Hashcat – это самая быстрая и передовая утилита для восстановления паролей, поддерживающая пять уникальных режимов атаки для более чем трёхсот алгоритмов хеширования.
Hashcat поддерживает:
Также hashcat имеет средства, которые помогают включить распределенный взлом паролей.
HashCat поддерживает следующие режимы атаки:
С помощью данной команды можно проверить все доступные параметры:
Сегодня мы будем использовать режим атаки по словарю.
Содержание:
MD5-хеши
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
Команда:
MD5-хеши с солью
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
md5($pass.$salt):
01dfae6e5d4d90d9892622325959afbe:7050461> hash.txt
Команда:
Хеш-суммы MD5Crypt
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
Команда:
HMAC-SHA1 key
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
Команда:
Хеш-суммы SHA-1
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
Команда:
Хеши SHA2–384
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
SHA2-384 07371af1ca1fca7c6941d2399f3610f1e392c56c6d73fddffe38f18c430a2817028dae1ef09ac683b62148a2c8757f42> hash.txt
Команда:
Хеши SHA3–512
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
SHA3–512 7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e >hash.txt
Команда:
NTLM-хеши
Убедитесь, что входные хеши имеют совместимый с hashcat формат.
Пример:
Команда:
CRC32-хеши
Убедитесь, что входные хеши имеют совместимый с hashcat формат.