приставка mag250

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: приставка mag250

Сообщение directman66 » Пт дек 15, 2017 8:55 pm

попробовал с телефона послать UPD запрос {"protocol":"remote_stb_1.0","port":8778} на порт 6000 по адресу 192.168.1.255 и мне пришел требуемый ответ. Почему-то если эти порты прописать в скрипте, никакого ответа нет. Использовал программу UDP Sender/Receiver.

Через телефон, если тоже самое отправить на порт 6777, приходит такая-же зашифрованная ерунда.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: приставка mag250

Сообщение directman66 » Сб дек 16, 2017 8:42 am

Из приложения же работает. Что я делаю не так?
СпойлерПоказать
Изображение
Изображение
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Traktor
Сообщения: 5
Зарегистрирован: Чт мар 15, 2018 11:14 am
Откуда: Сыктывкар
Благодарил (а): 4 раза
Поблагодарили: 0

Re: приставка mag250

Сообщение Traktor » Пт апр 13, 2018 12:14 pm

Ждем! Надеюсь получиться маг 250 прикрутить :shock:
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: приставка mag250

Сообщение directman66 » Пт апр 13, 2018 12:28 pm

Когда-нибудь и до приставок руки дойдут. Хотелось бы конечно большего функционала, не только http пульт. В приставках по сути есть dnla клиент. Но видимо он какойто урезанный. Нельзя на приставку вывести контент через bubbleUpnp
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: приставка mag250

Сообщение tarasfrompir » Чт авг 30, 2018 8:37 am

а кто может дешифровать єту фуункцию - помогите плиз

Код: Выделить всё

protected List<STB> doInBackground(String... params) {
            DatagramSocket socketR;
            JSONException e;
            SocketException e2;
            IOException e3;
            DiscoveryActivity.this.stbs = new ArrayList();
            STB stb = new STB();
            stb.setName(DiscoveryActivity.this.getResources().getString(C0454R.string.manual));
            stb.setIp("");
            stb.setPort("7666");
            stb.setSerial(DiscoveryActivity.this.manualSerialNumber);
            stb.setType("");
            DiscoveryActivity.this.stbs.add(stb);
            DatagramSocket socketR2 = null;
            STB stb2 = stb;
            while (DiscoveryActivity.this.listen) {
                try {
                    socketR = new DatagramSocket(null);
                    try {
                        socketR.setReuseAddress(true);
                        socketR.setBroadcast(true);
                        socketR.bind(new InetSocketAddress(8777));
                        socketR.setSoTimeout(5000);
                        byte[] buf = new byte[1024];
                        DatagramPacket packet = new DatagramPacket(buf, buf.length);
                        socketR.receive(packet);
                        JSONObject json = new JSONObject(new String(buf, "UTF-8").trim());
                        stb = new STB();
                        try {
                            stb.setName(json.getString("name"));
                            stb.setIp(packet.getAddress().getHostAddress().toString());
                            stb.setPort(json.getString("port"));
                            stb.setSerial(json.getString("serialNumber"));
                            stb.setType(json.getString("type"));
                            DiscoveryActivity.this.stbs.add(stb);
                            socketR2 = socketR;
                            stb2 = stb;
                        } catch (JSONException e4) {
                            e = e4;
                        } catch (SocketException e5) {
                            e2 = e5;
                        } catch (IOException e6) {
                            e3 = e6;
                        }
                    } catch (JSONException e7) {
                        e = e7;
                        stb = stb2;
                    } catch (SocketException e8) {
                        e2 = e8;
                        stb = stb2;
                    } catch (IOException e9) {
                        e3 = e9;
                        stb = stb2;
                    }
                } catch (JSONException e10) {
                    e = e10;
                    socketR = socketR2;
                    stb = stb2;
                } catch (SocketException e11) {
                    e2 = e11;
                    socketR = socketR2;
                    stb = stb2;
                } catch (IOException e12) {
                    e3 = e12;
                    socketR = socketR2;
                    stb = stb2;
                }
            }
            socketR = socketR2;
            stb = stb2;
            return DiscoveryActivity.this.stbs;
            e2.printStackTrace();
            return DiscoveryActivity.this.stbs;
            e3.printStackTrace();
            return DiscoveryActivity.this.stbs;
            e.printStackTrace();
            return DiscoveryActivity.this.stbs;
        }
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: приставка mag250

