Страница 272 из 376
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 1:20 pm
nick7zmail
skyrider писал(а):
Как заставить выключатели Sesoo работать с кодами от ТС2 в МЖД после патча, куда копать?
для начала посмотрите в логи на предмет ошибок. В основной лог, и лог цикла бродлинк...ну скорее всего не в цикле будут...
Потом попробуйте найти логи апача и php (понятия не имею где они в винде...с линуксом в этом плане проще). Ищите так же любые ошибки в момент попытки отправки команды....
ПС: На php7.0 в малинке пашет нормально...проблема по ходу именно в виндовой сборке...Я всё до экспериментов на виртуалке не доберусь...геморно как то =D...да и приболел немного к тому же.
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 2:28 pm
dmw
olehs писал(а): в данном случае делает то же самое, что и
Код: Выделить всё
$data = str_pad($data, 16, chr(0), STR_PAD_RIGHT);
Так что это ни на что не должно влиять.
Пока только мысли в слух:
Вот сейчас только что попробовал у себя на 7.0.25 этот код:
Код: Выделить всё
$data = 'hello';
$key = implode(array_map("chr", array(0x09, 0x76, 0x28, 0x34, 0x3f, 0xe9, 0x9e, 0x23, 0x76, 0x5c, 0x15, 0x13, 0xac, 0xcf, 0x8b, 0x02)));
$iv = implode(array_map("chr", array(0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58)));
$data_pad = str_pad($data, 16, chr(0), STR_PAD_RIGHT);
$result_1 = base64_encode(openssl_encrypt($data_pad, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv));
$result_2 = base64_encode(openssl_encrypt($data_pad, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv));
$result_3 = base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv));
$result_4 = base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv));
$result_5 = base64_encode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
echo "1:".$result_1."<br>2:".$result_2."<br>3:".$result_3."<br>4:".$result_4."<br>5:".$result_5."<br>";
Выводит совершенно разные результаты, причем $result_5 - какбы эталонный с которым все работало до некоторого времени и ни один с ним не совпал, странно все это:
1:0xvj8lfXyQZT8g6H8MGMUw==
2:0xvj8lfXyQZT8g6H8MGMU5GZer23vVPF7F24LCfdbVI=
3:
4:E3m4kfM5ld8sG9UMIpe2uA==
5:0EdmLv3oKPs3qJwldEagQw==
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 2:39 pm
olehs
у ваc в эталоне mcrypt_decrypt вместо mcrypt_encrypt.
Если поменять - совпадет с вариантом 1
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 2:53 pm
dmw
а да точно.
Теперь все ок должно быть.
Ваходит что
Код: Выделить всё
function aes128_cbc_encrypt($key, $data, $iv) {
$data = str_pad($data, 16, chr(0), STR_PAD_RIGHT);
return openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
}
правильней будет чем щас там.
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 2:59 pm
olehs
ага. еще бы decrypt сравнить
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 3:16 pm
olehs
olehs писал(а):ага. еще бы decrypt сравнить
Проверил. trim - нужен.
Предлагаю так
Код: Выделить всё
function aes128_cbc_decrypt($key, $data, $iv) {
return rtrim(openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv), chr(0));
}
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 3:41 pm
olehs
Ну и конечно же encrypt правильней будет так
Код: Выделить всё
function aes128_cbc_encrypt($key, $data, $iv) {
$data = str_pad($data, ceil(strlen($data) / 16) * 16, chr(0), STR_PAD_RIGHT);
return openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
}
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 7:21 pm
nick7zmail
Принял реквест.
Если честно - на всех операционках проверять не в состоянии сейчас.
Так что не пинайте если что не пашет))
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 7:26 pm
Cashmarik
Здравствуйте, в лог постоянно сыпется такая запись:
PHP Warning: socket_recvfrom(): unable to recvfrom [10060]: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
in C:\_majordomo\htdocs\modules\dev_broadlink\broadlink.class.php on line 553
Код: Выделить всё
$ret = socket_recvfrom($cs, $response, 2048, 0, $from, $port);
В чем может быть трабл?
Re: [Модуль] Broadlink
Добавлено: Ср мар 07, 2018 7:39 pm
nick7zmail
Проверьте правильно ли убиты параметры устройства...мож ip поменялся или ещё что....ошибка возникает, когда до устройства сервер не может достучаться.
Отправлено с моего Xperia XZ1 Compact через Tapatalk