nick7zmail писал(а): Пт ноя 23, 2018 6:46 am
samolet писал(а): Чт ноя 22, 2018 9:57 pm
Никита прошу тебя ну убери ты эту Камасутру , лучше чтоб с логином и паролем, как например два приложения евелинк и плаг энд плей работают в паре пусть в эту пару войдет и третий мажордом, глядишь так и избавимся от сексуальных заморочек.
вот что в ошибках таких куча
Блин, я ж не всемогущий)))уберу, если получится. Тут надо механизм логина исследовать...я с механизмом включения-выключения только неделю бился...с логином чутка сложнее, плюс у меня в телеге накопилась очередь за это время - кому помочь надо)))
И эта камасутра то по-моему не из-за логина/пароля или ключа. Этот адрес у тебя в https или в wss вписан?
Всем здрасьте. Чую, что не с того конца я зашел в изучении majordomo, но все-же.
Т.к. я виндузятник, то для сниффинга был взят эмулятор android Genymotion и Fiddler в качестве синффера (ну, роднее он мне да и пользоваться я им умею лучше). Версию ewelink юзал 2.2.7 ибо она собрана под arm и x86 (напоминаю у меня эмулятор, а хост машина все-же x64), все что находил версии выше уже собраны только под arm.
Касаться получения токена не буду, ибо выше и так все всё знают, я сосредоточился на регистрации с логином и паролем. После установки сначала идут запросы на отправку статистики, регистрация в сервере пушей (причем китайском, taobao), а потом летит запрос на определение региона по url
https://api.coolkit.cc:8080/api/user/re ... sion=2.2.7
Самое интересное тут две вещи, таймстамп (стандартное юникс тайм) и nonce - это просто рандомный набор из 8 символов.
Но еще интересней, что есть заголовок авторизации Authorization: sign Cz75NFE5KeNrDmrp1c+uMOM7WGF7bUIriEs3ZpHZNio=
вот с ним самая беда. Это hmac256 где нужно передать два значения, т.е. сами данные которые нужно прохэшировать и секретный ключ. Т.е. сервер отвергает запросы у которых не совпадает этот хэш. Интересно другое, на этом запросе серверу плевать на подпись авторизации, можно пихать вообще что душе угодно.
Едем дальше, этот запрос возвращает json в котором есть регион, который потом будет использоваться в качестве префикса для серверов диспетчеров.
{"requestid":"1542834592-zdvn13st","region":"eu","error":0}
Забегая вперед, про сервера диспечеризации, Никита там выше спрашивал откуда берутся разные сервера, так вот у них они и спрашиваются. После того как пользователь уже зарегался, т.е. авторизация уже с токеном. дергается адрес
https://eu-disp.coolkit.cc:8080/dispatch/app (префикс из запроса определения региона) который и возвращает куда дальше ходить за данными {"port":8080,"reason":"ok","IP":"47.254.134.197","error":0,"domain":"eu-ruslong.coolkit.cc"}
Возвращаемся к логону и получению токена, вторым запросом летит POST запрос
https://api.coolkit.cc:8080/api/user/login, где передается логин и ПАРОЛЬ в открытом виде! Дырища размером... короче большая, ставится роутер с сертификатом которому доверяют устройства и у вас лампочки в доме могут начать включаться сами, но это для параноиков. В заголовке опять Authorization: sign jFdBCCSg6XVlj3zOKRyC62W9jRcz8xB96UoWY0gM378= что возвращает нас к теме поиска секретного ключа. Найти который пока мне не удалось. Диссасемблирование APK ни к чему не привело, сигнатуру методов формирования его я вижу но они под ошибками, подозреваю обфускацию. Нашел версию apk самое маленькое 2.1.14 версии - те же яйца только сбоку.
Нашел на просторах вот такой код какого-то китайца
https://github.com/princemm/mytest/blob ... /index.php, ключи которые в коде не подходят, но они явно есть где-то в самом apk ибо поиск по самому бинарнику их находит, но верный sign не формируется. Я регуляркой погулял еще по бинарнику навыдергивал порядка десятка подобных значений, все мимо. Разгадаем как формируется строка sign, тогда можно будет работать. Причем для удобства можно логически разделить учетку что на телефонах и сделать еще одну для majordomo и с телефона просто поделиться устройствами с учеткой majordomo, тогда их логон/логофф не будут влиять друг на друга. Просто повторный логон даже с того-же самого устройства выдает новый токен ибо в запросе есть отметка времени - таймстамп и nonce - великий рандом.