Поиск алгоритма шифрования пароля в DevTools
Привет.
В этой статье мы будем производить поиск алгоритма шифрования пароля на сайте - Open Url .
0: Открываем "инструменты разработчика" Cntrl+Shift+I и переходи на вкладку "Network" (Сеть)
0: Открываем "инструменты разработчика" Cntrl+Shift+I и переходи на вкладку "Network" (Сеть)
1: На форме входа заполняем поля "Account Number" и "Password" - нажимаем log in ( авторизируемся ).
2: На вкладке "Network"
(Сеть) появится запрос "login" - кликаем по нему и переходим на вкладку "Payload" (Полезная нагрузка) и видим, что поле "password" не соответсвует нашему введённому паролю.
(Сеть) появится запрос "login" - кликаем по нему и переходим на вкладку "Payload" (Полезная нагрузка) и видим, что поле "password" не соответсвует нашему введённому паролю.
3: Копируем значение "b7341a06dbc6581f846405fc96f9e24d" и проверяем тип хэша - например тут .
Теперь открываем любой MD5 encoder , прописываем наш пароль "blackbyte" и генерируем хэш. "08bef23a7b3c9fecefba22d127ce055e" . - оно не совпадает с нашим значением с поля "password" а это может означать, что либо используется "Salt" ( соль ) либо это не MD5.
Соль - это случайно сгенерированная строка, которая добавляется к паролю перед его хэшированием.
4: Возвращаемся обратно к нашему запросу и переключаемся на вкладку "Initiator" .
Использование значения Initiator может помочь понять, как именно был вызван конкретный запрос на странице.
Видим несколько интересных событий- [ onSubmitSend ] и [ onSubmit ] - они являются названиями событий (events) в JavaScript, которые срабатывают при отправке формы (form) на веб-странице.
Кликаем на скрипт напротив "onSubmitSend" и попадаем в код -
5: Вспоминаем как называлось поле на вкладке "Network" ( сеть ) откуда мы копировали значение хэша - "password" .
Ищем в этом куске кода слово "password" - найдено 3 совпадения, нас интересует строчка кода - " password: this.$md5(this.$encrypt_key + o) " .
Получается, что в поле "password" записывается некий "encrypt_key" и какое то значение переменной "o". Давайте попробуем узнать, что же это за значения.
6: Ставим брейкпоинт на начало функции - ( onSubmitSend: function() ) - для этого щелкните правой кнопкой мыши напротив функции и выберите "Add breakpoint" .
Брейкпоинт - это точка останова, на которой процесс выполнения кода или программы остановится и мы сможем увидеть, что же там происходит.
Должно получиться так:
7: На форме авторизации ещё раз нажимаем log in для авторизации.
Выполнение кода будет остановлено на нашем брейкпоинте.
Теперь нам нужно нажимать F10 -чтобы продвигаться по коду по одной инструкции за раз.
Теперь мы видим, что переменная "o" это пароль с формы авторизации.
o = this.password;
Что-бы посмотреть значение "encrypt_key" просто наведите на него мышкой:
значение: "HKVji6PDy0D5KmEswJEezbvaVclJFF" .
Возвращаемся к строчке " password: this.$md5(this.$encrypt_key + o) "
Выходит так: HKVji6PDy0D5KmEswJEezbvaVclJFFblackbyte - пробуем сгенерировать хэш этого значения:
Сравниваем с хэшем из вкладки "Network" ( сеть ) :
Поздравляю ! Алгоритм шифрования найден.
devtools
инструменты разработчика
md5
поиск алгоритма шифрования
javascript