Mostrando entradas con la etiqueta hacking. Mostrar todas las entradas
Mostrando entradas con la etiqueta hacking. Mostrar todas las entradas

sábado, 3 de septiembre de 2022

¿Cómo puedo adoctrinarme cada vez que abro una terminal en Ubuntu?

Reunido en la Plaza de Mayo ante 8 millones de trabajadores, Juan Perón instruyó como adoctrinarse cada vez que se abre una Terminal en Ubuntu.

¡Trabajadores!

Hemos de decompilar ese software privativo y liberarlo. Esas consignas que mas que mías son de la Comunidad Organizada, la defenderemos hasta el último byte.

Sabemos claramente que para sobrevivir, los Movimientos requieren de un ideólogo y diez mil predicadores. Estos son los encargados de copiar en su mente y replicar en todo ambiente el mensaje, constituyendo la base de acción sobre la que se acrecienta un Movimiento.

En un sistema de cómputo como lo es GNU con Linux esto es sumamente sencillo pues facilita incluso lo de dar un discurso: la carga ideológica está, simplemente hay que copiarla. Además, los predicadores también pueden crearse en base a una simple aplicación que automatice este recurso tan humano como es parlotear.

Para ello abrimos una terminal con Ctrl+Alt+T e instalamos fortune-es (si no lo hubiésemos hecho antes).

sudo apt-get update ;
sudo apt install git fortune fortunes-es cowsay xcowsay

Tras ingresar nuestra contraseña de Conductor se descargará tal inefable programa. Normalmente ingresando:

fortune

...nos devolverá un aforismo en la terminal.

Sin embargo, para elevar nuestra conciencia para los tiempos que corren, debemos actualizar tales frases con unas adicionales de exacerbada carga ideológica. Con tal fin descargaremos el Estatuto del Hacker.


