Entradas etiquetadas con WindHack
Manejar Twitter desde Python
20 jun
Hace mucho tiempo busqué un módulo que fuese fácil y sencillo para manejar Twitter desde un script en Python. Buscando un poco encontré un par de módulos antiguos que usaban la autenticación básica ( Usuario y contraseña ) pero ya son obsoletos, pues Twitter ahora exige que esta sea por medio de OAuth; buscando más y más logré toparme con la librería perfecta llamada Tweepy.
No siendo más, explicaré cómo usarla de manera sencilla.
• Obtener TweepyPuede descargarse directamente desde PyPi o desde mi Dropbox.
• Registrar la aplicación en TwitterPrimero que todo hay que ir a este enlace: https://dev.twitter.com/apps/new Quizá deba iniciar sesión.
Posteriormente procedemos a rellenar los campos necesarios para el registro de la siguiente manera:
Finalizado lo anteriormente expuesto, damos clic en “Register application ” y veremos algo así:
Dejamos la ventana abierta o guardamos los valores de Consumer key y Consumer secret, ya que posteriormente los necesitaremos.
• Conexión con la cuenta de TwitterComo la autenticación se realiza de otra forma, la aplicación debe de ser autorizada para que pueda emplearse como cliente para nuestra cuenta de Twitter.
Crearemos un script de un sólo uso, el cual generará los datos necesarios para poder conectarnos automáticamente en el futuro a nuestra cuenta.
#!/usr/bin/env python import tweepy CONSUMER_KEY = 'Su Consumer Key aqui' CONSUMER_SECRET = Más >
Obtener acceso a Hotmail: Error del usuario
10 dic
Windows Live Hotmail anteriormente llamado MSN Hotmail es un servicio de correo electrónico propiedad de Microsoft Corp. Actualmente es uno de los servicios WebMail y mensajería instantánea –Messenger– más usados a nivel mundial.
Un par de meses atrás leí en la red sobre la existencia de un bug en Hotmail que permitía obtener la contraseña del correo en tan sólo un par de horas y de manera muy sencilla; inclusive se observaron varios hechos que hasta cierto punto le otorgaban credibilidad al asunto, pero esto no era suficiente para catalogarlo como tal pues aún había mucho qué explicar:
¿Por qué no había información –relevante– sobre ello? No existía información que afirmara la existencia del famoso bug porque era un rumor muy bien montado.
¿Entonces qué estaba sucediendo? La realidad es que algunos usuarios cometen un gran error en la creación de sus cuentas, lo cual puede afectar fuertemente la integridad y seguridad de las mismas.
Para explicar, demostrar y comprobar cuán importante es tener precaución al crear las cuentas de correo electrónico procederé con la prueba de concepto (PoC).
2. Prueba de Concepto (PoC)Nota: El autor no se hace responsable de ningún daño relacionado al uso de la información y métodos aquí expuestos. Esta información es meramente educativa. El uso es bajo su propia responsabilidad.
Como anteriormente había explicado, Más >
WS Downloader: ¡Descarga vídeos de YouTube!
17 nov
WS Downloader es un script que he programado en compañía de swik en el lenguaje de programación Python, el cual permite descargar vídeos de YouTube directamente desde sus servidores sin recurrir a sitios web de terceros.
Está en su primera versión — beta —, y su funcionamiento hasta ahora ha sido bastante agradable. Por estos momentos sólo estará disponible para ejecutar en modo consola — línea de comandos — pero se tiene pensado en un futuro hacer una versión con GUI — Interfaz Gráfica de Usuario —.
Su funcionamiento es bastante sencillo e intuitivo.
Modo de usoEn las distribuciones de GNU/Linux se puede ejecutar de las siguientes maneras:
- Directamente desde Python ejecutando en terminal:
~$ python WS_Downloader.py
- Dando permisos de ejecución al archivo:
~$ chmod +x WS_Downloader.py ~$ ./WS_Downloader.py
Luego, su sintaxis para adecuado uso es:
~$ ./WS_Downloader.py <Opción> <Id>
Teniendo como opciones:
- -help : Muestra la ayuda. Su uso es: WS_Downloader.py
- -D : Descarga el vídeo directamente. Su uso es: WS_Downloader.py -D <Id>
- -G : Obtiene la URL del vídeo. Su uso es: WS_Downloader.py -G <Id>
El Id equivale a la parte coloreada con rojo:
http://www.youtube.com/watch?v=bq9hin5rvdo
El proyecto se encuentra registrado en SafeCreative bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0.
No siendo más, pueden descargarlo haciendo clic aquí.
Más >Perdón por la ausencia…
11 sep
¡Hola a todos!
Lastimosamente hace una semana mi PC sufrió un problema y mi fuente ATX falleció. Fue por ése motivo que estuve ausente y no pude escribir nada, pues el poco tiempo que podía conectarme era desde otra PC, y eso que era un tiempo relativamente poco, sólo para revisar mi correo, entre otras cosas.
El día jueves compré vía MercadoLibre otra fuente, ya que en mi pueblo por desgracia no hay sitios especializados en éstos temas. Haciendo un cálculo, tenía previsto que la fuente me llegaría el sábado o en defecto el lunes, pero sorprendentemente llegó ayer en la tarde, algo que realmente me fascinó.
No esperé y de una me puse a desempacar mi nueva hermosa fuente ATX y de una, a instalarla para revivir a mi pequeña. (Bastante Geek sonó ésta última parte ¿no?…).
Ahora está funcionando perfectamente y espero que me dure bastante tiempo, jeje…
Alternativa a len() en Python
11 sep
Como bien sabemos, hay una función para manejar cadenas de texto en Python que nos devuelve el número de caracteres de la misma, dicha función es len()
Por ejemplo, un uso sencillo de ella es:print "Hola = %s" % len("Hola")
Ésto nos devuelve: Hola = 4
Pero también podríamos recurrir a una alternativa creada por nosotros mismos. Es muy sencillo, simplemente necesitamos recorrer uno a uno cada caracter de la cadena e ir aumentando en 1 el valor de la variable que contendrá la longitud.
No siendo más, acá dejo el código de mi función (alternativa).
def strlen(str): result = 0 for i in str: result += 1 return result
¡Saludos!.,
Simulación de sentencia «switch (case)» en Python
5 ago
La sentencia «switch (case)» es una estructura de control que permite controlar el flujo del programa basado en el valor de una variable o expresión. Se usa comúnmente para evitar el uso de if’s anidados, lo que en cierta parte disminuye la legibilidad y rapidez de un programa.
Su funcionamiento es sencillo, si la variable o expresión tiene un número determinado de valores, se podría ejecutar una serie de acciones dependiendo de cada valor por separado.
Un ejemplo en C y Pascal:
int main() { int num = 1; switch (num) { case 0: printf("El número es cero\n"); break; case 1: printf("El número es uno\n"); break; case 2: printf("El número es dos\n"); break; /* case default: */ } return EXIT_SUCCESS; }
—
var Num:Integer = 2; begin case Num of {Inicio Case} 0:WriteLn('Cero'); 1:WriteLn('Uno'); 2:WriteLn('Dos'); else WriteLn('Desconocido'); end; {Fin Case} ReadLn; end.
Basándose en el valor de la variable Num (Integer) mostrará un mensaje de salida diferente. El default ( C ) y el else ( Pascal ) se ejecuta cuando el valor de la variable no coincide con ninguno de los valores anteriores. La mayoría de los lenguajes de programación cuentan con ésta sentencia, pero por desgracia Python no, en lugar de ello se usa una serie de bloques if-elif-else.
Aquí un ejemplo como los anteriormente vistos:
Num = 3 if Num == 0: print 'Cero' elif Num == 1: print 'Uno' elif Num == 2: print 'Dos' elif Num == 3: print 'Tres' else: print 'Desconocido...'
¡Bien!, una solución simple, efectiva, bastante fácil de trabajar pero no es elegante. Especialmente si se Más >
Convertir texto a ASCII y viceversa
19 jun
En Python y muchos otros lenguajes de programación, existe una función que nos permite convertir una cadena de texto a ASCII.
Dicha función es ord(), la cual retorna un integer (número) que representa el valor de un carácter Unicode. Por ejemplo ord(‘A’) devuelve 65, ya que su equivalente en ASCII es dicho número. La inversa a esta función es chr()
Poniéndolo en práctica podríamos hacer un sencillo conversor de texto a ASCII. Para ello haré dos funciones/ejemplos usando bucles distintos, pero llegando a un mismo fin.
Usando el bucle while. Aunque el código es un poco más largo.
def Text2ASCII(Cadena): i = 0 # Variable del bucle. Size = len(Cadena) # Longitud de la cadena. Temp = '' # Variable temporal, donde se construirá la cadena en ASCII. while i < Size: # Instancia del bucle. Temp += str(ord(Cadena[i])) + ',' # Se empieza a contruir la palabra, usando la función ord(). i += 1 # Aumentamos el valor de la variable del bucle. return Temp # Retornamos la palabra ya convertida.
Usando el bucle for. A mi parecer es más efectivo, y con pocas líneas de código.
def Text2ASCII(Cadena): Tmp = '' # Variable temporal, donde se construirá la cadena en ASCII. for i in Cadena: # Instancia del Bucle. Tmp += str(ord(i)) + ',' # Se empieza a contruir la palabra, usando la función ord(). return Tmp # Retornamos la palabra ya Más >
FoxyMSN – ¡Multi-sesión en tú Messenger!
6 jun
Últimamente se han desarrollado varios parches para el Windows Live Messenger® (WLM), así que decidí hacer mi versión.
El FoxyMSN, es un parche que permite abrir múltiples instancias del WLM, y así poder conectarte desde un mismo PC a cuentas distintas.
Próximamente publicaré la manera en la cual realizar uno de estos parches y el código fuente del FoxyMSN.
Cifrado César en Pascal
29 may
Versión en Pascal del algoritmo de cifrado César, programada por mí.
program CesarCifrado; {$APPTYPE CONSOLE} uses SysUtils; var Alphabet: Array [0..25] of Char=('a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z'); NWord:String = ''; Palabra: String; Clave:Integer; function CifrarCesar(AString:String;AKey:Integer):String; var I,J,ALength,Temp,Tmp:Integer; begin Result := ''; AString := LowerCase(AString); ALength := Length(Alphabet); if (AKey >= 1) and (AKey <= 26) then begin for I := 0 to Length(AString) do for J := 0 to ALength -1 do if (AString[I] = Alphabet[J]) then if J+AKey <= 26 then begin Temp := J+AKey; Tmp := Temp-26; NWord := NWord + Alphabet[Tmp] end else NWord := NWord + Alphabet[J+AKey]; end; Result := NWord; end; begin try WriteLn('Escriba la palabra que desea cifrar > '); ReadLn(Palabra); WriteLn('Escriba la clave para codificar (entre 1 y 24) > '); ReadLn(Clave); Write('La palabra cifrada es: ',CifrarCesar(Palabra,Clave)); ReadLn; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.


