online marketing

Personalidad Web

28 Dic, 2009

Libreria XMPPHP para conectarse al chat de tuenti

Posted by: admin In: Tutoriales

En este tutorial os voy a enseñar como conectarse al chat de tuenti usando la libreria xmpphp (http://code.google.com/p/xmpphp/)

Un pequeño ejemplo de como funciona la libreria xmpphp:

include("xmpp.php");
$conn = new XMPPHP_XMPP('xmpp1.tuenti,com', 5222, 'username', 'password', 'xmpphp', 'tuenti.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->disconnect();

Nos falta poner nuestro usuario y contraseña, pero el chat de tuenti usa un PLAIN METHOD para el login y por lo tanto solo debemos poner una clave que tiene la siguiente estructura:
idusuario@host�idusuario�cookietuenti
por ejemplo:

   66171907@xmpp9.tuenti.com�66171907�NjYxNzE5MDc6YTdmYzdjY2Q9ZhVkYzA3ZDY5Y0QyZWFhNzJkYmQ2NDY1MTI2MTg2NjUwMA

Y todo esto codificado en base64, por lo tanto tenemos que editar la librería XMPP y en la linea 282 de XMPP.php sustituimos esto:

if ($this->password) {
			$this->send("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>" . base64_encode("\x00" . $this->user . "\x00" . $this->password) . "</auth>");
			} else {
                        $this->send("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='ANONYMOUS'/>");
			}

por esto:

$this->log->log("Attempting Auth...");
			$id = reset(explode(':', base64_decode($this->password)));
			$coo = base64_decode('eHh4eHh4eHhAeG1wcDkudHVlbnRpLmNvbQB4eHh4eHh4eABjb29raWU');
			$coo = str_ireplace('xxxxxxxx', $id, $coo);
			$coo = str_ireplace('cook', $cookie, $coo);
			$coo = base64_encode($coo);
			$this->send("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>" . $coo . "</auth>");

Ahora para iniciar sesión en el chat necesitamos el cookie sid de tuenti.com. Para no estar buscando el cookie en las opciones de nuestro navegador podemos escribir en la barra de direcciones cuando estemos en tuenti.com: javascript:alert(document.cookie); y copiamos la cookie sid sin el punto y coma y el igual y nuestro codigo quedaria asi:

include("xmpp.php");
$conn = new XMPPHP_XMPP('xmpp1.tuenti,com', 5222, NULL, 'NjI5ODUwNDU6MDRiMDRmNjBlZTZmOGNhZGQxY2MxNzU3MGFmZDM2N2Y6MTI2MTk5NjU3Mg', 'xmpphp', 'tuenti.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('66171907', 'This is a test message!');
$conn->disconnect();

Mas ejemplos y descargar la libreria: http://code.google.com/p/xmpphp/
Un saludo!

7 Responses to "Libreria XMPPHP para conectarse al chat de tuenti"

1 | Granada

Enero 19th, 2010 at 11:39

Avatar

Alguna utilidad que se pueda dar a esto?, se podría empotrar en alguna web para que cada uno se pueda conectar desde su chat, o que utilidades puede tener?

2 | CrazyBoSS

Febrero 10th, 2010 at 22:27

Avatar

hombre, untilidad si que hay!! estos dias aver cuando me animo pienso programarlo en php de manera que tengas algo como los eventos del msn plus… otra utilidad, pues, no lo he leido muy detenidadmente pero me parece que podras estar conectado al chat sin tener que estar en tuenti… vamos que lo que mas interesante me parece son historiales e eventos salu2!

salu2!

3 | marina

Febrero 14th, 2010 at 13:20

Avatar

resgristrarme en el tuenti

4 | dav

Febrero 26th, 2010 at 19:40

Avatar

en la linea:

$conn = new XMPPHP_XMPP(‘xmpp1.tuenti,com’, 5222, NULL, ‘NjI5ODUwNDU6MDRiMDRmNjBlZTZmOGNhZGQxY2MxNzU3MGFmZDM2N2Y6MTI2MTk5NjU3Mg’, ‘xmpphp’, ‘tuenti.com’, $printlog=False, $loglevel=LOGGING_INFO);

En donde esta el NULL, hay que poner el usuario o dejarlo asi?

5 | admin

Febrero 27th, 2010 at 13:44

Avatar

hay que dejarlo asi :)

6 | cris

Mayo 7th, 2010 at 17:43

Avatar

Habria alguna posibilidad de usar esto conjuntamente con el programa Adium para mac?
Con el te puedes conectar a casi todos los servicios de mensajeria instantanea, y tambien al chat del facebook, estaria genial poder anhadir esto!

http://adium.im/

Salu2

7 | maxpowel

Agosto 12th, 2010 at 17:29

Avatar

Un problema que hay con esto es que la contraseña de la cuenta xmpp cambia en cada inicio de sesion. Además, cuando cierras sesión esa contraseña deja de ser válida.

Por lo tanto, lo único que se puede hacer es mediante la contraseña real de tu cuenta tuenti hacer un login vía web y capturar el hash de plain login de xmpp.

Aquí surge otro problema (el problema real) y es averiguar de dónde saca el cliente web (la página) ese hash. Probablemente use alguna cookie (como sid) y le aplique algun algoritmo para generarlo así que el problema está en averiguar ese algoritmo.

Un saludo!

Comment Form

Categories