Your Ad Here

Sat Aug 29:01:41 EDT 2010

De iOS de Apple al Android de Google

Llego la hora de renovar el contrato con mi proveedor de servicio telefónico, por lo cual me tome la molestia de echar mis numero y los resultados fueron impactantes. La diferencia entre mi ex-proveedor de servicios (AT&T) y mi Actual proveedor de servicios (Sprint) después de un contrato de 24 meses es de $1,889.86 poniendo ambos planes como ilimitados para 2 personas.
Por un lado en AT&T tengo el iPhone cosa que me llamaba mucho la atención pero al mismo tiempo sentía curiosidad por Android. Lo que me ayudo a tomar la decisión fue la diferencia de costo entre ambos planes, tuve que hacerme la pregunta valen estos dos iPhones casi $1.9K por solo el privilegio de usarlos?, la respuesta es clara, ningún teléfono los vale por lo que me decidí por irme con Sprint y remplazar mi iPhone 3GS y el Motorola Razor de mi novia con dos HTC Evo4.



La primera impresión.
Aun me falta probarlos un poco mas, pero por lo pronto esto es lo que note de inmediato: El Evo4 se siente sin duda alguna un teléfono mas barato, se nota la diferencia en acabados, materiales y diseño comparado con el iPhone. El sistema operativo es simplemente inferior desde el punto de vista de un usuario final (o un noob). entiendo perfectamente por que un usuario final elegiría un iPhone sobre un HTC Evo4 con Android. Después de un par de días me di cuenta de lo restrictivo que es el iPhone, de toda la libertad que ofrece Android y de lo rapido y poderoso que es el Evo4 como hardware, nunca volvería a un teléfono basado en iOS después de tener una semana con mi Android. Estoy muy contento con el switch que hice (sin contar con la plata que me estoy ahorrando).

Lo que si tengo que aclarar es que aun lo veo que le falta ser un poco mas intuitivo, recuerdo que mi curva de aprendizaje con el iPhone fue mucho mas corta (minutos) que con el Android... son teléfonos que dificilmenté los recomendaría a usuarios finales pero sin duda alguna con los ojos cerrados a mis colegas.


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Android, Linux, Apple

Mon Aug 16 22:57:31 EDT 2010

Los zombis podrian estar consumiendo tu procesador en este instante

TUX version zombie sediento por NSLU2 Un proceso zombie es un proceso que ha completado su ejecución pero aun tiene una entrada en la tabla de procesos. Esta entrada aun es necesitada para permitir la lectura del estado de su estado de salida. El Termino zombie se deriva de la definición de un muerto viviente (se acuerdan de esa película?). Para ponerlo en términos simples y un poco mas técnicos, un proceso hijo ha terminado pero aun no se ha eliminado de la tabla de procesos y el comando kill no tiene efectos sobre él.

Indentificarlos es fácil, podemos ejecutar el comando ps y buscamos cuales procesos tienen una "z" en la columna "STAT". Los procesos zombie que permanecen por un periodo mas que corto por lo general es señal de un bug en el proceso padre. Ahora bien, si el zombie aun existe después de que el proceso padre ha terminado esto por lo general indica un bug en el sistema operativo. 

Un procesos zombi no es un problema tan grave, el problema se agrava si el computador va a ser sometido a fuertes cargas pues puede ser que se multipliquen. A pesar de que los zombis no consumen memoria un incremento acelerado de estos podría traer consecuencias a la hora de que el sistema operativo se le acaben los PID a asignar. 

Una vez que el padre haya matado el zombi el processo ID (PID) y la entrada en la tabla de procesos puede ser reutilizada, pero si este falla, el zombi permanece en la tabla de procesos.

Para eliminar un zombi del sistema, se le debe enviar la señal SIGCHLD al padre usando el comando kill. En caso de que el padre se reuse a eliminar el zombi de la tabla de procesos podríamos intentar matando el proceso padre. Algo que debemos tomar en cuenta es que cuando un proceso pierde a su padre, 'init' pasar a ser su nuevo padre y este se encarga de limpiar periódicamente la tabla de procesos de los zombis cuyos padres sean init.


Tema vinculado: La sobre-asignación de memoria lograda con memory_overcommit.


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, NSLU2

Thu Aug 12 00:15:18 EDT 2010

Comparte un archivo via torrents con tu propio tracker

El NSLU2 como centro de una red torrents, un tracker server