Сообщение tarasfrompir » Пн сен 24, 2018 11:01 pm

Ура - получил ответ от приставки на пхп скрипте..

Код: Выделить всё

<?php
$arr=array('protocol'=>'remote_stb_1.0','port'=>7666);
$post_data = json_encode($arr);
echo $post_data;
echo "<br>";
//$sock = socket_create_listen(7666); 
$sock = socket_create(AF_INET, SOCK_DGRAM, 0); 
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);

// not nedded $post_data = iconv("UTF-8", "ASCII", $post_data);
socket_bind($sock, 0, 7666);

socket_sendto($sock, $post_data, strlen($post_data), 0, '239.255.255.250', 6000);
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>1000));


$response = array();
        do {
            $buf = null;
    @socket_recvfrom($sock, $buf, 2048, 0, $host, $sport);

            if (!is_null($buf)) {
$response[] =$buf;
$hex=bin2hex ($buf);
             
$decript=decript($buf, $password);
         
//  echo "<br>Messagge : < $buf > , hex: < $hex > , decript < $decript >  $host : $sport <br>";                         
echo "<br>Messagge : < $buf > ,  $host : $sport <br>";                                     
            }
        } while (!is_null($buf));


echo "<br>";

$password = '1';
$password = substr(hash('sha256', $password, true), 0, 32);

/////////////////
echo "<br>---------------------<br>";
echo "pingRequest $host <br>";

$arr=array('msgType'=>'pingRequest');

$post_data = json_encode($arr);
//$post_data = encript($post_data, $password);
echo $post_data;

socket_sendto($sock, $post_data, strlen($post_data), 0, '192.168.100.200', 7666);



$response = array();
        do {
            $buf = null;
    @socket_recvfrom($sock, $buf, 2048, 0, $host, $port);

            if (!is_null($buf)) {
$response[] =$buf;
$hex=bin2hex ($buf);
$decript=decript($buf,$password);
         
  echo "<br>Messagge : < $buf > , hex: < $hex > , decript < $decript >  $host : $port <br>";                         
//echo "<br>Messagge : < $buf > , decript < $decript >  $host : $port  $hex <br>";                                     
            }
        } while (!is_null($buf));

socket_close($sock);

echo "<br>---------------------<br>";





$phrase="test";
$dphrase= encrypt_decrypt('encrypt', $phrase);
$ephrase=encrypt_decrypt('decrypt', $phrase);
echo "<br>$phrase :::: $dhrase :::: $ephrase <br>";




function encrypt_decrypt($action, $string) {
    $output = false;
    $encrypt_method = "AES-256-CBC";
    $secret_key = '10000000000000000';
    $secret_iv = '00000000000000000';
    // hash
    $key = hash('sha256', $secret_key);
    
    // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
    $iv = substr(hash('sha256', $secret_iv), 0, 16);
    if ( $action == 'encrypt' ) {
        $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
        $output = base64_encode($output);
    } else if( $action == 'decrypt' ) {
        $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
    }
    return $output;
}


function decript($phrase, $password){
$method = 'AES-256-CBC';
$iv = 'erghnlhbnmbnkghy';
$encrypted = base64_encode(openssl_encrypt($phrase, $method, $password, OPENSSL_RAW_DATA, $iv)); 
 return $encrypted;
}

function encript($phrase, $password){
$method = 'AES-256-CBC';
$iv = 'erghnlhbnmbnkghy';
$decrypted = openssl_decrypt(base64_decode($phrase), $method, $password, OPENSSL_RAW_DATA, $iv);
 return $decrypted;
}
 
.
Правильно работающая функция

Код: Выделить всё

<?php
$arr=array('protocol'=>'remote_stb_1.0','port'=>6777);
$post_data = json_encode($arr);
echo $post_data;
$ports = '7666';
echo "<br>";
//$sock = socket_create_listen(7666); 
$sock = socket_create(AF_INET, SOCK_DGRAM, 0); 
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);

// not nedded $post_data = iconv("UTF-8", "ASCII", $post_data);
socket_bind($sock, 0, 6777);

socket_sendto($sock, $post_data, strlen($post_data), 0, '239.255.255.250', 6000);
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>1, "usec"=>10));


$response = array();
        do {
            $buf = null;
    @socket_recvfrom($sock, $buf, 2048, 0, $host, $sport);

            if (!is_null($buf)) {
$response[] =$buf;
$hex=bin2hex ($buf);
        


         
//  echo "<br>Messagge : < $buf > , hex: < $hex > , $host : $sport <br>";                         
echo "<br>Messagge : < $buf > ,  $host : $sport <br>";                                     
            }
        } while (!is_null($buf));


echo "<br>";



/////////////////
echo "<br>---------------------<br>";
echo "pingRequest $host <br>";

$arr=array('msgType'=>'pingRequest');

$post_data = json_encode($arr);

//$post_data = tobytes($post_data);
echo $post_data;

socket_sendto($sock, $post_data, strlen($post_data), 0, '192.168.100.200', 7666);
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>1, "usec"=>10));


$response = array();
        do {
            $buf = null;
    @socket_recvfrom($sock, $buf, 1024, 0, $host, $ports);

            if (!is_null($buf)) {
$response[] = $buf;
$plaintext = $buf;
$hex=bin2hex ($buf);




// echo "<br>Messagge : < $buf > , hex: < $hex > ,  $host : $ports <br>";                         
//echo "<br>Messagge : < $buf > , base64 < $base64 >  $host : $port  $hex <br>";                                     
            }
        } while (!is_null($buf));

//socket_close($sock);

    $dataToDecrypt = $plaintext;
    $aesKey = '1';

    $iv = 'erghnlhbnmbnkghy';
    $result = openssl_decrypt($plaintext, 'AES-256-CBC', $aesKey, OPENSSL_RAW_DATA, $iv);

     echo ($result);

/////////////////
echo "<br>---------------------<br>";



$metaState = Hex2String (49);
echo $metaState ;
$keycode = Hex2String (0);
$unicode = Hex2String (49);

echo "pingRequest $host <br>";

$arr=array("msgType"=>"keyboardKey","action"=>"press","metaState"=>0,"keycode"=>49,"unicode"=>1,"action"=>"press");

$post_data = json_encode($arr);
    $result = openssl_encrypt($post_data, 'AES-256-CBC', $aesKey, OPENSSL_RAW_DATA, $iv);

echo $post_data;

socket_sendto($sock, $result, strlen($result), 0, '192.168.100.200', 7666);
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>1, "usec"=>10));



$response = array();
        do {
            $buf = null;
    @socket_recvfrom($sock, $buf, 1024, 0, $host, $ports);

            if (!is_null($buf)) {
$response[] = $buf;
$plaintext = $buf;
$hex=bin2hex ($buf);




// echo "<br>Messagge : < $buf > , hex: < $hex > ,  $host : $ports <br>";                         
//echo "<br>Messagge : < $buf > , base64 < $base64 >  $host : $port  $hex <br>";                                     
            }
        } while (!is_null($buf));

socket_close($sock);

    $dataToDecrypt = $plaintext;
    $aesKey = '1';

    //$iv = hex2bin("657267686e6c68626e6d626e6b676879");
    $iv = 'erghnlhbnmbnkghy';
    $result = openssl_decrypt($plaintext, 'AES-256-CBC', $aesKey, OPENSSL_RAW_DATA, $iv);

}

Код: Выделить всё

{"protocol":"remote_stb_1.0","port":6777}

Messagge : < {"msgType":"Info","name":"aura","deviceFamily":"stbapp","type":"AuraHD2","serialNumber":"102014N030135","screenHeight":480,"screenWidth":720,"port":7666,"protocolVersion":"1.0","modes":["MOUSE","KEYBOARD"]} > , 192.168.100.200 : 7666 


---------------------
pingRequest 192.168.100.200 
{"msgType":"pingRequest"}
Messagge : < ��4�!��@�Rt���>�!���q���S� > , hex: < bdfb0134e021c41de2408d5274c09cf33e96218d111bb4f771b8c9ee050b5384 > , 192.168.100.200 : 7666 

