Forum » Programiranje » [Python] HTTPS na desktopu dela, na Arduinu ne
[Python] HTTPS na desktopu dela, na Arduinu ne
N4g4c3N ::
Pozdrav,
Napisal sem kodo s katero lahko pošiljam SMS sporočila prek portala najdi.si. V prvem delu pošlje username/password, da dobi pravi cookie, v drugem delu pa pošlje request z SMS vsebino, telefonsko itd.
Koda na desktop računalniku dela brez problema, na Arduinu Yun pa vrže ven tale error:
Da bi bila zadeva še bolj čudna, je do nedavnega koda tudi na Arduinu delala. Mogoče kdo ve, kaj pomeni ta napaka in kako se jo odpravi - sumim, da ima Arduino neke težave s HTTPS. Na googlu sem zapravil že precej časa, odprtje tele teme je moje zadnje upanje!
Alternativna rešitev bi bila, kako server prepričati, da zadevo spelje prek HTTP.
Druga alternativa bi bila, če kdo pozna kako stran prek katere lahko pošiljaš zastonj SMSe (brez HTTPS in captcha).
Hvala in LP
Napisal sem kodo s katero lahko pošiljam SMS sporočila prek portala najdi.si. V prvem delu pošlje username/password, da dobi pravi cookie, v drugem delu pa pošlje request z SMS vsebino, telefonsko itd.
#!/usr/bin/python import httplib,urllib con=httplib.HTTPSConnection("www.najdi.si") params=urllib.urlencode(XXXX) headers={XXXX} con.request("POST","/prijava.jsecloginform",params,headers) data=con.getresponse() data.read() cookie=data.getheader("set-cookie").split(";")[0] payload=[XXXX] params=urllib.urlencode(payload, doseq=True) headers={XXXX,"Cookie":cookie} con.request("POST","/najdi.shortcutplaceholder.freesmsshortcut.smsform",params,headers) data=con.getresponse()
Koda na desktop računalniku dela brez problema, na Arduinu Yun pa vrže ven tale error:
Traceback (most recent call last): File "./sms.py", line 7, in <module> con.request("POST","/prijava.jsecloginform",params,headers) File "/usr/lib/python2.7/httplib.py", line 958, in request self._send_request(method, url, body, headers) File "/usr/lib/python2.7/httplib.py", line 992, in _send_request self.endheaders(body) File "/usr/lib/python2.7/httplib.py", line 954, in endheaders self._send_output(message_body) File "/usr/lib/python2.7/httplib.py", line 814, in _send_output self.send(msg) File "/usr/lib/python2.7/httplib.py", line 776, in send self.connect() File "/usr/lib/python2.7/httplib.py", line 1161, in connect self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file) File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket ciphers=ciphers) File "/usr/lib/python2.7/ssl.py", line 143, in __init__ self.do_handshake() File "/usr/lib/python2.7/ssl.py", line 305, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [Errno 1] _ssl.c:504: error:14077410:lib(20):func(119):reason(1040)
Da bi bila zadeva še bolj čudna, je do nedavnega koda tudi na Arduinu delala. Mogoče kdo ve, kaj pomeni ta napaka in kako se jo odpravi - sumim, da ima Arduino neke težave s HTTPS. Na googlu sem zapravil že precej časa, odprtje tele teme je moje zadnje upanje!
Alternativna rešitev bi bila, kako server prepričati, da zadevo spelje prek HTTP.
Druga alternativa bi bila, če kdo pozna kako stran prek katere lahko pošiljaš zastonj SMSe (brez HTTPS in captcha).
Hvala in LP
MUC ::
HTTPS je skupno ime za cel kup šifriranj. Kot ti javi python, kot kaže nimaš na Arduinu ustrezne podpore. Preveri verzijo openssla. Glede na to, da najdi.si uporablja TLS 1.2 pomeni, da moraš na Arduinu imeti openssl verzijo vsaj 1.0.2.
Zgodovina sprememb…
- spremenil: MUC ()
N4g4c3N ::
root@Arduino:~# python -c 'import ssl; print ssl.OPENSSL_VERSION' OpenSSL 1.0.1e 11 Feb 2013
Edit:
root@Arduino:~# openssl ciphers SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:PSK-AES256-CBC-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:PSK-3DES-EDE-CBC-SHA:SRP-DSS-AES-128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DHE-RSA-SEED-SHA:DHE-DSS-SEED-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:SEED-SHA:PSK-AES128-CBC-SHA:RC4-SHA:RC4-MD5:PSK-RC4-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5
Zgodovina sprememb…
- spremenil: N4g4c3N ()
HotBurek ::
Za test sem preveril na dveh računalnikih; eden dela (OpenSSL 1.0.1t), drugi ne (OpenSSL 0.9.8zh). Error code je isti error:14077410.
openssl version
openssl s_client -connect www.najdi.si:443
openssl version
openssl s_client -connect www.najdi.si:443
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
N4g4c3N ::
Na desktopu imam verzijo 1.0.1f (dela), na Arduinu 1.0.1e (ne dela). Je to problem? Kako se to updejta?
Pa še output na Arduinu, če se probam connectat...
Pa še output na Arduinu, če se probam connectat...
root@Arduino:~# openssl s_client -connect www.najdi.si:443 CONNECTED(00000003) 1996489800:error:14077410:lib(20):func(119):reason(1040):NA:0: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 7 bytes and written 170 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE ---
Zgodovina sprememb…
- spremenil: N4g4c3N ()
HotBurek ::
Mislim, da je problem verzija, ja. Je tudi MUC zgoraj napisal.
Sam ne uporabljam ne Arduino, ne opg, ne pip. Vseeno, mogoče ti spodnja linka pomagata, da narediš update preko pip update/upgrade xxx na novejšo verzijo.
https://codybonney.com/installing-pip-o...
http://samjbrenner.com/notes/using-pip-...
Sam ne uporabljam ne Arduino, ne opg, ne pip. Vseeno, mogoče ti spodnja linka pomagata, da narediš update preko pip update/upgrade xxx na novejšo verzijo.
https://codybonney.com/installing-pip-o...
http://samjbrenner.com/notes/using-pip-...
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
MUC ::
najdi.si uporablja ECDHE-RSA-AES256-GCM-SHA384, tega šifriranja pa ni na tvojem seznamu, ki si ga dobil z ukazom "openssl ciphers" ->upgrade
N4g4c3N ::
Hvala obema! Sicer sem se že včeraj neuspešno trudil z updejtom, ampak bom še poskušal. Če mi bo zmanjkalo idej, se pa spet javim.
LP
LP
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Avtolog.si (strani: 1 2 3 4 … 7 8 9 10 )Oddelek: Na cesti | 113406 (7473) | starfotr |
» | OpenVPN na DD-WRTOddelek: Omrežja in internet | 947 (744) | ExSpirit |
» | 4096-bitni ključi ne bodo dovolj?Oddelek: Informacijska varnost | 2979 (1704) | zee |
» | LinkedIn spam?Oddelek: Loža | 2723 (2155) | kunigunda |
» | Linux sendmail - Problem !!!??Oddelek: Omrežja in internet | 1954 (1715) | n0name |