Configurando um servidor SSL que desconecta conexões e executa comandos

0

Estou procurando sugestões sobre como configurar um servidor SSL simples que escuta em uma porta e quando um dispositivo se conecta, avisa o dispositivo para desconectar e, em seguida, executa um comando

Contexto: o dispositivo é um dash da Amazon e, quando se conecta, a mensagem é criptografada, mas não me importo com a mensagem.

Eu vou rodar isso em um roteador openwrt

Eu li sobre o uso de netcat e openssl s_server, mas gostaria de feedback e sugestões sobre a melhor maneira de implementar isso.

Aqui está minha solução atual usando o 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

concluído

Alguma opinião sobre essa solução?

    
por Steven Feldman 14.05.2016 / 05:56

1 resposta

1

Encontrei estas instruções para configurar o servidor SSL para enganar o botão de traço.

link

(Veja o comentário de Mark, postado em 9 de agosto de 2015, às 17h39)

Ele usou um servidor da Web do link

Usando as informações acima, consegui escrever meu próprio servidor 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()

e recebo saídas como:

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

O acima é tudo de uma única imprensa. No entanto, não é mais útil do que um servidor TCP genérico que apenas manipula uma conexão de entrada. Como não há diferença entre a pressão única, pressione duas vezes e pressione longamente.

(É bem provável que você precise enganar o botão traço para confiar em seu certificado autoassinado. Foi o que eu fiz)

$ 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 []:
    
por 20.05.2016 / 00:58