---------------------
Base64 encode:vfsBNOAhxB3iQI1SdMCc8z6WIY0RG7T3cbjJ7gULU4Q= 
Base64 decode:�j 
Password:10000000000000000000000000000000 
plaintext=��4�!��@�Rt���>�!���q���S�
cipher=aes-256-cbc
encrypted to: 6��S�h��ᣁ_����W�vȩvI�����=��k'��!1�f����
decrypted to: 
Вложения
111.php.txt
code encode
(988 байт) 547 скачиваний
array.txt
(50 байт) 542 скачивания
Последний раз редактировалось tarasfrompir Чт сен 27, 2018 1:29 pm, всего редактировалось 1 раз.
За это сообщение автора tarasfrompir поблагодарили (всего 2):
directman66 (Вт сен 25, 2018 11:16 am) • chimik (Вт сен 25, 2018 10:28 pm)
Рейтинг: 2.33%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: приставка mag250

Сообщение tarasfrompir » Чт сен 27, 2018 9:29 am

Получил пингреспонс - УРА :lol: 3 бессоных ночи... :twisted: :shock:
при декодировании не надо получать хеши пароля и солстринга - тупо их вписывать
solstring (iv ) = erghnlhbnmbnkghy
Теперь приступаю к написанию класса управления для приставки
Последний раз редактировалось tarasfrompir Чт сен 27, 2018 10:16 am, всего редактировалось 2 раза.
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: приставка mag250

Сообщение tarasfrompir » Чт сен 27, 2018 9:59 am

Вот это по управлению пультом кнопок - все команды отрабатывают с дистанционного управления только так (вроде)
1. построение самого запроса json -

Код: Выделить всё

this.json.put("msgType", "keyboardKey");
            this.json.put("action", "press");
            this.json.put("metaState", new Integer(metaState));
            this.json.put("keycode", new Integer(keycode));
            this.json.put("unicode", new Integer(unicode));
            this.json.put("action", "press");
2. this.hex - тут находится сама комманда - metaState, keycode, unicode (только по идее они идут в 16чном коде - их надо преобразовывать в десятичный)

