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

domingo, 8 de mayo de 2022

Me mudo a https://rubenhortas.github.io

Después de todo el tiempo sin publicar en este blog, creo que es hora de abandonarlo definitivamente, mudarse y empezar de cero.


He decidido mudar el blog a github: https://rubenhortas.github.io y realizar algunos cambios. El cambio más notable será el idioma, que pasará de castellano a inglés. Respecto a la temática y la frecuencia... Seguiré publicando con la frecuencia que pueda y sobre algún tema que me apetezca y también migraré los artículos de este blog que creo que merezcan la pena tener a mano.


No cerraré este blog por dejarlo a modo de histórico y porque algunos artículos se encuentran referenciados desde otros sitios en internet ;)


Nos vemos en la nueva dirección!

domingo, 14 de septiembre de 2014

integrar pydev y github en eclipse

Cuanto más programas, más indispensables se vuelven los sistemas de control de versiones. Aunque ya he hablado de alguno ellos en este blog anteriormente, hoy voy a explicar cómo integrar eclipse + PyDev + GitHub. Para programar en python como un pro ;)

Requisitos previos

  1. Instalar PyDev (rama Main)

    Requisitos:

    • Java 7
    • Python >= 2.1 o Jython >= 2.1 o IronPython >= 2.6
    • Eclipse >= 3.8

    Abrimos Eclipse y vamos al menú: Help > Install New Software...

    En la siguiente pantalla, pulsamos Add y añadimos la dirección de las actualizaciones de la rama main de PyDev: http://pydev.org/updates. Como nombre le pondremos "PyDev".

    Marcamos PyDev y desmarcamos la opción "Contact all update sites during install to find required software".

    Pulsamos Next. Leemos y aceptamos la licencia y pulsamos Finish.

  2. Instalar EGit y GitHub Mylyn Connector

    • Volvemos al menú Help > Install New Software... de Eclipse
    • Introducimos la dirección de las actualizaciones de nuestra versión de Eclipse (en mi caso "3.8 Juno" -> http://download.eclipse.org/releases/juno/).
    • Filtramos los resultados por "git" y seleccionamos: EGit, JGit y Mylyn Github
    • Pulsar Next y finalizar la instalación.
  3. Manejando los repositorios de GitHub

    • Crear el repositorio en la web de github
    • Importar el repositorio en Eclipse

      Aunque hay muchos tutoriales disponibles para hacer esto, en ellos recomiendan crear los archivos directamente en Eclipse, hacer un commit y un push en el repostorio local de Git y asociar el repositorio local de Git con el repositorio remoto en GitHub. Pero eso crea una carpeta con el nombre que tiene el proyecto en Eclipse dentro del repositorio en GitHub. Cosa que no me gusta nada. Por eso, esta parte la voy a hacer "a mi manera", cambiando el modo, y evitando así tener esa carpeta en el repositorio de GitHub.

      • En el área de proyectos pulsar botón derecho, "Import"
      • Seleccionar Git/Projects from Git y pulsar Next
      • Seleccionar "URL"
      • Introducir la URL del repositorio en GitHub (los campos Host y Repository path se autocompletan. Introducir el usuario y la contraseña y marcar la opción "Store in Secure Store".
        Pulsar "Next", "Next", "Next" hasta llegar a la pantalla para seleccionar el asistente para importar proyectos.
      • Importar el proyecto como proyecto general (general project)
        Pulsar "Next" y "Finish"

      Ahora ya tendremos nuestro proyecto de GitHub importado en Eclipse

      • Añadir los archivos al proyecto
      • Hacer el primer commit

        Botón derecho sobre el proyecto > Team > Commit.

        *Hasta que no hagamos un commit, los archivos del proyecto mostrarán un pequeño interrogante.

      • Introducir el primer comentario. Seleccionar los archivos que queremos incluír en el commit y que queremos sincronizar con el repositorio en GitHub y pulsar "Commit" o "Commit and Push" (si los queremos subir ya).
      • Si no hemos hecho el push (o para futuros pushs)

        • Seleccionamos el proyecto, botón derecho > Team > Push to Upstream

          Y ya tendremos los cambios locales sincronizados con nuestro repositorio en GitHub

  4. Activando PyDev

    En estos momentos, notaremos que no nos funcionan las comprobaciones de PyDev.

    Para solucionarlo:

    • Seleccionar el proyecto > botón derecho > PyDev > Set as Source Folder (add to PYTHONPATH)
      No os preocupéis, enseguida lo borramos de ahí ;)
    • Seleccionar el proyecto > botón derecho > PyDev > Code analysis
    • Quitar el proyecto de PYTHONPATH

      Como ya está funcionando PyDev, si no lo necesitamos explícitamente, eliminamos el proyecto del PYTHONPATH.

Y ya está. Ya tendremos todo listo. La verdad es que parece un proceso tedioso, pero en cuanto se hace una o dos veces, uno se da cuenta de que no son más que un par de clicks aquí y allí ;)

Enjoy!

Fuentes:

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: