martes, 12 de noviembre de 2013

Puertos Serie en WINE >> ttyACM0 2 COM1

De cosecha propia




$ sudo usermod -a -G dialout $USER # Habilita el usuario actual para usar los puertos seriales

$ sudo ln -sf /dev/ttyUSB0 ~/.wine/dosdevices/com1 # Crear enlace simbólico al dispositivo, permite que WINE pueda escribir en él.
$ sudo ln -sf /dev/ttyACM0 ~/.wine/dosdevices/com2 # Crear enlace simbólico al dispositivo, permite que WINE pueda escribir en él.

$ wine APP.exe



.

miércoles, 30 de octubre de 2013

Script para Apagar Maquina Virtual y PC (VirtualBox)



#!/bin/bash
# vboxmanage list vms -l ## Listar Maq Virtuales
# vboxmanage startvm "NombreMaq"
# vboxmanage controlvm "NombreMaq" reset
# vboxmanage controlvm "Win.FLP_SP3" poweroff
# vboxmanage controlvm "Win.FLP_SP3" acpipowerbutton

# sleep < s segundos , m minutos , h hora>
# Ejemplo: sleep 10s 
#                   sleep 10m
#                   sleep 10h

echo "Voy a apagar la PC en 1 Hora!!!"
sleep 1h
echo "Apagando Maq Virtual."
#
sudo -u <USER> vboxmanage controlvm "<NOMBREMAQVIRTUAL>" acpipowerbutton
#
echo "Maq Virtual Apagada."

echo "Apagando PC."
sleep 30s
shutdown -h +1


martes, 29 de octubre de 2013

Ver o Capturar Streeming RTMP con rtmpdump y mplayer (Ejemplo TN - Todo Noticias)

FUENTES: http://pclosmag.com/html/Issues/201104/page19.html
                  http://www.tdt-latinoamerica.tv/foro/tn-streaming-en-vivo-16-9-por-tn-com-ar-t4425-40.html


TN utiliza un protocolo conocido como RTMP para enviar el contenido al player flash. Los parámetros necesarios para establecer la conexión no están facilmente accesibles (no estan embebidos en el código HTML de la pagina) asi que hay que "escuchar" la transmisición para determinarlos. Una vez que se tiene estos parámetros se puede utilizar rtmpdump para conectarse y grabar o ver el streaming.

En linux, esta "rtmpdump" comando que le pasa el streaming directamente a mplayer para verlo en pantalla:



VGA >>> rtmp://stream.tn.com.ar/live
HD   >>> rtsp://stream.tn.com.ar/live/tnhd1/



# sudo apt-get install rtmpdump


VGA
# rtmpdump -r rtmp://stream.tn.com.ar/live \
         -a live \
         -y tnmovil2 \
         -W http://tn.com.ar/sites/all/themes/dozer/swf/cplayer/player.swf \
         -p http://tn.com.ar/envivo/24hs \
         -f "LNX 10,3,162,29" | mplayer -



HD
# rtmpdump -r rtmp://stream.tn.com.ar/live \
         -a live \
         -y  tnhd1 \
         -W http://tn.com.ar/sites/all/themes/dozer/swf/cplayer/player.swf \
         -p http://tn.com.ar/envivo/24hs \
         -f "LNX 10,3,162,29" | mplayer -

jueves, 24 de octubre de 2013

Puertos Serie Virtuales - Compartir un Dispositivo Serie por la Red en GNU/Linux [Socat Netcat++]

FUENTES:
http://thehackerway.com/2011/08/08/herramientas-para-hacking-en-entornos-de-red-%E2%80%93-conectividad-con-socat-parte-iii/
http://blog.marcelofernandez.info/2013/05/como-compartir-un-dispositivo-serie-por-la-red-en-linux/


Socat es similar a netcat pero para streams bidireccionales. Socat es conocido también como Netcat++ debido a que es una herramienta que extiende de manera significativa las potencialidades que proporciona Netcat. Permite realizar cosas (especialmente lo relacionado con diferentes tipos de conexiones) que con Netcat no es posible realizar por si solo, por otro lado es una herramienta mucho mas moderna y responde mejor a las necesidades de un hacker y/o administrador de red utilizando nuevas tecnologías en el campo de la conectividad y protocolos de comunicación. A diferencia de Netcat, esta herramienta cuenta con muchísimas mas opciones y su uso es un poco mas complejo, se necesitan conocimientos de redes de datos y conocer los protocolos de comunicación que se pueden utilizar con Socat para sacarle el máximo provecho a esta herramienta. Como ya se ha dicho, se trata de una herramienta un poco mas completa y compleja, por este motivo, esta será la primera entrada donde se planten las bases del uso de Socat y algunos conceptos teóricos necesarios para saltar a la practica y utilizar de forma adecuada las potencialidades que esta estupenda herramienta pone a nuestra disposición.
"Socat es una herramienta basada en línea de comandos que establece dos flujos de bytes bidireccionales y los datos de las transferencias entre ellos. Debido a que las corrientes pueden ser construidos a partir un gran conjunto de diferentes tipos de sumideros y fuentes de datos, socat se puede utilizar para muchos propósitos diferentes ".

