Introducción a bash -paso3- fichero de transición, cat, tee y read (Pagina 1) / Scripts y programación / Foro Wifi-libre.com

El libre pensamiento para un internet libre

No estas registrado.     

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#1 10-04-2015 18:19:53

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 2,058

Introducción a bash -paso3- fichero de transición, cat, tee y read

Introducción a bash / paso tres

binbash_sh-600x600.png

La técnica del "fichero de transición" y el truco ultimo "read"

  Seguimos nuestro viaje en el mundo del script bash. cool
Hoy veremos un truco muy útil : el fichero de transición.
Así que dos comandos muy importantes para su manejo : cat (abrir un fichero) y tee (abrir un terminal secundario)
Y acabaremos "abriendo horizontes" con el comando read que permite declarar variable con lo que entra el usuario en consola

Recordatorio de los dos capítulos anteriores:
  - En nuestro primer curso ( Introducción a bash - paso 1: Bases, echo y "Hola mundo") hemos visto

  • Lo que es bash (el interprete de ordenes de las distribuciones GNU-Linux)

  • Como redactar un script bash (un simple fichero de texto que se distingue por su primera liña, la famosa  "bang-line!" :

    #!/bin/bash
  • Como ejecutar un script bash (nos situamos en el directorio con nuestra consola y invocamos bash + el nombre del script)

  • Hemos hecho nuestro pirmer script con el orden "echo" (que sirve para escribir en consola

- En nuestro segundo curso Introducción bash, paso 2 : variables, expresion regular (grep) y pipe hemos visto:

  • Lo que es una variable (ejemplo del cajón), como declarar la (

    nombre_de_la_variable=valor_de_la_variable

    ) y como usar la ( con el simbolo $ para ver su valor)

  • Lo que es una expresión regular (una cadena cualquiera que definimos) y a que sirve (se usa para buscar coincidencias)

  • Como usar básicamente  el comando grep que permite definir y  "jugar" con expresiones regulares

  • El comando "cut" que nos permite recortar texto

  • El pipe ("|") que encadena dos comandos mandando el resultado del primero comando (su stdout) al segundo comando

  Hemos bien adelantado smile y habíamos acabado por interesarnos a "como automatizar el ataque pixie dust".... Seguiremos en esta vía hoy haciendo un paso más.

Bendito fichero de transición

  Para dar una especie de definición; podríamos decir que se trata de un borrador. Es un fichero "para cocina interna", no se muestra en consola y tiene vocación a desaparecer  en el corso del script.
  Para entender esto tomamos un ejemplo concreto.
  En esencia (nos olvidamos de momento de escaneo, puesta en mode monitor...) un ataque pixie dust se resume a dos pasos:

  1. lanzar reaver_mod para recuperar los hashes

  2. lanzar pixewps para obtener el PIN

Y para llegar del  uno al dos el usuario interviene : tiene que copiar lo que ve en consola para redactar su linea de comando
Nuestra misión hoy es ver una forma de automatizar este paso y lo vamos a hacer con un fichero de transición.

El concepto es el siguiente : Si tenemos la información que queremos en consola; vamos a duplicar la salida (un log) para guardar la en un fichero de texto.
Así podremos luego en nuestro script abrir este fichero y podremos usar todo lo que hemos obtenido en consola.
Reaver nos da la información en vivo entonces la guardamos y así la podemos usar mas tarde. 
Hay que puntualizar una cosita : Es un método "primitivo". Es eficaz y fácil pero no es así que se programan "buenos programas". Pero para hacer un script en bash esta muy bien. wink

Tomaras una tasa de tea tee para hacer tu fichero de transición tongue

  TEE : guarda una copia de lo que pasa en consola en el fichero que indicamos. Sintaxis :

 tee [opciones]... [ficheros]...

tee se usa siempre con un pipe.
En la primera parte ponemos nuestra orden, luego añadimos un pipe, y luego usamos tee.
La salida en consola de nuestro primer comando se pasa a tee. Y tee lo enseña al instante mientras lo duplica y lo guarda.
ejemplo : Duplicamos la salida de reaver mod del amigo soxrok2212 para crear un fichero de transición "ataque.txt" (que guardamos en /tmp/, así se borra solo cuando se cierra la consola)

sudo reaver -i wlan2mon -b -c -n -vv -w -T 3 -S | tee /tmp/ataque.txt

Parro el ataque después el primer intento.

"cat" más ligero que un gato para abrir un fichero tongue

CAT permite abrir ficheros, combinar copias y crear una nueva copia. Ahora nos interesa para abrir el fichero de transición.
Ejemplo :  Entro en mi terminal

cat /tmp/ataque.txt

y efectivamente veo mi ataque reaver bash3_3.jpg
En el curso anterior habíamos visto como pilar la "auth key" combinando grep (seleccionamos una liña concreta) y cut (recortamos "campos") gracias a un pipe.


Creación de variables con cat | grep | cut

la meta es declarar una variable que contenga la llave de identificación que llamaremos AUTHKEY

AUTHKEY=$(cat /tmp/ataque.txt | grep AuthKey | cut -d ':' -f2-)

Notad la forma para declarar una variable que contenga ordenes, pipe(s) y argumentos: Debemos poner todo entre paréntesis y poner el símbolo del dolar primero.
Y repetimos en la misma consola la misma operación (entramos la variable y damos a <ENTER> para guardar la ) cambiando de expresión regular (copiamos y pegamos las de nuestra salida reaver par evitar todos errores)

PKE=$(cat /tmp/ataque.txt | grep PKE | cut -d ':' -f2-)
EHASH1=$(cat /tmp/ataque.txt | grep E-Hash1 | cut -d ':' -f2-)

  * Notar que para el nombre de la variable he quitado el guion entre E y HASH1. Es porque no podemos usar caracteres especiales en el nombre de nuestras variables, bash no las aceptara (para evitar cosas como "shellchock")

EHASH2=$(cat /tmp/ataque.txt | grep E-Hash2 | cut -d ':' -f2-)

y miramos el resultado en consola

echo "
PKE tiene por valor :           -$PKE
AUTHKEY tiene por valor :   - $AUTHKEY
EHASH1 tiene por valor :      -$EHASH1
EHASH2 tiene por valor :      -$EHASH2 "

  * Notar que con "echo" podemos entrar texto sobre varias lineas directamente en consola. "Echo" pilla todo lo que hay entre los dos " ( saltando lineas si necesario).

bash3_4.jpg

Pausa corta reflexiva

Cuando queremos redactar un script, hay partes fijas y parte que varían.. tomando el ejemplo de un ataque pixie dust básico,
tenemos

  1. Una liña de ataque reaver donde lo que varia es : la interfaz (mandatario es decir necesario en todos casos)
                                                                                        : el bssid    (mandatario es decir necesario en todos casos)
                                                                                        : el canal /opcional pero mejora el ataque)
                                                                                        : el PIN (opcional PERO pensando en el futuro, vamos a necesitar a un momento definir lo para usarlo - despues pixiewps)

  2. Y un liña pixiewps dónde lo que varia son los argumentos que acabamos de recoger en las variables anteriores.

 
Al final un script consiste en conseguir definir correctamente las partes que varían con variables.

Conclusión : el truco ultimó "read"

READ Permite leer lo que se entra en consola (el stdin). Es decir que lo que entra un usuario con el teclado esta almacenado para estar utilizado después.
  Me explico con un ejemplo concreto y veréis porque podemos hablar de un ultimo recurso que "lo arregla todo". cool
Como hemos visto, ahora mismo tenemos a algunas variables que nos faltan para automatizar el proceso.reaver_mod >> pixiewps.
Para empezar nos falta la interfaz y el bssid en la liña reaver y no podemos hacer nada sin ellas.
Pues; con read podemos... ya que haremos trabajar el usuario para nosotros wink
Escribir dos cositas nunca mató a nadie... ahora esta claro que no se puede abusar de ello porque el script se hace rápidamente pesado.... 
Al grano : La sintaxis básica para recoger lo que entra el usuario en una variable es la siguiente

read -p "" variable

podemos usar el espacio entre los dos " " para poner texto que se enseñara en consola (ahoramos así hacer lo con "echo") wink
ejemplo:

#!/bin/bash
# GPL v 3. Copyleft 10 april 2015  author: kcdtv  domain :wifi-libre.com purpose : learning bash and having fun
# pedagogical material for "Introducción a bash -paso3- fichero de transición, cat, tee y read"
# visit www.wifi-libre.com for the course 

read -p "Enter the wireless interface                 
  * it has to be in monitor mode (ex:mon0, wlan0mon)
  * than press [ENTER] 
" INTERFAZ                               # Con read -p guardamos lo que entra el usuario en la variable INTERFAZ
echo "                                    
You selected $INTERFAZ for your pixie dust attack.
The reaver command line would be : 

                           sudo reaver -i $INTERFAZ -b etc...

bye, see you in next chapter"            # Con echo ponemos en pantalla el valor de nuestra variable INTERFAZ (gracias al simbolo "$")
exit 0 

Guardo esto en un fichero de texto que llamo "scriptpaso3.sh" y lo lanzo con bash + ruta_script o bash + nombre script si estoy situado en la carpeta que lo contiene


bash3_5.jpg

Próximamente otro capitulo dónde veremos principalmente como usar y redactar bucles " if - elif - else - fi "
Con esto ya seremos capaces de de empezar nuestro script....

...¡Hasta pronto! smile

Desconectado

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

Temas similares

Tema Respuestas Vistas Ultimo mensaje
11 90 Hoy 15:55:34 por kcdtv
Pegado:
Pegado:: Belgrano Windalo por Patcher
3 64 Hoy 15:32:01 por kcdtv
11 179 Hoy 00:44:17 por Patcher
Hola! por Ike
3 34 Ayer 22:36:24 por Flashed
0 16 Ayer 19:25:20 por kcdtv

Pie de página

Información del usuario

Ultimo usuario registrado: Ike
Usuarios registrados conectados: 0
Invitados conectados: 8

Estadisticas de los foros

Número total de usuarios registrados: 356
Número total de temas: 618
Número total de mensajes: 4,237

Máx. usuarios conectados: 45 el 12-04-2016 12:02:20