Доступ к Samsung Smart TV

Проба пера

Когда мне становится скучно, в голову приходят самые разные мысли...
В этот раз в голове мелькнула мысль просканировать телевизор на открытые порты. Результат был положительным:

Starting Nmap 5.51 ( http://nmap.org ) at 2018-01-21 20:41 +07
Nmap scan report for 192.168.1.7
Host is up (0.0026s latency).
Not shown: 991 closed ports
PORT      STATE SERVICE
7676/tcp  open  imqbrokerd
8001/tcp  open  vcom-tunnel
8002/tcp  open  teradataordbms
8080/tcp  open  http-proxy
9999/tcp  open  abyss
32768/tcp open  filenet-tms
32769/tcp open  filenet-rpc
32770/tcp open  sometimes-rpc3
32771/tcp open  sometimes-rpc5

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Номера портов, по большей части не знакомы, но 8001, 8002, 8080 и 9999 наводят на определенные мысли. Пробуем получить информацию по ним...

$ curl -v http://192.168.1.7:7676
* Rebuilt URL to: http://192.168.1.7:7676/
*   Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 7676 (#0)
> GET / HTTP/1.1
> Host: 192.168.1.7:7676
> User-Agent: curl/7.57.0-DEV
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 400 Bad Request 
< CONTENT-TYPE: text/xml; charset="utf-8" 
< SERVER: UPnP/1.1 Samsung AllShare Server/1.0 
< CONTENT-LENGTH: 417 
< 
* Closing connection 0
<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><s:Fault><faultcode>s:Client</faultcode><faultstring>UPnPError</faultstring><detail><UPnPError xmlns="urn:schemas-upnp-org:control-1-0"><errorCode>402</errorCode><errorDescription>Invalid Args</errorDescription></UPnPError></detail></s:Fault></s:Body></s:Envelope>

Пустые ответы приводить не буду, только те, по которым получен какой-либо результат. Проверяем порт 8001:

$ curl -v http://192.168.1.7:8001
* Rebuilt URL to: http://192.168.1.7:8001/
*   Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 8001 (#0)
> GET / HTTP/1.1
> Host: 192.168.1.7:8001
> User-Agent: curl/7.57.0-DEV
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 401 Unauthorized
< access-control-allow-origin: *
< content-length: 29
< 
* Closing connection 0
<html><body>401</body></html>

На очереди 8002:

$ curl -v https://192.168.1.7:8002
* Rebuilt URL to: https://192.168.1.7:8002/
*   Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 8002 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /usr/share/ca-certificates/ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, Server hello (2):
* SSL certificate problem: self signed certificate in certificate chain
* stopped the pause stream!
* Closing connection 0
curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Теперь очередь порта 8080:

$ curl -v http://192.168.1.7:8080
* Rebuilt URL to: http://192.168.1.7:8080/
*   Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 8080 (#0)
> GET / HTTP/1.1
> Host: 192.168.1.7:8080
> User-Agent: curl/7.57.0-DEV
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: Content-Type
< Content-Type: text/html
< Content-Length: 345
< Date: Sun, 21 Jan 2018 04:14:36 GMT
< Server: WebServer
< 
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>404 - Not Found</title>
 </head>
 <body>
  <h1>404 - Not Found</h1>
 </body>
</html>
* Connection #0 to host 192.168.1.7 left intact

Если использовать SSL, то ответ тоже не заставит себя ждать:

$ curl -v https://192.168.1.7:8080
* Rebuilt URL to: https://192.168.1.7:8080/
*   Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 8080 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /usr/share/ca-certificates/ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.1.7:8080 
* stopped the pause stream!
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.1.7:8080

И, наконец, 9999:

$ curl -v https://192.168.1.7:9999
* Rebuilt URL to: https://192.168.1.7:9999/
*   Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 9999 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /usr/share/ca-certificates/ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):

* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.1.7:9999 
* stopped the pause stream!
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 192.168.1.7:9999

Судя по всему, на порту 7676 «висит» какой-то UPNP. Порты 8002 и 9999 обмениваются данными через SSL, 8080 похож на веб-сервер, а 8001 требует авторизацию.
Если открыть ТВ в браузере на порту 8002, то можно получить визуальные данные о сертификате. В принципе, самое интересное, что можно из него вычленить — срок действия в 20 лет и что сертификат является самоподписанным.
Порывшись в интернете, понял, что на эту тему достаточно мало материала. Впрочем, сначала нужно просмотреть SamsungSmartSDK, упомянутый в сертификате. Возможно, что там найдется какая-то дополнительная информация.
Кстати, теоретически, есть возможность включить ТВ с ипользованием технологии Wake-On-LAN. Стандартный способ, видимо, не проходит — по крайне мере на «magic packet» он не отозвался. Но пример кода, реализующего эту возможность, я встретил.

Отправить
Поделиться