Обратный анализ Jingdong h5st4.7
Обратный анализ Jingdong h5st4.7

заявление

Весь контент в этой статье предназначен только для обучения и общения, а не для каких-либо других целей. Полный код не предоставляется. Содержимое захвата пакетов, конфиденциальные URL-адреса, интерфейсы данных и т. д. были десенсибилизированы и строго запрещены для коммерческих и незаконных целей. В противном случае все последствия, вытекающие из этого, не имеют к автору никакого отношения!

Эту статью запрещено перепечатывать без разрешения и распространять после каких-либо изменений. Автор не несет ответственности за любые несчастные случаи, вызванные несанкционированным использованием технологии, описанной в этой статье. В случае каких-либо нарушений, пожалуйста, свяжитесь с автором. в публичном аккаунте [K Brother Reptile], чтобы немедленно удалить его!

Предисловие

В последнее время Dongdong также постоянно проходит техническое обслуживание и модернизацию. h5st параметр, Причина в том, что постепенно ВМПизация,прибыл сейчас 4.7 Версия сейчас относительно стабильна, поэтому давайте ее проанализируем.

обратная цель

Цель: Что-то h5st 4.7 параметр Обратный анализ

Веб-сайт: aHR0cHM6Ly93d3cuamQuY29tLw==

анализ процесса

Давайте сначала захватим пакет и проанализируем его. Если мы найдем интерфейс с параметром h5st, мы сможем напрямую увидеть его версию:

Есть еще один x-api-eid-token. Это токен контроля рисков. Сгенерированное местоположение выглядит следующим образом:

Он также возвращается интерфейсом. Параметры a и d генерируются большим количеством информации о среде браузера и отпечатках пальцев. Я не буду здесь их подробно анализировать. Давайте сначала посмотрим на параметры h5st. подробно.

Обратный анализ

Чтобы найти место создания параметров h5st, вы можете напрямую выполнить поиск по Дафа или найти стек, чтобы быстро найти сгенерированное местоположение:

Следуйте за стеком:

Можно обнаружить, что он передал colorParamSign в асинхронную функцию window.PSign.sign, и возвращаемый результат имеет параметр h5st:

Возьмите начало параметра запроса,Затем colorParamSign из body Это параметр запроса перед Воляизом. body пройти SHA256 Никаких волшебных модификаций для шифрования и тестирования не существует, мы можем просто установить библиотеку напрямую.

Нажмите, чтобы войти window.PSign.sign Это здесь, в функции VMP Файл, также главныйиз Шифровать файлы:

Взгляните поближе,Откройте для себя шифрование Воля из основного процесса,И большинство функций шифрования и з были VMP-ифицированы.,Однако он оставляет немало характерных моментов:

  • Способ первый:

Мы доступны во всех случаях vmp Операция из call Установите точку останова журнала в позиции из.,провести анализ,Но есть еще точки журнала,Не рекомендуется.

  • Способ второй:

По характерным точкам осталось,На ключе из функции шифрования из позиции,Анализ точек останова,Вы можете увидеть открытый текст входящегоиз.,Вы также можете увидеть зашифрованный зашифрованный текст,Можно сэкономить много времени. Давайте найдем некоторые распространенные функции шифрования CryptoJS., AES,SHA, Base64 и т. д.

Почти везде можно найти около 10 мест для шифрования.,Код Операции изфункция,все написано вместе,И формат,Характеристики в основном те же:

входящий Объект для получения экспорта из функции шифрования:

Вы можете обнаружить, что внутри также есть стандарты. ob Режим обфускации, основная функция экспорта шифрования: o функция, первоначально непосредственно o Функция из возвращаемого значения, присвоенная HS Объект, который будет передан позже HS возражать против o Затем функция экспортируется, поэтому HS Объект должен содержать все криптографические функции.

Мы можем взглянуть на выходные данные, найти следующую позицию и отрезать ее. Вот окончательная генерация сращивания. h5st из Расположение:

Затем выведите объект HS:

Нажмите соответствующую функцию шифрования.,Нижняя точка останова,Это сделает его более точнымиззнаю, как это сделать Операция из(На самом деле, точки останова можно ставить на всём)Для удобства я установил только следующие ключевые точки останова::

  • AES
  • Хэш
  • Base64:

После того, как мы сделали повторный запрос, он был отключен на AES:

здесьиз n, a Это должно быть key,iv , некоторые люди могут это не понять, ничего страшного, мы можем это преобразовать:

Язык кода:javascript
копировать
const CryptoJS = require('crypto-js');
var Bytes ={
    words: [1598895705, 1063548518, 1312043094, 1296456536],
    sigBytes: 16
};
var key = CryptoJS.enc.Utf8.stringify(Bytes);
console.log(key);
var Bytes = CryptoJS.enc.Utf8.parse(key);
console.log(Bytes);

