adadon
Usuario (Argentina)

Hola a todos. Hace un par de semanas, speedy me empezó a funcionar muy mal. Cuando intentaba cargar una página, muchas veces me daba problema de conexión; la frecuencia de este problema se incrementaba en bandas horarias pico(a la nochesita, a la mañana..). Después de maldecir a este ISP, busqué un poco y aparentemente lo que pasa es lo siguiente: Speedy puso un proxy transparente para reducir el ancho de banda necesario para soportar todas las peticiones que hacen los clientes. Este proxy cachea las peticiones HTTP, para que si X personas hacen un request a una determinada página en un período muy corto de tiempo, el proxy solo tenga que realizar un request real; a todos los clientes les devolverá el resultado de ese request. Ahora bien, aparentemente el proxy no funciona del todo bien. Cada tanto, cuando intentamos establecer una conexión al puerto 80(HTTP) de un servidor, el proxy nos devuelve un paquete TCP RST. Este paquete nos corta la conexión, y ahi obtenemos el mensaje previamente mencionado en nuestro navegador. Esto podría estar relacionado con la cantidad de conexiones que soporta el proxy: cuando sobrepasa el límite, nos envía este paquete. Se puede comprobar que esto es así porque solo ocurre cuando usamos el puerto 80 para establecer una conexión. He probado de usar un proxy(que espera conexiones en otro puerto, digamos 8080), y esto no ocurre ni una sola vez. La solución Bueno, ahora la solución. Esto fue publicado en un foro de ubuntu argentina donde explican que la solución puede ser tan simple como poner una regla con iptables que ignore estos paquetes: sudo iptables -A INPUT -p tcp --tcp-flags RST RST -m state --state ESTABLISHED --source-port 80 -j DROP (notar que es solo un comando, dividido en 2 lineas. Ponganlo todo seguido para que funcione!) Con agregar esa regla, aparentemente se soluciona(o al menos en gran parte). Espero que les sirva! El crédito se lo llevan los que plantearon la solución en la lista de mail de ubuntu argentina Saludos!

