Я работаю над 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): &signature=%s Банальная конфигурация nginx может представиться как F5 VPN server: Код (Text): server { listen 443 ssl; server_name _; ssl_certificate server.pem; ssl_certificate_key server.key; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location / { 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>"; } } Запуск клиента сгенерирует nginx access log с сигнатурами: Код (Text): f5fpc --start --host localhost --user test --password test --nocheck