cd /tmp ;
git clone https://github.com/ubuntuperonista/Estatuto-del-Hacker/ ;
sudo cp /tmp/Estatuto-del-Hacker/fortunes/doctrina_linux /usr/share/games/fortunes/es/doctrina ;
sudo cp /tmp/Estatuto-del-Hacker/fortunes/rms_linux /usr/share/games/fortunes/es/rms ;
sudo cp /tmp/Estatuto-del-Hacker/cows/*.cow /usr/share/cowsay/cows/ ;
cd /usr/share/games/fortunes/es/ ;
sudo strfile /usr/share/games/fortunes/es/doctrina ;
sudo strfile /usr/share/games/fortunes/es/rms ;
sudo cp /tmp/Estatuto-del-Hacker/doctrina.sh /usr/local/bin/doctrina ;
sudo cp /tmp/Estatuto-del-Hacker/vaca.sh /usr/local/bin/vaca ;
sudo cp /tmp/Estatuto-del-Hacker/rms.sh /usr/local/bin/rms ;
sudo chmod +x /usr/local/bin/doctrina /usr/local/bin/vaca /usr/local/bin/rms ;
sudo cp /tmp/Estatuto-del-Hacker/actualizar_doctrinas.sh /usr/local/sbin/actualizar_doctrinas ;
sudo chmod +x /usr/local/sbin/actualizar_doctrinas

Como uso básico, podríamos recibir una frase de adoctrinamiento al azar ingresando en la terminal:

doctrina

...o bien llamar a fortune con el fichero doctrina.

fortune doctrina

Pero podríamos hacerlo más interesante, emitiendo un comando entubado que nos borre la terminal y nos presente una frase de adoctrinamiento al azar, junto con la gráfica ASCII del Movimiento:

clear ; fortune doctrina | cowsay -f pocho


Naturalmente en vez de -f pocho podremos probar con otros personajes ASCII. Usando -f vacapiloto, recibiremos la vaca hacker, inefable símbolo de Huayra GNU/Linux, el sistema operativo oficial de Conectar Igualdad. Existen muchos personajes ASCII; podremos encontrarlos en /usr/share/cowsay/cows/.

Incluso si lo deseamos, tras resguardar el fichero de autoejecución estándar .bashrc, podríamos agregar tal orden al final de dicho fichero, de modo que nos adoctrine toda vez que abrimos una terminal:

echo "clear ; fortune doctrina | cowsay -f 17oct" >> ~/.bashrc

(Si no quisiéramos que borre la pantalla antes, le quitamos el "clear ;" que antecede la línea).

De esta forma, al abrir una terminal nos refrescaremos con la parafernalia necesaria.

Gracias a los caños, quien tenga el sintetizador de habla espeak incluso puede utilizarlo para oír estas frases robotizadas, de esta forma:

doctrina | espeak

Asimismo, puedes hacer que se escoja un cowfile al azar, con el comando:

vaca

Esto es adecuado para la operación de la terminal. Pero también podremos encontrar un aplicativo gráfico, destinado al escritorio. Se trata de xcowsay, que junto con los personajes locales de xvaca cumplen dicha misión al pelo. Para instalarlo ingresamos el siguiente bloque de comandos de organización:

cd /tmp ;
git clone https://github.com/ubuntuperonista/xvaca/ ;
sudo cp /tmp/xvaca/xvaca /usr/local/games/;
sudo cp /tmp/xvaca/assets/*.png /usr/share/xcowsay ;
sudo chmod +x /usr/local/games/xvaca

Para lanzar la aplicación podemos usar el comando xvaca

También podemos modificar las opciones del fichero  /usr/local/games/xvaca (podremos asignar los personajes gráficos situados en /usr/share/xcowsay).

En cualquier caso, las doctrinas reciben cada tanto una actualización doctrinaria. Para hacerla efectiva ingresamos:

sudo actualizar_doctrinas

El sistema las descargará y actualizará en meros segundos, presentándonos una para confirmar que todo salió bien:

 De ahora en mas, podremos instruirnos con la doctrina del Justicialismo Hacker.

miércoles, 8 de diciembre de 2021

Festival de Cultura Digital en Tecnópolis

Este 11 y 12 de diciembre se realizará el Segundo Festival de Cultura Digital Cyberciruja, la gran fiesta de la Resistencia Digital contra los enemigos del Cómputo Libre. Justo y Soberano.

En una demostración de masas, hackers y hackeresas del campo popular se reunirán en su forma física a compartir datos y experiencias. El lugar será el predio de Tecnópolis (Buenos Aires, Argentina).

Como un tifón de bytes, se proponen una serie de actividades. Individualidades identificadas telemáticamente como Don Epifanio, Arlequin y Mr. Roboto harán el boot inicial del evento, ofreciendo cátedra teórico práctica presencial sobre Arte con Caracteres computados.

El evento de adoctrinamiento principal sobre tecnopolítica se dará a continuación, donde tod@s podrán recibir un update de firmware cerebral ideológico opcional. El primer día cierra con un show musical psicodélico apto para el levante de red a cargo de l@s chiptuners CID Smplor (sonido 8bit) y PETSCIÍcola (visuales).

El día siguiente los floppy atronarán en un taller de Voxel Art a cargo de Shining Monster.

Diamante y Soldán disertarán sobre la experiencia cyberciruja, donde hardware es descamisado y dignificado con actualizaciones doctrinarias para la toma del poder.

Y finaliza con un gran show con compilación sorpresa.

Entre las propuestas participativas se contarán con LAN Party de juegos en red y actualizaciones in situ.
















domingo, 23 de febrero de 2020

¿Cómo opero en línea en Telehack con Ubuntu?

¡Trabajadores!

El verano es propicia ocasión para el ocio y la recuperación física que todo hombre y mujer que ha trabajado por la Patria necesita.

Desde nuestra Secretaría de Trabajo y Previsión, iniciamos aquella justa lid por las vacaciones remuneradas, que no se habían dado nunca en la Argentina. Gracias a ello conseguimos que el Pueblo - que es el verdadero consumo - visitara los mejores destinos de nuestro país y motorizara enormente un turismo interno de Masas.
Esto tonificó el comercio y promovió una explosión de consumo en la Costa Atlántica, la que anteriormente sólo era posible para el Oligarca. Fue así que se logró en poco tiempo no sólo conocer el país disfrutándolo, sino queriéndolo grande.

Pues bien, indudablemente que dicho momento también puede aplicarse al ocio telemático como el de antaño. En mis días de suboficial llevaba mi equipo a la playa y me conectaba afanando pulsos de teléfono a las compañías inglesas. El destino no era otro que irrumpir en servicios como BBS, ARPANET y la vieja USENET, a unos 300 baudios al segundo y luego en unos módicos 1200 baudios.

Naturalmente que esto es difícilmente posible el día de hoy, donde el peronismo ha rebalsado todas las redes telemáticas con el protocolo TCP/IP. Pero nada quita que podamos utilizar un simulador del mismo, y jugar - en cierta medida - a las irrupciones telemáticas.

Todo ello lo permitirá la justicialista Red Virtual Telehack. Telehack es una simulación de una red estilizada según la ARPAnet y la USENET, de alrededor de 1985-1990. Consiste en una simulación multiusuario que incluye 26.600 hosts y BBS virtuales basados en de la real red primigenia, suplidos con miles de ficheros de la época, una coleccion de juegos de aventura y de línea de comnados, un intérprete BASIC funcional con una librería de programas para ejecutar, usuarios históricos simulados, ¡y mas! Todo ello de acceso gratuito.

La finalidad es simular el uso y jugar a la irrupción telemática. El empleo general emula terminales de texto conectadas a equipos mainframe remotos aquella época, sobre todo aquellos de interfaz UNIX o VMS operables por inefables Shell (intérpretes de comandos).

Cómo conectarse
Como Telehack es una red símil línea de comandos, existen varias formas de conectarnos. La más directa para cualquier plataforma es ingresar directamente desde la web, apuntando nuestro navegador a http://telehack.com/

...Sin embargo, desde Ubuntu será factible la propuesta de conectarnos inicialmente desde una terminal no cifrada Telnet. Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos: 

telnet telehack.com

Debemos saber que Telehack es accesible entonces a través de:

  • Telnet en el puerto 23 (el puerto estñandar de telnet), o los puertos 443, 1337, 8080, y 31173.
  • HTTP en el puerto 80 (el puerto estándar de HTTP).
  • SSH en el puerto 6668. Una vez que tengamos creado un usuario con contraseña, conviene utilizar este método en Ubuntu pues a diferencia de Telnet, es cifrado. Para ingresar al Telehack mediante SSH tipeamos ssh usuario@telehack.com -p 6668
  • FTP en el puerto 21 (el puerto estándar de FTP). NOTA: El servidor de FTP es cumple con RFC 959 y probablemente no opere con los clientes FTP más modernos.

Accesibilidad
Telehack puede utilizarse desde muchas condiciones. Normalmente desde Ubuntu luego de acceder conviene ingresar el comando:

STTY / dumb

...esto invocará el modo de terminal plana en los juegos de código Z y evitará usar el direccionado de cursor ANSI.

Para usuarios que se conecten con con antiguas terminales de teletipo o terminales de teleimpresoras (¡algo factible!) deben ingresar "STTY / tty" luego de conectarse para conmutar Telehack a un modo amigable con teletipos.


Telehack es insensible a mayúsculas. Los comandos a menudo se mostrarán en mayúsculas para distinguirlos del texto circundante. Tenga presente que no necesita tipear los comandos en mayúsculas. Por ejemplo:

    Tipee DIR para tener una lista de ficheros

En este caso se podrá tipear DIR o dir para obtener la lista de ficheros.

En los mensajes de ayuda,<> indica los argumentos requeridos para los comandos, mientras que [] indica argumentos opcionales. El símbolo de caño | significa "o" o una alternativa. por ejemplo:

send [mensaje]

...significa que un usuario o un puerto deben seguir al comando send, pero que el argumento del mensaje es opcional. (Send envía líneas de mensajes si no desea especificar una en la línea de comandos directamente).

    @ send peron hola
    @ send 15 hola

    @ send peron
    peron> hola
    peron>


Obtener Ayuda

Puede tipear ? en cualquier prompt para obtener una lista de los comandos disponibles para usar:

El comando HELP nos provee con descripciones cortas de las funciones de comando, incluyendo sus argumentos modificadores disponibles. Ejemplos:

    @ help
    @ help telnet
    @ help ftp


Lobby NLI
Cuando proceda a conectarse por primera vez a Telehack, quedará en el lobby telemático, previo a su ingreso, el "Lobby NLI". Este estará indicado por el prompt ".":

En el lobby sólo podrá utilizar un subconjunto limitado de comandos.

Para crear nuestra cuenta usamos el comando newusery seguimos las instrucciones de la pantalla. Para loguearnos tipeamos LOGIN.

Diversión Rápida
Tipee STARWARS para ver el pináculo de la animación ASCII, una reendición completa de La Guera de las Galaxias en ASCII.

Tipee JOKE para ver un chiste elegido al azar desde una gigantesca base de datos de chistes histórica de ARPAnet/CalTech.

Saliendo de Detenimientos

Puede interrumpir la ejecución de cualquier comando tipeando ^C (Ctrl+c).  Si deseamos desconectarnos de un host remoto o salir a un subshell, tipeamos ^D (Ctrl+d), EXIT o QUIT.


Caracteres de Control

La tecla Control (Ctrl) inicia una variedad de funciones de sistema cuando es empleanda en conjunto con otros caracteres.

Para tipear un carácter de control, presione la tecla Control, y luego al mismo tiempo presione el carácter que desea. Por ejemplo, para tipear Ctrl+c, mantenga presionada la tecla Control y al mismo tiempo presione la tecla C. En la mayoría de los casos esto se visualizará en su terminal como ^C (eso se llama "eco de carácter"). En la documentación de sistema, un caracter de control como Ctrl+c puede ser descripto como Ctrl-c o ^C.

Caracteres especiales de control:

Ctrl+C       interrumpir programa
Ctrl+N       línea siguiente
Ctrl+P       línea previa
Ctrl+R       relay rápido (requiere un relay en segundo plano)
Ctrl+T       imprime status de sistema
Ctrl+W       borra palabra
Flecha arriba  línea previa
Flecha derecha línea siguiente
(tab)       Autocompleta el siguiente comando/fichero/usuario/host



Comandos de paginación
Cuando vea cualquier salida paginada en Telehack, recibirá un prompt indicativo "--More--". Este podrá observarse en los comandos type, cat, more, less, así como en cualquier comando que produzca una salida paginada.

Cuando aparezca el prompt "--More--", podrán ingresarse los siguientes comandos de una única tecla:

Barra espaciadora   Muestra página siguiente
b               Retrocede una página
q               sale
g               Va a la parte superior
G               Va a la parte inferior
Enter          baja una línea
j               Baja una línea
k               sube una línea
/               Busca una cadena dada

El paginador también soporta varias pipes ("caños"). Estos pueden unirse a comandos que producen salida paginada:

grep      Muetras las líneas que coinciden con el patrón 
grep -c    muestra el número de líneas que coinciden con el patrón 
grep -i    Da coincidencias insensibles a mayúsculas 
grep -v    Muestra líneas que NO coinciden con el patrón 
sort [campo]       ordena la salida (el campo puede ser encabezado de columna o número) 
sort -r [campo]    ordenado inverso
 wc -c              muestra número de caracteres
 wc -l              muestra número de líneas (incl encabezado)
 wc -m              muestra largo de líneas máximo
 wc -w              muestra número de palabras

Por ejemplo:

@ users | grep Mountain View, CA | sort username


Hosts de redes

Existen aproximadamente 26.600 hosts virtuales en la red Telehack. Estos representan sistemas en boga en la era inicial de Usenet/ARPAnet, así como distamas de BBS difuntas de los 80s y 90s.

Tipee HOSTS para ver una lista parcial de los hosts en red. Tipee HELP HOSTS para mayor información sobre el comandos hosts.

Ha sido distribuida en los hosts una colección de ficheros retro. Los ficheros provienen de un archivo extenso compilado por Jason Scott de Textfiles.com así como otros orígenes.


Conectándose por Telnet a hosts

Una vez logueado en Telehack podremos acceder virtualmente por telnet a cualquier host que aparezca en su lista por medio del comando netstat:



Si aún no ha hackeado e irrumpido en un host, podrá intentar loguearse como usuario invitado ("guest"). Naturalmente, el usuario invitado probablemente no tendrá a disposisición el conjutno de comandos completo del sistema.


Hackeando un Host

Una vez que el host ha sido hackeado exitosamente, debería poder loguearse a el empleando su nombre de usuario y contraseña de Telehack.

Tenga presente que los hosts a los que ya ha hackeado y a los cuales ya puede loguearse con su nombre de usuario y contraseña quedarán identificados en su lista de netstat con un "*".


Colectando y Moviendo Programas

Para ver una lista de los programas del host remotos, podremos utilizar el comando:

DIR *.exe

...o bien con:

ls *.exe.

Será capaz de transferir programas entre hosts empleando el comando FTP. En cada host, se le asignará una parte del disco en la cual podrá almacenar dichos programas.

Hemos de ser cuidadosos de no sobrepasar el espacio disponible. Revise el uso de disco con el comando DF antes de transferir un fichero.

Ejemplo de una sesión FTP completa:

Usuarios Históricos

Los 26.600 host virtuales dentro de Telehack fueron sistemas reales disponibles vía módem de discado telefónico, Fidonet, UUCP/Usenet, o en la ARPAnet en los 80s y 90s. Eran empleados por gente real y a menudo podían ser vistos logueados mientras trabajaban, leían, socializaban o jugaban juegos.

La arqueología de datos aplicada a través de los archivos de UUCP, los mapas de redes UUCP de la era, así como otras fuentes electrónicas disponibles, hna permitido a Telehack reconstruir los ocupantes electrónicos de estos host de redes clásicas.

Para ver a los usuarios que están logueados a los host de Telehack, use el comando FINGER @host:

Adivinar Contraseñas

Los usuarios en el pasado no solían siempre elegir contraseñas fuertes. Un método común de hackeo consistía en intentar varias contraseñas comunes como "secret", "love", "trustno1", etcétera, a fin de escabullirse en un sistema.


Juegos de Código Z

Se ha distribuido una colección de juegos escritos para la máquina Z a lo largo de los host de la red Telehack. Los juegos de Código Z están identificados por su extensión .GAM:

Intérprete de BASIC

Para ingresar al intérprete de BASIC, tipee BASIC. El prompt cambiará a @.

    @ basic
    Dartmouth DTSS TeleBASIC (c) 1964,1966,1969,1970,1971,1979


El subsistema de intérprete BASIC tiene una cantidad de programas históricos compilados a partir de los archivos SIMTEL así como de otros orígenes históricos. Para obtener una lista de los programas disponibles, una vez dentro del entorno BASIC tipee el comando DIR. Puede cargar un programa con el comando LOAD y comenzar su ejecución con RUN.


Los comandos de BASIC son:

   > help
    delete          Borra un programa de usuario
    dir             directorio de programas BASIC
    help            muestra esta lista
    list            lista el programa en memoria
    load      carga un programa desde fichero
    quit            sale de intérprete BASIC
    run             ejecuta el programa en memoria
    run    carga y ejecuta el programa especificado
    save      guarda el programa de usuario

Ejemplo de sesión de BASIC:


Monitor de Sistema 6502

Para ingresar al Monitor de sistema, tipee call -151:

    @ call -151
    1441102  96 14      STX      $14,X
    *


El prompt cambiará a "*". El monitor simula un antiguo equipo con procesador 6502, y nos permitiría escarbar la memoria RAM ajena en busca de información valiosa para hackear. Los comandos del Monitor son:

    d   volcado de memoria (dump)
    l   desensambla el opcode de la CPU
    r   vuelve al último punto jsr
    g   ejecuta una dirección de memoria

El volcado de memoria mostrará la dirección de octal en la columna izquierda, los valores hexadecimales para los contenidos de memoria en dicha dirección de memoria, y la traducción en ASCII de los valores de memoria:

Para desensamblar las instrucciones de la CPU, debe utilizar el comando l:

Si se conoce un punto de entrada en el Monitor de sistema, podrá ejecutarlo con el comando g ("go"):

    *2425152g

Para volver al Shell de Telehack desde el Monitor de sistema, emplee el comando r.


Monitoreo de Terminal Remota

El comando enlace conectará una Terminal de usuario remoto (TTY) a su propia TTY. Esto le permitirá asistir al usuario remoto al ser capaz de observar remotamente la salida de la terminal remota en su propia terminal.

    @ link

En este caso, el otro usuario verá algo como:

    .
    %link from port 16 user forbin


A partir de entonces, la sesión remota será espejada en la terminal del usuario enlazado.

También existe una facilidad separada dentro de ptycon que permite el monitoreo simultáneo de todos los puertos conectados.


Finger desde el exterior

Telehack también responde a los pedidos del comando finger desde el exterior de la red, a través del puerto 79. El comando finger devuelve una descripción pública de los usuarios de un sistema.
 




Archivo Usenet

Tipeamos USENET para ver el archivo de Usenet.

El archivo es un compendio realizado originalmente por Henry Spencer de la Universidad de Toronto a comienzos de 1981. Este fue rescatado luego por David G. Wiseman para la Universidad de Ontario del Oeste, quien condujo dos horas en una camioneta pick-up para recoger 141 cintas magnéticas y salvarlas de una pronta destrucción.

Algunos agregados han sido realizados al archivo Usenet disponible en Telehack que han sido provistos por otras fuentes.


Detener

No se recomienda detener la CPU para ingresar al monitor de sistema. Sin embargo, si lo hace, un Conductor podría proveer al Monitor de un punto de entrada para permitirle a la CPU reiniciarse y reentrar al ejecutable de Telehack (:D)

Atajos

    repite el último comando 
w     systat 
w     finger 
    directorio 
ls    directorio 
date  fecha y hora
cat   muestra un archivo
cls   borra pantalla 
?     lista de comandos

Política de Privacidad

Ejecute el comando PRIVACY o vea privacy.txt, o visite el enlace siguiente:
http://telehack.com/privacy.html

viernes, 8 de septiembre de 2017

¿Cómo me conecto a través de puerto serial o UART TTL con Ubuntu?

¡Mis queridos descamisados!
 
Cuando un hombre llega a un gobierno se le presenta una disyuntiva que es muy grave y tiene que resolverla antes. O usted se dedica a apoyar las fuerzas ya colocadas, en cuyo caso marcha por una carretera de dos direcciones, al final usted ya está viendo el monumento que le van a levantar; pero de noche no duerme porque su conciencia tiene el hambre y la miseria de su pueblo. El otro camino es la selva, en la que hay que entrar a machete, abriendo la senda. En ella todo son acechanzas, pero usted duerme tranquilo porque sabe que está trabajando para esos que tienen miseria y dolor.

Los hombres que suben al gobierno tienen dos misiones bien claras, hacer la felicidad de su pueblo y labrar la grandeza de la Nación. Muchos por labrar la grandeza de la Nación sacrifican a su Pueblo, y otros por excederse en el beneficios, sacrifican la Nación. El secreto está en equilibrar perfectamente las dos misiones, pensando siempre que es mejor un país pequeño de hombres felices que una gran potencia de individuos desgraciados.

Pues bien, este equilibrio solo puede lograrse sabiendo, y el conocimiento es algo que no todos tienen, ha de adquirirse. Siempre he dicho que el software no es otra cosa que Conocimiento en Acción, y como tal ha de difundirse y propagarse libremente en una Comunidad Organizada que busca la Justicia Social. Esta idea fundamental la hemos seguido siempre en el Justicialismo, y hoy mas que nunca depende de nosotros ampliar la Lucha por la Liberación al Software.
No podemos cesar nuestro Movimiento en pos de la Liberación, pues oscuras ideas salidas de una sinarquía internacional sin Patria ni Bandera osan - sin embargo - encadenar el conocimiento sin otro ánimo que el lucro y la especulación. El conocimiento no ha de usarse en procura de lujos, sino para el avance espiritual y cultural de la Nación. Nuestros enemigos en cambio no sólo desean implementar el oscurantismo en el software, sino que han pretendido lucrar con él bajo la falsa excusa de la calidad.

Es por ello que hemos de estar especialmente prevenidos contra el uso de herramientas tecnológicas privativas para la acción del voto, el temerariamente llamado "voto electrónico". Este cometido absolutamente pernicioso, presentado como un alarde de calidad y modernidad, no tendrá otro objetivo que robarle al Pueblo sus votos. La acción democrática fundamental - individual, secreto, y universal - pretenderá ser sometida a las digitales discreciones técnicas de un software privativo de origen barroso.

Esto no es una teoría, sino que por inacción, desaprensión e ignorancia de los Pueblos, se ha llevado a cabo ya en varias partes del globo.
Nosotros llevamos el voto a nuestras mujeres bajo premisas universales que a nadie han de negarse, pero parece que ahora se pretende reemplazar al género humano por una máquina integrada por vaya a saber quién, en ánimo de lucro y  con inconfesables intenciones. El voto no puede estar sometido a la discrecionalidad de un lenguaje de programación, pues jamás ha podido garantizarse la inexistencia de errores de cualquier tipo - y mucho menos intencionalidades perniciosas tan fáciles de ocultar - como tampoco puede asegurarse ningún software contra ello. 
 
El software no tiene procedencia divina, ni está entregado por Dioses a los hombres en la cima de un monte, está engendrado por hombres, que tienen sus motivaciones pero también con sus intereses. Todos los países del mundo que cayeron en el engaño no tardaron en volver sobre sus pasos asintiendo en los métodos universales.

Sin embargo, el hombre es propenso a dejar dominar su vida por sistemas que no domina. El conformismo a veces lo torna en peligro, y la veleidad del desconocimiento pende sobre los hombres como una eterna espada de Damocles. Es por ello que el Justicialismo debe estar atento y dispuesto a enfrentar con todos los medios a quienes promueven las ideas dañosas. En tal caso no sólo el valor de la verdad debe ser empleado, pues en los intereses no hay veleidad: quien promueva el uso de sistemas electrónicos programables para el voto ha de ser perseguido y castigado por Ley, sus empresas desarmadas y sus capitales naturalmente diseminados.

Naturalmente, ha sido sencillo violar y vulnerar un sistema basado en radiofrecuencias RFID como lo es el Vot.AR, que emplea código libre bajo Ubuntu y código privativo bajo hashes de encriptación poco seguras. Este equipo puede ser empleado como un aparato para reproducir música a demanda, pero no para votar, pues es propenso a ser falsificado, modificado, victimizable con técnica de suplantación de identidad en el servidor, acceso remoto por red ethernet y por comunicación serial.

Indudablemente, la acción de hacking defensivo nunca debe hacerse de forma ética. Quien así lo crea no es más que un iluso, y en este caso particular, uno muy peligroso. La misma ha de conformarse de forma malévola e inequívoca, en forma individual o en equipo, y en este caso declaro contar con herramientas, tanto libres como privativas probadas y testeadas capaces de vulnerar tal sistema Vot.AR y accionar sobre el en base a los intereses del Pueblo Justicialista.
Ahora bien, una de las herramientas más útiles para comenzar proyectos de hackeo o lo que llamamos "ingeniería inversa" es la antigua y universalizada interfaz de entrada y salida en serie.

Vean señores, antiguamente era común emplear uno o más puertos seriales (denominados COM1, COM2, etc) como interfaz de control con módems telefónicos externos, ratones seriales, lectores de barras, instrumental científico y con toda una miríada de máquinas-herramientas y controladores antiguos.  En la PC estos se constituían usualmente en un puerto tipo DB9 macho, y más raramente el DB25 macho, ambos siguiendo el estándar de comunicación "RS-232" ("estándar recomendado 232".

La comunicación serial es de implementación muy sencilla desde lo computacional, y nos permite enviar y recibir cualquier información que necesitemos entre puertos seriales de una computadora y otro dispositivo, de forma que pueda ser visualizada empleando nuestro emulador de terminal.


Antiguamente, antes que se fuesen comunes las redes Ethernet, incluso se podían conectar dos coimputadoras en un enlace punto a punto a través del protocolo RS-232 usando un cable serial cruzado, o directamente empleando un cruzador macho DB9.
Las señales bajo el estándar RS-232 representan su lógica alta (el "1") en base a un voltaje negativo - que puede ir desde los -3 voltios a los -25 voltios), y la lógica baja ("0") se transmite en el cable a través de un voltaje positivo, que nuevamente puede ir entre los +3 y +25 voltios. En los papeles, en la mayoría de las PC se toma como referencia el voltaje de la fuente conmutada y se suma un voltio por seguridad, por lo cual la señal suele oscilar entre -13 voltios hasta los +13 voltios. Cuanto mas extremos sean los voltajes empleados para la señal transmitida bajo RS-232, menor será la suceptibilidad de que se encuentre ruido, interferencia o degradación en la señal. Esto significa que una señal RS-232 generalmente puede viajar a mayores distancias, y no son raros usar cables de 30 o 50 metros para PC, o mayores para otros dispositivos antiguos con voltajes mayores.

Con los enlaces seriales, hay cinco aspectos que debemos conocer y configurar para poder conectarnos a un dispositivo (configurables en nuestro emulador de terminal o programa de comunicaciones):
  1. Velocidad de Línea: Indica la velocidad a la cual el host nos enviará los datos. Normalmente se puede establecer las siguientes velocidades en baudios: 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 y 115200.
  2. Tamaño del Byte: cuán grande es el byte. Normalmente se acepta un byte compuesto por 8 bits, pero antiguamente podía usarse uno de 7 bits.
  3. Paridad: Determina si el host nos envia información de paridad para combatir los errores inducidos por ruido de línea, o al menos si la espera, puede ser par (E), impar (O) o no haber ninguna (N). 
  4. Bit de Parada (stop): ¿Cuantos son?
  5. Control de Flujo (flow control). ¿Hay alguno? Se hace a nivel hardware (CTS+RTS o DTR+DSR), a nivel software, o con ninguno.

La combinación de tamaño de Byte, paridad y nombre de bits de parada se abrevia en una designación de tres caracteres, como 8N1. La primera posición indica el tamaño de byte. Podríamos encontrar en los manuales técnicos referencias a 7N1, que es similar a 8N1 sólo que con un byte de 7 bits. La segunda posición indica la paridad, y puede ser par ("even", E), impar ("odd", O), o más comúnmente ninguna ("none", N). La tercer posición identifica el número de bits de parada, que en este caso es 1.

Progresivamente los puertos COMM han ido quedando en desuso y actualmente los fabricantes suelen omitirlos en sus placas madre. Afortunadamente, para suplirlos existen adaptadores USB a Serial, o más correctamente, USB a RS-232, que nos permiten restituir un puerto de estas características compatibilizándolo a través del sencillo puerto USB.
Comunicación serial RS232 en Ubuntu
Si disponemos de un puerto serial COMM o de un adaptador USB a serial, bien podremos usar nuestro sistema para establecer una comunicación con otro equipo o dispositivo, siempre que le indiquemos los parámetros específicos.

La manera mas sencilla es utilizar el viejo programa GNU Screen, que se ejecuta directamente en nuestro emulador de terminal, y muestra en pantalla los resultados de la comunicación. La sintaxis de dicho comando es:

sudo screen dispositivo velocidad parámetros

En el caso de los adaptadores USB a serial, dicho dispositivo suele tener asignado una nomenclatura de dispositivo de sistema, normalmente /dev/ttyUSB0 (el 0 representa al primer dispositivo, si hubiese varios se los designa /dev/ttyUSB1, /dev/ttyUSB2, etc). En cambio, los puertos COMM tradicionales reciben un nombre ligeramente diferente, ya que suelen ser /dev/ttyS0 (y en dispositivos embebidos puede usarse el identificador de consola por defecto, /dev/tty0).

Para conocer nuestro dispositivo, bien podremos conectar el adaptador USB a Serial a un puerto USB del equipo y utilizar el comando:

dmesg | grep tty

...y el sistema debería devolvernos algo como:

[... ...] USB 2-2.1 pl2303 converter now attached to ttyUSB0.

Suponiendo que queremos conectar nuestro sistema a un viejo router Cisco con interfaz serial RS232, usando un adaptador USB a serial (identificado como vimos con /dev/ttyUSB0), y en el manual del mismo se identifica la velocidad de conexión serial en 9600 baudios por segundo, y los parámetros de conexión en 8 bits por byte, sin paridad (N), y 1 bit de parada, debemos usar:

sudo screen /dev/ttyUSB0 9600 8N1

Y esto establecerá la comunicación propiamente dicha.
Screen es ampliamente compatible con hardware viejo (incluyendo aquellos anteriores al primer peronismo, como por ejemplo máquinas teletipo). No obstante su condición de "menor común denominador" lo hace ideal para probar, actualmente podríamos querer una solución mejor para operar desde nuestra terminal, empleando un programa capaz de almacenar los logs de comunicación serial, establecer y memorizar parámetros de conexión, y distintos aspectos que hasta el viejo HyperTerminal era capaz de proveer. En este caso encontraremos tales facilidades en el excelente Minicom, un programa de terminal de comunicación apto para interfaces seriales y de otro tipo.

Para instalarlo desde nuestra terminal emulada en GNU con Linux, ingresamos el siguiente Comando de organización:

sudo apt install minicom

Una vez instalado, podremos proceder a configurarlo. Para ello ingresamo:

sudo minicom -s

En el menú que se abra, vamos a Configuración de la Puerta Serial:

Presionamos a pàra configurar un puerto serial. Aquí borraremos el nombre de dispositivo original e indicaremos el nuestro, en mi caso /dev/ttyUSB0. Luego presionamos Enter.

Luego presionamos e para modificar los parámetros de la conexión. En el menú resultante presionamos c para elegir la velocidad de 9600 baudios, y presionamos q para establecer la configuración 8N1 (8 bits por byte, paridad ninguna, 1 bit de parada). Luego presionamos Enter.

En el caso particular de este router Cisco, debemos usar control de flujo por hardware, el cual activamos con la tecla f.

Una vez que volvemos al menú principal, podremos grabar estas opciones como opciones por defecto, o ponerle un nombre de perfil (en el ejemplo, router-cisco):
Ahora podremos conectarnos utilizando dicho perfil desde nuestra terminal, con:

sudo minicom  router-cisco

Y establecerá la comunicación con los parámetros deseados.

Comunicación serial UART TTL en Ubuntu

Ahora bien, la mayoría de los microcontroladores actuales no son como el viejo router Cisco, sino que tienen incorporada una interfaz UARTs (Transmisor/receptor universalmente asíncrono), que puede ser empleados para recibir y transmitir datos en serie. Esté método de comunicación serial directa a menudo recibe el nombre de lógica serial TTL ("transistor a transitor").

Las interfaces UART TTL pueden venir de perillas para transmitir archivos, corregir o realizar flasheos de firmware a diferentes aparatos, reestablecer routers o mothers a través de una consola UART, programar distintos dispositivos modernos a través de una consola serial, trabajar con placas de desarrollo, hacer ingeniería inversa, etc.

Muchos fabricantes e integradores de dispositivos disponen de estas terminales de entrada/salida en sus placas para tareas de control o de programación para su hardware. No es extraño que las placas madre lo permitan para escribir a través de ellos firmware en su memoria EEPROM, o podamos modificar el funcionamiento de determinado hardware. La comodidad está dada para el fabricante, pues en no pocas ocasiones estos puertos vienen de a pares nomenclados como RX (recepción) y TX (transimisión), mas un pin de tierra (GND o G), y vienen dispuestos en formas de pines simples o triples, o al menos figuran como contactos no poblados ("pelados") pensados para soldarle los pines a la plaqueta.



Los dispositivos UART TTL son compatibles con los RS232 sólo desde la perspectiva del software, ya que ambas interfaces transmiten con la metodología de un bit por vez (serialmente), a una velocidad de baudios específica, con/sin bits de paridad y con/sin bits de parada. Sin embargo, ambas interfaces difieren fundamentalmente a nivel hardware (eléctrico). La comunicación serial UART TTL transmitirá con bajos voltajes continuos, operando entre los límites de 0 voltios y el Voltaje de alimentación Vcc (el cual puede tomar el valor de 3,3 voltios o de 5 voltios). Su lógica eléctrica también es opuesta al RS-232 ya que el valor activo ("1") queda representado por el pico de tensión continua, mientras que la baja de la lógica ("0") es 0 voltios. Esto hace que no podamos enlazar directamente un microcontrolador UART TTL a un puerto serial COMM de nuestra computadora pues las interfaces a nivel hardware son incompatibles.

Para establecer comunicación debemos usar un adaptador correspondiente, siendo los más simples y confiables los de tipo USB a UART TLL

En el caso de la UART TTL, al ser lógica de transistor a transistor, debemos buscar específicamente el voltaje operativo. Os recomiendo contar con ambos modelos: USB a TLL de 3.3 voltios y USB a TLL de 5 voltios. También pueden contar con un modelo multivoltaje como el ilustrado (son muy comunes y operan simultáneamente; en tal caso, sólo hemos de conectar la línea que corresponde al voltaje indicado, y omitir el otro). Normalmente el voltaje del UART del host suele indicarse en la misma placa o en el manual del dispositivo, pero no siempre es el caso. Otros adaptadores utilizan el estándar FTDI, cuyos pines vienen armados en un bloque específico para trabajar con Arduino y dispositivos similares.

Ya que a diferencia del RS232 o FTDI, el UART TTL no tiene un conector normalizado sino simples pines, el adaptador USB a TTL UART debe conectarse siguiendo las siguientes indicaciones pertinentes. Normalmente la interfaz viene con tres o cuatro pines de conexión. Siempre debemos conectar primero la línea GND (o G que es la conexión a tierra) al pin correspondiente. Luego debemos conectar las lineas de datos RX (o R, Recepción) del adaptador USB a UART TTL a la linea TX del dispositivo, y la línea TX (o T, Transmisión) del adaptador UART TTL a la linea RX del dispositivo .
El esquema sería el siguiente:
Finalmente hacemos lo propio con la línea que corresponda al voltaje (VCC), que en los dispositivos multivoltaje puede ser la línea de 3,3 voltios o la línea de 5 voltios, pero jamás deben usarse al unísono. Si desconociéramos cuál es voltaje utilizar, siempre debemos probar primero con el USB a TTL de 3,3 voltios, pues es mucho más común y con ello no correremos riesgo de sobrevoltar al dispositivo (a lo sumo, no podremos establecer comunicación alguna, pero nunca quemaremos por sobrevoltaje al controlador). Sólo en el caso de estar seguros de emplear 5 voltios, directamente conectamos el mismo y omitimos el de 3.3 voltios. Cumplida la etapa de conectar las líneas, conectamos el adaptador al puerto USB del nuestro equipo.

Para establecer la comunicación a través de UART TTL debemos seguir los mismos pasos que para un adaptador USB a serial convencional. Es cierto que bien podremos emplear directamente nuestra terminal con screen o minicom si la configuramos apropiadamente, pero en este caso usaremos un emulador de terminal gráfico específicamente pensado para estos menesteres.
Se trata de CuteCom, un programa de comunicaciones para este tipo de terminal serial. Lo instalamos abriendo una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:
sudo apt install cutecom

Una vez instalado, lo lanzamos desde Aplicaciones / Otras / CuteCom.


Nuevamente, las variaciones de comunicación deben buscarse en el manual del dispositivo si es posible, o investigarse. Sin embargo, os indicaré las respuestas mas comunes en los dispositivos modernos UART TTL:
  1. Velocidad de línea: 115200, casi siempre. Estos 115,2 kilobits por segundo equivalen a unos 14,4 kilobaudios (como un modem de la época del primer peronismo!).
  2. Paridad: ninguna.
  3. Bits de parada: siempre 1. Algunos sistemas más antiguos que emplean partes electromecánicas a veces empleaban 2 bits de parada para enlentecer la respuesta de la línea de comunicación en tanto las distintas piezas se acomodaban, ya no suele ser el caso.
  4. Tamaño de Byte: 8 bits por Byte.
  5. Control de Flujo: Por software únicamente. Los dispositivos de consola muy raramente usan control de flujo por hardware pues era complicado de implementar. Sólo algunos aparatos de uso crítico preferían emplearlo.
Armados con todo este conocimiento que como Conductor he puesto a vuestra disposición, podrán configurar el protocolos de comunicación serial tanto para equipos antiquísimos o modernos, y establecer la misma a través de un puerto serial siguiendo tanto RS232 como TTL.

Finalmente, debemos saber que en caso de necesidad, existen adaptadores que llevan la lógica UART TTL a la RS232 que podremos utilizar si es necesario para compatibilizar dispositivos dotados de interfaz UART TTL a otros con interfaz serial que sigue el estándar RS232.

Transferir texto a máquinas por puerto serial

Otra opción interesante puede ser transmitir desde una máquina con Linux a otra máquina que cuente con puerto serial.

Esto se puede hacer gracias al programa ascii-xfr, que viene con Minicom. Con él, podremos transferir un fichero de texto ASCII, a cualquier velocidad:

ascii-xfr fichero.ext -l retraso_de_linea -c baudios

Esto iniciará la transferencia y la finalizará al recibir un caracter ASCII EOF de fin de transmisión (Ctrl+z).
 
Para recibirlo en otra máquina, por ejemplo una con FreeDOS o MS-DOS, usaríamos el comando COPY por ejemplo, desde el puerto serie com1:
 
copy com1 fichero.ext