Os presento a Bob, nuestro nuevo amigo en I2P

Felices fiestas y prosperas resacas!

Ya sé que os tengo abandonaditos pero es que en los últimos dos meses apenas he tenido tiempo para escribir nada ni para trastear con demasiadas cosas (bueno si, pero no sé hasta que punto os interesaran jeje) pero este día decidí levantar mis nodos de RetroShare otra vez y esto me llevo a levantar mis routers de I2P después de unas buenas vacaciones, cual fue mi sorpresa cuando al ir a la configuración de red de RS para el nodo oculto me encontré una nueva pestaña sobre un tal BOB de I2P.

Y es que resulta que la gente de I2P ha añadido a BOB (Basic Open Bridge) al router de I2P y nos da una manera sencilla de levantar y gestionar túneles.

NOTA: Adastra me ha bajado de mi hype comentandome que BOB lleva ya tiempo pero que funciona genial y que efectivamente es un método sencillo para montar túneles.

Una de las principales ventajas que BOB tiene sobre el viejo SAM de I2p es que mientras que en este último todo iba por el mismo canal y tenías que parsear los paquetes en BOB tiene canales de datos  y comandos por separado. Estas conexiones corren en paralelo así que podemos estar haciendo cambios en la configuración de un túnel en un canal mientras por otro va el tráfico de datos.

Lo que más me ha gustado es la simpleza con que podemos configurar los túneles para nuestros servidores, como nota decir que RS sigue siendo limitante a localhost, a pesar de que en BOB se pueda configurar de forma remota RS sigue resistiéndose a escuchar en otra cosa que no sea localhost.

Para que veáis lo simple que es de utilizarlo en nuestras aplicaciones voy a reutilizar el ejemplo que viene en la documentación de I2P pero explicando paso a paso los distintos comandos.

Lo primero es que para conectarnos a BOB llega con que hagamos un telnet o nc en nuestro router I2P al puerto 2827.

Comencemos por un help:

BOB 00.00.10
OK
help
OK COMMANDS: help clear getdest getkeys getnick inhost inport list lookup newkeys option outhost outport quiet quit setkeys setnick show showprops start status stop verify visit zap

Fijémonos en un par de cosas, la primera es que la versión es la 00.00.10; las versiones 00.00.00 a 00.00.0F son versiones de testing. Lo segundo es que BOB siempre responderá con una línea terminando en \n o \r\n dependiendo del sistema.

Comencemos por darle un nombre, o nick, a nuestro túnel servidor:

setnick boca
OK Nickname set to boca

Con setnick lo que estamos haciendo realmente es indicarle a BOB que toda configuración que hagamos a partir de ahora pertenece al túnel boca.

Generemos unas llaves nuevas (cambian de cada vez así que no hagáis copy paste de estas):

newkeys
OK EONsUe8~6z09YvAArlJ5BCBMPi0akug7m~HvK2fnUcyZV4XbHumpB49HL5So8eSORTDmKK62xDiGJg8o5tS9MPUSqsAYCww4~SzS0rqq~0FbXT9DQg3l0PvA4SCWWymhWM2k-LpqWy0vLkKhBb1DqJQwt97cs1-FRyOlUA2h6D2K-WblY9uAeb2vqCiEsJ3z9OqloMKwpdS9nVVme8jHlyMB~SvsvrtYWCh4AaiBv0wMXWIk~e7GFSloQDgDwcG2CU87xgrMXnCjJIZ9NsOyo384xk12-09T6abrZvEs8G-BcDHPx7sQfXsB~5a2nV~Tl2dHHX234PatXPRZ8qeZDSK7ViVU9OojMI8pAONjKAJyWFapC-AWt9D2llbudfPgiy2TZJj3v2Uyx4Q4MO9bRksg3E7TSlWzPZYpN810hJoSd~ZYQYZ101bhMF0vrXwZ3yyMk8M0xux-E-EoiEQzBAkySLNwjlSFW0kCsR69sM2Ifr7vtqRs3CUkPyiAKeugAAAA

Ahora vamos a configurar a donde tiene que apuntar este túnel, es este caso será un netcat escuchando en el puerto 1337 de localhost:

outhost 127.0.0.1
OK outhost set
outport 1337
OK outbound port set

Y finalmente arrancamos el túnel con start:

start
OK tunnel starting

Podemos ver la configuración y estado del túnel utilizando el comando status:

status boca
OK DATA NICKNAME: boca STARTING: false RUNNING: true STOPPING: false KEYS: true QUIET: false INPORT: not_set INHOST: localhost OUTPORT: 1337 OUTHOST: 127.0.0.1

Ahora vamos a crear un túnel de cliente, la única diferencia será que utilizaremos las opciones inhost e inport para indicar donde escuchará el túnel:

setnick oreja
OK Nickname set to oreja
newkeys
OK b6cXR~oiErbaKfOpKF~QxXpuR2cLBfjYDk~l4PejRUdcOInb3Ncx~yiSjd-XcIGkDd3WPvXJPcL1sU8Vugj6REv4B17bYi9mQ1W5D~WIEuoSFXVF-Xs8Byd4C4APqjAZvg6mtwzKlk5WT4ElJr5YDf-Z9VCXcn02rmXDVHtpsS-0shfgSGZTvJwpqeOw0dLGY4WjCtiEUcdBsEDmpppoqI5Lhb8TG2O7NqDt3tGsbUtum57gbZ~GigAM7s1p6xDFPqzUpcm~wwEy497gaxp09vYSZTm6QOEyy2DDufVt4Ov1bm3zk2g9f~LdzP0JKn0Rx0cGC9Bl0NqN4mKvlq4ogZe7wO-83YAweWy8XwEKJ6cc8TQX5eUuBIKtylHpqqgFseaeaX-9m8MenjF-bxZGuDkLOt5Qp5OJ1ao6najkkpPq9~WbhonsTIiKhpP4dmTnrNY2Qd3jTaMh1wL4JPd-VasPaVgVyRWchBy08OPCmXxtbtDp8camA8BWDfgUVModAAAA
inhost 127.0.0.1
OK inhost set
inport 37337
OK inbound port set
start
OK tunnel starting

Una vez levantados ambos túneles para llegar a nuestro netcat primero tendremos que especificar la key del mismo que obtuvimos cuando lo seteamos y esto será lo primero que enviemos, por ejemplo:

nc 127.0.0.1 37337
xLv5x6OvpQoTf40HJYnK0DnT0XpFlmEc2-J28EHdBADFHOinsThQPrV-isFYNXb~Lsm5ZnjTb4sVVYbKwfqLMNHZjGja~kObhjGleR5GqSbj76LI~OOjw6C5iyVsAzYp2lu-WQcTom0mdEAeHmtlWlEVhbWfL24ULZ6V703QqJAAXwdUP11Vf9muvkL388IF6s2Ovj8oaR4WyyELxFvxQoZtfEoLOfG~Jn3IxVMjZpKvAI5MZIOvuINU7QLLgnI0llj4715Pfsok65vNtA7tGGdbZtSQMXJcwMNlRfSjLU1kaQf1FkE~XDmYjMmN8rY5nxU~1K4akZQTFmLa6VDyrHW6zsIwlajqJhdXx-f~P6cYvQ7qoLJFzrGPF-935IuJxVDCc-BCOc5YbHW4qpVCQYLLDJmuGz5KtX4dkcFgtn1JVuwuKwHEV4P0thN4NDMKOTuxXNNHtLWOA4iC~ltVs5wk9vX89PpN8S36NKc-8iJHlEjCisRyUhFgPgcXJVUIAAAA
hola

La primera linea le indicará a BOB a donde tiene que dirigirse y nosotros enviamos un hola, el cual podremos ver en nuestros netcat:

nc -l -s 127.0.0.1 -p 1337 -vvvv
listening on [127.0.0.1] 1337 ...
DNS fwd/rev mismatch: kserv != localhost.localdomain
connect to [127.0.0.1] from kserv [127.0.0.1] 46504
b6cXR~oiErbaKfOpKF~QxXpuR2cLBfjYDk~l4PejRUdcOInb3Ncx~yiSjd-XcIGkDd3WPvXJPcL1sU8Vugj6REv4B17bYi9mQ1W5D~WIEuoSFXVF-Xs8Byd4C4APqjAZvg6mtwzKlk5WT4ElJr5YDf-Z9VCXcn02rmXDVHtpsS-0shfgSGZTvJwpqeOw0dLGY4WjCtiEUcdBsEDmpppoqI5Lhb8TG2O7NqDt3tGsbUtum57gbZ~GigAM7s1p6xDFPqzUpcm~wwEy497gaxp09vYSZTm6QOEyy2DDufVt4Ov1bm3zk2g9f~LdzP0JKn0Rx0cGC9Bl0NqN4mKvlq4ogZe7wO-83YAweWy8XwEKJ6cc8TQX5eUuBIKtylHpqqgFseaeaX-9m8MenjF-bxZGuDkLOt5Qp5OJ1ao6najkkpPq9~WbhonsTIiKhpP4dmTnrNY2Qd3jTaMh1wL4JPd-VasPaVgVyRWchBy08OPCmXxtbtDp8camA8BWDfgUVModAAAA
hola

Si os fijáis en nuestro netcat también hemos recibido la llave de nuestro túnel cliente.

Ahora que ya sabemos cómo levantar túneles, pararlos y borrarlos es muy sencillo:

BOB 00.00.10
OK
getnick oreja
OK Nickname set to oreja
stop
OK tunnel stopping
clear
OK cleared
getnick boca
OK Nickname set to boca
stop
OK tunnel stopping
clear
OK cleared
list
OK Listing done

Como veis es tan simple como parar el túnel y lanzar un clear.

Pues con esto ya tenéis una forma sencilla de montar a través de I2P, de una manera muy sencilla, prácticamente cualquier aplicación TCP que se os ocurra jeje ahora no tenéis excusa de que es complicado.

Espero os haya gustado, un saludo, y como siempre; muchas gracias por vuestra visita!

Esta entrada fue publicada en i2p, tools, tutorial. Guarda el enlace permanente.

Una respuesta a Os presento a Bob, nuestro nuevo amigo en I2P

  1. N0UM3N0 dijo:

    Felicidades por el artículo, un placer volver a leerte. Comparto en Twitter…

Deja un comentario