Я перехватил некоторый трафик между приложением Android и веб-сайтом, используя Charles Proxy. Чарльз идентифицирует трафик как поток буфера протокола.
Структура, как показано в Чарльзе:
- site.com
|
-- sub
|
--- message.proto
Необработанное сообщение:
POST site.com/sub/message.proto HTTP/1.1
token: random
Id: random
Authorization: Basic OTI[..]
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.3; Galaxy Nexus Build/JWR66Y)
Host: site.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Content-Length: 580
��hï õÜÕñ6iaõ*|{6¤oQIùk*դž¼
S_½ª¥8.3ÝÎu öÚ´êVFBeùõÈî¿;µ¼ö%S [...]
Я пробовал несколько вещей, чтобы расшифровать содержимое, но тщетно. Команда proton decode_raw < message.txt
приводит к сообщению об ошибке Failed to parse input
. Теперь я не уверен, действительно ли сообщение является сообщением protobuf, поскольку Content-Type в заголовках не указывает, что protobuf используется. Я также сохранил трафик в виде файла .bin
.
У Charles есть возможность отображать контекст сообщения protobuf, но для этого требуется соответствующий файл дескриптора. Однако, чтобы получить файл дескриптора, мне нужен фактический файл .proto
, которого у меня нет.
Итак, я вынужден декодировать сообщение вручную или есть другие возможности, которые я упустил?
Я подозреваю, что используется шифрование на уровне приложения, и Чарльз непреднамеренно идентифицирует трафик как protobuf.