Hoy tenia la necesidad de compartir un archivo de 1,1GB con un grupo de amigos y no quería usar el ancho de banda de mi servidor por completo para esto así que decidí usar torrents. El torrent es un protocolo para compartir archivos con la peculiaridad de que todo lo que descargas por este medio, durante el transcurso de su descarga, estará siempre disponible para ser descargado por otro. Ya en el articulo "Descargas automatizadas de torrents en el NSLU2" toque el tema de los torrents en el NSLU2, esta vez les voy a comentar un poco de como crear un torrent tracker y como crear el torrent como tal.


El Tracker
Un tracker es un server (en este caso mi NSLU2) que contiene la información necesaria para que los peers se conecten con otros peers coordinando la comunicación entre ellos. Los trackers son el único punto de encuentro al cual los clientes requieren conectarse para poder comunicarse y poder iniciar una descarga. En nuestro caso usaremos el que trae el kit de utilidades bittornado. bttrack.py viene incluido con bittornado, yo use el siguiente comando con estos flags para levantar mi servicio de torrent tracker:

nohup /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log &

Así de simple como se ve, invoco el script de python y le paso los siguientes parámetros:
--port: El puerto en el que va a escuchar.
--difile: El archivo con la información mas reciente de las descargas.
--logfile: El archivo de registros de las actividades del tracker.


El *.torrent
El archivo torrent es un poco mas complejo pero igual fácil de crear, usando btmakemetafile que también esta incluido en bittornado podemos crear el archivo tan solo con proporcionarle el hiper vinculo del tracker y el nombre del archivo que queremos compartir como se puede ver aquí:

btmakemetafile.py http://orvtech.com:6969/announce --comment "http://www.orvtech.com/latest/torrent" guardianes_de_chavez.mp4

El parámetro --comment simplemente nos permite agregarle un comentario al torrent.