Код: Выделить всё

 public void onClick(View v) {
        switch (v.getId()) {
            case C0182R.id.power:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0022 0021 0044 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "85,134217728,117";
                    break;
                }
            case C0182R.id.mute:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0044 0021 0022 0021 0022 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "96,134217728,96";
                    break;
                }
            case C0182R.id.audiomode:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0044 0021 0022 0021 0022 0043 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "71,134217728,0";
                    break;
                }
            case C0182R.id.settings:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0044 0021 0022 0043 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "16777272,67108864,120";
                    break;
                }
            case C0182R.id.red:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0044 0021 0022 0043 0044 0d74";
                    break;
                } else {
                    this.hex = "16777264,67108864,112";
                    break;
                }
            case C0182R.id.green:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0044 0021 0022 0021 0022 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "16777265,67108864,113";
                    break;
                }
            case C0182R.id.yellow:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0022 0021 0044 0021 0022 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "16777266,67108864,114";
                    break;
                }
            case C0182R.id.blue:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0022 0021 0044 0043 0044 0d74";
                    break;
                } else {
                    this.hex = "16777267,67108864,115";
                    break;
                }
            case C0182R.id.menu:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0044 0043 0044 0d74";
                    break;
                } else {
                    this.hex = "16777274,67108864,122";
                    break;
                }
            case C0182R.id.back:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000c 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0022 0021 0022 0021 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "16777219,0,8";
                    break;
                }
            case C0182R.id.exit:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0022 0021 0044 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "16777216,0,27";
                    break;
                }
            case C0182R.id.info:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "89,134217728,121";
                    break;
                }
            case C0182R.id.app:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "16777275,67108864,123";
                    break;
                }
            case C0182R.id.tv:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0044 0043 0044 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "16777273,67108864,121";
                    break;
                }
            case C0182R.id.guide:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0022 0021 0044 0043 0022 0021 0044 0d74";
                    break;
                } else {
                    this.hex = "16777271,67108864,119";
                    break;
                }
            case C0182R.id.keyboard:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0043 0022 0021 0044 0021 0022 0021 0022 0d74";
                    break;
                } else {
                    openDialogKeyboard();
                    break;
                }
            case C0182R.id.rew:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0043 0044 0043 0022 0021 0044 0d74";
                    break;
                } else {
                    this.hex = "66,134217728,98";
                    break;
                }
            case C0182R.id.ffwd:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0043 0044 0021 0022 0021 0022 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "70,134217728,102";
                    break;
                }
            case C0182R.id.play:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0044 0043 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "82,134217728,114";
                    break;
                }
            case C0182R.id.stop:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0043 0022 0021 0044 0021 0022 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "83,134217728,115";
                    break;
                }
            case C0182R.id.n1:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000c 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0021 0022 0021 0022 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "49,0,49";
                    break;
                }
            case C0182R.id.n2:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0021 0022 0043 0044 0d74";
                    break;
                } else {
                    this.hex = "50,0,50";
                    break;
                }
            case C0182R.id.n3:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000c 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0021 0022 0043 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "51,0,51";
                    break;
                }
            case C0182R.id.n4:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0043 0044 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "52,0,52";
                    break;
                }
            case C0182R.id.n5:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0043 0044 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "53,0,53";
                    break;
                }
            case C0182R.id.n6:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0043 0022 0021 0044 0d74";
                    break;
                } else {
                    this.hex = "54,0,54";
                    break;
                }
            case C0182R.id.n7:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000c 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0043 0022 0021 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "55,0,55";
                    break;
                }
            case C0182R.id.n8:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0044 0021 0022 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "56,0,56";
                    break;
                }
            case C0182R.id.n9:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0043 0044 0021 0022 0043 0022 0d53";
                    break;
                } else {
                    this.hex = "57,0,57";
                    break;
                }
            case C0182R.id.size:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000b 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0043 0044 0043 0022 0021 0022 0021 0022 0d53";
                    break;
                } else {
                    this.hex = "16777269,67108864,117";
                    break;
                }
            case C0182R.id.n0:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000c 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0021 0022 0021 0022 0021 0022 0021 0022 0021 0022 0021 0022 0d74";
                    break;
                } else {
                    this.hex = "48,0,48";
                    break;
                }
            case C0182R.id.reload:
                if (!this.useWiFi.booleanValue()) {
                    this.code = "0000 006d 000a 0000 0022 0021 0044 0021 0022 0043 0022 0021 0022 0021 0044 0043 0044 0043 0022 0021 0022 0021 0044 0d74";
                    break;
                } else {
                    this.hex = "16777268,0,116";
                    break;
                } 
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: приставка mag250

Сообщение tarasfrompir » Чт сен 27, 2018 3:28 pm

Вроде как сделано набор функций для управления устройством
- правое значение в функции джави код кнопки
// metastate in center
На ваш взгляд выкладываю - проверено только кнопка 1... Потом дописывал на работе
Проведу тест и в бой...
маска для шифта -1 зажатого -64 и контрола - 2 - зажатого -128
все описано здесь - https://docs.oracle.com/javase/7/docs/a ... _DOWN_MASK
encode($hex) - функция для символа - таблица https://www.google.com.ua/search?q=asci ... WIkU9WcTeM:

Код: Выделить всё

 
<?php
echo (serialize(scan_device()));
// $answer = key_2('192.168.100.200', 1);
echo 'answer - ' . $answer;
$answer = key_power('192.168.100.200', '1');
echo 'answer - ' . $answer;

// scan device

function scan_device()
    {
    $arr = array(
        'protocol' => 'remote_stb_1.0',
        'port' => 6777
    );
    $post_data = json_encode($arr);

    // create socket
    $sock = socket_create(AF_INET, SOCK_DGRAM, 0);
    socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
    socket_bind($sock, 0, 6777);
    socket_sendto($sock, $post_data, strlen($post_data) , 0, '255.255.255.255', 6000);
    socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array(
        "sec" => 1,
        "usec" => 10
    ));
    $response = array();
    do
        {
        $buf = null;
        @socket_recvfrom($sock, $buf, 2048, 0, $host, $sport);
        if (!is_null($buf))
            {
            $response[] = $buf;
            }
        }

    while (!is_null($buf));
    return $response;
    };
