[Модуль] Sonoff (dev_sonoff)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь
Благодарил (а): 117 раз
Поблагодарили: 7 раз

Re: [Модуль] Sonoff

Сообщение dengi.76 » Пт ноя 23, 2018 2:41 pm

Здравствуйте! У меня вопрос : всё делаю по видеоинструкции, ввожу в телефоне адрес и порт прокси сервера, нажимаю сохранить..., и у меня тут же приложение Евелинк пишет что сеть недоступна, хотя другие приложения на телефоне сеть видят !?! Подскажите пожалуйста, что я делаю не так???
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: [Модуль] Sonoff

Сообщение nick7zmail » Пт ноя 23, 2018 3:05 pm

Скорее всего что-то не так в настройках самого проксика. Сгенерируйте заново сертификат, установите его. Убедитесь, что в прокси не выдаётся запрос на доступ...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь
Благодарил (а): 117 раз
Поблагодарили: 7 раз

Re: [Модуль] Sonoff

Сообщение dengi.76 » Пт ноя 23, 2018 3:32 pm

У меня не получается ни чего сгенерировать, т.к. сразу-же после ввода прокси, Евелинк перестаёт коннектитца к инету, и соответственно я не могу управлять устройствами с телефона и в Charles ни чего не идёт. Вот, как то так... :)
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Sonoff

Сообщение samolet » Пт ноя 23, 2018 3:51 pm

Дело в том что программа евелинк как-то защищена от подобного рода сертификатов, скачивайте в маркете Plug and Play вводите тот-же логин и пароль, с ней все будет ок. Но у этой проги есть особенность у нее заканчивается сессия и пока-что я не отследил через какой промежуток времени, а это влечет за собой перелогинивание и новое получение апи авторизации который вбивается в модуль сонофа в мажордоме. В общем пока что Никита не победил этот секис, ждемс.
За это сообщение автора samolet поблагодарил:
dengi.76 (Сб ноя 24, 2018 11:10 am)
Рейтинг: 1.16%
dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь
Благодарил (а): 117 раз
Поблагодарили: 7 раз

Re: [Модуль] Sonoff

Сообщение dengi.76 » Пт ноя 23, 2018 4:00 pm

Понял, СПАСИБО !
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Sonoff

Сообщение samolet » Пт ноя 23, 2018 6:25 pm

Никита вот теперь такое вылазит и ни чего не работает, я так понимаю протокол не нравится TLSv1.2 этот протокол вроде как для мобильных приложений.


Exception in "Erker.turnOff" method Empty read; connection dead? Stream state: {"crypto":{"protocol":"TLSv1.2","cipher_name":"ECDHE-RSA-AES128-GCM-SHA256","cipher_bits":128,"cipher_version":"TLSv1.2"},"timed_out":false,"blocked":true,"eof":false,"stream_type":"tcp_socket\/ssl","mode":"r+","unread_bytes":0,"seekable":false}
Backtrace:
#0 C:\_majordomo\htdocs\modules\objects\objects.class.php(565): registerError('method', 'Exception in "E...')
#1 C:\_majordomo\htdocs\lib\objects.class.php(941): objects->callMethod('turnOff', Array)
#2 C:\_majordomo\htdocs\modules\scenes\scenes.class.php(676): callMethod('turnOff', Array)
#3 C:\_majordomo\htdocs\modules\scenes\scenes.class.php(102): scenes->usual(Array)
#4 C:\_majordomo\htdocs\modules\application.class.php(367) : eval()'d code(5): scenes->run()
#5 C:\_majordomo\htdocs\modules\application.class.php(367): eval()
#6 C:\_majordomo\htdocs\index.php(71): application->run()
#7 C:\_majordomo\htdocs\admin.php(149): include_once('C:\\_majordomo\\h...')
#8 {main}
Nab0y
Сообщения: 26
Зарегистрирован: Пт ноя 23, 2018 5:48 pm
Благодарил (а): 1 раз
Поблагодарили: 14 раз

Re: [Модуль] Sonoff

Сообщение Nab0y » Пт ноя 23, 2018 6:40 pm

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 - великий рандом.
За это сообщение автора Nab0y поблагодарили (всего 3):
Stan (Сб ноя 24, 2018 1:09 am) • VAndrey (Вс ноя 25, 2018 10:23 am) • ipc2002 (Вт янв 07, 2020 12:06 am)
Рейтинг: 3.49%
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Sonoff

Сообщение samolet » Пт ноя 23, 2018 8:09 pm

Я так понимаю сложность в расшифровке формирования строки sign? Теперь остается лишь привлечь народ на прогулку по бинарнику, подскажите как это сделать и уж я точно погуляю там пособираю грибов в виде значений кода.
kadin
Сообщения: 2
Зарегистрирован: Пт ноя 23, 2018 8:47 pm
Благодарил (а): 0
Поблагодарили: 0

Re: [Модуль] Sonoff

Сообщение kadin » Пт ноя 23, 2018 8:51 pm

Привет всем!
Вот только только установил можора.Сижу изучаю. Подскажите хочу прикрутить sonoff, и вот не могу понять где поле куда надо ключ вписать?
Вложения
Снимок.PNG
Снимок.PNG (8.91 КБ) 4074 просмотра
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Sonoff

Сообщение samolet » Пт ноя 23, 2018 9:13 pm

на первой страничке все описано токен это апи авторизации
Пишу для новичков

после нахождения устройства соноф
идем в объекты
находим switch1
открываем его и внизу есть кнопка создан копировать
открываем эту копию и переименовываем например в sonoff
далее заходим обратно в устрйства и выбираем sonoff
открываем свое устройство , данные, и в окошке находим созданный ранее объект sonoff
выбираем его и в окне связанное свойство status
далее в созданной сцене создаем кнопку и все это привязываем к ней.
Ответить