[MSN] Ticket MS Passport

Stato
Discussione chiusa ad ulteriori risposte.

HackLife

Utente Silver
26 Maggio 2008
57
11
0
73
Ciao a tutti.
Sto cercando di scrivere un programma per connettersi a msn, che poi diventerà probabilmente un bot o un mini-client esemplificativo. Mi sono però bloccato quando devo inviare al server quello che mi sembra essere il ticket MS Passport, ovvero qualcosa tipo:

USR 4 TWN S t=53*1hAu8ADuD3TEwdXoOMi08sD*2!cMrntTwVMTjoB3p6stWTqzbkKZPVQzA5NOt19SLI60PY!b8K4YhC!Ooo5ug$$&p=5eKBBC!yBH6ex5mftp!a9DrSb0B3hU8aqAWpaPn07iCGBw5akemiWSd7t2ot!okPvIR!Wqk!MKvi1IMpxfhkao9wpxlMWYAZ!DqRfACmyQGG112Bp9xrk04!BVBUa9*H9mJLoWw39m63YQRE1yHnYNv08nyz43D3OnMcaCoeSaEHVM7LpR*LWDme29qq2X3j8N\r\n

Sfortunatamente onn sono riusito in nessun modo a capire come si genera. Voi ne sapete qualcosa?
 
Bella Black! In pratica per ottenere il ticket serve tutto questo
Codice:
99.	    $arr['ct'] = $this->ct = substr($risp,strpos($risp,"ct=")+3,strpos($risp,",rver=")-strpos($risp,"ct=")-3);100.	    $arr['rver'] = $this->rver = substr($risp,strpos($risp,",rver=")+6,strpos($risp,",wp=")-strpos($risp,",rver=")-6);101.	    $arr['wp'] = $this->wp = substr($risp,strpos($risp,",wp=")+4,strpos($risp,",lc=")-strpos($risp,",wp=")-4);102.	    $arr['lc'] = $this->lc = substr($risp,strpos($risp,",lc=")+4,strpos($risp,",id=")-strpos($risp,",lc=")-4);103.	    $arr['id'] = $this->id = substr($risp,strpos($risp,",id=")+4,strpos($risp,",ru=")-strpos($risp,",id=")-4);104.	    $arr['ru'] = $this->ru = substr($risp,strpos($risp,",ru=")+4,strpos($risp,",tw=")-strpos($risp,",ru=")-4);105.	    $arr['tw'] = $this->tw = substr($risp,strpos($risp,",tw=")+4,strpos($risp,",kpp=")-strpos($risp,",tw=")-4);106.	    $arr['kpp'] = $this->kpp = substr($risp,strpos($risp,",kpp=")+5,strpos($risp,",kv=")-strpos($risp,",kpp=")-5);107.	    $arr['kv'] = $this->kv = substr($risp,strpos($risp,",kv=")+4,strpos($risp,",ver=")-strpos($risp,",kv=")-4);108.	    $arr['ver'] = $this->ver = substr($risp,strpos($risp,",ver=")+5,strpos($risp,",rn=")-strpos($risp,",ver=")-5);109.	    $arr['rn'] = $this->rn = substr($risp,strpos($risp,",rn=")+4,strpos($risp,",tpf=")-strpos($risp,",rn=")-4);110.	    $arr['tpf'] = $this->tpf = substr($risp,strpos($risp,",tpf=")+5,strlen($risp));
?
Non c'è una spiegazione, una guida...?
[ot]scusate per l'indentazione che è andata a ramengo...
Ah, black, cambia i colori del nopaste per favore xD [/ot]
 
E' solo questione di estrarre quelle sottostrighe dalla risposta dal gateway e poi inviarle al redirect che ti viene comunicato.
Il server prendendo in risposta queste informazioni ti risponde con tante menate, tra cui il ticket.

Comunque dai un occhiata sia qui: http://msnpiki.msnfanatic.com/index.php/Main_Page
che qui: http://www.hypothetic.org/docs/msn/notification/authentication-example.php
 
http://msnpiki.msnfanatic.com/index.php/Notification:Authentication

e comunque se stai usando python esiste pymsn.
 
Okay forse ci posso arrivare.. Il quarto parametro della richiesta a tweener però include t=...e&p=... ora io devo ricavare queste due viariabili dalla risposta precedente, cioé
Codice:
USR 3 TWN S ct=1255018587,rver=5.5.4182.0,wp=FS_40SEC_0_COMPACT,lc=1033,id=507,ru=http:%2F%2Fmessenger.msn.com,tw=0,kpp=1,kv=4,ver=2.1.6000.1,rn=1lgjBfIL,tpf=b0735e3a873dfb5e75054465196398e0
, giusto?
 
Io sul mio client-non-funzionante l'autenticazione funzionante la feci cosi':
Codice:
sub authentication
{
	my $authcode = shift or die ("-");
	our ($url, $return);
	my $dispatch = new IO::Socket::SSL (
		PeerHost => "nexus.passport.com",
		PeerPort => 443,
		Proto    => "tcp"
	);
	print $dispatch "GET /rdr/pprdr.asp HTTP/1.0\r\n";
	print $dispatch "Host: nexus.passport.com\r\n\r\n";
	while (<$dispatch>)
	{
		if ($_ =~ /DALogin=(.+?),/)
		{
			$url = $1;
		}
	}
	if (!$url) { die ("[-] Cannot get dispatch url.\r\n"); }
	close $dispatch;
	my @x = split /\//, $url;
	my $endlogin = new IO::Socket::SSL (
		PeerHost => $x[0],
		PeerPort => 443,
		Proto    => "tcp"
	);
	print $endlogin "GET /".$x[1]." HTTP/1.1\r\n";
	print $endlogin "Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=".uri_escape ($user).",pwd=".uri_escape ($pass).",".trim ($authcode)."\r\n";
	print $endlogin "Host: ".$x[0]."\r\n\r\n";
	while (<$endlogin>)
	{
		if ($_ =~ /'(t=[^']+)'/)
		{
			$return = $1;
		}
	}
	if (!$return) { die ("[-] Cannot get auth code\r\n"); }
	return $return;
}
--
Per l'authcode:
Codice:
print $sock "VER 4 MSNP9 MSNP8 CVR0\r\n";
print $sock "CVR 5 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS $user\r\n";
print $sock "USR 6 TWN I $user\r\n";

our $tmps;
while (<$sock>)
{
	if ($_ =~ /USR 6 TWN S (.+)/)
	{
		$tmps = $1;
	}
}
if (!$tmps) { die ("Cannot get authentication code.\r\n") };
print "[.] Authenticating..\r\n";
print $sock "USR 8 TWN S ".&authentication ($tmps)."\r\n";
(Perl)
 
Stato
Discussione chiusa ad ulteriori risposte.