Metodos para eliminar ficheros y directorios

Unos comandos fáciles para eliminar ficheros o directorios.
Si el fichero que desea eliminar requiere privilegios de root, utilizaremos el comando "sudo".

ELIMINACION DE FICHEROS:

1. Si estamos en el mismo directorio:
[code]$ rm -rf fichero[/code]
2. Si no estamos en el mismo directorio:
[code]$ rm -rf / ruta_al_directorio / fichero[/code]
3. Eliminar un fichero especifico de un directorio:
[code]$ find . -type f -name "fichero" -exec rm -f {} ;[/code]
4.Dejar únicamente un fichero específico en un directorio eliminando el resto:
[code]$ rm -f !(ejemplo.txt)[/code]
5. Eliminar todos los ficheros de un directorio sin eliminar el directorio (si estamos en el mismo directorio):
[code]$ rm -rf *[/code]
6. Eliminar todos los ficheros de un directorio sin eliminar el directorio (si no estamos en el mismo directorio):
[code]$ rm -rf /ruta_al_directorio/*[/code]

ELIMINACION DE DIRECTORIOS:

1. Si el directorio esta vacio:
[code]$ rmdir directorio[/code]
2. Si el directorio contiene ficheros y subdirectorios:
[code]$ rm -rf directorio[/code]

Comandos para simular instalación de programas

A la hora de instalar software en una maquina, desde la consola tenemos mucha mas información de lo que estamos instalando. Algunos paquetes tienen dependencias y hay que instalarlas también. A veces entran en conflicto con algo que ya tenemos o están obsoletas y nos da error.

Dry run (marcha en seco) es una forma de pruebas de software en los que no se utiliza el paquete o la aplicación real.

Con unos sencillos comandos de simulación podemos obtener bastante información del tipo:

- Buscar un paquete o aplicación que quiero instalar o parecido al que busco.

- Lo tengo ya instalado?

- En que versión está?

- Cuales son los paquetes o programas que están disponibles para una actualización ?

- Que dependencias se instalarán y el espacio que se va a necesitar?

Solo es información, no se instalará nada en la maquina, solo se hace una simulación. Por ejemplo, necesito un programa de edición de vídeo y busco por el nombre "vídeo" a ver que hay en mis repositorios:

[code]# apt-cache search video[/code]

Me devuelve una gran cantidad de paquetes y aplicaciones relacionados con el nombre "vídeo". Me suena de la lista uno llamado "openshot". Ahora quiero obtener algo más de información sobre esta aplicación:

[code]# apt-cache show openshot[/code]

¿Tengo este paquete instalado en mi maquina y que versión?:

[code]# apt-cache policy openshot[/code]

Procedo a ejecutar una simulación de instalación de la aplicación openshot (para saber que me instalará):

[code]# apt-get -s install openshot[/code]

No tengo conflictos, ahora si que lo instalo en la maquina:

[code]# apt-get install openshot[/code]

Mostrar una lista de las actualizaciones disponibles del sistema sin necesidad de instalarlas:

[code]# apt-get update && apt-get -s upgrade[/code]

 

test

Reconocimiento Optico de caracteres (OCR)

El reconocimiento óptico de caracteres (OCR), permite convertir diferentes tipos de documentos y pasarlos a texto plano (ejemplo: documentos en papel escaneados guardados como Tif, jpg, png, o ficheros en PDF.

La función es separar el texto de la imagen, o lo que es lo mismo, poder diferenciar un texto de una imagen cualquiera, esto permite tener acceso y editar el contenido del documento original (albaranes, formularios, facturas, etc.). Generalmente en el sector de la empresa se le llama "gestión documental" y se usa para agilizar los procesos de localización y recuperación de archivos, reducción de costes de almacenamiento de los documentos e incremento de la productividad.

Hoy en día podemos encontrar software potente para las empresas, pero de momento no es libre. Para hacerse una idea de la "gestión documental" en empresa usando OCR:
[youtube link="http://www.youtube.com/watch?v=feUwPDPNx4Q" width="590" height="315"]

 

En otros sectores la tecnología OCR tiene cabida por ejemplo en los radares de trafico. Una cámara captura la matricula y el motor OCR se encarga de pasar los números de la imagen a texto plano.

La tecnología OCR actualmente esta dando mas avances dentro  las google glass. o los teléfonos moviles:
[youtube link="http://www.youtube.com/watch?v=h2OfQdYrHRs" width="590" height="315"]

 

Hay muchos motores OCR de código abierto pero tienen sus limitaciones (la imagen tiene que tener una gran calidad, la mayoría solo admite ficheros de imagen en formato Tif ...).

Tesseract-ocr esta entre estos. Desarrollado originalmente por Hewlett Packard, fue liberado como código abierto en el año 2005 y esta patrocinado actualmente por Google, que lo distribuye bajo licencia Apache. Es multiplataforma y soporta múltiples idiomas (funciona por terminal y solo puede procesar imágenes TIFF.).

Otro es Tessract-GUI, que no es un front-end para tesseract-ocr. Es sólo una manera gráfica para utilizarlo con la manipulación de imágenes sencillas a través de ImageMagick (ofrece mas formatos de entrada como png, jpeg, tif, pdf).

Tessract-GUI tiene dependencias de las siguientes aplicaciones que deben ser instaladas:
tesseract-ocr y ImageMagick

Descargamos Tesseract-GUI desde su web
[code]$ cd /directorio donde se descargue/tesseract-gui-X.X.tar.gz
$ tar xzvf tesseract-gui-X.X.tar.gz
$ cd tesseract-gui-X.X
$ sudo make install[/code]
Y lo lanzamos con:
[code]$ tesseract-gui.py[/code]

test
Otra opción mas fácil es hacer pasar la imagen a texto online, hay bastantes webs para subir las imágenes y pasarlas a texto

Cifrar ficheros con GPG

¿Porque cifrar datos?

Principalmente es por privacidad. Cada día lanzamos a los cuatro vientos o en nuestro propia maquina tenemos información que puede ser sensible y esta expuesta.

Básicamente el cifrado de datos consiste en la utilización de alguna contraseña antes de enviarlos a su destino, de tal modo que el contenido del mismo no sea legible para los que no tengan dicha clave. Es muy útil en correos, discos y directorios, o cualquier formato de ficheros (vídeo, imagen, texto, etc).

Las contraseñas de cifrado y de descifrado pueden ser iguales (criptografía simétrica) o no (criptografía asimétrica).
GPG es una herramienta multiplataforma de cifrado/descifrado y es software libre licenciado bajo la GPL. Viene de serie en las principales distribuciones.

GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. También es posible añadir una firma digital criptográfica a un mensaje. Hay plugins para integrarlo a los gestores de correo como Kmail, Evolution y Thunderbird.
Pero los comandos mas basicos para cifrar/descifrar un fichero usando una clave simétrica son:

- Cifrar ficheros (el parámetro -c se usa para cifrar):
[code]$ gpg -c [fichero][/code]
A continuación nos pide que le pongamos una contraseña y se generará un archivo .gpg
[code]$ fichero.pgp[/code]

 

- Descifrar ficheros:
[code]$ gpg [fichero.gpg][/code]
A continuación nos pide la contraseña
Al estar en la misma carpeta, si no se elimina el fichero original, nos dará la opción de sobrescribir o de renombrar el fichero descifrado.

Nota Importante:
Si se extravia o se olvida la contraseña ya no habrá manera de recuperar el fichero.

Como siempre mas información en:
[code]$ man gpg
$ gpg -h[/code]

test

MONITORIZAR LA SEÑAL DE WIFI POR CONSOLA

Visto en commandlinefu.com

Un comando para poder monitorizar la intensidad de la señal wifi cuando nos conectamos desde algún punto, sin tener que instalar ninguna aplicación para esta tarea desde la consola:
[code]$ cat /proc/net/wireless[/code]
1
El directorio /proc contiene un sistema de archivos virtual que se crea en memoria. Se utiliza para ofrecer información relacionada con el sistema (kernel, procesos y parámetros de configuración).
Se puede ajustar la frecuencia de actualización de los datos mediante la adición de un valor deseado (ejemplo, 1 segundo) con watch -n :
[code]$watch -n 1 cat /proc/net/wireless[/code]
Otra alternativa es utilizar el comando Awk:
[code]$watch -n 1 "awk 'NR==3 {print "Signal strength = " $3 "00 %"}''' /proc/net/wireless"[/code]
2

 

Ocultar datos en imagenes (esteganografía de andar por casa)

Una buena solución para tener a buen recaudo nuestras cosas en la nube (Dropbox, GoogleDrive, Ubuntu One) por ejemplo un fichero de texto con contraseñas, datos bancarios o información sensible de todo tipo como fotos, vídeos, etc. Es ocultarla a la vista de los demás dentro de otros ficheros. A esta técnica que permite ocultar ficheros dentro de otros, de tal forma que no se perciba su presencia, se le llama esteganografía.

Mostraré una técnica "low cost" desde la consola, sin instalar ninguna de las múltiples aplicaciones que existen para estos menesteres.

- Utilizaré:

Un fichero de imagen y un fichero comprimido. La imagen ocultará la información comprimida (varios ficheros de texto con mis contraseñas). El fichero comprimido da igual que sea rar, tar, zip, etc.

- Ocultar el fichero:

Tengo 2 ficheros de texto (con la información para ocultar) y la imagen:

1

Comprimo los 2 ficheros y lo nombro como fichero_para_ocultar.zip:

2

Lanzo el comando cat para unir el fichero comprimido y la imagen. Lo nombro como imagen_nueva.jpg. Ya tenemos hecha la ocultación del fichero comprimido:

3

 

- Recuperar el fichero:

Hay que renombrar el fichero nueva_imagen.jpg  a nueva_imagen.zip con el comando mv:

4

Ahora solo queda descomprimir el fichero nueva_imagen.zip para que veamos los ficheros de texto.
El comando nos da una advertencia diciendonos que hay bytes de sobra en el archivo, lo omitimos y continuamos con la descompresión:

5

- Consideraciones a tener en cuenta:

- Como es previsible, el fichero llamado imagen_nueva.jpg, tiene un tamaño equivalente a la suma de imagen.jpg y fichero_para_ocultar.zip. (se han concatenado con el comando cat).

- Respetar la extensión de la imagen a la hora de renombrarla ( por ejemplo: si en origen es .jpg se ha de renombrar a .jpg).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PyRoom, editor de texto minimalista

.
.

PyRoom es un editor de texto minimalista de código abierto, escrito en Python. Su interfaz se presenta a pantalla completa para evitar toda distracción durante la edición de texto plano. A través de una interfaz mínima, sin barra de herramientas, barra de desplazamiento o de menú, ni botones.

Si, la verdad es que tiene un aire retro, pero está diseñado para ayudar a centrarse en la productividad. No hay corrección ortográfica, ni texto en negrita o cursiva. En cambio realiza conteo de palabras en el texto. Se puede configurar fácilmente (desde los colores, borde y relleno, hasta el tipo y ancho de letra), y permite trabajar en varios documentos a la vez. Esta en los repositorios de bastantes distribuciones.

- Instalación:

[code]$ sudo apt-get install pyroom[/code]

Se lanza con:

[code]$  pyroom (fichero a editar)[/code]

- Uso:

Se maneja fácil mediante atajos de teclado.

Ctrl + H para ver los comandos:

Ctrl +I: Muestra información sobre el texto que estamos escribiendo
Ctrl +P: Mostrar las Preferencias
Ctrl +N: Crear nuevo texto
Ctrl +L: Conteo de líneas
Ctrl +O: Abrir archivo de texto
Ctrl +Q: Salir
Ctrl +S: Guardar
Ctrl +Shift+S: Guardar como…
Ctrl +W: Cerrar archivo
Ctrl +Y: Rehacer
Ctrl +Z: Deshacer

- Abrir varios ficheros a la vez:
[code]$ pyroom  fichero_1 fichero_2[/code]

- Moverse entre ficheros:

Ctrl+RePag  Ctrl+Av Pag

test

Traductor de google + voz

.

Estaba buscando una aplicación de traductor multilingüe para leer unos correos en el trabajo. Como soy un poco vago, se me ocurrió que también no estaría de más, que la misma aplicación reprodujera por voz el texto traducido. Buscando encontré un par de aplicaciones que hicieran las dos funciones a la vez.

Aquí podemos debatir largo y tendido sobre el nivel de la sintetización de voz  en  las aplicaciones TTS (Text To Speech) en Linux. Hay muchas aplicaciones que pasan texto a voz, pero son muy deficientes todavía, para que una voz artificial resulte natural y sea inteligible para mi gusto.

Entonces propongo estas 2 aplicaciones de "Low Cost" que nos sacarán de más de un apuro a la hora de realizar estos trabajos de traducción multilingüe + voz. Los ejemplos están entre Español-Ingles, pero hay muchos mas idiomas para trabajar.

[title type="h2" class=""]# App nº 1 Traductor multilingüe + texto a voz de Google:[/title]

Rodrigo Esteves es un Uruguayo que ha hecho una app que utiliza el servicio de traducción online de google-translate y google-tts. Mediante un ingenioso script. El cual podemos editarlo, si queremos, ya que esta licenciado bajo GPL.

Este script funciona llamando a http://translate.google.com/translate_tts? con nuestro texto para traducir, y así generar el texto/voz traducido y devolver dicho texto/audio al script. Mediante zenity nos lo presenta de forma gráfica.

- Descargarlo:

El link de la descripción y descarga de la aplicación se encuentran en la web de gtk-apps.org.

- Descomprimirlo (en mi caso, carpeta downloads) :

1.descomprimir

 

 

 

 

 

En el script, el reproductor de audio es audacious. Si no tenemos instalado audacious, no funcionará el audio traducido. Pero se puede sustituir por el reproductor de audio que tengamos (mplayer, videolan...) editando el script:

[code]man1@crunchbang:~/downloads$ cd ./Traductor && ls

man1@crunchbang:~/downloads/Traductor$ gedit traductor[/code]

Buscar y reemplazar el comando audacious por nuestro reproductor de audio. (Ctrl+H).

Guardar y cerrar.

- Instalarlo:

Mover  a /usr/bin para poder usarlo como un comando cualquiera:

[code]man1@crunchbang:~/downloads$ sudo cp ./traductor /usr/bin/traducir[/code]

Y ya se puede ejecutar directamente con el comando traducir:

[youtube link="https://www.youtube.com/watch?v=WWK_1cH3qAU&feature=youtu.be" width="590" height="315"]

En el tema de las voces, como utiliza las de google-tts están bien logradas, no son profesionales, para eso ya están las aplicaciones de pago como skype, que prepara la implementación de un traductor + voz en tiempo real.

[title type="h2" class=""]# App nº 2 Google-translate-cli + Festival (traducción + texto a voz):[/title]

En esta ocasión utilizaremos 2 aplicaciones por linea de comandos. La primera es Google-translate-cli . Que es un programa que permite utilizar el traductor de Google sin un navegador web, es decir, desde la terminal.

- Tiene dependencias de:

gawk (esta en los repositorios). Es un lenguaje de programación para procesar datos basados en texto, ya sean ficheros o flujos de datos.

git: (Git es un sistema de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.

4.install_gwak

 

[code]$ sudo apt-get install git[/code]

- Instalación:
[code]$ git clone git://github.com/soimort/google-translate-cli.git
$ cd google-translate-cli/
$ make install[/code]

 

- Uso:
traducir desde cualquier idioma al ingles, comando trs:

5.trs_hola_mundo

 

Traducir del ingles al español, comando trs {=es}:

6.de ingles a español

 

Traducir del portugués al catalan, comando trs {pt=ca}:
7.portuges a catalan

 

Traducir del portugues a español + catalan + ruso, comando trs {=es+ca+ru}:

8.portugues a español_catalan_ruso

 

 

Traducir un fichero de texto escrito en español al ingles, comando trs fichero.txt:

9 texto en esp_a_ingles

 

Traducir un fichero de texto en ingles al español, comando trs {=es} file.txt:

10.de ingles a español

 

Como se aprecia cada idioma tiene sus siglas (Español=es, Portugal=pt, Catalan=ca). El código de todos los idiomas se encuentra en la web de desarrolladores de Google.

 Aquí yo he usado el comando alias (que su función es acortar el nombre de un comando que sea muy largo para así recordarlo) acortar el comando de la traducción de español a ingles, que es la que más utilizo, y le llamaré al nuevo comando traduceme:

[code]$ alias traduceme="trs {=es}"[/code]

Queda mejor escribir el comando traduceme que  el comando "trs {=es}"

Esto no reemplaza el comando original. Al cerrar la terminal actual, se eliminará dicha abreviatura, pero podemos hacerlo permanente. Tan sólo debemos  editar el fichero/etc/bash.bashrc. Y pegar el comando nuevo:
[code]$ sudo gedit /etc/bash.bashrc
alias traduceme="trs {=es}"[/code]

Para traducir la voz usaremos la aplicación Festival, que es es un motor de TTS (text to speech), escrito en C++, de código abierto y tiene muchas voces para descargar. La pronunciación de la voz sintetizada, está bastante lograda:

- Instalación:

[code]$ sudo apt-get install festival festvox-ellpc11[/code]

 

[title type="h2" class=""]Uso de google-translate-cli + festival (texto + voz):[/title]

# Recordad que he cambiado el comando trs {=es} por "traduceme" con alias

# Y que --tts y --language, aun que no se distinga bien, son dos guiones.

Traducir del español al ingles:
[code]$ trs "hola mundo, esto es una prueba" | festival --tts[/code]

Traducir del español al ingles + voz un fichero de texto:
[code]$ traduceme fichero.txt | festival --tts[/code]

Traducir del ingles al español:
[code]$ traduceme "hello world, this is a test" | festival --tts --language spanish[/code]

Traducir del ingles al español + voz un fichero de texto:
[code]$ traduceme file.txt | festival --tts --language spanish[/code]
[youtube link="https://www.youtube.com/watch?v=mXYlkoTHJY8&feature=youtu.be" width="590" height="315"]

 

¿ Conocéis alguna otra aplicación que haga a la vez traducción y texto a voz ?

 

 

 

 

De los errores se aprende… comandos chattr y lsattr

.

Si en otro post comentaba como se puede borrar eficaz y definitivamente un fichero con el comando shred, hoy propongo exactamente lo contrario. Un comando para evitar borrar accidentalmente ficheros o directorios con el comando chattr. ¿Os hacéis una idea de por que escribo sobre chattr? ... Si, fuí yo ... borré accidentalmente unos documentos del trabajo muy importantes, por eso, no está de más compartir soluciones para estos contratiempos.

# A partir de este punto en adelante, expondré los ejemplos sobre el fichero documento_importante.txt (puede ser cualquier fichero, .pdf, .odt, ficheros de audio, vídeo, imagen, etc...).

El comando chattr se utiliza para cambiar los atributos de un fichero o directorio. ¿Cómo podemos ver los atributos de los ficheros o directorios? Lanzando el comando lsattr -v, que nos lista los atributos de un fichero:

2

 

Se observa que el fichero no tiene atributos (aparte del "e" que es propio del sistema de ficheros de linux para el mapeo de los bloques en el disco y no se puede modificar).

Como chattr es un comando de administración, sólo el usuario Root puede cambiar los atributos de un fichero.
Una vez pasados los argumentos de chattr a un fichero, este no se podrá modificar o borrar, ni con un comando rm -f (incluson con recursiva), ni con shred, ni aunque el mismo Root lo intente borrar o manipular.
El fichero en cuestión permanecerá inmutable. Sólo cuando el usuario Root cambie de nuevo los atributos del fichero otra vez, se podrá borrar o manipular.
Esto es importante, ya que se utiliza para restringir que los usuarios modifiquen un fichero de forma particular.
El comando chattr sólo se habilita/deshabilita en modo Root y en su ejecución se compone de:

[code]# chattr [un operador + -] [un atributo] [fichero][/code]

- El operador + - habilita o deshabilita los atributos al fichero.
- Los atributos son características de modificación del fichero.

Después de leer el man de chattr, de entre todos los atributos, destaco 2 para hacer unos ejemplos (sobre el fichero documento_importante.txt):

1. EL FICHERO NO SE PUEDE BORRAR,  PERO SE PUEDE EDITAR:

- Atribuir el operador +a. A un fichero para permitir a los usuarios (esto incluye al root) a que puedan añadir datos, sin cambiar los que ya están escritos. y que no pueda ser borrado:

3

 

- Los atributos del fichero han cambiado, no se puede borrar, sólo agregar datos:

4

 

 

- Para devolver el fichero al estado original y poder modificarlo o borrarlo le atribuimos el operador - a:

6

- Los atributos del fichero han cambiado, se puede editar y borrar.

 

2. EL FICHERO NI SE PUEDE BORRAR NI SE PUEDE EDITAR:

- Atribuir el operador +i.  A un fichero para no permitir a los usuarios (ni siquiera al root) editar, modificar, renombrar o borrarlo:

7

- Los los atributos del fichero han cambiado, el documento es inmutable:

8

 

-Para devolver el fichero al estado original y poder modificar o borrarlo le atribuimos el operador -i:

9

- Los atributos del fichero han cambiado, se puede modificar o borrar.

Con estos sencillos comandos se pueden mantener a salvo los ficheros importantes, nuestros o de otros usuarios. Cuidarnos accidentalmente de eliminarlos, o simplemente que sean manipulados.

La papelera del sistema, eliminar o recuperar ficheros

.
.
A menudo nos olvidamos de limpiar o borrar todo lo que tenemos en la papelera del sistema, con lo cual estamos perdiendo espacio en disco. A veces de muchos Gigas. Y si la máquina tiene varios usuarios el problema aumenta considerablemente.
Antes de nada vamos a conocer un poco el directorio de la papelera del sistema (Trash). La papelera de cada usuario se encuentra en la ruta:
[code]$ home/nombre_de_usuario/.local/share/Trash[/code]
Lo primero que podemos hacer es averiguar el tamaño de la papelera:
[code]$ du -h ~/.local/share/Trash[/code]
Listando el directorio nos encontramos con dos subcarpetas, files & info:
[code]$ ls -la ~/.local/share/Trash
files info[/code]
# En la carpeta files, van a parar todos los ficheros que eliminamos. En el ejemplo siguiente hay un solo fichero, pero ocupa de 5 Gigas:

001.carpeta_files

 

 

# En la carpeta info, se crea un fichero de metadatos con el mismo nombre que el fichero que eliminamos, pero con la extensión ".trashinfo". Con esta extensión se puede saber desde donde y cuando fue borrado un fichero.

002.fichero_info

 

 

Lo podemos observar lanzando un comando cat al fichero borrado:

003.cat_info

 

 

 

Información muy importante si luego queremos recuperarlo y restaurarlo a su carpeta original en el caso de que accidentalmente lo hayamos borrado. En este caso se eliminó de la carpeta /home/man1/linuxhispano.

Esta extensión ".trashinfo" nos facilita la vida en el caso de querer restaurarlo a su ruta original, para ello tendríamos que mover el fichero borrado (que estaría dentro de la carpeta files, en la papelera) a la ruta original y ya tendríamos el fichero restaurado en su carpeta:

[code]$ ~/.local/share/Trash/files$ mv fichero_basura /home/man1/linuxhispano[/code]

A continuación propongo dos opciones para mantener limpia nuestra papelera del sistema sin tener que instalar ninguna aplicación . O bien se puede instalar una app que facilite el trabajo como propone Alberto Hornero con trash-cli.

1. Creando un script interactivo con zenity y el comando alias para borrar el contenido de las carpetas files & info de la papelera. Cambiando el nombre de usuario. En este caso el script para borrar la papelera seria "basura.sh"

Creamos un fichero de texto llamado basura.sh en nuestra /home (si no somos root) o en /usr/local/bin (si somos root) y pegamos el script:                                                             [code]#!/bin/bash

zenity --question --text "Vaciar la papelera?" && rm -rf /home/nombre_de_usuario/.local/share/Trash/files/* rm -r /home/nombre_de_usuario/.local/share/Trash/info/*[/code]

Guardamos y le damos permisos de ejecución:

[code]$ chmod +x basura.sh[/code]

Y le damos el nombre de comando que queramos con el comando alias. En mi caso, invocando basura, levantará el script:

[code]$ alias basura="./basura.sh"[/code]

alias

 

 

 

 

 

 

 

 

2. Ejecutando una limpieza automática a diario con crontab :

[code]$ crontab -e[/code]

Y colocando el siguiente comando de auto limpieza diaria en la ultima linea de nuestro crontab y cambiando el nombre de usuario

[code]@daily rm -rf /home/nombre_de_usuario/.local/share/Trash/files/* rm -r /home/nombre_de_usuario/.local/share/Trash/info/*[/code]

Yo habitualmente utilizo el comando shred, que elimina los ficheros sin pasar por la papelera.[icon_check]

Comandos de ayuda en la teminal

.

Existen diferentes formas para obtener información de ayuda sobre los comandos, ficheros de configuración, ficheros especiales, etc. El directorio típico donde podemos encontrar documentación, esta en la ruta /usr/share/doc.
Pero también desde la terminal tenemos una serie de comandos que nos ayudan para estas tareas de información.
Tomaré como ejemplo para buscar información de una aplicación al comando chmod:

# whatis

El comando whatis describe en una sola linea la función del comando buscado.

01.whatis

# apropos

El comando apropos busca en las páginas de manual para la palabra clave o expresión regular que le hayamos indicado.
Nos devuelve una lista entre todas las entradas que contienen esa palabra clave o expresión:

02.apropos

# info

Info es el formato de documentación del proyecto GNU. Hace una función parecida al comando man y a menudo tiene mucha más información. La documentación en formato info está mejor escrita y más estructurada:

03.info

# tkinfo

El comando tkinfo es un script tk en forma de interfaz gráfica para consultar la documentación info de los ficheros "info" de GNU y mostrarlos:

04.tkinfo

# help

El comando help almacena y recupera información acerca de los comandos de bash.
Si no estamos seguros de cómo utilizar un comando, invocando --help nos devolverá una lista con las opciones de ese comando:

05.help

# man

El comando man se utiliza para acceder a los manuales de referencia del sistema.
Permite acceder a una página de documentación (página del manual) normalmente sobre un comando, una llamada al sistema, una función de librería de C, de Perl, etc. Normalmente suele ser la documentación que escribe el propio desarrollador de la aplicación:

06.man

# xman

El comando xman es una interfaz gráfica para consultar las páginas del manual. Xman permite la personalización  de los directorios que se debe buscar en las páginas de manual  y el nombre que cada directorio mapa en el menú de secciones.

06.02.xman

# which

El comando which nos sirve para averiguar donde se encuentra instalado un determinado programa y para ello busca en los directorios del sistema:

07.which

# whereis

El comando whereis se utiliza para localizar el archivo binario, el código fuente y la página del manual de un determinado comando:

08.whereis

Los peligros de los metadatos en las fotos

.

Los datos exif son los metadatos de los ficheros de imagen. Esta información está disponible en cualquier foto tomada con una cámara digital y se genera en el momento en que la fotografía es guardada por la cámara ( normalmente sin intervención ni conocimiento del usuario). Son la huella digital de la foto.

Dan información sobre como esta hecha esa foto: Marca y modelo de la cámara, número de serie, apertura y velocidad del obturador, fecha y hora de la fotografía, sistema operativo y software donde la foto fue editada o almacenada, datos de geolocalización, copyright, sensibilidad ISO, uso o no de flash, comentarios del autor, etc.

Los fotógrafos profesionales utilizan a menudo estos datos para conocer como otros fotógrafos tomaron una instantánea para así mejorar o aprender.

No quiero hacer un post de análisis forense de metadatos, pero es bueno vigilar lo que subimos a la red, sobre todo si son ficheros de empresa o ficheros "bastante" personales. Ya que con herramientas especificas se pueden ver, crear, modificar o borrar estos metadatos.
Se pueden obtener los datos reales del momento, fecha, hora, ubicación, nombre de la cámara, numero de serie, fecha de edición si la imagen ha sido reeditada y todas las demás opciones puestas en ella, llegando así a obtener un resultado detallado. El análisis de esta información puede ser determinante a la hora de proporcionar pruebas digitales en la comisión de un delito o explotar vulnerabilidades, por ejemplo:

# Recuperar una cámara de fotos robada a través de una aplicación online.

# Hackear una foto editada. Uno de los datos que puede encontrarse en el Exif de una fotografía es su versión en miniatura, lo que se conoce como "thumbnail", versiones reducidas de la imagen usadas muchas veces para su fácil organización o reconocimiento. Esta versión reducida guarda, en general,  la imagen original libre de toda edición posterior. Algún fisgón utilizó una app. para extraer esa información y ocurrió una situación embarazosa.

CatsmokeingISgood

# Hacker cazado por coordenadas GPS al hacerle una foto a su novia.

# Mas hackeros memorables con metadatos que no son ficheros de imagen, como por ejemplo las aplicaciones de oficina como Microsoft Office, Openoffice, Libreoffice (word, excel, power point, pdf...) contienen un conjunto de ficheros en formato XML con el contenido del documento:

# meta.xml: Contiene metadatos relativos al documento, este fichero no se cifra ni siquiera cuando el documento esté protegido mediante contraseña.

# settings.xml: Incluye información relativa a la configuración y a los ajustes del documento. Puede guardar informacion sobre impresoras, posibles servidores internos y datos de las conexiones a base de datos en settings.xml y content.xml. este fichero no se va a cifrar ni aun cuando se guarde el fichero protegido por contraseña, pero los datos de la impresora, nombres de usuarios o conexiones a bases de datos son igual de importantes desde el punto de vista de la seguridad. También los ficheros de audio y video contienen metadatos.

Me centraré en los metadatos de los ficheros de imagen. Existen muchas aplicaciones para leer/editar/borrar metadados. Y a la espera del lanzamiento de la nueva versión 2.10 del editor de imágenes Gimp, donde según la web de su desarrollador incorporara un editor de metadatos para imágenes. Yo he elegido ExifTool, una herramienta para extraer metadatos de imágenes, vídeo, sonido o texto desde la linea de comandos, que puede trabajar con EXIF e IPTC (estándares utilizados por las cámaras de fotos). Reconoce metadatos insertados por la gran mayoría de marcas de cámaras del mercado y esta disponible para Windows, Mac OSX y linux ya que es un modulo Perl.

Desde Debian su instalación es:

[code]$ sudo apt-get install libimage-exiftool-perl[/code]

Y se  lanza con un simple:

[code]$ exiftool imagen.jpg[/code]

weikirai_todo

Nos devuelve gran cantidad de datos como el tipo de cámara, fecha de modificación cuando se edito con photoshop, fecha de creación real, parámetros de realización de la foto, flash, copyright, creador, etc.

Exiftool tiene  capacidad para modificar o  crear nuevos metadatos. Para crear metadatos basta con escribir el "tag" que queremos crear. Para modificar metadatos usaremos el comando -exif y editaremos el "tag" que queramos:

[code]$ man exiftool[/code]

editar autor de la foto:

[code]$ exiftool -artist=mcanchal foto.jpg[/code]

Editar multiples tags a la vez (autor y copyright):

[code]$ exiftool -artist="mcanchal" -copyright="2011 mcanchal" foto.jpg[/code]

Escribir nuevo comentario una imagen (sustituye cualquier comentario existente):

[code]$ exiftool -Comment='Este es un nuevo comentario' foto.jpg[/code]

Borrar casi todos los metadatos de una foto:

[code]$ exiftool -all= −overwrite_original foto.jpg[/code]

Y vamos con un ejemplo practico de geotagging o localización mediante los datos de latitud y longitud del gps de un smartphone.

Con las nuevas generaciones de smartphones que tienen tecnología de localización GPS, las cámaras del móvil ya están equipadas para agregar automáticamente la información de geolocalización en el momento en que se toman. Con el auge de las redes sociales como Foursquare, flickr, iPhoto, etc. La mayoría los usuarios no se dan cuenta de la acción de geotagging automático, ya sea porque está activado de forma predeterminada o se configuro la opción y luego se olvidó. Como resultado, las personas a menudo comparten demasiada información sobre su ubicación exacta y la publican al subir fotos a la nube.

Esta tecnología es un arma de doble filo, con lo que una solución es desactivar el GPS del móvil. Con este cambio se evitará que la información relacionada con el lugar en el que fue tomada la foto o el vídeo sea revelada. También hay que decir que la etiqueta de gps no se mantiene en todas webs en las que se publica y esto proporciona algo de protección. Otras redes sociales tomaron medidas para bloquear el acceso a esta información de geoetiquetas de las imágenes enviadas, a menos que el usuario lo permita expresamente.

[youtube link="https://www.youtube.com/watch?v=mWa4GscwB5w&feature=youtu.be" width="590" height="315"]

 

pdmenu_inicial

Pdmenu, creación menús desde la terminal

 

Pdmenu es una aplicación para la creación de menús desde la terminal. Está diseñado para ser muy fácil de usar, simplemente se encarga de presentar un menú en modo texto, en el que el usuario puede seleccionar, ejecutar ordenes y programas , gracias la librería ncurses. Cuenta con soporte de color y se compila en la mayoría de distribuciones linux. (Debian,CentOS, SUSE).

[code]$ sudo apt-get install pdmenu[/code]

Una vez instalado, nos proporciona un menú generado automáticamente con algunos programas. Pudiendo ejecutar los programas del menú y submenus.

A partir de aquí se puede personalizar el menú a nuestro gusto. Editando el fichero pdmenurc. Esto es una baza importante a la hora de poder interactuar con nuestros shell scripts o comandos, personalizándolos al máximo. O también a la hora de realizar tareas de administración y mantenimiento del sistema.

Al ejecutar pdmenu, se presentará un menú. Sólo hay que utilizar las teclas de flecha para moverse,  elegido el programa, script o comando que desea ejecutar se pulsa Enter. Volver atrás tecla q. Cuando el programa finalice, se volverá al menú inicial.

[code]$ pdmenu[/code]

 

pdmenu_inicial

Para poder personalizar o tunear a nuestro gusto el menú tenemos que editar el fichero pdmeurc que viene por defecto y que se encuentra en la ruta:

[code]$ /etc/pdmenurc [/code]

# Es recomendable hacer una copia del fichero antes de editalo.

pdmenurc inicial

Al principio  definimos un color en el que se muestran los menús. No son opciones indispensables, pero embellecen la aplicación. El responsable de esta opción es: color:screenpart:foreground[:background]. Esto le permite establecer los colores de las diferentes partes del menú:

pdmenurc color

El siguiente paso es definir el titulo y menú principal del programa desde el ítem menu:main: Título: [: HelpText]:

pdmenurc  menu principal

El ítem show  se puede utilizar para crear un submenu con un nombre especifico:

pdmenurc submenu

El ítem exec puede tomar varios parámetros, tales como la forma de visualizar el resultado del comando. Para los comandos que inmediatamente muestra varias líneas a la salida estándar y luego terminan su acción, podemos utilizar la misma pantalla o truncar a otra. Solo tenemos que cambiar las rutas y los comandos para que ejecute lo que queramos:

pdmenurc exec o truncate

Para mas información solo hay que echar un vistazo al:

[code]$ man pdmenurc[/code]

Un ejemplo rápido seria:

pdmenu

Otros  ejemplos de menús  para tunear y configurar tareas repetitivas al gusto de cada uno (hay que cambiar las rutas y los comandos):

Menú para la administración del sistema  http://pastebin.com/7a6CFZTC

Menú para la administración de  Iptables  http://pastebin.com/uGCh14e9

Menú para la administración remota por ssh  http://pastebin.com/HdGQrCGV 

 

 

 

Comando beep, sacandole partido al pcspeaker

pc_speaker

El comando beep es un pitido que hace lo que se espera, que suene.

Con beep sonará el altavoz interno del PC.

Beep permite controlar el tono, la duración y repeticiones. Se puede ejecutar directamente en la línea de comandos, pero su trabajo consiste en "vivir" dentro de scripts de shell / perl. Dicho de otro modo, podemos insertar beep en nuestros scripts para hacerlos mas interactivos o como aviso sonoro de un evento. Esto hace que el monitoreo del sistema sea mucho más informativo.

Se controla fácilmente a través de las opciones de línea de comandos. Como norma, el comando viene por defecto en Debian y demás distribuciones, aunque el módulo está en la lista negra.

Vamos primero a ver si tenemos instalado beep en la maquina (emitirá el característico sonido):

[code]$ beep[/code]

Si nos devuelve que no lo tenemos instalado, lo instalamos con:

[code]$ sudo apt-get install beep[/code]

Volvemos a introducir el comando en el terminal, si no suena el característico pitido, lo tendremos que sacar de lista negra con el comando modprobe pcspkr:

[code]$ sudo modprobe pcspkr[/code]

Comprobamos:

[code]$ beep[/code]

Esto hace que tengamos el sonido, pero si queremos dejarlo fijo (como esta en la lista negra, al rebotar la maquina no se emitirá el sonido), tenemos que editar en modo root el fichero que se encuentra en /etc/modprobe.d/blacklist.conf   o en mi caso también en  /etc/modprobe.d/alsa-base-blacklist.conf.

Buscamos y descomentamos la linea 'blacklist pcspkr' o 'blacklist snd-pcsp', y ya lo tenemos preparado.
Por defecto, sólo root puede ejecutar el comando beep, pero otros usuarios pueden estar autorizados cambiando los permisos del comando:

[code]# chmod 4755 /usr/bin/beep[/code]

La parte 755 significa que hay lectura / escritura / permisos de ejecución para el propietario (root), y de sólo lectura / permisos de ejecución para todos los demás.

Dando un vistazo al man de beep se ven las frequencias de sonido:

[caption id="attachment_14074" align="aligncenter" width="546"]man beep man beep[/caption]

 
A partir de aquí podemos utilizarlo para incluirlo en shell scripts o directamente desde la terminal con un poco de originalidad:

[code]$  beep -f 1000 -n -f 1500 -n -f 600 -n -f 500 -n -f 100 -r 2 -l 10 -n -f 50 -r 2 -l 200 -n -f 40 -r 2 -l 300 -n -f 60 -r 3 -n -f 50 -r 3[/code]

[code]$ beep -f 261; sleep 0.20; beep -f 277; sleep 0.20; beep -f 293; sleep 0.20; beep -f 311; sleep 0.20; beep -f 329; sleep 0.20; beep -f 349; sleep 0.20; beep -f 369; sleep 0.20; beep -f 392; sleep 0.20; beep -f 415; sleep 0.20; beep -f 440; sleep 0.20;  beep -f 466; sleep 0.20; beep -f 493;[/code]

Mas ejemplos:

- Star Wars Marcha Imperial   http://pastebin.com/RCeWpaUw

- Superdetective en Hollywood   http://pastebin.com/19zuN8tY

- Daft Punk aerodynamics       http://pastebin.com/Z6R3PHH0

pdfchain

pdfchain y pdftk. Manipulación de ficheros PDF

Pdftk (PDF Toolkit) nos permite manipular ficheros PDF a través de la linea de comandos.

Existe una versión para interfaz gráfica llamada Pdf Chain. Esta da un acceso rápido a todas las funciones de pdftk (mas fácil si no se quiere tocar la linea de comandos). Las dos modalidades están disponibles en Linux, MS Windows, MacOS X y FreeBSD.

[caption id="attachment_14019" align="aligncenter" width="890"]pdfchain pdfchain[/caption]

Con este flexible programa podemos unir, mezclar o dividir contenidos, editar permisos, cifrar, convertir, rotar, insertar una marca de agua, agregar o eliminar datos adjuntos, actualizar y exportar meta datos, exportar marcadores a un fichero de texto, reparar, extraer fotos, etc. de un fichero PDF.
En resumen, es un kit de herramientas de poco mas de 4MB para la manipulación de ficheros PDF.
Se puede instalar en todas las distribuciones linux (en su web dan instrucciones). Para Debian bastaría con:

[code]$ sudo apt-get install pdftk[/code]

Aunque he intentado incluir la mayor parte de las funciones de pdftk, se pueden conseguir más ejemplos de uso en un apartado de su pagina web.

O también leer las opciones del manual de referencia con los comandos:

[code]$ man pdftk[/code]

[code]$ pdftk -h[/code]

- El comando pdfimages guarda las imágenes de un PDF (se guardan en formato jpg en el directorio de trabajo actual):

[code]$ pdfimages -j fichero.pdf exampleimage[/code]

- El comando pdftohtml convierte  un PDF en formato html (genera su salida en el directorio de trabajo actual).
[code]$ pdftohtml -c fichero.pdf fichero.html[/code]

- Unir dos o mas ficheros PDF:
[code]$ pdftk fichero1.pdf fichero2.pdf fichero3.pdf cat output fichero_final.pdf[/code]

- Extraer por separado todas las páginas de un fichero PDF:
[code]$ pdftk fichero1.pdf burst[/code]

- Eliminar las páginas de la 5 a la 10 de un fichero PDF:
[code]$ pdftk fichero.pdf cat 1-4 21-end output ficheros_eliminados.pdf[/code]

- Extraer páginas de un fichero PDF (por ejemplo, extraer páginas 3, 4 y 5 en un nuevo PDF):
[code]$ pdftk fichero.pdf cat 3-5 output fichero_final.pdf[/code]

- Obtener un informe de los metadatos, marcadores y etiquetas de página de un fichero PDF, (resulta útil cuando se necesita organizar un índice de un conjunto de un PDF):
[code]$ pdftk fichero.pdf dump_data output informe.txt[/code]

- Reparar ficheros PDF corruptos:
[code]$ pdftk fichero_corrupto.pdf output fichero_resultante.pdf[/code]

- Adjuntar archivos a páginas de un fichero PDF:
[code]$ pdftk fichero.pdf attach_files adjunto1 adjunto2 output fichero_final.pdf[/code]

- Extraer los adjuntos de un fichero PDF:
[code]$ pdftk fichero.pdf unpack_files output directorio/de/salida[/code]

- Añadir una marca de agua a un fichero PDF:
[code]$ pdftk fichero.pdf background watermark.pdf output fichero_final.pdf[/code]

- Cifrar un PDF a 128-Bit y controlar los permisos (con la opción owner_pw <owner password | PROMPT>):
[code]$ pdftk fichero.pdf output fichero.128.pdf owner_pw foopass[/code]

- Descifrar un PDF:
[code]$ pdftk fichero_cifrado.pdf input_pw foopass output fichero_descifrado.pdf[/code]

- Aplicar una contraseña para leer el PDF (con la opción user_pw <user password | PROMPT>):
[code]$ pdftk fichero_normal.pdf output fichero_con_contraseña.pdf user_pw PROMPT[/code]