PHP - 通过TCP套接字连接到智能家居设备 - 加密

时间:2017-08-25 16:49:10

标签: php sockets encryption

我正在尝试从智能家居设备读取数据(TP-Link HS110) 这是逆向工程

https://www.softscheck.com/en/reverse-engineering-tp-link-hs110/

所以我必须解密和加密。 我使用以下代码,但我没有得到设备的结果

这是输出

            Socket created 
            Connection established 
            Message send successfully 
            Lenght: 0 Buffer:
            decrypt: 
            Message received successfully 

这里是我的代码

            <?php

            function decrypt($string){
                $key = 171;
                $result = "";
                for ($i=0; $i<strlen($string); $i++){
                    $a = $key ^ ord($i);
                    $key = ord($i);
                    $result .= chr($a);
                }
                return $result;
            }

            function encrypt($string){
                $key = 171;
                $result = "\0\0\0\0";
                for ($i=0; $i<strlen($string); $i++){ 
                    $a = $key ^ ord($i);
                    $key = $a;
                    $result .= chr($a);
                }
                return $result;
            }

            if(!($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))){
                $errorcode = socket_last_error();
                $errormsg = socket_strerror($errorcode);

                die("Couldn't create socket: [$errorcode] $errormsg \n");
            }

            echo "Socket created \n";

            //Connect socket to remote server
            if(!socket_connect($sock , '192.168.178.77' , 9999)){
                $errorcode = socket_last_error();
                $errormsg  = socket_strerror($errorcode);

                die("Could not connect: [$errorcode] $errormsg \n");
            }

            echo "Connection established \n";

            $message = encrypt('{"system":{"get_sysinfo":{}}}');

            //Send the message to the server
            if(!socket_send ($sock , $message , strlen($message) , 0)){
                $errorcode = socket_last_error();
                $errormsg  = socket_strerror($errorcode);

                die("Could not send data: [$errorcode] $errormsg \n");
            }

            echo "Message send successfully \n"; 

            //Now receive reply from server
            if(socket_recv ( $sock , $buf , 2048 , MSG_WAITALL ) === FALSE){
                $errorcode = socket_last_error();
                $errormsg = socket_strerror($errorcode);

                die("Could not receive data: [$errorcode] $errormsg \n");
            }

            //print the received message
            echo "Lenght: " . strlen($buf) . " Buffer:" . $buf; 
            echo "\ndecrypt: " . decrypt($buf);
            echo "\nMessage received successfully \n"; 
            socket_close($sock);
            ?>

我的代码有什么问题?

0 个答案:

没有答案