» »

[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.

#!/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 ::

Imam nameščen python-openssl verzija 2.7.3-2

MUC ::

python -c 'import ssl; print ssl.OPENSSL_VERSION'

Ali "openssl ciphers"

Kaj dobis?

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
root@debian:/# iptraf-ng
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...
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-...
root@debian:/# iptraf-ng
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


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Avtolog.si (strani: 1 2 3 47 8 9 10 )

Oddelek: Na cesti
464104348 (7131) jklč
»

OpenVPN na DD-WRT

Oddelek: Omrežja in internet
9851 (648) ExSpirit
»

4096-bitni ključi ne bodo dovolj?

Oddelek: Informacijska varnost
92848 (1573) zee
»

LinkedIn spam?

Oddelek: Loža
112464 (1896) kunigunda
»

Linux sendmail - Problem !!!??

Oddelek: Omrežja in internet
151887 (1648) n0name

Več podobnih tem