Hacerlo publico
Hay muchas formas de hacerlo publico, solo basta con enviar el archivo *.torrent a las personas que queremos que descarguen el archivo, publicarlo en tu blog personal o subirlo a uno de estos sitios que sirven para buscar torrents, en mi caso use TPB el cual tiene la particularidad que toma el *.torrent que tu creaste y agrega otros 2 trackers a el (http://tracker.thepiratebay.org/announce y http://tracker.openbittorrent.com/announce)


UPDATE Viernes Agosto 13, 2010: Un bug en el tracker.
Al parecer mi version de bttracker no es del todo compatible con mi versión de python, y el proceso muere después de mas de un par de horas con un error referente a la incompatibilidad con el modulo SHA. Por ahora he decidido hacer un pseudo whatchdog para vigilar que el tracker este siempre arriba.

Modifique el script a esto:

while true
  do  if pidof -x bttrack.py > /dev/null
    then sleep 2
    else /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log
  fi
done

Como ven es un loop infinito que constantemente pregunta por el PID del proceso, de no encontrarlo simplemente ejecuta de nuevo el comando.
Luego descargo una versión mas nueva de bittornado a ver si esto soluciona el problema.



páginas de interés:
TheShad0w's experimental bittorrent client (BitTornado)
Pagina del proyecto bittorrent.org


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, NSLU2

Mon Aug 9 16:11:47 EDT 2010

Flash en el iPhone en tres pasos

Es en realidad algo muy fácil de hacer, consiste en un paquete del repositorio Alemán/Austriaco benm.at para Cydia.

  1. Abre Cydia > Manage > Sources
  2. Edita las fuentes y agrega http://repo.benm.at
  3. Busca Frash e instala tanto el paquete como el addon para sbsettings.

Listo!, ahora puedes ver contenido en formato flash (no es que haga falta, HTML5 es el nuevo estándar). Para ver este contenido debes hacer 'click' en el. El proceso tarda unos 2 minutos o menos y no es compatible con teléfonos 3G o mas antiguos. Aquí adjunto unas imagenes:

Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash Captura de pantalla del iPhone 3GS corriendo flash gracias a frash

Articulos Vinculados:
Reparar mobileterminal en iOS4.0 para el iPhone
El NSLU2 como puente para tener PUSH de un servidor IRC en el iPhone


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, Apple

Recolectar emails de comunidades en internet.

Desde hace un par de años me llamo la atención como se colaron a internet los correos electrónicos de miles de internautas afectos al actual gobierno venezolanor. Revisando los comentarios y usando google me pude dar cuenta que la fuente podría ser alguna comunidad web (foro) orientada específicamente a usuarios oficialistas, no veo otra forma de asociar una dirección de correo electrónica con una tendencia política.
Para duplicar estos resultados escribí un script que permite obtener estos emails y se adapta a cualquier comunidad que use phpBB como software para foros. echemos un vistazo.

TEMP_URL="/tmp/spider_url.tmp"
MAX_SLEEP=1
TMP_EMAILS="/tmp/spider_emails.tmp"
CONFIG=$1
EMAIL_OUTPUT="/tmp/emails.txt"

rm -f $TEMP_URL
rm -f $TMP_EMAILS
rm -f $EMAIL_OUTPUT

for COMUNIDAD in `cat $CONFIG`
do
COMUNIDAD_URL=`echo $COMUNIDAD | awk -F, '{print $1}'`
PERFILMIN=`echo $COMUNIDAD | awk -F, '{print $2}'`
PERFILMAX=`echo $COMUNIDAD | awk -F, '{print $3}'`
PERFIL=$PERFILMIN
while [ "$PERFIL" -lt "$PERFILMAX" ]
  do echo "http://$COMUNIDAD_URL/profile.php?mode=viewprofile&u="$PERFIL
  PERFIL=`expr $PERFIL + 1`
  done 
done | sort -R | grep -i [a-z] >> $TEMP_URL

for URL_DE_PERFIL in `cat $TEMP_URL`
do curl -s --referer `shuf -n1 $TEMP_URL` $URL_DE_PERFIL |\
grep -i "@" | \
sed -e 's/</ /g' -e 's/>/ /g' -e 's/\:/ /g' -e 's/\=/ /g' -e 's/&amp;/ /g' | sed s/\"/\ /g |\
tr ' ' '\n' | \
grep "@" | sort | uniq | tr 'A-Z' 'a-z'  
SEGUNDOS=$[ ( $RANDOM % $MAX_SLEEP )  + 1 ]
sleep $SEGUNDOS
done >> $TMP_EMAILS

cat `echo $TMP_EMAILS` | grep -i -E '[a-zA-Z0-9_]*@[a-zA-Z0-9]*\.*\.(com|edu|net|org|info|ve)' | sort | uniq > $EMAIL_OUTPUT

El script toma información que es publica y la filtra hasta obtener una cadena que semejé una dirección de correo electrónico, como pueden ver en las siguientes imagenes el perfil de los usuarios son públicos y es predecible cual es la URL de estos perfiles ya que son numerados de forma secuencial.


Al ejecutar el script no arroja ninguna salida, tendríamos que hacer un cat a $EMAIL_OUTPUT como lo vemos aquí:

vista del script ejecutandose

Si se fijan el el script el recibe un parámetro cuando lo ejecutamos, ese parámetro es la ruta a un archivo que va a contener la información de la URL del foro a escanear, el primer perfil a escanear y el ultimo perfil, todo separado por comas sin espacios en blanco (comunidad,minimo,maximo) el archivo se vería algo así:

www.noticierodigital.com/forum,1001,1010
aporrealos.com/forum,1000,1020

Para llegar a cual es el perfil numero del perfil del ultimo usuario registrado por demos jugar en nuestro navegador web con el parámetro u=17015 y cambiar ese numero por uno mas alto hasta que recibamos una pantalla de error del foro diciendo que ese perfil no existe.

foro aporrealos.com exponiendo informacion de sus usuarios


Evitando Patrones.
Si volvemos al script que publique, pueden ver que tome algunas medidas para evitar crear patrones el archivos de registro (log files) alterando el orden de los perfiles y cambiando aleatoriamente el tiempo a esperar entre visita y visita a los perfiles adicionalmente estoy enviando un 'referrer' perteneciente a estas comunidades con cada petición HTTP.

El producto final de este script es una lista de direcciones de correo, una dirección por linea y luce así:

ferminmittilo@gmail.com
ivanmarcanolopez@hotmail.com
jjguillen@cantv.net
monje902@hotmail.com
psichofra@hotmail.com

Este script no funciona con todos los foros phpBB, algunos requieren una sesión valida para acedar la pagina de los perfiles. En la segunda parte de este script (que publicare en los próximos días) usare este mismo script pero implementando cookies, sesiones, proxies y recurriendo a la cache de algunos buscadores web.


UPDATE: El script corre sin problemas en el iPhone asi que se puede ejecutar desde cualquier parte que se tenga internet bien sea vía Edge, 3G o WIFI. Aquí una captura de pantalla y un video de el script con algunas modificaciones después de ejecutarse:


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, Scripts

Thu Jul 29 12:24:30 EDT 2010

Mas de 170 millones de registros de Facebook expuestos en un torrent de mas de 2.8GB.

El día de ayer salio la noticia de que en los torrents estaba circulando un archivo con mas de cien mil registros de facebook cosa que me llamo la atención. Cinco minutos mas tarde ya estaba descargando este archivo y 2 horas mas tarde me estaba llevando la sorpresa de que son solo nombres y URLs, información pública concentrada en un grupo de archivos.

facebok privacy

Perfecto para aquellos interesados en crear scripts y atacar específicamente vía brutforce estos perfiles. Si aun no lo han descargado, pueden hacerlo de thepiratebay.org y si la curiosidad los mata aquí tienen 10 lineas de cada archivo para que tengan una idea de su contenido:


El script:

for X in `ls *.bz2`
  do echo $X
  bzcat $X | head -n 100 | tail -n 10
  echo "---------------------------------------------"
done


El producto:

facebook-first.l-withcount.txt.bz2
40265 jasonc
39901 davidd
39717 johnk
39634 scottm
39481 ryanb
39388 scotts
39188 chrisd
39093 kevinb
38983 chrisg
38881 mattb
--------------------------------------------- 

facebook-firstnames-withcount.txt.bz2
192998 jeremy
192256 debbie
191329 christine
190512 rebecca
189062 kathy
187478 jay
183156 sandra
181704 andrea
180265 megan
179456 lauren
--------------------------------------------- 

facebook-f.last-withcount.txt.bz2
27522 aahmed
27426 agupta
27301 jlopez
26912 mdavis
26887 jmartinez
26758 arodriguez
26729 bwilliams
26705 vkumar
26543 jjackson
26445 cmiller
--------------------------------------------- 

facebook-lastnames-withcount.txt.bz2
90871 ahmad
90245 hughes
89172 bennett
89105 love
88912 kim
88332 mohamed
88071 gomez
87216 mendoza
86555 gray
86346 richardson
--------------------------------------------- 

facebook-names-original.txt.bz2
157 vk vinki
157 yean
19 lazio 19
1b emin yilmaz 1b
1bsalih yilmaz1b
1dlfred ogbonmwan
1fc140d9
1o sankalp rajan garg
1o smart stunt 1o
1u amarjot kaur 1u
--------------------------------------------- 

facebook-names-unique.txt.bz2
david miller
vinod kumar
sameer khan
rahul singh
karen smith
senthil kumar
alex smith
mary smith
michael miller
richard smith
--------------------------------------------- 

facebook-names-withcount.txt.bz2
3048 david miller
3046 vinod kumar
3021 sameer khan
3010 rahul singh
2954 karen smith
2934 senthil kumar
2934 alex smith
2921 mary smith
2901 michael miller
2886 richard smith
--------------------------------------------- 

facebook-urls.txt.bz2
http://en-us.facebook.com/people/-AR-Alinea-Doza/100000264666779
http://en-us.facebook.com/people/-AR-Marchan/100000029667593
http://en-us.facebook.com/people/-ARPaettyBoy-Paeston-/1396447251
http://en-us.facebook.com/people/-ARaiin-Amiir/1329674643
http://en-us.facebook.com/people/-ARichKidd-Bell/725782861
http://en-us.facebook.com/people/-ARiich-Kiid-Pierre-Kdsshinout-Page-two/100000978229535
http://en-us.facebook.com/people/-Aa-Xdie/1603519156
http://en-us.facebook.com/people/-AaMior-Ahmad-/100000384112127
http://en-us.facebook.com/people/-Aaachh-Mcloughlin/100001042156076
http://en-us.facebook.com/people/-Aaaoqantazz-Lexhii/1029276376
--------------------------------------------- 


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, Scripts

Reparar mobileterminal en iOS4.0 para el iPhone

mobileterminal icon Desde que actualicé a iOS4.0 no he podido usar la aplicación MobileTerminal pues al abrirla esta se cierra como al segundo. Investigando un poco mas logre conseguir el error ejecutando Terminal desde BASH vía SSH, el error es el siguiente:

# mobile terminal se cierra
 ./Terminal 
 dyld: Symbol not found: _OBJC_CLASS_$_UITile
 Referenced from: /private/var/stash/Applications/Terminal.app/./Terminal
 Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

Hoy me puse a jugar un rato y encontré la solución al problema. Lo primero es entrar vía ssh a nuestro iphone. luego eliminamos la aplicación:

rm -Rf /var/stash/Applications/Terminal.app

Cambiamos al directorio de las aplicaciones y descargamos la ultima versión de la pagina del proyecto mobileterminal:

cd /var/stash/Applications/
wget http://mobileterminal.googlecode.com/files/Terminal-426-unstable.zip

Descomprimimos el archivo y arreglamos los permisos:

unzip Terminal-426-unstable.zip
rm -f Terminal-426-unstable.zip
cd Terminal.app
chmod 644 -R ./*
chmod ugo+x Terminal

Si intentamos abrir la aplicación ahora igual nos va a dar error, primero debemos hacer un respring y listo. Aquí les dejo unas capturas de pantalla del nuevo terminal.


Articulos vinculados:
Flash en el iPhone en tres pasos
Acceso remoto via SSH a mi AppleTV


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, Apple

Sun Jul 18 22:59:54 EDT 2010

Acceso remoto via SSH a mi AppleTV

Instale mediante un pendrive USB un parche que permite el acceso remoto a mi AppleTV vía SSH, el mismo parche instala una serie de aplicaciones como Boxee, bin utils y unas modificaciones al menú de la interfaz gráfica que permite la instalación de plugins (como Perian) y otras aplicaciones.

Foto de mi televisor mostrando el AppleTV booteando

La razón principal de esto es mas que todo para poder instalar XBMC y una serie de plugins y scripts para este que permiten organizar automaticamente la librería de películas. El pluging no solo permite renombrar y organizar de acuerdo a el nombre real de este vídeo, temporada y episodio si no también descarga automaticamente los subtítulos e información adicional al vídeo. Aquí les dejo un vídeo de el AppleTV iniciando desde el USB patchstick (el pendrive que preparamos) e instalando todo lo necesario.

Proximamente buscare de instalar macports o el portage de gentoo si es posible. Quiero migrar este site así como linuxevolution.org al AppleTV.


Galería Vinculada: Instalando sshd en el appletv


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, NSLU2, Apple

AppleTV, el futuro remplazo de mi NSLU2

Por ahora no he jugado mucho con el Apple TV, tan solo unos minutos esta mañana, en cuestión de minutos lo conecte al TV, prendió y logre configurar para que se conecte a la red inalámbrica de la casa. Este sera el reemplazo de mi servidor NSLU2 en un par de meses. Por su puesto no podian faltar las fotos:



Las características técnicas del equipo son:

Procesador: Intel 1.0 GHz "Crofton" Processor
Gráficos: NVIDIA GeForce Go 7300 (64 MB VRAM)
Memoria: 256 Mb de 400 MHz DDR2 SDRAM
Disco duro: 160 GB hard disk
Conectividad: USB 2.0, receptor infrarrojo, HDMI y Vídeo por componentes.
Networking: 10BASE-T/100BASE-T Ethernet, 802.11 b, g, n wireless networking (AirPort)
Salida: 1080p/1080i 60/50 Hz (pero la resolución máxima de vídeo es de 720p)
Audio: S/PDIF digital audio óptico, RCA analógico de sonido estéreo
Alimentación: Fuente de alimentación universal 48W
Dimensiones: 197x197x28 mm (7.7x7.7x1.1 in)
Peso: 1.09 kg (2.4 libra)

A simple vista, mas de ocho veces la cantidad de memoria que tiene mi NSLU2 (que por cierto aloja esta pagina web), casi ocho veces mas poder de procesamiento, disco duro interno vía IDE que ya de por si es mucho mas rápido que USB 2.0, lo puedo conectar al TV y ver en HD las películas, photos, y demás contenido multimedia que descargue vía torrents. Todo esto por $108 puesto en mi casa.



Galería vinculada: Fotos del AppleTV y el NSLU2.
Artículos Vinculados:
    Descargas automatizadas de torrents en el NSLU2.
    El NSLU2, Especificaciones técnicas..


Publicado por orvtech | Track Back | Comentarios | Meneame | Etiquetado como: Linux, NSLU2, Apple