Socat soporta muchos tipos de conexión y cada tipo esta indicado por una “palabra reservada” que indica la utilidad de la conexión, en cualquier caso, cuando se ejecuta Socat desde linea de comandos es requerido que se indique como mínimo dos direcciones donde la primera indica el origen de la conexión y los paquetes que se definan en dicho nodo se transmitirán al destino de la conexión que es la segunda dirección IP que se indica en el comando, todas las conexiones son bidireccionales por defecto, es decir, que ambos nodos pueden leer y escribir datos hacia el otro extremo de la conexión, a menos que se indique que la conexión es unidireccional de forma explicita.

Todas las opciones del comando y la especificación de direcciones se encuentra en http://www.dest-unreach.org/socat/doc/socat.html es recomendable visitar dicho sitio para conocer en profundidad las opciones y especialmente las especificaciones de las direcciones, que son básicamente, el tipo de conexión que se intenta establecer en cada nodo. Esta entrada será más practica sin olvidar que los detalles teóricos son sumamente importantes, se intentará indicar ejemplos prácticos de socat explicando los conceptos teóricos que hay detrás de cada ejemplo.

Si tenemos la necesidad de utilizar un puerto serial (por ejemplo, un dispositivo con un adaptador USB/Serie en /dev/ttyUSB0, un módem 3G o una placa Arduino en /dev/ttyACM0, etc.) conectado físicamente a una máquina en la red, que por diferentes motivos (distancia, pereza, lo que sea), lo queremos acceder como si fuera local.

En la PC-A el programa para acceder al Arduino en /dev/ttyACM0, y el Arduino conectado en PC-B de la red. La idea es que el programa acceda al Arduino como si estuviera directamente conectado en la PC-A, haciendo de alguna manera “transparente” la red que separa PC-A y PC-B.

Para esto vamos a utilizar la herramienta socat, que es como netcat pero para streams bidireccionales. Los pasos son:

//tanto en PC-A “servidor” como en PC-B “cliente”.
# sudo apt-get install socat                                           

//Ejecutar en el servidor
# socat -d -d -d OPEN:/dev/ttyACM0 TCP4-LISTEN:31337                  

//Ejecutar en el cliente
# socat -d -d -d TCP4:<IP PC-A>:31337 PTY,link=/dev/ttyACM0        

# sudo chown USER:USER -vR /dev/ttyACM0 ; sudo chown USER:USER -vR /dev/pts
# sudo chmod 775 -vR /dev/ttyACM0 ; sudo chmod 775 -vR /dev/pts


Lo que estamos haciendo es que socat en PC-A "Server" habrá el archivo /dev/ttyACM0 (el dispositivo serie a compartir), y además abra un socket en modo LISTEN (escuchando por conexiones) en todas las interfaces del equipo, particularmente en el puerto 31337. Las opciones -d -d -d son opcionales y sirve para habilitar los mensajes de debug.


Y en PC-B "Cliente" se conecte a la IP 192.168.X.X:31337, y que localmente lo haga ver como un nuevo dispositivo serial (pseudo terminal) creado por socat mismo en /dev/pts/X, y además haga un symlink de éste al archivo /tmp/ttyACM0. A partir de éste momento en /tmp/ttyACM0 existe un archivo que puede ser abierto y ser utilizado como un dispositivo serie local.

Notese el cambio de usuario y permisos para poder acceder de PC-B al puerto serie "Virtual" desde cualquier usuario y/o programa.

Un detalle, cuando se cierra la conexión del socat en el cliente hacia el servidor, en el servidor también se termina la ejecución del socat (y viceversa), por lo que en caso de volver a establecer la sesión, es necesario ejecutar nuevamente en ambos equipos.

lunes, 14 de octubre de 2013

Arduino + Wiring + Processing + GSVideo + openJDK

Primero que nada agradecer a:
http://fecyman10.wordpress.com/2012/03/25/processing-1-5-1-en-linux-mint-12-de-64-bits-y-uso-de-gsvideo/
http://blog.jorgeivanmeza.com/tag/gnulinux/page/2/
http://forum.processing.org/one/topic/gsvideo-question.html
http://gsvideo.sourceforge.net/#download
http://www.creativecoding.org/lesson/topics/video/video-in-processing

y sin más al grano.


#Descargamos y Descomprimimos donde corresponde
wget http://ufpr.dl.sourceforge.net/project/gsvideo/gsvideo/1.0/GSVideo-1.0.0-linux.zip
wget http://controlp5.googlecode.com/files/controlP5-2.0.4.zip

#Instalamos
sudo apt-get install libxine1-ffmpeg gxine mencoder mpeg2dec vorbis-tools id3v2 mpg321 mpg123 libflac++6 ffmpeg totem-mozilla icedax tagtool easytag id3tool lame nautilus-script-audio-convert libmad0 libjpeg-progs flac faac faad sox ffmpeg2theora libmpeg2-4 uudeview flac libmpeg3-1 mpeg3-utils mpegdemux liba52-0.7.4-dev libquicktime2

sudo apt-get install gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-gnonlin gstreamer0.10-sdl gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly totem-plugins-extra gstreamer-dbus-media-service gstreamer-tools

sudo apt-get install libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libglib2.0-dev

sudo apt-get install libjogl-java

#Ejecutamos
cd /opt/processing-2.0.3/
rm-rf java
ln -s /usr/lib/jvm/java-1.6.0-openjdk-amd64 java

mkdir /opt/processing-2.0.3/modes/java/libraries/opengl/library/linux64
cd /opt/processing-2.0.3/modes/java/libraries/opengl/library/linux64

ln -s /usr/lib/jni/libgluegen-rt.so
ln -s /usr/lib/jni/libjogl_awt.so
ln -s /usr/lib/jni/libjogl.so