Я ищу предложения о том, как настроить простой SSL-сервер, который прослушивает порт и, когда устройство подключается, говорит об отключении устройства, а затем выполняет команду

Контекст: устройство является приборной панелью Amazon, и при подключении сообщение зашифровывается, но меня это не волнует.

Я буду запускать это на маршрутизаторе openwrt

Я читал об использовании netcat и openssl s_server, но я хотел бы получить обратную связь и предложения о наилучшем способе реализации этого.

Вот мое текущее решение с использованием netcat:

while true; do
    netcat -vv -l -p 443 -c < /www/default.html
    curl -X POST http://maker.ifttt.com/trigger/button_pressed/with/key/<MY KEY>
    sleep 5

сделанный

Есть мысли по поводу этого решения?

1 ответ1

1

Я нашел эти инструкции для настройки сервера SSL, чтобы обмануть кнопку тире.

https://mpetroff.net/2015/05/amazon-dash-button-teardown/

(Смотрите комментарий Марка, опубликованный 9 августа 2015 года в 17:39).

Он использовал веб-сервер с https://gist.github.com/jonathantneal/774e4b0b3d4d739cbc53

Используя приведенную выше информацию, я смог написать свой собственный сервер SSL.

import BaseHTTPServer, SimpleHTTPServer, ssl

class MyHTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(s):
        print 'GET', s.path

    def do_POST(s):
        print 'POST', s.path

if __name__ == "__main__":
    # Create the server, binding to localhost on port 443
    httpd = BaseHTTPServer.HTTPServer(('', 443), MyHTTPHandler)
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile='cert.pem', server_side=True)
    httpd.serve_forever()

и я получаю выходные данные, как:

POST /2/b
POST /2/d
POST /2/d
POST /2/d

Выше все от одного пресса. Однако он не более полезен, чем универсальный TCP-сервер, который просто обрабатывает входящее соединение. Поскольку нет разницы между одним нажатием, двойным нажатием и длительным нажатием.

(Вполне вероятно, что вам нужно обмануть кнопку тире, чтобы доверять самозаверяющему сертификату. Это я и сделал)

$ openssl req -x509 -newkey rsa:2048 -out cert.pem -nodes -keyout cert.pem
Generating a 2048 bit RSA private key
.................................................+++
..................................................................................................................+++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Washington
Locality Name (eg, city) []:Seattle
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:Amazon.com, Inc.
Common Name (e.g. server FQDN or YOUR name) []:parker-gateway-na.amazon.com
Email Address []:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .