Hackers use Bash I – Bash wants to meet you

Colaborador: Hackbier

Personalmente soy un gran amante de la terminal, la shell, el shell scripting y, concretamente de Bash, ya que es el que mejor conozco y el que más uso. Mi amor por ello comenzó hace años cuando me enseñaron en clase a usar Batch en Windows XP y me dedicaba a liarla en los ordenadores de la clase con scripts con bucles infinitos… Que peligro.

Para empezar, un poquito de historia. Bash es un intérprete de comandos que fue desarrollado para el proyecto GNU en 1987. El nombre de Bash procede del acrónimo de Bourne-Again Shell (renacimiento de la shell), ya que está basado en la shell de Unix. Bash es el intérprete de comandos por excelencia en los sistemas GNU/Linux; aunque también podemos encontrarlo -ahora en Windows 10- y en algunas versiones de OS X.

Todos los ‘frikis’ que queremos ser hackers conocemos lo que es la terminal, o la consola, o el intérprete de comandos, o esa pantallita negra con letras blancas (o verdes para los más retros) que nos permiten hacer magia y, aporreando el teclado, hackear la NSA, la Estrella de la Muerte, Matrix e incluso a Scarlett Johansson, y todo esto en… ¡10 minutos!. Esa pantallita que tiene tantos seguidores (entre los que me incluyo) como detractores (que los hay, oye).

Y dejando el humor a parte, la interfaz de texto proporciona en el hacking unas ventajas respecto a la interfaz gráfica en determinadas ocasiones; herramientas más puras (sin código añadido para botones, imágenes, layouts, etc), consume pocos recursos, velocidad, poder ejecutarlas sin necesidad de entorno gráfico, posibilidad de ejecutarla en prácticamente cualquier terminal (respetando las configuraciones de cada usuario) y un largo etcétera.

También por supuesto tiene desventajas, la más clara con la que hay que lidiar, la poca intuitividad. Tienes que aprender cómo funciona el programa, los parámetros que tiene, como se lanza, recordar los comandos, etc. No es tan fácil de usar (a priori) que un programita gráfico, lo que principalmente para los nuevos, será un buen desafío. Y oye, somos hackers, ¡nos gustan los desafios!. Además, ¿y lo ‘guay’ que queda usar la terminal?.

Bueno… Tras el parrafazo que os habéis tragado, vamos a por la acción… Nada más iniciar nuestro emulador de terminal favorito, o el sistema en interfaz de texto, veremos lo siguiente:

De la interfaz poco hay que decir. Esta varía dependiendo de la distribución, la versión, la configuración del usuario, etc. En este caso vemos una básica de Arch Linux: [user@hostname carpeta]privilegios. Ojo: ‘~’ hace referencia a la carpeta personal del usuario, por ejemplo, el directorio ~ de hackbier será /home/hackbier. Para los privilegios tenemos dos opciones:

  • $: Privilegios de usuario.
  • #: Privilegios de administrador, superusuario, root…

Para lanzar comandos simplemente deberemos teclearlos y pulsar intro. Ningún misterio. A continuación repasaremos algunos de los comandos básicos del uso de la consola de Bash.

Navegación por directorios

pwd

Indica en qué directorio nos encontramos.

cd

Permite acceder a un directorio al que indicaremos su ruta absoluta o relativa. Con cd .. podremos ir al directorio padre, es decir hacia atrás.

Pero, ¿vamos a ir a ciegas? Deberíamos poder ver directorios para saber a dónde vamos o que hay. Para ello lo complementaremos con ls.

ls

La utilidad ls permite el listado de directorios y ficheros del directorio en el que estemos ubicados. También podemos listar directorios en otros directorios poniendo su ruta absoluta o su ruta relativa.

ls puede ser acompañado por parámetros que añaden su funcionalidad y alcance. Por ejemplo, ls -la: -l lo muestra en forma de lista y -a muestra también los archivos ocultos. ls -R muestra además los directorios dentro de los directorios, para una visión más amplia del árbol.

Si nos pusiéramos a explicar cada parámetro de cada comando no terminaríamos nunca. Para ello, existe el paramétro –help o -h (puede variar pero está bastante estandarizado) que nos indica el modo de uso, parámtros disponibles, etc. Es una pantalla de ayuda para cada comando. Muy recomdable ir echándoles un ojo a las nuevas herramientas que no conozcáis.

mkdir y rmdir

Con mkdir podremos crear directorios fácilmente. Para borrar uno, rmdir.

Acciones con ficheros

touch

touch simplemente crea un fichero vacío. Debe ir acompañado del nombre que le queremos dar, y en caso de ser necesario, la ruta.

nano

nano es una herramienta muy básica para la edición de ficheros de texto. Suele estar en la mayoría de distribuciones con Bash. Esta herramienta nos permite tanto crear como editar ficheros, simplemente tecleando el comando nano seguido del nombre del fichero a crear o editar (si ya existe).

Aprender el uso de nano no es para nada difícil. De hecho en la parte inferior tenemos una leyenda que nos ayuda con las diferentes combinaciones de teclas para guardar, salir, buscar, etc. Por supuesto existen muchas más herramientas de consola, como Emacs o Vim, solo debemos aprender y elegir nuestra favorita; pero nano es fundamental saber utilizarla al menos de forma básica.

cat

Esta utilidad de Bash nos permite visualizar el contenido de un fichero sin necesidad de entrar en el, ni de interrumpir el funcionamiento de la terminal.

Directorios y ficheros ocultos

Para ocultar directorios o ficheros es tan sencillo como empezar el nombre del mismo por punto (‘.’), por ejemplo: .fichero_oculto.

Aquí finalizo la primera entrada de Hackers use Bash; por supuesto ha sido una entrada muy básica, ya que solo se trata de un primer contacto y solo hemos repasado algunos conceptos. Bash es mucho, mucho, mucho más amplio e iremos ampliandolo en las siguientes entradas.