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

domingo, 15 de mayo de 2016

CleanTweetsGood

Os presento a CleanTweetsGood!

Qué es?

CleanTweetsGood es un programa que permite eliminar tweets de un usuario a partir de su histórico de twitter. Los tweets se pueden eliminar de dos formas:

  1. Por contenido: Se eliminan los tweets que contengan una o varias palabras previamente añadidas a una lista negra.
  2. Por ID: Se eliminan los tweets a partir de su ID.

Qué *NO* es?

No es un panic button ni una solución mágica.

Aunque los tweets se borren del timeline, los cambios en el timeline tardan un tiempo en verse reflejados (se puede comprobar descargando el historial de nuevo).

Los tweets borrados del timeline pueden quedar almacenados en sitios fuera del alcance de esta aplicación: Los servidores de twitter, capturas de pantalla de otros usuarios... Cuando se borran los mensajes directos *no* se borran de la cuenta del otro usuario.

Por qué?

Porque hay países donde las personas pueden acabar en la cárcel por tuitear.

Porque las empresas y los medios viven obsesionados con las redes sociales y algún tweet del pasado sacado de contexto puede hacerte tristemente famoso o puede hacer que pierdas una posible oportunidad de trabajo o un trabajo.

Instalación y uso

La aplicación la podéis encontrar y descargar en mi github: https://github.com/rubenhortas/cleantweetsgood

La información sobre la instalación y el uso la podéis encontrar en el fichero LEEME.

Enjoy!

viernes, 24 de julio de 2015

Configurar las brightness keys en Kali Linux

Recientemente he tenido que cambiar de portátil, y esta vez (y por el momento) me he decidido por instalarle Kali Linux. La verdad es que me sorprendió ver que funcionaba *casi* todo recién instalda Kali, pero una de las cosas que no funcionaban eran las teclas de brillo o iluminación de pantalla (también conocidas como screen brightness keys o brightness buttons). Después de darle un par de vueltas, encontré dos formas fáciles de solucionarlo, la mía y una un poco mejor ;)

La primera forma que encontré de solucionarlo -la mía- fue modificar directamente los valores del gnome settings daemon power a través de un pequeño script. El script lo he colgado en mi github https://github.com/rubenhortas/gnome_brightness_keys y lo podéis utilizar libremente.

Para utilizarlo sólo hay que guardarlo en un directorio en el que tenga permisos de ejecución, y asignar los comandos "brightnessControl up" (para aumentar el brillo) y "brightnessControl down" (para bajar el brillo) a las teclas a través del propio menú de gnome (Aplicaciones > Herramientas del sistema > Preferencias > Configuración del sistema > Teclado > Atajos > Combinación personal).

Haciéndolo de esta forma las teclas van a funcionar, pero no nos va a salir el indicador de brillo en la pantalla cada vez que cambiemos el brillo.

La solución que encontré para que las teclas funcionen y muestre el indicador de cambio de brillo en pantalla ha sido instalar xdotool y asignar loscomandos "xdotool key XF86MonBrightnessUp" (para subir el brillo) y "xdotool key XF86MonBrightnessDown" (para bajar el brillo) a las teclas.

Con cualquiera de estas dos soluciones tendremos las teclas de brillo funcionando.

Enjoy! ;)

lunes, 8 de diciembre de 2014

python 101 para desarrolladores

Coruña Developers (@CorunaDev) es una iniciativa que acaba de surgir en A Coruña y que, en resumidas cuentas, pretende ser un punto de encuentro para desarrolladores. Un lugar donde poder conversar, debatir y sobretodo aprender de otros desarrolladores con más experiencia en otras áreas.

El viernes pasado tuve la oportunidad de inaugurar las charlas con "Python 101 para desarrolladores". La charla es una introducción a Python, pasando por alto cosas básicas, haciendo hincapié, sobretodo, en las diferencias, ventajas y desventajas que presenta Python respecto a otros lenguajes de programación. Dejando para el final ciertas anotaciones que consideré necesarias, aunque no pude profundizar en ellas por la extensión de los temas a los que hacen referencia.

Desde aquí quiero volver a aprovechar para agradecerles a los chicos de Coruña Developers la oportunidad y la experiencia (también el trato recibido), y a los asistentes el interés y la curiosidad demostrada. La verdad es que para mi ha sido una experiencia muy positiva, y espero que resultase productiva para los asistentes.

Aunque sé que para los no asistentes las diapositivas y los ejemplos pueden resultar escuetos, por consenso con la organización y los asistentes, he decidido colgar el material utilizado (diapositivas y ejemplos de código). Mientras se crean los servicios que servirán de puntos comunes para alojar todo el material que vaya generando el proyecto Coruña Developers, he subido las diapositivas y los ejemplos utilizados a mi cuenta en github.

Para los no asistentes, esta documentación podrá resultar escueta por encontrarse fuera de contexto. Ya que simplemente se trata de material de apoyo (notas breves y ejemplos simples) para la charla. Material que sirve para dotar de estructura, consistencia y un hilo argumentativo la narración. Un material que, por su formato, deja fuera ciertos temas y matices y comentados durante la charla. De todas formas, puede que aún así resulte de interés.

Personalmente, y después de hablar con los organizadores sobre las ideas que tienen, creo que es una iniciativa muy interesante. Estoy seguro de que estaré en futuras ocasiones, en principio como asistente, pero quien sabe! Quizás en un futuro tenga la oportunidad de repetir como ponente ;)

Podéis seguir las actividades de Coruña Developers en su página de facebook: https://www.facebook.com/groups/CorunaDevelopers y/o en su twitter: @CorunaDev

Nos veremos en futuras ediciones!

Python 101 para desarrolladores (Material)

domingo, 15 de diciembre de 2013

ver la televisión en ordenadores viejos con gnu/linux (SIN FLASH)

A día de hoy, es normal que las televisiones emitan su programación online. El problema viene cuando nuestro ordenador es viejo y/o utilizamos como sistema operativo GNU/Linux. Por una parte, si el ordenador es viejo, es poco potente y los requisitos que impone Adobe no permiten instalar Flash Player en el equipo*. Por otra parte, están las trabas que Adobe nos pone a los usuarios de GNU/Linux.

* Hay algunos usuarios que optan por instalar versiones antiguas de Flash Player. Esto supone un gran fallo de seguridad. Puesto que son versiones obsoletas, con numerosas vulnerabilides reportadas y, en muchos casos, explotadas con éxito.

En mi caso, el equipo que utilizo como sobremesa, es muy viejo. Se trata de un Duron a 1.3Ghz con Debian GNU/Linux como sistema operativo, por lo que ya no podría instalar Flash Player. Aunque tengo el sistema operativo [muy] optimizado, probé algunas alternativas (gnash, TVenLinux...) y no conseguí, con ninguna, unos resultados satisfactorios.

Después de analizar el problema, he probado a saltarme los "intermediarios" y he conseguido el resultado esperado, poder ver la televisión online desde mi viejo equipo.

El problema

El problema es el siguiente: Para ver una televisión online se necesitan bastantes "intermediarios", un plugin de flash que estará dentro de un javascript, que estará dentro de una página web, que estará dentro de un navegador... Demasiada CPU requerida. Un equipo con una potencia limitada es, simplemente, incapaz.

La solución

mplayer (en mi caso sin interfaz) reproduciendo el streaming de vídeo directamente.
mplayer es muy ligero, y es capaz de reproducir emisiones realizadas a través del protocolo RTMP. RTMP es un protocolo diseñado por Macromedia (que ahora pertenece a Adobe) para transmitir vídeo, audio y datos a través de internet. Así que, básicamente, con mplayer podremos reproducir cualquier contenido que se pueda visualizar con Flash Player (sí, incluso vídeos de youtube).

Conseguir la dirección del streaming mediante RTMP es un proceso trivial utilizando algún sniffer como Wireshark o tcpdump. Las complicaciones pueden aparecer después, según el tipo de seguridad que implemente la web (ID, tokens...). En este último caso, se podría utilizar rtmpdump para capturar el streaming a un fichero, y, luego, reproducir éste con mplayer.

Una vez obtenida la dirección, sólo tendremos que pasársela a mplayer como argumento.

Para agilizar el proceso he creado un pequeño script en python. Como esto es simplemente una prueba, sólo he añadido algunos de los principales canales de televisión online, que no presentaban mayor complicación en lo referente a la obtención de la URL del RTMP. He subido el script a mi cuenta en github, por si queréis probarlo, modificarlo, y/o añadirle algo: https://github.com/rubenhortas/pytv.

Ventajas

Ver de esta forma la televisión online, presenta varias ventajas, entre ellas:

  • Tendremos televisión en nuestro viejo equipo >;)
  • No hay que utilizar Flash Player (gracias por tu soporte para gnu/linux, Adobe)
  • Menor consumo de CPU.
    Aún en equipos que dispongan de la suficiente potencia, la reducción de uso de CPU es considerablemente notable.
  • Emisión ininterrumpida (sin cortes).
    Es decir, que aunque no haya emisiones disponibles vía web, por lo que he podido comprobar, para nosotros sí estará disponible.

Así que, si eres de los que, como a mi, nos gusta tener ruido de fondo mientras realizamos alguna tarea que no requiera mayor anteción, o simplemente te gustaría ver alguno de tus programas favoritos en tu viejo equipo...

Enjoy!

martes, 29 de octubre de 2013

algunos códigos python útiles para CTFs

Cifrados por sustitución simple monoalfabético

El cifrado por sustitución es un método en el que unidades de texto plano son sustituidas con texto cifrado siguiendo un sistema regular. En el caso del sistema cifrado de sustitución simple, la unidad de texto plano es una letra. Es decir, un caracter del texto original es sustituido por otro del alfabeto de texto cifrado. Los ejemplos más caracteristicos de este sistema de cifrado son los cifrados César, ROT13 o Dvorak. El objetivo aquí es deducir de qué sistema se trata y la transposición de caráctes, es decir, qué caracteres se corresponden entre el texto plano y el alfabeto de cifrado. Una vez averiguado, podemos automatizar la traducción con la función maketrans del módulo string:


text = 'bpql bp rk bgbjmil ab zfcoxal zbpxo, rkl ab ilp jbqlalp jxp zlklzfalp ab zfcoxal mlo prpqfqrzflk pfjmib jlklxicxybqfzl'
trans = string.maketrans('xyzabcdefghijklmnopqrstuvw', 'abcdefghijklmnopqrstuvwxyz')
print text.translate(trans)


Cadenas escritas al revés

Si estamos vagos, o no queremos leer hacia el sentido contrario al habitual, podemos obtener el resultado utilizando el tercer argumento de las extended slices de python:

>>> 'sever la atircse anedac'[::-1]
'cadena escrita al reves'


Fuerza bruta

A veces nos es últil tener un array que se autorellene con combinaciones para solucionar alguna prueba que requiera de fuerza bruta (bruteforce o bruteforcing). Para ello dejo en mi github un código de demostración de cómo programar esto en python: bruteforceBytearray. Yo he programado un ejemplo con un bytearray, y he dejado una función para imprimir por pantalla cómo se va rellenando el array. Es un ejemplo y siempre se puede adaptar a las necesidades personales ;)

Enjoy!

Fuentes:

domingo, 8 de septiembre de 2013

obteniendo los metadatos de ficheros pdf en python



En vista a todas las fugas de información que se están dando últimamente (y a que he tenido un poco de tiempo libre), me he decidido a programar un script en python para poder obtener de forma rápida y cómoda, en primera instancia, los metadatos de ficheros pdf.


Aunque algunas personas son capaces de analizar el contenido del fichero en sí, esto puede convertirse en árdua y tediosa tarea si el contenido pertenece a un ámbito fuera de nuestro alcance, o si se trata de una cantidad ingente de información. Sin embargo, los metadatos son datos relativos al archivo. Aunque los metadatos no se encuentran necesariamente presentes en todos los ficheros, de encontrase podríamos averiguar información interesante desde el punto de vista forense, por ejemplo el autor del archivo, las fechas de creación y/o modificación, el programa con el que se ha creado, la correlación entre el nombre y el título, etc.

El uso del script es sencillo:

$ python pdfMetadata.py -h
Muestra la ayuda

$ python pdfMetadata foo.pdf /foo/bar bar.pdf
Analiza los metadatos de los argumentos introducidos a través de la línea de comandos. Los argumentos pueden ser archivos pdf o directorios, y se pueden mezclar. Si el argumento es un directorio, lo escanea recursivamente analizando los pdfs contenidos en él.

$ python pdfMetadata foo.pdf /foo/bar bar.pdf --log foo.txt
Registra la salida a un fichero en texto plano.

$ python pdfMetadata foo.pdf /foo/bar bar.pdf --log bar.csv
Registra la salida a un fichero en formato CSV.

*Las opciones --log y --csv se pueden combinar

El script lo he subido a mi [recién estrenado] github: https://github.com/rubenhortas/pdfMetadata, por si queréis probarlo, ver el código fuente, contribuir o crear vuestro propio fork.

jueves, 8 de marzo de 2007

plugin xmms para konversation

Plugin de xmms para konversation

========================================================================================

Para usar este plugin hay que tener instalado xmms-infopipe y activarlo en xmms

Copiar el script en un archivo llamado "xmms" en "/usr/share/apps/konversation/scripts"

# cp xmms /usr/share/apps/konversation/scripts

Abrir konversation > preferencias > configurar konversation > alias de mandatos > nuevo
nombre alternativo: xmms
sustitucion: /exec xmms

**Para mostrar por un canal la cancion que esta sonando en xmms poner "/xmms" en la ventana del canal

#SCRIPT:
#========== Principio ==================

#XMMS plugin para Konversation
#Version 1.0

#!/bin/bash

PORT=$1;
SERVER=$2;
TARGET=$3;
if [ -e /tmp/xmms-info ]; then
titulo=`cat /tmp/xmms-info | grep 'Title:' | cut -d':' -f2-`;
#tag=`cat /tmp/xmms-info | grep 'Title:' | cut -d':' -f3`;
tiempo_actual=`cat /tmp/xmms-info | grep 'Position:' | tail -1 | cut -d':' -f2-`;
tiempo_total=`cat /tmp/xmms-info | grep 'Time:' | tail -1 | cut -d':' -f2-`;
bitrate=`cat /tmp/xmms-info | grep 'bitrate:' | cut -d':' -f2 | cut -c1-4`;
frecuencia=`cat /tmp/xmms-info | grep 'Frequency:' | cut -d':' -f2 | cut -c1-3`;
dcop $PORT 'default' say "$SERVER" "$TARGET" "[XMMS] [ Titulo: $titulo ] [ Tiempo: $tiempo_actual/$tiempo_total ] [ Bitrate: $bitrate KBPS ] [ Frecuencia: $frecuencia KHZ ]"
fi

#============ Fin ====================