Протестируйте и узнайте AES Следуйте стандарту AES Результаты противоречивы. Возможно, магия что-то изменила. Проблема невелика. Продолжим спускаться.

Воля AES Результаты шифрования осуществляются Base64 Кодируя (также модифицированную магией), мы можем return из Обрыв:

Продолжать идти:

Давайте посмотрим на стек и введем test Это очевидно из того, как проводить операцию. из:

Тогда я искал это test Как это произошло? request_algo интерфейс Возврат, обратите внимание Функции rd и шифрования являются динамическими.

Единственное, что необходимо детально проанализировать, это expandParams,Это также генерируется с использованием необычной магической модификации шифрования AES.,ключевые значения разные,Открытый текст в основном содержит некоторые экологические ценности.,Можно исправить в первую очередь,Подробного анализа здесь не будет.

Давайте еще раз взглянем на зашифрованное значение, чтобы предотвратить последующие вызовы:

Затем продолжайте идти и остановитесь здесь:

Язык кода:javascript
копировать
'5571a8dda12c510ad1922b90d6b048aba648d9a8c2fc679927fc1e7102520489appid:search-pc-java&body:64ef977e15f853295527f3ce1f15fc980963c43f27c40066d26dd19b542d0bd4&client:pc&clientVersion:1.0.0&functionId:pc_search_s_new&t:17152462710115571a8dda12c510ad1922b90d6b048aba648d9a8c2fc679927fc1e7102520489'
  • Результат шифрования:
Язык кода:javascript
копировать
626bad7f7ebe126bb799ac619409778c8808864ad364bcb3d6a42bfb14af47b7

Если вы внимательно посмотрите на простой текст, то на самом деле это так. выше test Функция генерирует зашифрованные результаты + colorParamSign из сращивания + test Функция генерирует зашифрованные результаты。

Но мы не знаем, какую функцию шифрования он использует. Мы можем использовать. HS Проверьте функции шифрования под объектом одну за другой. Вы также можете поставить точки останова на другие функции шифрования. Возможно, кто-то сможет это напрямую подтвердить. Ха-ха, это было подтверждено. SHA256 Функция шифрования:

Продолжайте идти вниз, и вы дойдете до последнего поколения сплайсинга. h5st параметриз Расположение:

  • е: Просто выше SHA256 Генерация функции шифрования из;
  • t: отметка времени;
  • r : генерируется преобразованием t.
Язык кода:javascript
копировать
function format() {
    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date.now()
      , t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "yyyy-MM-dd"
      , r = new Date(e)
      , n = t
      , a = {
        "M+": r.getMonth() + 1,
        "d+": r.getDate(),
        "D+": r.getDate(),
        "h+": r.getHours(),
        "H+": r.getHours(),
        "m+": r.getMinutes(),
        "s+": r.getSeconds(),
        "w+": r.getDay(),
        "q+": Math.floor((r.getMonth() + 3) / 3),
        "S+": r.getMilliseconds()
    };
    return /(y+)/i.test(n) && (n = n.replace(RegExp.$1, "".concat(r.getFullYear()).substr(4 - RegExp.$1.length))),
    w_(a).forEach((function(e) {
        if (new RegExp("(".concat(e, ")")).test(n)) {
            var t, r = "S+" === e ? "000" : "00";
            n = n.replace(RegExp.$1, 1 == RegExp.$1.length ? a[e] : j_(t = "".concat(r)).call(t, a[e]).substr("".concat(a[e]).length))
        }
    }
    )),
    n
};
​
​
console.log(format(1715246309293, "yyyyMMddhhmmssSSS"))  // 20240509171829293
  • Н: Это первый раз AES Шифрование для магической модификации Base64 Результат после кодирования;
  • _fingerprint: Вы можете сначала записать его до смерти и сгенерировать алгоритм;
  • _appid: Вы также можете сначала написать его и получить со страницы;
  • _token:request_algo интерфейсвозвращаться。

h5st Параметры были сгенерированы и проанализированы, теперь нам осталось только HS Как получить функцию шифрования под объектом:

Это кажется сложным, но ob Путаница и т. д. На самом деле просто вычесть нормально, чего не хватает, восполнить, об. На самом деле не надо восстанавливать путаницу Просто вручную вычитать Мест для путаницы не так уж и много. 10 Такие из функций имеют одинаковую структуру:

После вычитания выведите HS объект,Вы можете напрямую вызвать функцию шифрования внутри,Уведомление Чтобы убедиться, что результаты шифрования браузера согласованы:

Проверка результата

Уведомление:правильныйиз h5st не появится <Response [403]> из ситуации, 100% Данные можно получить:

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода