Este blog ya no está activo, sigue informándote aquí:

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

viernes, 17 de abril de 2015

Python a lo Macarra.- Creando Directorios Específicos Para Proyectos.

La idea se me ocurrió ayer cuando vi el desorden que tenían las carpetas de mi ordenador y pensé que eso en el trabajo no me podía pasar ya que perdería un montón de tiempo buscando un archivo en cuestión. Así que busque un poco de información y me anime a programar un script simple que creara directorios ordenados para cada tipo de proyecto o lo que a mi fuera mejora. 

Por ejemplo, si quisiera llevar un proyecto la estructura/tree seria mas o menos así: 

XXXX es el nombre del proyecto que tu le pongas xD

Así que podemos echar mano de import os y os.mkdir() para pasarle los directorios puestos previamente en una lista con un bucle for. Fácil, pero por si acaso y como siempre, os dejo el código para que podáis verlo. 

import os

def proyecto(nombre)
path = [nombre,nombre+"/Contacto",nombre+"/Desarrollo",nombre+"/Maestra",nombre+"/Maestra/Codigo",nombre+"/Maestra/Comunicaciones",nombre+"/Maestra/Documentos", nombre+"/Maestra/Hardware", nombre+"/Maestra/Pruebas",nombre+"/Ofertas",]

    for directory in path:
        print (directory)
        os.mkdir(directory)


if __name__ == "__main__":
    
    d1 = input ("Nombre del proyecto: ")
    proyecto(d1)

La gracia de os.mkdir(path[, MODE]) es que podemos añadir el MODE, el modo o los permisos que queremos para cada tipo de directorio. Ademas funciona con el modo octal donde el primer dígito establece el tipo de permiso deseado al dueño; el segundo al grupo; y el tercero al resto de los usuarios.

Estos son los tipos de permisos: 


Por lo que encima de tener carpetas de proyectos las podríamos tener personalizadas por los permisos que marque nuestra política de seguridad con solo un script  de 10 lineas o menos. 

Espero que os haya gustado y que os sea util. 


Sed Buenos ;) 

miércoles, 8 de abril de 2015

Python A Lo Macarra.- ¡Magic Numbers or File!

Hace unos días que estoy enganchado a leer write-ups de CTFs y una regla habitual de muchos participantes cuando reciben un archivo es pasarle el comando file para saber de que tipo de archivo se trataba o para verificar que no les estaban tomando el pelo con la extensión. Ademas de ser una idea genial para la realización de un peritaje, por aquellas cosas de que al copiar el disco algún archivo misteriosamente no lleva la extensión correspondiente. 

Así que, file me pareció un comando genial pero, como no podía ser de otra manera, todos los comandos chulos no están disponibles para Windows. Lo cual me ha hecho tener ganas de programarlo en Python ya que es una cosa que no existía y que siempre que encontraba una librería esta tiraba de algún port de file para Windows. De esta manera es como me he decidido aprender, un poco por encima, que son los Magic Numbers y como podía buscarlos. 


Para los que estabais igual que yo, los Números Mágicos son un conjunto de caracteres alfanuméricos que identifican un archivo que, en un principio, se registran en  2-bytes al principio del archivo. Ademas de haber gente genial que los ha ido recopilando en tablas separando el valores hexadecimal del ASCII y catalogados por productos y extensiones. 

Ejemplos de tablas: 
Sabiendo que tenemos los valores en hexadecimal de un montón de extensiones y que python puede leer e imprimir el código binario de cualquier archivo en 4 lineas de codigo solo necesitaba la maner a de convertirlo a hexadecimal y compararlo con el Magic Number que yo quisiera. 

Buscando buscando, recordé que hace tiempo estaba jugando con binascii, una librería que contiene una serie de métodos para convertir representaciones binarias en varias codificaciones ASCII y que gracias a ella ahora tenia el metodo para poder realizar mi script. 
  • binascii.hexlify(data):
    • Return the hexadecimal representation of the binary data. Every byte of data is converted into the corresponding 2-digit hex representation. The returned bytes object is therefore twice as long as the length of data.
Aquí os dejo el Script/PoC super-esbozado ya que solo busca por el numero mágico de un pdf: 

import binascii
import re 
archivo = 'aaaa.pdf'
with open(archivo, 'rb') as m:
    contenido = m.read()

d= str(binascii.hexlify(contenido))
print (d)
o1 = re.search("25504446",d)
if o1:
    print ("Es un pdf como una casa Adobe Portable Document Format and Forms Document file")
else:
    print (" Pues, será otra cosa")

Lo he probado con y sin extensión y pasandole un archivo que no sea un pdf. Funciona y nunca me he alegrado tanto de ver código hexadecimal imprimiéndose en mi pantalla. 


Ahora solo hace falta introducir mas Magic Numbers y hacer que el mismo programa analice y encuentre los archivos sin extensión de cualquier directorio. Ya os he dicho que para temas Forenses esta idea tenia futuro. 

Espero que os haya gustado. 

Sed Buenos ;) 

miércoles, 11 de marzo de 2015

Python A Lo Macarra.- Generador De Frases Aleatorias

El código que va ha haber en esta entrada es una tontería, pero me ha hecho el porqué me he puesto a programar algo así. 

Como cada día desde ya hace un par de meses tengo que despertar a una de mis maquinas cada mañana. Está maquina tiene un servicio VPN que se ha de activar de una manera especial y eso me hace perder unos bellos minutos de mi vida, los suficientes para frustrarme un poco. 



Así que, como no quiero frustrarme todas las mañana y aprovechando que ya tengo Python instalado en el equipo, he implementado a [Tonto], un asistente virtual cutre que hice yo mismo, para que me ayude un poco en dicha tarea. Peri, mientras lo esta montando se me ocurrió la idea de que Tonto me recibiera con una frase aleatoria pero motivacional cada vez que lo ejecutara. Y así es, me he puesto y ahora ya me recibe como merezco y me anima las mañanas. 

Aquí os dejo el código: 

import random

def frandom():
    d1= random.randrange(1,6)
    if d1 == 1:
        print ("MAYA: Just do it! (*-*)")
    elif d1 == 2:
        print ("MAYA: Piensa que por la tarde hay galletas (*0*)")
    elif d1 == 3:
        print ("MAYA: Vamoooos tioooo!! (ò.ó)")
    elif d1 == 4:
        print ("MAYA: Un café y acabamos el dia? (-.0)")
    elif d1 == 5:
        print ("MAYA: Tywin Lannister estaría orgulloso (ò_ó)")

frandom()

La verdad es que pensaba que tendria mas trabajo pero, esto es solo un unto de partida ahora he de conseguir que aparte de saludarme, activar la vpn, etc, me reciba con información útil para la mañana. 

Pero bueno, ya os he dicho que el código era bastante fácil pero creo que lo que me hace mas gracia de todo esto es poder implementar a Tonto en otro equipo.