UnicodeDecodeError con Wapiti

Wapiti es un escáner de vulnerabilidades web basado en fuzzing. En la última versión, 2.2.1, permite detectar vulnerabilidades referente a: Errores de gestión de ficheros (include/require local y remoto, fopen, readfile...) Database Injection (PHP/JSP/ASP SQL Injections y XPath Injections) XSS (Cross Site Scripting) Injection LDAP Injection Command Execution detection (eval(), system(), passtru()…) CRLF Injection (HTTP Response Splitting, session fixation…) Sin embargo, si usamos Ubuntu Natty Narwhal, la versión de los repositorios es la 1.1.6, por lo que es posible que nos encontremos el siguiente error al escanear páginas que contengan caracteres no ASCII. Por ejemplo: ...

May 28, 2011 · 2 min · 238 palabras · Nacho Cano

¿Dónde está el site-packages?

Nota mental: $ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" /usr/lib/python2.7/dist-packages Ligeramente relacionado » Creando y leyendo códigos QR desde Python A lo mejor, si el intérprete de Python no encuentra un paquete es que no está donde debería… :facepalm:

May 28, 2011 · 1 min · 41 palabras · Nacho Cano

Desordenando listas en Python

Si tenemos una lista de elementos, por ejemplo: >>> l = [ 2, 3, 5, 7, 11, 13, 17, 19 ] Y queremos desordenarla, pero con la condición de que ningún elemento ocupe la misma posición que ocupaba originalmente, podemos aplicar el algoritmo de Sottolo: >>> from random import randrange >>> def sattoloCycle(items): ... i = len(items) ... while i > 1: ... i = i - 1 ... j = randrange(i) # 0 < = j <= i-1 ... items[j], items[i] = items[i], items[j] ... return >>> sattoloCycle(l) >>> print l [5, 17, 3, 2, 7, 11, 13]

March 29, 2011 · 1 min · 99 palabras · Nacho Cano

Creando y leyendo códigos QR desde Python

Un código QR (Quick Response Barcode) permite almacenar información en un código de barras de dos dimensiones. Hay bastantes servicios en la web que nos permiten crear nuestros propios códigos, por ejemplo el de Google, que podemos emplear desde la línea de comandos: $ curl http://chart.apis.google.com/chart?chs=150x150&cht=qr&chld=H|0&chl=texto -o qr.png Un pequeño alias para tenerlo siempre a mano: $ alias qrurl='qrurl() { curl http://chart.apis.google.com/chart?chs=150x150&cht=qr&chld=H|0&chl=${@// /%20} -o qr.$(date +%Y%m%d%H%M%S).png; }; qrurl' $ qrurl una ranita iba caminando Esto creará un fichero con un nombre parecido a qr.20110325161706.png. ...

March 27, 2011 · 4 min · 755 palabras · Nacho Cano

ls sin ls

En bash: $ for i in *; do echo $i; done Fuente: nfosolutions.com En C: /* * * Esempio che scansiona una cartella stampando a video i file in essa * contenuti. */ #include #include #include #include int main(int argc, char *argv[]) { DIR *dir; struct dirent *drent; if(argc < 2) { fprintf(stderr, "%s \n", argv[0]); return EXIT_FAILURE; } if((dir = opendir(argv[1])) == NULL) { fprintf(stderr, "Errore opendir()\n"); return EXIT_FAILURE; } while((drent = readdir(dir)) != NULL) { fprintf(stdout, "--> %s\n", drent->d_name); } if(closedir(dir) < 0) { fprintf(stderr, "Errore closedir()\n"); return EXIT_FAILURE; } } En Python: ...

March 12, 2011 · 2 min · 347 palabras · Nacho Cano

Mystery

Casi parece que está escrito en chino, o mejor dicho en brainfuck, o puede que no sea muy zen, pero no deja de ser elegante. def mystery(n): a = list(range(n)) [[(yield i) for a[::i] in [([0]*n)[::i]]] for i in a[2:] if a[i]] El nombre de la función pretende no dar pistas para que intentemos averiguar qué hace exactamente esta función. He aquí una pista: Fuente: numberspiral.com >>> f = mystery(20) >>> try: ... while True: ... print f.next() ... except StopIteration: ... pass 2 3 5 7 11 13 17 19

February 26, 2011 · 1 min · 91 palabras · Nacho Cano

Python Zen

Just to keep in mind… Author: euart >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than _right_ now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

February 26, 2011 · 1 min · 154 palabras · Nacho Cano

Descifrando al César en Python

Si lo que pretendemos es, dada una cadena, sustituir una serie de caracteres por otra, en Python es tan sencillo como pasarle al método maketrans una cadena con los caracteres que queremos cambiar y otra con los caracteres a utilizar en su lugar. Ambas cadenas deberán tener la misma longitud. Este método devuelve una tabla de traducción, un objeto susceptible de ser usado por el método translate el cual se aplica sobre un string, como veremos. ...

February 16, 2011 · 5 min · 935 palabras · Nacho Cano

Asignar la IP que queramos a un dominio de DynDNS

Con el comando inadyn podemos actualizar la IP de nuestro dominio, o dominios, en DynDNS, pero la IP no se pasa como argumento sino que se hace una consulta a un servidor que devuelve la IP pública que tenemos en ese momento. Por defecto, el servidor es checkip.dyndns.org:80. Podemos hacer que el dominio apunte a la IP que queramos utilizando el argumento --ip_server_name para especificar un servidor controlado por nosotros y que devuelva la IP que queramos. ...

December 30, 2010 · 3 min · 545 palabras · Nacho Cano

Buscando rootkits y troyanos

Tres herramientas muy útiles: rkhunter, chkrootkit y unhide. rkhunter Busca rootkits, puertas traseras y exploits. Al instalarlo, se programa un escaneo diario, pero cuando instalamos las actualizaciones de algunos programas, las firmas de rkhunter quedan obsoletas, por lo que empieza a mandar avisos. Warning: The file properties have changed: File: /usr/bin/md5sum Current inode: 1093680 Stored inode: 475456 Current file modification time: 1285094009 (21-sep-2010 20:33:29) Stored file modification time : 1267759792 (05-mar-2010 04:29:52) Podemos actualizar las firmas de rkhunter ejecutando: ...

December 17, 2010 · 5 min · 1028 palabras · Nacho Cano