// send command to device and wait answer from device 1-ok 0-false
// command must be array
function send_command($ip, $command, $password)
    {
    // create socket
    $sock = socket_create(AF_INET, SOCK_DGRAM, 0);
    socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
    socket_bind($sock, 0, 6777);
    // convert array to json
    $command = json_encode($command);
    // coded to aes-256-cbc
    $post_data = encrypt_answer($command, $password);
    // send command
    socket_sendto($sock, $post_data, strlen($post_data) , 0, $ip, 7666);
    socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array(
        "sec" => 1,
        "usec" => 50
    ));
    // recive command
    do
        {
        $buf = null;
        @socket_recvfrom($sock, $buf, 2048, 0, $host, $port);
        if (!is_null($buf))
            {
            $plaintext = $buf;
            echo ($buf);
            }
        }
    while (!is_null($buf));
    socket_close($sock);
    return $plaintext;
    }
// decription text
function decrypt_answer($text, $password)
    {
    $iv = 'erghnlhbnmbnkghy';
    $result = openssl_decrypt($text, 'AES-256-CBC', $password, OPENSSL_RAW_DATA, $iv);
    return $result;
    };
// encription text
function encrypt_answer($text, $password)
    {
    $iv = 'erghnlhbnmbnkghy';
    $result = openssl_encrypt($text, 'AES-256-CBC', $password, OPENSSL_RAW_DATA, $iv);
    return $result;
    };
function key_power($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 85,
        "unicode" => 117,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_mute($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 96,
        "unicode" => 96,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_audiomode($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 71,
        "unicode" => 0,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_setting($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777272,
        "unicode" => 120,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_red($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777264,
        "unicode" => 112,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_green($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777265,
        "unicode" => 113,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_yellow($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777266,
        "unicode" => 114,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_blue($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777267,
        "unicode" => 115,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_menu($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777274,
        "unicode" => 122,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_back($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 16777219,
        "unicode" => 8,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_exit($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 16777216,
        "unicode" => 27,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_info($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 89,
        "unicode" => 121,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_app($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777275,
        "unicode" => 123,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_tv($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777273,
        "unicode" => 121,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_guide($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 67108864,
        "unicode" => 119,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_rew($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 66,
        "unicode" => 98,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_ffwd($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 70,
        "unicode" => 102,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_play($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 82,
        "unicode" => 114,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_stop($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 134217728,
        "keycode" => 83,
        "unicode" => 115,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_size($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 67108864,
        "keycode" => 16777269,
        "unicode" => 11,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_reload($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 16777272,
        "unicode" => 116,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_1($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 49,
        "unicode" => 1,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_2($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 50,
        "unicode" => 2,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_3($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 51,
        "unicode" => 3,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_4($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 52,
        "unicode" => 4,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_5($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 53,
        "unicode" => 5,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_6($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 54,
        "unicode" => 6,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_7($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 55,
        "unicode" => 7,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_8($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 56,
        "unicode" => 8,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_9($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 57,
        "unicode" => 9,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_0($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 48,
        "unicode" => 0,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_home($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 16777216,
        "unicode" => 27,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_ok($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 16777220,
        "unicode" => 13,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_volumedown($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 45,
        "unicode" => 45,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
function key_volumeup($ip, $password)
    {
    $command = array(
        "msgType" => "keyboardKey",
        "action" => "press",
        "metaState" => 0,
        "keycode" => 43,
        "unicode" => 43,
        "action" => "press"
    );
    $answer = send_command($ip, $command, $password);
    return $answer;
    };
    
За это сообщение автора tarasfrompir поблагодарил:
chimik (Сб сен 29, 2018 7:32 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: приставка mag250

Сообщение tarasfrompir » Сб сен 29, 2018 9:07 am

Таки прикрутил приставку - все работает через изменение свойства или запуск метода
За это сообщение автора tarasfrompir поблагодарил:
chimik (Сб сен 29, 2018 7:32 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Ответить