impp Buenas! Aca les traigo mi último proyecto, un reproductor de mp3 con interfaz por linea de comandos. Alguno por ahí pasó hace un tiempo por un post anterior mío, en el que presentaba un reproductor del mismo estilo. Como el anterior tenía unas fallas, más que nada por usar mal las librerias(más que nada PortAudio, para hacer output del sonido) y por tener una interfaz poco amigable, lo usé poco y nada. Pero hace unos días me agarraron ganas de hacer un reproductor que de verdad me sirva y pueda usar como mi reproductor por defecto. Por eso empecé un nuevo proyecto desde 0, y la verdad es que estoy muy conforme. Paso a mostrarles la forma en la que funciona: Interfaz La interfaz es toda por comandos. Usa la librería readline, que es la misma que usa el intérprete bash para hacer autocompletación de comandos/paths/etc. Es decir, si apretan TAB igual que en bash, se van a autocompletar los nombres de los temas que quieren reproducir. Lo mismo pasa con los *, les autocompleta el nombre del archivo. Nota: No hace falta poner blabla/*.mp3, con poner blabla/*, solo se abren los archivos .mp3. Ahí pueden ver una muestra de todos los comandos que soporta por ahora. La idea es usar esos comandos para manejarse por el sistema de archivos, agregar temas a la playlist, borrar, pausar, reproducir, etc. Comandos importantes - cd DIRECTORIO: funciona igual que la utilidad que viene en todas las distros. - ls: esto forkea y llama a "ls", por lo que pueden hacer "ls -l", "ls -r", o cualquier parámetro que reciba el comando en su terminal. - add TEMA [TEMA...]: agrega el/los temas al final de la playlist. - plist [prev | full | next]: plist lista la playlist actual. Sin parámetros, solo muestra los temas que estan en un rango de 5+ o 5- del tema actual. Esto lo hice, porque al tener 500 temas, no tiene sentido que la liste entera, si sólo querés ver el siguiente tema. Si se le pasa el parámetro "full", la muestra entera. Si se pasa "prev" como argumento, lista todos los temas que estén antes del actual. "next" muestra los siguientes. Comandos útiles: Alias Mientras probaba la aplicación me di cuenta de que a veces estaba bueno tener atajos, como en toda aplicación. Por eso cree la posibilidad de definir alias: - alias p play: con este comando se define un alias del comando play. Cada vez que usemos "p" como comando, en realidad se llamará a play. Se pueden definir tantos alias como se quiera, pero todo alias debe asociarse a un comando específico(no se puede asociar "ab" a "cd /tmp/x". - alias del p: con este comando se elmina "p" de los alias. - alias: lista los alias definidos. Path Por otro lado, siguiendo con los atajos, me encontré con que siempre me movía a /media/.../.../.../ con lo que perdía mucho tiempo tecleando cuando sólo quería reproducir un tema. Para solucionar eso, definí el comando "path": - path musica /media/Disco/Datos/Carpeta/Musica: define "musica" que apunta a ese path. Ahora, cuando queramos ir a ese directorio, sólo hay que hacer: "cd $musica", y nos llevará a ese directorio. - path del musica: lo mismo que con alias. - path: lista los path definidos. Los path definidos tienen autocompletación al apretar TAB. Autocompletación Esto es lo más útil, sin duda. Poder apretar TAB y que se autocompleten los paths es muy bueno(también hay autocompletación de comandos). Nota: para usar paths que tengan espacios, se tiene que encerrar la ruta entre comillas dobles(". La última comilla doble puede omitirse, pero la del comienzo tiene que estar. Al apretar TAB, automáticamente van a aparecer las comillas al principio de la ruta, salvo casos en que hayan dos archivos que se llamen igual(como pasa con bash que hay que escapear los nombres a mano). Historial impp soporta historial de comandos, que permite reutilizar los comandos que se ejecutaron hace poco. Si bien(por ahora) no se guarda en disco, aunque es muy facil de implementarlo y podría hacerse si se ve que es necesario, por ahora no creo que tenga mucha importancia. Si quieren usar un comando que no sepan como se usa, corran "usage COMANDO", y les imprime la forma de usarlo. Pueden ver todos los comandos con el comando "help". Como siempre, está hecho en C++ . Cualquier consulta, o sugerencia será más que bienvenida! Porque ya un par se quejaron de que no podían compilar las cosas que subía, esta vez cree un configure, que genera un Makefile. Para crearlo, como con cualquier aplicación: ./configure make # make install Notar que el make install es OPCIONAL, y solo si quieren instalarlo en /usr/bin. Si lo corren, recuerden correrlo como root. Requsitos(nombre de los paquetes en ubuntu): - readline(libreadline6-dev). - libmad(libmad0-dev). - portaudio(libportaudio19-dev). Para descargar impp: - Binario por si no quieren tener que compilarlo. - Sources en sourceforge No pido puntos, pero al menos comenten .

Socks5 serverHola! Aca les traigo un servidor de proxy socks5 que hice hace unos meses. Está hecho en C++, hasta donde pude probarlo, funciona bastante bien. Tiene algunas cosas que tengo que mejorarle, como permitir conexiones por domain name en vez de dirección IP, y hacer un mejor manejo de threads, pero no tengo tiempo ni ganas de hacerlo en este momento . Por ahora ha cumplido su objetivo, que era funcionar bien.CompilaciónPara compilarlo, pueden usar g++, linkeando con la librería pthread:g++ -o socks5 socks5.cpp -lpthreadPor defecto sólo permite que se conecten usuarios autenticados. El nombre de usuario y contraseña de login se encuentran en el macro USERNAME y PASSWORD respectivamente. Para permitir que se conecten usuarios sin autenticar, pueden agregar el flag -DALLOW_NO_AUTH como parámetro del compilador. Además, espera conexiones en el puerto 5555; si quieren cambiarlo, toquen el macro SERVER_PORT.EjecuciónNo requiere ningún parametro para ser ejecutado, simplemente corranlo:./socks5DescargaEl servidor está hecho en C++. Para descargar el código fuente vayan a github: https://github.com/mfontanini/Programs-Scripts/blob/master/socks5/socks5.cpp .Saludos!
Envíos De Dinero a México Envía dinero por Internet a México de manera rápida por tan solo $4.99 www.xoom.com HoundBuenas! Hago un minipost para presentarles esta herramienta que desarrolle hace unos meses. Se trata de un crawler web, que parte de un sitio y recopila información sobre él. No es una aplicación muy grande, pero me sirvió para varias cosas, asi que decidí compartirla acá.El tipo de información que se recopilará, dependerá de los plugins que se tengan activados. La aplicación trae un archivo de configuración que nos permite elegir qué plugins activaremos y con qué parámetros. La forma en la que el crawler trabaja es la siguiente:- Se le debe pasar una URL inicial, desde la que comenzará a crawlear.- Houndwc tomará esta URL y bajará su contenido. Luego, un conjunto de plugins llamados "Collectors" serán los encargados de tomar información del código HTML descargado y agregarán todos los links que encuentren en ellos(esto dependiendo de cada plugin, algunos buscan en tags "form", otros en tags "a", etc).- Por otro lado, existen plugins "Collectors" que toman el código HTML y buscan links para seguir visitando. Estos links serán el output del programa. Existen además "CollectFilters" que sirven para restringir los links que se quieren agregar como output. Por ejemplo, tal vez encontremos un link a google, y no queremos que este forme parte de la salida de nuestro crawling...- Por defecto todos los links que se encuentren serán agregados a una cola de URLs a visitar. Esto puede ser un problema, ya que rápidamente podríamos terminar crawleando google, youtube, facebook y nunca terminaríamos. Por esto existen los "CrawlFilters" plugins. Una URL será agregada a la cola si y sólo si todos los filtros aceptan dicha URL. Existen múltiples filtros para que el crawler se mantenga en un solo host, o que solo se mueva por los sitios que se encuentran en una red determinada, etc.PluginsNo voy a mencionar todos los plugins que hay porque son bastantes. En el .tar.gz se incluye un archivo de configuración bastante comun, en general con ese bastaría. Permite recolectar emails y links de un sitio, sin nunca salir de el(no se manda a crawlear por otros sitios).Y para qué sirve?Si, seguramente te preguntas para qué carajo sirve. Bueno, si querés auditar un sitio web por ejemplo, podés poner a correr el crawler y en poco tiempo vas a tener TODOS las URL válidas del sitio. Con esta información se puede analizar mejor si queremos que todos los links que se encontraron, estén realmente disponibles al público, ver si tienen vulnerabilidades, etc. Además usando el plugin EmailCollector(viene habilitado en el .conf del .tar.gz) podemos buscar todas las direcciones de email que se encuentran en el sitio. Si se encuentran forms en el sitio, usando el parametro "-p forms" podremos recontruir el código HTML de las forms que se encontraron, haciéndo que auditar sus parámetros sea mucho más simple.DescargaPara descargarlo, clickeen aca. Está hecho en python 3.0, por lo que tal vez tengan que descargar esta versión para poder correrlo.Acá un ejemplo para que vean como funciona. Lo tire 5 segundos en taringa y encontre 1470 links. Al final le pifie al comando, era "-p form:0" para que genere el html de esa form.link: http://www.youtube.com/watch?v=Tt-Nv7OXo7M

Netstat en shellscript Buenas! Hace un rato me meti a mi router(que corre dd-wrt), y me di cuenta de que no tenia el comando netstat. Por esto, y porque no tenia ganas de estudiar, me puse a hacer este script que muestra ip dest/src y port dest/src de cada conexion tcp que este establecida. Sin mas, el script en cuestion: #!/bin/sh parse_num() { x=$(echo $1 | sed -n 's/0*//p') if [ $(echo $x | wc -c) -eq 1 ] then x=0 fi echo $x } hex_to_ip() { index=7 output='' while [ $index -gt 0 ] do end=$(expr $index + 1) value=$(printf "%d" "0x$(parse_num $(echo $1 | cut -b $index-$end))") output="$output.$value" index=$(expr $index - 2) done echo $(echo $output | cut -b 2-) } printf " Src IP Src port Dst IP Dst portn" cat /proc/net/tcp | while read line; do srcip=$(hex_to_ip $(echo $line | sed -n 's/^[0-9]*: //p' | sed 's/:.*//p')) srcport=$(printf "%d" 0x$(parse_num $(echo $line | sed -n 's/^ *[0-9]*: [0-9,A-F]*://p' | cut "-d " -f 1))) dstip=$(hex_to_ip $(echo $line | sed -n 's/^[0-9]*: [0-9,A-F]*:[0-9,A-F]* //p' | sed -n 's/:.*//p')) dstport=$(printf "%d" 0x$(parse_num $(echo $line | sed -n 's/^ *[0-9]*: [0-9,A-F]*:[0-9,A-F]* [0-9,A-F]*://p' | cut "-d " -f1))) printf "%15s %9s %15s %9sn" $srcip $srcport $dstip $dstport done Aca una muestra de como funciona. Lo empece haciendo para bash, pero como mi router no tenia ese interprete, termine pasandolo a sh para que sea mas portable . Para descargarlo, click aca Saludos!