Помогите разобраться в функции подписи

Тема в разделе "WASM.RESEARCH", создана пользователем kayrus, 24 май 2020.

  1. kayrus

    kayrus New Member

    Публикаций:
    0
    Регистрация:
    24 май 2020
    Сообщения:
    1
    Я работаю над opensource реализацией проприетарного VPN клиента. Для получения более широких возможностей авторизации мне нужно понять алгоритм построения цифровой подписи. Все, что смог выяснить, это то, что скорее всего это HMAC-MD5 с ключем, который отправляет сервер. С помощью mitmproxy я подставляю свой ключ, и подпись, генерируемая проприетарным клиентом, не меняется.

    Начальная реализация генерации подписи здесь: https://github.com/kayrus/gof5/blob/03c3ceb5e48f157e04b8b4acb4361eb39f518ec8/pkg/client.go#L51..L120
    Тест, который можно запустить для проверки: https://github.com/kayrus/gof5/blob/03c3ceb5e48f157e04b8b4acb4361eb39f518ec8/pkg/client_test.go#L8

    Информация о процессе построения подписи: https://github.com/kayrus/gof5/blob/9f8a1a66e20ad9ae67d7b0ea9fdecd3a0ba6eb16/SIGNATURE.md

    К сожалению не силен в дизассемблировании, прошу помочь разобраться. Пробовал декомпилировать Android клиент F5 Access, но там я тоже не смог найти нужную функцию.

    Бинарник клиента linux x86_64: https://github.com/kayrus/gof5/raw/bin/f5fpc_x86_64.tgz
    В нем легко ищется сигнатура
    Код (Text):
    1. &signature=%s
    Банальная конфигурация nginx может представиться как F5 VPN server:

    Код (Text):
    1.  
    2. server {
    3.     listen              443 ssl;
    4.     server_name         _;
    5.     ssl_certificate     server.pem;
    6.     ssl_certificate_key server.key;
    7.     ssl_protocols       TLSv1.2;
    8.     ssl_ciphers         HIGH:!aNULL:!MD5;
    9.  
    10.         location / {
    11.                 return 200 "<?xml version=\"1.0\"?><data><token>1</token><version>2.0</version><redirect_url>/my.policy</redirect_url><max_client_data>16384</max_client_data></data>";
    12.         }
    13. }
    Запуск клиента сгенерирует nginx access log с сигнатурами:
    Код (Text):
    1. f5fpc --start --host localhost --user test --password test --nocheck
     
    Последнее редактирование: 24 май 2020