Newsgroup: it.comp.reti.ip-admin
Titolo: autenticarsi a un proxy

Buongiorno a tutti,
Sotto l'altra rete proxata ho già uno script (che ho riscritto) il
quale si autentica senza problemi, ma su questa ho qualche
problemino.
Lo sto riscrivendo da zero in python e per farlo analizzo la
"conversazione" tra il browser e il server, che è questa qui sotto.
Premetto che tutto ciò è legale dato che mi collego con il mio nome
utente - password, vorrei solo automatizzarlo.
Ora se non ho capito male succede io faccio una cosa di questo
genere:
- tento di aprire una pagina a caso
- ottengo il numero di challenge (token che servirà dopo)
- faccio un GET con un indirizzo ad hoc con i miei dati schiaffati
dentro
- ottengo un 302 e seguo il redirect (in cui mi ha "criptato" la
password)
Ora ci sono alcune cose che non ho capito, intanto vedo questa linea
nella pagina di risposta al mio GET
res=smartclient
E la cosa mi puzza un po', che forse capisca che non sono un normale
browser?
2 volte su 3 mi chiude la connessione in faccia ("connection reset by
peer") tra l'altro.
Quali saranno gli header che devo assolutamente buttarci dentro e
quali no?
Incollo anche il codice, lo stile fa schifo lo so ma intanto è solo
per vedere se va:
Codice:
import httplib
import os
import sys
import urlparse
import re
import string
import urllib
host = "172.26.0.1"
port = 3990
def getData():
   """docstring for getData"""
   conn = httplib.HTTPConnection("
www.google.com
")
   conn.request("GET", "/index.html")
   r1 = conn.getresponse()
   print r1.status, r1.reason
   data = r1.read()
   print data
   conn.close()
   r = re.compile("challenge=[a-z|0-9]*")
   ss = r.search(data)
   if not ss:
      print "maybe already connected"
      sys.exit(3)
   else:
      challenge = ss.group().split('=')[1]
      conf = dict([
         ('chal',challenge),
         ('uamip',host),
         ('uamport',str(port)),
         ('uid', 'USER%
40studenti.unitn.it
'),
         ('pwd', 'PWD'),
         ('login', 'Login HTTP/1.1')
      ])
      params = urllib.urlencode(conf)
      headers = {'Host' : '
www.unitn.it
'} #, 'User-Agent': 'Mozilla/
5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9.0.4) Gecko/
2008102920 Firefox/3.0.4' }
      print "conf = ", conf
      print buildReq(conf)
      req = string.join(["/network/hotspotlogin-coova/", buildReq
(conf)], '?')
      print "req == ", req
      conn = httplib.HTTPConnection(host, port)
      # conn.putheader('Host', '
www.unitn.it
')
      conn.request("GET", req, params, headers)
      resp = conn.getresponse()
      location = dict(resp.getheaders())['location']
      print resp.status, resp.reason,"headers == ", resp.getheaders
(),
"\n\n"
      data = resp.read()
      conn.close()
      print data
      print "redirecting to ", location
def buildReq(dic):
   """builds a request for the GET method"""
   return string.join([ x[0] + "=" + x[1] for x in dic.items() ],
'&')
Cita:
https://www.unitn.it/network/hotspotlog
 ... mport=3990
GET /network/hotspotlogin-coova/?
res=popup1&uamip=172.26.0.1&uamport=3990 HTTP/1.1
Host: 
http://www.unitn.it
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:
1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: 
http://www.unitn.it/network/hotspotlogi
 ... E23BB6FB38
HTTP/1.x 200 OK
Date: Tue, 02 Dec 2008 20:49:17 GMT
Server: Apache/2.0.52 (Red Hat) mod_perl/1.99_16 Perl/v5.8.5 DAV/2
PHP/
4.3.9 mod_python/3.1.3 Python/2.3.4 mod_ssl/2.0.52 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.9
Content-Length: 2143
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
----------------------------------------------------------
https://www.unitn.it/network/hotspotlog
 ... ogin=Login
GET /network/hotspotlogin-coova/?
chal=113ee6ec191c929b9ae9290f33e7c6ba&uamip=172.26.0.1&uamport=3990&userurl
=http
%3A%2F%
2Fwww.ebay.it
%2F&uid=utente
%
40studenti.unitn.it
&pwd=PWD&login=Login HTTP/1.1
Host: 
http://www.unitn.it
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:
1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: 
http://www.unitn.it/network/hotspotlogi
 ... E23BB6FB38
HTTP/1.x 302 Found
Date: Tue, 02 Dec 2008 20:49:17 GMT
Server: Apache/2.0.52 (Red Hat) mod_perl/1.99_16 Perl/v5.8.5 DAV/2
PHP/
4.3.9 mod_python/3.1.3 Python/2.3.4 mod_ssl/2.0.52 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.9
Location: 
http://172.26.0.1:3990/logon?username=u
 ... 
ebay.it
%2F
Content-Length: 2063
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
----------------------------------------------------------
http://172.26.0.1:3990/logon?username=u
 ... 
ebay.it
%2F
GET /logon?
username=
ute...@studenti.unitn.it
&password=30f71d17f65930f2fd6fc8d37179775c&userurl=http
%3A%2F%
2Fwww.ebay.it
%2F HTTP/1.1
Host: 
172.26.0.1:3990
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:
1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: 
http://www.unitn.it/network/hotspotlogi
 ... E23BB6FB38
HTTP/1.x 302 Moved Temporarily
Location: 
http://www.unitn.it/network/hotspotlogi
 ... BA6C4A16FF
----------------------------------------------------------
http://www.unitn.it/network/hotspotlogi
 ... BA6C4A16FF
GET /network/hotspotlogin-coova/?
res=success&uamip=172.26.0.1&uamport=3990&uid=utente
%
40studenti.unitn.it
&mac=00-1B-63-B6-3D-
B8&ip=172.26.79.254&called=00-50-56-8B-22-B2&nasid=chilli-
opera&redirurl=&userurl=http%3a%2f%
2fwww.ebay.it
%2f&md=A2C3A61BC995C46691882ABA6C4A16FF HTTP/1.1
Host: 
http://www.unitn.it
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:
1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: 
http://www.unitn.it/network/hotspotlogi
 ... E23BB6FB38

 wrote:
Ciao
Io avevo fatto una cosa simile ero partito da una scansione di un
sistema funzionante con wireshark.
Mi sembra che partivo io con un GET con specificato la URL che volevo
ma non mi ricordo che mi rispondeva con un 302 mi sembrava un 407.
Mi ero salvato questi link per risolvere quel problema.
http://www.ietf.org/rfc/rfc2068.txt
http://www.ietf.org/rfc/rfc2616.txt
Ciao


Gli rfc me li sto slurpando da un po', ma ancora non ne vengo a capo,
mi manca qualche pezzo "basilare":
- è tutto automatizzabile ciò che faccio da browser (direi di sì)
- è possibile che ci sia qualche controllo sul tipo di user-agent? Il
proxy è squid il sistema di autenticazione non saprei
- c'è qualche libreria carina che fa questo lavoro di autenticazione?
Ho notato che al max in urllib2 si può fargli "seguire" i redirect,
almeno così ho capito, ma prima volevo farlo a manina.
Quali sono comunque i passi che eseguireste guardando il log della
connessione che ho postato? Ciò che ho scritto io ha senso?
Il fatto che ci sia un httpS in mezzo non dà fastidio?

 Il fatto che ci sia un httpS in mezzo non dà fastidio?
Non avevo letto i log e adesso gli ho letti velocemente.
Ho letto da qualche parte coova, sei sicuro che sia un proxy?
forse è un captive portal con radius? o proxy + captive portale con
radius
mi sembrava strano che un proxy restituisse un 302 il captive portal
lo fa per girare la richiesta dalla pagina che richiede l'user alla
pagina di autenticazione con url modificata in modo da avere su una
variabile dell'url la pagina da restituire all'utente in caso di
riuscita dell'autenticazione.
Hai scritto che eri già riuscito a autenticarti con un script ma forse
non è la stessa rete?
Vedi qui: 
http://coova.org/wiki/index.php/CoovaFX
Ciao

 Ciao
No infatti non è la stessa rete, l'altra apparentemente è più
semplice, e lì tra l'altro lo script sfrutta una falla e si può
collegare "come gli pare".
Non so bene cosa ci sia qui dietro, da dove funziona è tutto in
wireless mentre qui è solo via cavo, probabilmente non cambia nulla
perché in realtà il sistema di autenticazione a monte è lo stesso (uso
sempre gli stessi dati) ma in mezzo ci hanno messo qualcosa di
diverso...
Mmm carina l'estensione ma per fare a mano allora non c'è modo?

 Mmm carina l'estensione ma per fare a mano allora non c'è modo?
Non lo so...
Può essere che via wireless non passi sul proxy mentre in lan passi
per un proxy, ma l'autenticazione che devi fare è solo quella del
captive portal o devi anche autenticarti nel proxy? (non mi sembra dai
log)
In pratica tu hai il browser impostato per lavorare un un proxy con un
ip e una porta, cerchi di aprire un sito x, il browser contatta il
proxy che fa da ponte verso il captive portal,
ti compare la pagina di login ti autentichi viene aperta una sessione
e da quel momento sei in internet?
Prova a logare una normale sessione dall'autenticazione all'accesso ad
un sito esterno fino al logout (se lo puoi fare manulamente).
Ci sono dei punti in https mi sembra e li sicuramente non puoi
accedere.
Ciao


No allora da lan devo togliere il proxy, poi collegarmi e poi per fare
andare tutto avere il proxy settato (lo so una schifezza).
Quindi mi collego con firefox (senza proxy settato) e poi navigo con
safari (con tutti i proxy abititati a livello di sistema).
Al proxy ci si collega senza bisogno di autenticazione tra l'altro..

 Al proxy ci si collega senza bisogno di autenticazione tra l'altro..
C'è qualche cosa di strano, e tutti gli utenti della lan fanno così
tolgono il proxy si autenticano e rimettono il proxy?
Se il proxy fosse libero probabilmente basterebbe quello per andare in
internet.
Forse per la wireless quel proxy è in transparent mode (mentre tu ci
accedi direttamente) e i client wireless ci possono accedere in
automatico solo dopo l'autenticazione captive portal.
Ma se tu con il proxy attivo cerchi di andare in internet cosa ti dice
che non sei autenticato?
Non è che stai accedendo usando una falla di  rete attraverso la parte
dedicata alla wireless?
Ma un utente normale come accede dalla rete lan?
Ciao