[Guia] Iniciando en Python

Iniciado por BigBear, Julio 31, 2011, 11:34:13 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 31, 2011, 11:34:13 PM Ultima modificación: Octubre 26, 2013, 09:27:32 AM por Expermicid
[Guia] Iniciando en Python
[Autor] Doddy Hackman



-- == Indice == --


0x00 : Presentacion
0x01 : Que es Python
0x02 : Tipos basicos
0x03 : Uso de print
0x04 : Tipos de condiciones
0x05 : Colecciones
0x06 : Manejo de errores
0x07 : Variables argumentales
0x08 : Concatenacion
0x09 : Comentarios
0x10 : Entradas de teclado
0x11 : Manejo de split
0x12 : Funciones
0x13 : Listar directorios y manejo de archivos
0x14 : Manejo de sockets
0x15 : Interactuar con webs y expresiones regulares
0x16 : Descarga de archivos
0x17 : Manejo de funciones
0x18 : Creacion de un keylogger
0x19 : Compresion de archivos
0x20 : Mostrar y ocultar archivos en Windows
0x21 : Manejo de threads
0x22 : Compilar script a exe
0x23 : Bibliografia

-- =========== --


0x00 : Presentacion


Hola , aca les traigo una guia para iniciarnos en python.

Cualquier sugerencia o error en la guia deben decirmelo para mejorar.


0x01 : Que es Python


Segun wiki python es


Código: php

Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License,1 que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.


En lo personal considero que python es el lenguaje indicado para empezar a programar , tiene un gran poder en todos sentidos y
es facil de aprender a usarlo.

Para cargar un script en python , tenemos que cargar la consola ms dos , usar cd para entrar al directorio donde esta el script y teclear el nombre del script , puede ser
algo asi

Código: php

test.py


Y se carga...

Para bajar python 2.5 puden ir al siguiente enlace

Código: php

http://www.python.org/ftp/python/2.5.2/python-2.5.2.msi


Aclaracion : si queremos crear un script py tenemos que hacerlo con bloc de notas cuando ya escribimos el codigo tenemos que
ir "guardar como" , donde dice nombre ponemos "script.py" y en tipo ponemos "todos los archivos"

0x02 : Tipos basicos


Los tipos basicos en python son los siguientes :


-- == Numeros == --

Los numeros pueden ser enteros,de coma flotante y complejos

Un ejemplo de cada uno serian :

Código: php

entero = 4
coma = 12.50
complejos = 8 + 4j


-- == Cadenas de texto == --

Las cadenas son solo texto puesto entre comillas simples o dobles.

Podemos declararlas con comillas dobles de la siguiente manera

Código: php

nombre = "hola"


O con comillas simples

Código: php

nombre = 'hola'


-- == Booleanos == --


Las variables de tipo booleano solo pueden tener dos valores , los cuales son "True" o "False"
Estas valores son importantes para las condiciones y los bucles

Un ejemplo de como usar esta variable seria

Código: php

acccion = True
accionmala = False


Aclaracion : cuando se declara una variable primero se pone el nombre de la variable para despues
poner un = , despues del igual va a valor correspondiente a la variable.

0x03 : Uso de print

Ok , ahora vamos a conocer a print,esta hermosa funcion que nos ayudara a mostrar texto en pantalla
Podemos mostrar el text entre comillas dobles o simples

Un ejemplo de como usar print en texto normal seria asi :

Con comillas dobles

Código: php

print "hola"


Comillas simples

Código: php

print 'hola'


Como ven mostramos el texto que esta entre comillas , nunca debemos dejar una comilla sin cerrar
de lo contrario el codigo dara error.

Tambien podemos mostrar el contenido de las variables usando print de la siguiente forma

Usando una coma

Con comillas dobles

Código: php

valor = "mundo"
print "hola ",valor, " asqueroso"


Con comillas simples

Código: php

valor = "mundo"
print 'hola ',valor,' asqueroso'


Usando un mas


Con comillas dobles

Código: php

valor = "mundo"
print "hola "+valor+" asqueroso"


Con comillas simples

Código: php

valor = "mundo"
print 'hola '+valor+' asqueroso'



0x04 : Tipos de condiciones


Bien los tipos de condiciones usados en python son los siguientes :

-- == if-elif-else == --

Clasico en cualquier lenguaje de programacion

Código: php

if "test"=="test":
print "bien"


Tambien podemos usar if para verificar que tal cosa no sea asi simplemente poniendo un not al lado de la condicion de la siguiente
manera

Código: php

if not "test"=="test":
print "bien"


O podemos hacer asi para verificar que test no sea igual a test

Código: php

if "test"!="test":
print "no es"


Como ven controlamos que test sea igual a test , despues usamos : para marcar la condicion , si el if funciona se deja un espacio que indica que lo que el if hara si funciona
Si no dejamos ese espacio el codigo dara error con razon , si queremos usar un else con el if podemos hacer asi

Código: php

if "test"=="test":
print "bien"
else:
print "mal"


Como ven coordinamos los espacios entre el if y el else , else sirve para realizar una funcion por si el if no da positivo

Tambien podemos usar elif para tener varias condiciones de la siguiente manera

Código: php

if "test"=="te":
print "bien"
elif "test"=="tes":
print "bien"
elif "test"=="test":
print "al fin"
else:
print "nada encontrado"



-- == for == --

Bien , ahora veremos como funciona for , esta funcion sirve para ayudarnos a realizar una tarea por la veces
que queramos

Podemos usar for para realizar un conteo del uno al diez de la siguiente forma

Código: php

for number in range(1,10):
print number


Com ven usamos for para llamar a la funcion , despues ponemos el valor number que nos ayudar a declarar el resultado
del rango 1 al 10
Despues ponemos in range para aclarar el rango que vamos a usar , el rango va encerrado entre parantesis , siempre tenemos
que cerrarlo de lo contrario dara error.
Despues ponemos un : para cerrar la condicion , despues de el : dejamos un espacio para poder indicar que hara el script cuando el
for comienze a hacer lo suyo.

-- == while == --

Bien , ahora llegamos a la funcion que nos ayuda a realizar bucles , while sirve para que se ejecuta una cosa mientras el valor
aclarado en el while sea positivo

Un ejemplo seria controlando que 1 sea igual a 1

Código: php

while 1==1:
print "hola"


Como ven un maldito bucle infinito


0x05 : Colecciones


Bien , ahora pasamos a los tipos de colecciones , los tipos de colecciones que tiene python
son los siguientes :


-- == Listas == --

Para crear una lista podemos hacer asi

Código: php

listas = ["tengo","tengo","hola"]


Como ven primero ponemos el nombre de la lista , despues ponemos un igual para marcar los valores de
la lista , los cuales deben estar encerrados entre corchetes , nombrados por comillas simples o dobles separados
por una coma

Si queremos abrir una lista podemos usar for de la siguiente forma

Código: php

for list in lista:
print list


Como ven usamos for para abrir una lista e ir mostrando los valores de la lista con la variable list

Para borrar repetidos en una lista podemos hacer esto

Código: php

listas = ["tengo","tengo","hola"]
limpia = []
for fa in listas:
if fa not in limpia:
  limpia.append(fa)

print limpia


Como ven tenemos la lista "listas" con el contenido repetido varias veces , paro eso se crea una lista
nueva , la cual abre la lista "listas" para añadir dichos valores a la nueva lista llamada "limpia" , entonces si dicho valor
ya existe en la lista limpia se lo ignora quedando asi una nueva lista "limpia"

Aclaracion : append se encarga de agregar valores a la lista

O asi

Código: php

listas = ["tengo","tengo","hola"]

limpia = set(listas)

for l in limpia:
print l
   

Como ven , tenemos la misma lista con los valores repetidos entonces lo que hacemos es usar
la funcion set() con la lista "listas" , entonces el resultado de dicha funcion se almacena en una
nueva lista con el valor de "limpia"

Finalmente mostramos los valores de la lista limpia con un for.


Para agregar mas valores a lista podemos hacer asi

Código: php

listas = ["tengo","tengo","hola"]

listas.append("hola")

print listas


Como ven usamos append en la la lista en la que queremos agregar el valor "hola"

Para mostrar el primer valor de una lista podemos hacer asi

Código: php

listas = ["tengo","tengo","hola"]
print listas[0] #primer valor
print listas[1] #segundo
print listas[2] # y tercero



Para calcular la cantidad de valor usamos len() de la siguiente forma

Código: php

listas = ["tengo","tengo","hola"]
cantidad = len(listas)
print cantidad


Como ven usamos len() para calcular la cantidad de valores en la lista "listas" , entonces el
resultado de dicha funcion se guarda en la variable cantidad , la cual imprimimos por pantalla
despues de calcular.

Para editar cierto valor

Código: php

listas = ["tengo","tengo","hola"]
listas[0] = "nada"
print listas


Como ven modifique el primer valor de la lista "listas" para que sea "nada" en vez de "tengo"
, despues de dicha tarea usamos print para mostrar la lista "listas" por pantalla.


-- == Tuplas == --

Todo lo que dicho sobre las listas es igual con las tuplas , la unica diferencia entre las dos
es que las tuplas usan () en vez [] en los valores , un ejemplo seria este

Código: php

lista = ("tengo","tengo","nada")


Ademas los valores de las tuplas no cambian , en vez las listas si permiten modificar sus valores,
Otra cosa es que las tuplas son mas livianas y con ellas podemos ahorrar algo de memoria.
Para concluir las tuplas no permiten agregar valores con append a diferencia de las listas

-- == Diccionarios == --

Bien los diccionarios en python se caracterizan por tener una clave y un valor , un ejemplo de
declarar un diccionario seria.

Código: php

dicc ={"a":"b","c":"d"}


Como ven tenemos claves y valors relacionadas de la siguiente manera

Código: php

a = b
c = c


Muy simple quizas este comentario estuvo de mas , si queremos abrir un diccionario y mostrar
sus valores podemos hacer de la siguiente manera

Código: php

dicc ={"a":"b","c":"d"}
for k in dicc.keys():
print k+":"+dicc[k]


Como ven tenemos el diccionario llamado "dicc" con sus claves y valores encerrados con {} , cada clave y valor van
separados por una coma , la relacion entre una clave y un valor se hacen con un :
Despues usamos un for para abrir el diccionario , donde usamos la variable k para mostrar por pantalla la clave y el valor
correspondiente.


0x06 : Manejo de errores


Bien , llegamos a un apartado interesante de python , el manejo de errores , muchas veces podemos tener un error donde aparece
en pantalla y pumm termina el script , en python no puede pasar eso , si es que usamos a try y except.

Un ejemplo de como usarlo seria asi

Código: php

try:
sdsdsd
except:
print "error"


Como ven escribimos cualquier cosa y solo aparecio error , nada de errores raros........
Otra cosa es que debemos coordinar los espacios entre try y except de lo contrario habra un orrendo
error , si alguna vez estamos haciendo un bucle o algo asi podemos usar pass para que el error pase de alto de la siguiente
manera

Código: php

while 1:
try:
  print "soy inmortal"
  ddssd
except:
  pass


Como ven tenemos un bucle infinito y protegido contra errores raros , eso si usamos varias veces control+c el bucle se rompe
pero bueno

Tambien podemos rescatar errores cuando cargamos un archivo de la siguiente forma

Código: php

try:
lineas = open("no existo.txt", "r").readlines()
except:
print "error"


Como ven si el archivo no existe solo muestra error con el print que pusimos


0x07 : Variables argumentales


En python tambien tenemos variables argumentales para poder usarlas tenemos que llamar al modulo sys de la siguiente manera

Código: php

import sys


Como ven , con import podemos llamar a cualquier modulo existente con solo poner el nombre

Para poder usar argumentos tenemos que poner valores despues del nombre del script un ejemplo
seria asi


Código: php

import sys

print sys.argv[0] #ruta de script
print sys.argv[1] #argumento uno
print sys.argv[2] #argumento dos


Si lo cargamos de la siguiente forma

Código: php

script.py hola chau


Nos muestra lo siguiente

Código: php


C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\Warfactory I
II\manuales>test.py hola chau
C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\Warfactory I
II\manuales\test.py
hola
chau



Como ven , sys.argv[0] represente el script cargado , a partir de 1 en adelante son los argumentos
que usamos.

0x08 : Concatenacion

Para concatenar variables normales podemos hacer lo siguiente

Código: php

hola = "hola"
chau = "chau"
fin = hola+" "+chau
print fin


Como ven primero creamos dos cadenas de texto una llamada hola y otro chau , las dos con el mismo nombre y valor de cada una.
Nuestra idea era unir las dos en un sola llamada fin , entonces lo que hacemos es usar + para unirlas , despues del mas ponemos la
otra variable , como ven tambien le agregue un espacio entre las dos variables para que no se
mostraran pegadas
Finalmente usamos print para mostrar la variable final.


0x09 : Comentarios


Bien , los cometarios como en todos los lenguajes se usan para dejar notas sobre el codigo o sobre
cualquier cosa , aunque se usa frecuentemente para dejar notas explicativas sobre alguna linea de codigo

Para usar comentarios en python tenemos que usar # de la siguiente forma

Código: php

#hola


Como ven despues del # se considera como comentario en todo la linea , tambien hay que aclarar si cometemos el error de poner
un comentario sin darnos cuenta en mitad del codigo puede dar un resultado odioso

Un ejemplo seria

Código: php

for #ran in range(1,10):
print ran


Que nos da como resultado

Código: php

  File "C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\Warf
actory III\manuales\test.py", line 1
    for #ran in range(1,10):
                           ^
SyntaxError: invalid syntax


Si usamos un try y except con un pass no deberia haber ningun problema pero esto es solo un ejemplo de poner
en cualquier lugar un comentario.


0x10 : Entradas de teclado


Si queremos hacer un formulario o menu en python podemos usar raw_input() o input()
Para dar un ejemplo vamos a hacer el tipico menu de la edad y el nombre .


-- == raw_input() == --

Código: php

print "nombre : "
nombre = raw_input()
print "edad : "
edad = raw_input()
print nombre
print edad


-- == input() == --

Código: php

print "nombre : "
nombre = raw_input()
print "edad : "
edad = input()
print nombre
print edad


La unica diferencia entre los dos es que input() da error cuando lo ingresado no es de valor
numerico


0x11 : Manejo de split


Para usar split tenemos que importar el modulo re de la siguiente manera

Código: php

import re


Poniendo de ejemplo la siguiente cadena de texto

Código: php

texto = "hola mundo soy 123 chau"


Poniendo de ejemplo si lo que queremos es partir la cadena para guardar en una variable
todo lo que esta antes de "soy" podemos hacer esto

Código: php

import re

texto = "hola mundo soy 123 chau"

te = re.split("soy",texto)
print te[0]
print te[1]


Como ven el resultado es el siguiente

Código: php

hola mundo
123 chau


Podemos hacer miles de cosas pero solo estoy enseñando lo basico


0x12 : Funciones


Bueno , al fin llegue a la parte funciones , si lo queremos es crear una funcion que haga alguna cosa o simplemente
reducir codigo con una tarea repetitiva , tendremos que usar las famosas funciones

Para crear una simple tenemos que hacer lo siguiente

Código: php

def simple():
print "hola"


Como ven creamos una funcion llamada simple , la cual si es ejecutada nos imprime en pantalla hola
Entonces si queremos que esa funcion se ejecute tenemos que hacer lo siguiente.

Código: php

def simple():
print "hola"

simple()


Como ven ponemos el nombre de la funcion con () , de esa forma llamamos a la funcion creada.

Aclaracion : Antes de llamar una funcion esta tiene que estar antes de la llamada , como se muestra arriba, de lo contrario
habra un error

Entonces si lo queremos es mandar dos cadenas de texto a la funcion para que nos retone las dos podemos
hacer lo siguiente

Código: php

def simple(a,b):
return a,b

a,b = simple("a","b")
print a
print b


Como ven mandamos dos cadenas de texto encerrada entre parentesis , donde la funcion las captura con las variables a y b
Entonces la funcion retona las dos cadenas de texto donde las recibimos con los nombre de variable a y b
Despues de recibir las variables las mostramos por pantalla

Mostrando esto

Código: php

a
b


0x13 : Listar directorios y manejo de archivos


Bien primero empecemos por el manejo de directorios

Para cargar un directorio y mostrar los archivos en una lista podemos hacer esto

Código: php

import glob

dir = "C:/xampp/"
files = glob.glob(dir+"*")
for file in files:
print file


Como ven el modulo encargado de listar el directorio es glob al cual importamos al inicio del codigo
despues declaramos una cadena de texto con la ruta del directorio a cargar , entonces usamos glob para tener los archivos del
directorio , el * sirve para que liste todos los archivos , despues con la lista retonada con el nombre files , usamos for para
leerla y mostrar todos los archivos por pantalla.
   
Para verificar la existencia de un directorio podemos usar el modulo os de la siguiente manera

Código: php

if os.path.isdir("c:/xampp/"):
print "el vive"


De esa forma si el directorio existe se mostrara en pantalla "el vive"

Si queremos borrar un directorio podemos usar el modulo os de la siguiente forma

Código: php

os.rmdir("c:/test/")


Con eso borrariamos un directorio

Si queremos mover o renombrar un archivo o un directorio podemos uar el modulo shutil de la
siguiente forma

Con un directorio

Código: php

import shutil

shutil.move("c:/test/","c:/tes")


Con un archivo

Código: php

import shutil

shutil.move("file.txt","nada.txt")


Si queremos copiar un archivo o directorio podemos hacer lo mismo con el modulo shutil

Con un directorio

Código: php

import shutil

shutil.copy("c:/test/","c:/tes")


Con un archivo

Código: php

import shutil

shutil.copy("c:/test/","c:/tes")


Bien si lo que queremos es leer un archivo y mostrar su contenido en una lista podemos hacer
esto

Código: php

lineas = open("no existo.txt", "r").readlines()


COmo ven si el archivo existe podremos guardar todos las lineas del archivo abierto y guardarlas
en una lista llamada lineas

Si lo que queremos es verificar la existencia de un archivo podemos hacer lo siguiente

Código: php

if os.path.isfile("c:/leer.txt"):
print "bien"


Si el archivo existe el script mostrara en pantalla "bien"

Si lo que queremos es borrar un archivo solo tenemos que hacer esto con el modulo os

Código: php

import os

os.unlink("c:/jo.txt")


Finalmente si queremos abrir un archivo y mostrar su contenido podemos hacer lo siguiente

Código: php

lineas = open("test.py","r").readlines()

for linea in lineas:
print linea


Como ven guardamos en una lista llamada lineas todo el contenido leido en el archivo "test.py" claro lo pueden cambiar pero es solo un ejemplo ,
entonces despues abrimos la lista y mostramos linea por linea en pantalla.


0x14 : Manejo de sockets


Bien , ahora vamos a hablar de sockets , para poder usarlos debemos llamar a la libreria socket de la siguiente
forma

Código: php

import socket


Entonces imaginemos que queremos mandar una peticion GET a un servidor HTTP mediante sockets para finalmente mostrar el resultado
que no dio la pagina por nuestra peticion GET , lo podriamos hacer asi

Código: php

import socket

sock = socket.socket()
sock.connect(("localhost",80))
sock.send("GET / HTTP/1.0"+"\r\n")
codex = sock.recv(9999)
print "\n"+codex


Como podemos ver primero creamos el objeto que tiene el modulo socket para poder usar sus funciones con
el nombre sock , entonces usamos connect para poder conectarnos al servidor HTTP , primer ponemos el host y
despues el puerto , despues usamos send para enviar la peticicion , despues usamos recv para capturar la
respuesta con el nombre de codex
Finalmente mostramos por pantalla el valor de la variable codex

Ahora veamos como crear un server usando sockets en python

Un ejemplo de un server seria el siguiente

Código: php


import socket,re,os

slave = socket.socket()
slave.bind(("",666))
slave.listen(999)

a,b = slave.accept()

while True:
rex = a.recv(20)
if re.findall("getso",rex):
  z = os.name
  a.send(z)


Es una porcion de codigo de un pequeño troyano que habia hecho en python , pero vamos a analizar
la parte mas importante del codigo que es el proceso de crear la conexion.
Entonces para empezar creamos el objeto para poder usar las funciones del modulo socket con el
nombre de slave , entonces usamos bind para que nuestra propia computadora abra una conexion en el
puerto 666 , con listen() podemos capturar hacer que la conexion se mantenga.
La parte importante es slave.accept() que es donde se usa para que entren clientes al servidor
socket donde a es el cliente , entonces creamos un bucle infinito usando while , en la parte
del bucle podemos capturar todo el contenido que nos envia el cliente con recv , el contenido
se guarda como una cadena de texto llamada rex , despues usamos el modulo re para poder examinar el
contenido que nos envio el cliente , en la parte de re.findall se intenta confirmar que si en el
texto que nos envio el cliente hay algo como "getso" , si ese patron existe en el la variable
rex usamos el modulo os para enviar el nombre de nuestro sistema operativo con el nombre de una
cadena de texto llamada z , finalmente enviamos el contenido de la cadena de texto usando send


0x15 : Interactuar con webs y expresiones regulares

Bien , ahora es vamos a interactuar con webs , para poder hacer esto tenemos que llamar
al modulo urllib2 con import de la siguiente forma

Código: php

import urllib2


Entonces para poder realizar una peticion GET tenemos que hacer lo siguiente

Código: php

import urllib2
nave = urllib2.build_opener()
nave.add_header = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5')]

code = nave.open("http://127.0.0.1/sql.php").read()
print code


Bien , entonces comencemos a analizar el codigo , primero importamos el modulo necesario para
esto , despues creamos el objeto para poder usar las funciones del modulo usando la variable
nave , entonces usamos la funcion add_header para poner el navegador que estamos usando , despues
usamos open() y read() para leer el contenido de la pagina y guardar el resultado de la misma
en una cadena de texto llamada code
Finalmente mostramos por pantalla el codigo.

Si lo queremos es usar una peticion POST tenemos que hacer lo siguiente


Código: php

import urllib2
nave = urllib2.build_opener()
nave.add_header = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5')]

code = nave.open("http://127.0.0.1/post.php","te=probando&ok1=ok").read()
print code




El mismo procedimiento lo unico que cambia es que como segundo parametro en la funcion open usamos
los datos necesarios (inputs) para poder realizar el procedimiento con el metodo POST de la pagina.

Si quieren entender mejor el codigo del formulario este

Código: php

<form action='' method=POST>
<input type=text name=te value=probando>
<input type=submit name=ok1 value=okr>
</form>


Recuerden que para ordenar los datos para el formulario primero debe ir el name y despues el value tanto de cajas de texto como
el boton.

Se me estaba olvidando como usar expresiones regualares en python , para poder usarlas tenemos que
llamar al modulo re de la siguiente forma

Código: php

import re


Entonces si tenemos la siguiente cadena de texto como muestra el ejemplo

Código: php

texto = "Hola soy 123 chau"


Si lo que queremos es sacar solo el 123 tenemos que hacer lo siguiente

Código: php

import re

texto = "Hola soy 123 chau"

if (re.findall("Hola soy (.*?) chau",texto)):
nombre = re.findall("Hola soy (.*?) chau",texto)
print nombre[0]


Como ven uso (.*?) en findall con referencia a la cadena de texto para capturar lo que sea que halla en ese espacio , despues muestro el resultado
con nombre[0] , claro que si no lo encuentra no imprimira nada.


0x16 : Descarga de archivos


Esto es simple , primero debemos importar el modulo necesario de la siguiente manera

Código: php

import urllib
[code]

Despues usamos la funcion urlretrieve que trae el modulo importado para bajar el archivo con el nombre que queramos ponerle
urllib.urlretrieve("http://localhost/t.jp","foto.jpg")


Como ven solo son dos parametros , el primero es la url del archivo a bajar y despues el
nombre que llevara cuando este bajado.

Tambien hay un tercer argumento que es para mostrar el estado del archivo cuando se esta bajando un ejemplo de como usarlo es
asi

Código: php

import urllib

def proxar(a,b,c):
cantidad = a * b
print cantidad

urllib.urlretrieve("http://localhost/t.jp","foto.jpg",reporthook=proxar)



Como ven le agregamos el tercer argumento al que hace referencia a una funcion llamada
proxar , claro puede llevar cualquier nombre , despues en esa funcion calculamos el bloque a * b para
despues guardar su contenido en una cadena de texto , la cual la mostramos por pantalla.


0x17 : Manejo de funciones


Bien , me estaba olvidando de explicar como usar funciones en python , para poder crear una funcion en python tenemos que usar def , un ejemplo seria
asi

Código: php

def usar(variable):
print variable

usar("hola")



Como ven usamos def para despues poner el nombre de la funcion a usar , entre parentesis ponemos el nombre de la variable que estamos recibiendo para despues de cerrar los parentesis
poner el tipico : que hace referencia a que comenzo la funcion , despues de eso dejamos un espacio para poner lo que esa funcion hara.
Como ven usamos el nombre "hola" en usar() para poner el texto que le mandamos a la funcion.
Tambien podemos poner mas variables  como en el siguiente ejemplo

Código: php

def usar(variable,dos):
print variable
print dos

usar("hola","chau")



Como ven es lo mismo solo se le agregue otro texto a la funcion usar , y para mostrar el valor usamos la cadena de texto dos

Eso si tambien podemos retornar valores en la funciones como muestra el siguiente ejemplo

Código: php

def usar(h):
return h

re = usar("hola")

print re



Como primero ponemos la funcion donde podemos ver que usamos la variable h que vendria a ser lo que recibimos , para despues volver a mandarla como respuesta usando return , tambien
podemos mandar varios valores como en el siguiente ejemplo


Código: php

def usar(h,i):
return h,i

re,dos = usar("hola","chau")

print re
print dos




Como ven solo agregamos otra cadena de texto a la funcion usar , lo unico nuevo seria que separamos por coma las cadenas de texto que estamos por recibir despues del parentesis
, tambien vemos como separamos los valores por coma cuando estamos usando return.


0x18 : Creacion de un keylogger


Bien , para poder hacer un keylogger en python vamos a necesitar los modulos pyHook y pythoncom

Los pueden bajar de aca

Código: php

http://sourceforge.net/projects/pyhook/files/pyhook/1.5.1/pyHook-1.5.1.win32-py2.5.exe/download?use_mirror=ufpr
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20215/pywin32-215.win32-py2.5.exe/download


El segundo es pywin que trae pythoncom entre otros que resultan muy utiles.

Una vez que los tengan instalado lo que tenemos que hacer primero en el script es importar los modulos
descargados de la siguiente manera

Código: php

import pyHook,pythoncom



Cabe destacar que estos modulos facilitan mucho el trabajo en la creacion de un keylogger , podemos usar las api de windows para hacerlo
pero estos modulos simplifican mucho el trabajo.

Código: php

def toma(frase):
print frase.Key

nave = pyHook.HookManager()
nave.KeyDown = toma
nave.HookKeyboard()
pythoncom.PumpMessages()


Como ven primero ponemos la funcion donde se mandara el valor para poder ver la tecla pulsada con el nombre de frase.
Despues vemos como usamos el modulo pyhook para poder usar sus funciones a traves de la variable nave.
Como ven cuando usamos keydown marcamos el nombre de la funcion que usara para capturar el valor de la tecla pulsada


0x19 : Compresion de archivos


Bien , ahora vamos a hablar sobre como comprimir archivos , para empezar tenemos que importar
el modulo necesario el cual es

Código: php

import zipfile


Una vez importado tenemos que hacer lo siguiente para poder continuar con lo que queremos hacer

Código: php

zipa = zipfile.ZipFile("probando.zip","w",zipfile.ZIP_DEFLATED)


Como ven creamos el archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con la variable zipa , la cual nos va ayudar a agregar archivos de la siguiente forma

Código: php

zipa.write("C:/leer.txt")


Como ven agregamos el archivo leer.txt a al archivo comprimido , podemos agregar todos los que queramos , pero si ponemos mal la ruta del
archivo que queremos comprimir vamos a arruinar el script.

Finalmente cuando terminemos de usar el archivo comprimido debemos hacer lo siguiente

Código: php

zipa.close()



0x20 : Mostrar y ocultar archivos en Windows


Bien , ahora veremos como esconder archivos en Windows , para empezar necesitamos importar dos modulos necesarios

Código: php

import win32api,win32con


Los podemos bajar de aca (pywin)

Código: php

http://sourceforge.net/projects/pywin32/files/pywin32/Build%20215/pywin32-215.win32-py2.5.exe/download


Entonces hagamos de cuenta de que tenemos un archivo llamado c:/leer.txt y lo que queremos esconder , entonces tendriamos que
hacer esto

Código: php

win32api.SetFileAttributes("c:/leer.txt",win32con.FILE_ATTRIBUTE_HIDDEN)


Si lo probamos con un archivo en serio veremos que el archivo no esta , pero que pasa si qureremos ponerle el atributo normal para    
que el archivo no se siga escondiendo mas , entonces tenemos que hacer lo siguiente

Código: php

win32api.SetFileAttributes("c:/leer.txt",win32con.FILE_ATTRIBUTE_NORMAL)


0x21 : Manejo de threads

Bien , no conozco mucho sobre threads , pero me siempre me ha surgido el caso de tener dos cosas o funciones activas al mismo tiempo , eso es lo que voy
a tratar de enseñar.
Para empezar tenemos que importar el modulo necesario de la siguiente manera

Código: php

import threading


Entonces imaginemos que necesitamos dos funciones las cuales una muestre hola y la otra chau usando print.
Entonces hariamos algo asi

Código: php


def uno():
while 1:
  print "hola"

def probardos():
while 1:
  print "chau"

t1 = threading.Thread(target=uno)
t1.start()

t2 = threading.Thread(target=probardos)
t2.start()


Como podemos ver usamos dos funciones , una llamada uno y la otra probardos , entonces usamos las variables t1 y t2 para poder usar las funciones de thread ,
tambien podemos ver que en target ponemos el nombre de la funcion a usar en thread , tambien podemos ver que en el contenido de cada funcion usamos while para poder mostrar
enternamente un print al mismo tiempo que el otro.
Eso si , siempre tenemos que usar start() de lo contrario la funcion nunca empezarara con su trabajo


0x22 : Compilar script a exe


Para poder compilar scripts en python a exe necesitamos bajar py2exe , lo podemos bajar de aca

Código: php

http://sourceforge.net/projects/py2exe/files/py2exe/0.6.5/py2exe-0.6.5.win32-py2.5.exe/download


Entonces una vez que lo tengamos instalado tenemos que crear un archivo llamado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con el siguiente contenido

Código: php

from distutils.core import setup
import py2exe

setup(console=["test.py"])


Como ven importamos dos modulos uno llamado setup y el otro py2exe , despues usamos una funcion llamada setup , la cual tiene un argumento llamado console , como vemos tenemos
entre comillas un archivo llamado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ese es el script de ejemplo que pretendo compilar a exe , eso si , si quieren compilar el suyo tienen que poner el verdadero nombre
Entonces para compilar el script tenemos que cargar una consola msdos , despues usen cd para ir al directorio donde estan los dos scripts (setup.py y No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)  , para finalmente ejecutar lo siguiente

Código: php

setup.py py2exe


Como ven usamos un argumento llamado py2exe el cual es obligatorio para compilar el script , en mi caso me dio el siguiente resultado

Código: php

Microsoft Windows [Versión 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Usuario>dir
El volumen de la unidad C no tiene etiqueta.
El número de serie del volumen es: 3CB0-02D7

Directorio de C:\Users\Usuario

17/07/2011  06:11 a.m.    <DIR>          .
17/07/2011  06:11 a.m.    <DIR>          ..
15/07/2011  11:20 p.m.    <DIR>          .idlerc
19/04/2011  11:16 a.m.    <DIR>          Contacts
18/04/2011  08:34 p.m.    <DIR>          Desktop
19/04/2011  11:16 a.m.    <DIR>          Links
19/04/2011  11:16 a.m.    <DIR>          Saved Games
19/04/2011  11:16 a.m.    <DIR>          Searches
17/07/2011  06:11 a.m.    <DIR>          test
               0 archivos              0 bytes
               9 dirs  141.737.705.472 bytes libres

C:\Users\Usuario>cd test

C:\Users\Usuario\test>dir
El volumen de la unidad C no tiene etiqueta.
El número de serie del volumen es: 3CB0-02D7

Directorio de C:\Users\Usuario\test

17/07/2011  06:11 a.m.    <DIR>          .
17/07/2011  06:11 a.m.    <DIR>          ..
17/07/2011  06:05 a.m.                92 setup.py
17/07/2011  05:58 a.m.               208 test.py
               2 archivos            300 bytes
               2 dirs  141.737.705.472 bytes libres

C:\Users\Usuario\test>setup.py py2exe
running py2exe
creating C:\Users\Usuario\test\build
creating C:\Users\Usuario\test\build\bdist.win32
creating C:\Users\Usuario\test\build\bdist.win32\winexe
creating C:\Users\Usuario\test\build\bdist.win32\winexe\collect-2.5
creating C:\Users\Usuario\test\build\bdist.win32\winexe\bundle-2.5
creating C:\Users\Usuario\test\build\bdist.win32\winexe\temp
creating C:\Users\Usuario\test\dist
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Python25\lib\StringIO.py to StringIO.pyc
byte-compiling C:\Python25\lib\UserDict.py to UserDict.pyc
byte-compiling C:\Python25\lib\__future__.py to __future__.pyc
byte-compiling C:\Python25\lib\_strptime.py to _strptime.pyc
byte-compiling C:\Python25\lib\_threading_local.py to _threading_local.pyc
byte-compiling C:\Python25\lib\atexit.py to atexit.pyc
byte-compiling C:\Python25\lib\base64.py to base64.pyc
byte-compiling C:\Python25\lib\calendar.py to calendar.pyc
byte-compiling C:\Python25\lib\codecs.py to codecs.pyc
byte-compiling C:\Python25\lib\copy.py to copy.pyc
byte-compiling C:\Python25\lib\copy_reg.py to copy_reg.pyc
byte-compiling C:\Python25\lib\dummy_thread.py to dummy_thread.pyc
byte-compiling C:\Python25\lib\encodings\__init__.py to encodings\__init__.pyc
creating C:\Users\Usuario\test\build\bdist.win32\winexe\collect-2.5\encodings
byte-compiling C:\Python25\lib\encodings\aliases.py to encodings\aliases.pyc
byte-compiling C:\Python25\lib\encodings\ascii.py to encodings\ascii.pyc
byte-compiling C:\Python25\lib\encodings\base64_codec.py to encodings\base64_cod
ec.pyc
byte-compiling C:\Python25\lib\encodings\big5.py to encodings\big5.pyc
byte-compiling C:\Python25\lib\encodings\big5hkscs.py to encodings\big5hkscs.pyc

byte-compiling C:\Python25\lib\encodings\bz2_codec.py to encodings\bz2_codec.pyc

byte-compiling C:\Python25\lib\encodings\charmap.py to encodings\charmap.pyc
byte-compiling C:\Python25\lib\encodings\cp037.py to encodings\cp037.pyc
byte-compiling C:\Python25\lib\encodings\cp1006.py to encodings\cp1006.pyc
byte-compiling C:\Python25\lib\encodings\cp1026.py to encodings\cp1026.pyc
byte-compiling C:\Python25\lib\encodings\cp1140.py to encodings\cp1140.pyc
byte-compiling C:\Python25\lib\encodings\cp1250.py to encodings\cp1250.pyc
byte-compiling C:\Python25\lib\encodings\cp1251.py to encodings\cp1251.pyc
byte-compiling C:\Python25\lib\encodings\cp1252.py to encodings\cp1252.pyc
byte-compiling C:\Python25\lib\encodings\cp1253.py to encodings\cp1253.pyc
byte-compiling C:\Python25\lib\encodings\cp1254.py to encodings\cp1254.pyc
byte-compiling C:\Python25\lib\encodings\cp1255.py to encodings\cp1255.pyc
byte-compiling C:\Python25\lib\encodings\cp1256.py to encodings\cp1256.pyc
byte-compiling C:\Python25\lib\encodings\cp1257.py to encodings\cp1257.pyc
byte-compiling C:\Python25\lib\encodings\cp1258.py to encodings\cp1258.pyc
byte-compiling C:\Python25\lib\encodings\cp424.py to encodings\cp424.pyc
byte-compiling C:\Python25\lib\encodings\cp437.py to encodings\cp437.pyc
byte-compiling C:\Python25\lib\encodings\cp500.py to encodings\cp500.pyc
byte-compiling C:\Python25\lib\encodings\cp737.py to encodings\cp737.pyc
byte-compiling C:\Python25\lib\encodings\cp775.py to encodings\cp775.pyc
byte-compiling C:\Python25\lib\encodings\cp850.py to encodings\cp850.pyc
byte-compiling C:\Python25\lib\encodings\cp852.py to encodings\cp852.pyc
byte-compiling C:\Python25\lib\encodings\cp855.py to encodings\cp855.pyc
byte-compiling C:\Python25\lib\encodings\cp856.py to encodings\cp856.pyc
byte-compiling C:\Python25\lib\encodings\cp857.py to encodings\cp857.pyc
byte-compiling C:\Python25\lib\encodings\cp860.py to encodings\cp860.pyc
byte-compiling C:\Python25\lib\encodings\cp861.py to encodings\cp861.pyc
byte-compiling C:\Python25\lib\encodings\cp862.py to encodings\cp862.pyc
byte-compiling C:\Python25\lib\encodings\cp863.py to encodings\cp863.pyc
byte-compiling C:\Python25\lib\encodings\cp864.py to encodings\cp864.pyc
byte-compiling C:\Python25\lib\encodings\cp865.py to encodings\cp865.pyc
byte-compiling C:\Python25\lib\encodings\cp866.py to encodings\cp866.pyc
byte-compiling C:\Python25\lib\encodings\cp869.py to encodings\cp869.pyc
byte-compiling C:\Python25\lib\encodings\cp874.py to encodings\cp874.pyc
byte-compiling C:\Python25\lib\encodings\cp875.py to encodings\cp875.pyc
byte-compiling C:\Python25\lib\encodings\cp932.py to encodings\cp932.pyc
byte-compiling C:\Python25\lib\encodings\cp949.py to encodings\cp949.pyc
byte-compiling C:\Python25\lib\encodings\cp950.py to encodings\cp950.pyc
byte-compiling C:\Python25\lib\encodings\euc_jis_2004.py to encodings\euc_jis_20
04.pyc
byte-compiling C:\Python25\lib\encodings\euc_jisx0213.py to encodings\euc_jisx02
13.pyc
byte-compiling C:\Python25\lib\encodings\euc_jp.py to encodings\euc_jp.pyc
byte-compiling C:\Python25\lib\encodings\euc_kr.py to encodings\euc_kr.pyc
byte-compiling C:\Python25\lib\encodings\gb18030.py to encodings\gb18030.pyc
byte-compiling C:\Python25\lib\encodings\gb2312.py to encodings\gb2312.pyc
byte-compiling C:\Python25\lib\encodings\gbk.py to encodings\gbk.pyc
byte-compiling C:\Python25\lib\encodings\hex_codec.py to encodings\hex_codec.pyc

byte-compiling C:\Python25\lib\encodings\hp_roman8.py to encodings\hp_roman8.pyc

byte-compiling C:\Python25\lib\encodings\hz.py to encodings\hz.pyc
byte-compiling C:\Python25\lib\encodings\idna.py to encodings\idna.pyc
byte-compiling C:\Python25\lib\encodings\iso2022_jp.py to encodings\iso2022_jp.p
yc
byte-compiling C:\Python25\lib\encodings\iso2022_jp_1.py to encodings\iso2022_jp
_1.pyc
byte-compiling C:\Python25\lib\encodings\iso2022_jp_2.py to encodings\iso2022_jp
_2.pyc
byte-compiling C:\Python25\lib\encodings\iso2022_jp_2004.py to encodings\iso2022
_jp_2004.pyc
byte-compiling C:\Python25\lib\encodings\iso2022_jp_3.py to encodings\iso2022_jp
_3.pyc
byte-compiling C:\Python25\lib\encodings\iso2022_jp_ext.py to encodings\iso2022_
jp_ext.pyc
byte-compiling C:\Python25\lib\encodings\iso2022_kr.py to encodings\iso2022_kr.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_1.py to encodings\iso8859_1.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_10.py to encodings\iso8859_10.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_11.py to encodings\iso8859_11.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_13.py to encodings\iso8859_13.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_14.py to encodings\iso8859_14.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_15.py to encodings\iso8859_15.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_16.py to encodings\iso8859_16.p
yc
byte-compiling C:\Python25\lib\encodings\iso8859_2.py to encodings\iso8859_2.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_3.py to encodings\iso8859_3.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_4.py to encodings\iso8859_4.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_5.py to encodings\iso8859_5.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_6.py to encodings\iso8859_6.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_7.py to encodings\iso8859_7.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_8.py to encodings\iso8859_8.pyc

byte-compiling C:\Python25\lib\encodings\iso8859_9.py to encodings\iso8859_9.pyc

byte-compiling C:\Python25\lib\encodings\johab.py to encodings\johab.pyc
byte-compiling C:\Python25\lib\encodings\koi8_r.py to encodings\koi8_r.pyc
byte-compiling C:\Python25\lib\encodings\koi8_u.py to encodings\koi8_u.pyc
byte-compiling C:\Python25\lib\encodings\latin_1.py to encodings\latin_1.pyc
byte-compiling C:\Python25\lib\encodings\mac_arabic.py to encodings\mac_arabic.p
yc
byte-compiling C:\Python25\lib\encodings\mac_centeuro.py to encodings\mac_centeu
ro.pyc
byte-compiling C:\Python25\lib\encodings\mac_croatian.py to encodings\mac_croati
an.pyc
byte-compiling C:\Python25\lib\encodings\mac_cyrillic.py to encodings\mac_cyrill
ic.pyc
byte-compiling C:\Python25\lib\encodings\mac_farsi.py to encodings\mac_farsi.pyc

byte-compiling C:\Python25\lib\encodings\mac_greek.py to encodings\mac_greek.pyc

byte-compiling C:\Python25\lib\encodings\mac_iceland.py to encodings\mac_iceland
.pyc
byte-compiling C:\Python25\lib\encodings\mac_latin2.py to encodings\mac_latin2.p
yc
byte-compiling C:\Python25\lib\encodings\mac_roman.py to encodings\mac_roman.pyc

byte-compiling C:\Python25\lib\encodings\mac_romanian.py to encodings\mac_romani
an.pyc
byte-compiling C:\Python25\lib\encodings\mac_turkish.py to encodings\mac_turkish
.pyc
byte-compiling C:\Python25\lib\encodings\mbcs.py to encodings\mbcs.pyc
byte-compiling C:\Python25\lib\encodings\palmos.py to encodings\palmos.pyc
byte-compiling C:\Python25\lib\encodings\ptcp154.py to encodings\ptcp154.pyc
byte-compiling C:\Python25\lib\encodings\punycode.py to encodings\punycode.pyc
byte-compiling C:\Python25\lib\encodings\quopri_codec.py to encodings\quopri_cod
ec.pyc
byte-compiling C:\Python25\lib\encodings\raw_unicode_escape.py to encodings\raw_
unicode_escape.pyc
byte-compiling C:\Python25\lib\encodings\rot_13.py to encodings\rot_13.pyc
byte-compiling C:\Python25\lib\encodings\shift_jis.py to encodings\shift_jis.pyc

byte-compiling C:\Python25\lib\encodings\shift_jis_2004.py to encodings\shift_ji
s_2004.pyc
byte-compiling C:\Python25\lib\encodings\shift_jisx0213.py to encodings\shift_ji
sx0213.pyc
byte-compiling C:\Python25\lib\encodings\string_escape.py to encodings\string_es
cape.pyc
byte-compiling C:\Python25\lib\encodings\tis_620.py to encodings\tis_620.pyc
byte-compiling C:\Python25\lib\encodings\undefined.py to encodings\undefined.pyc

byte-compiling C:\Python25\lib\encodings\unicode_escape.py to encodings\unicode_
escape.pyc
byte-compiling C:\Python25\lib\encodings\unicode_internal.py to encodings\unicod
e_internal.pyc
byte-compiling C:\Python25\lib\encodings\utf_16.py to encodings\utf_16.pyc
byte-compiling C:\Python25\lib\encodings\utf_16_be.py to encodings\utf_16_be.pyc

byte-compiling C:\Python25\lib\encodings\utf_16_le.py to encodings\utf_16_le.pyc

byte-compiling C:\Python25\lib\encodings\utf_7.py to encodings\utf_7.pyc
byte-compiling C:\Python25\lib\encodings\utf_8.py to encodings\utf_8.pyc
byte-compiling C:\Python25\lib\encodings\utf_8_sig.py to encodings\utf_8_sig.pyc

byte-compiling C:\Python25\lib\encodings\uu_codec.py to encodings\uu_codec.pyc
byte-compiling C:\Python25\lib\encodings\zlib_codec.py to encodings\zlib_codec.p
yc
byte-compiling C:\Python25\lib\getopt.py to getopt.pyc
byte-compiling C:\Python25\lib\gettext.py to gettext.pyc
byte-compiling C:\Python25\lib\linecache.py to linecache.pyc
byte-compiling C:\Python25\lib\locale.py to locale.pyc
byte-compiling C:\Python25\lib\macpath.py to macpath.pyc
byte-compiling C:\Python25\lib\ntpath.py to ntpath.pyc
byte-compiling C:\Python25\lib\optparse.py to optparse.pyc
byte-compiling C:\Python25\lib\os.py to os.pyc
byte-compiling C:\Python25\lib\os2emxpath.py to os2emxpath.pyc
byte-compiling C:\Python25\lib\popen2.py to popen2.pyc
byte-compiling C:\Python25\lib\posixpath.py to posixpath.pyc
byte-compiling C:\Python25\lib\quopri.py to quopri.pyc
byte-compiling C:\Python25\lib\random.py to random.pyc
byte-compiling C:\Python25\lib\re.py to re.pyc
byte-compiling C:\Python25\lib\repr.py to repr.pyc
byte-compiling C:\Python25\lib\sre.py to sre.pyc
byte-compiling C:\Python25\lib\sre_compile.py to sre_compile.pyc
byte-compiling C:\Python25\lib\sre_constants.py to sre_constants.pyc
byte-compiling C:\Python25\lib\sre_parse.py to sre_parse.pyc
byte-compiling C:\Python25\lib\stat.py to stat.pyc
byte-compiling C:\Python25\lib\string.py to string.pyc
byte-compiling C:\Python25\lib\stringprep.py to stringprep.pyc
byte-compiling C:\Python25\lib\struct.py to struct.pyc
byte-compiling C:\Python25\lib\textwrap.py to textwrap.pyc
byte-compiling C:\Python25\lib\threading.py to threading.pyc
byte-compiling C:\Python25\lib\token.py to token.pyc
byte-compiling C:\Python25\lib\tokenize.py to tokenize.pyc
byte-compiling C:\Python25\lib\traceback.py to traceback.pyc
byte-compiling C:\Python25\lib\types.py to types.pyc
byte-compiling C:\Python25\lib\warnings.py to warnings.pyc
byte-compiling C:\Users\Usuario\test\build\bdist.win32\winexe\temp\bz2.py to bz2
.pyc
byte-compiling C:\Users\Usuario\test\build\bdist.win32\winexe\temp\unicodedata.p
y to unicodedata.pyc
*** copy extensions ***
copying C:\Python25\DLLs\bz2.pyd -> C:\Users\Usuario\test\dist
copying C:\Python25\DLLs\unicodedata.pyd -> C:\Users\Usuario\test\dist
*** copy dlls ***
copying C:\Windows\system32\MSVCR71.dll -> C:\Users\Usuario\test\dist
copying C:\Python25\w9xpopen.exe -> C:\Users\Usuario\test\dist
copying C:\Windows\system32\python25.dll -> C:\Users\Usuario\test\dist
setting sys.winver for 'C:\Users\Usuario\test\dist\python25.dll' to 'py2exe'
copying C:\Python25\lib\site-packages\py2exe\run.exe -> C:\Users\Usuario\test\di
st\test.exe

*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.

Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.

   ADVAPI32.dll - C:\Windows\system32\ADVAPI32.dll
   USER32.dll - C:\Windows\system32\USER32.dll
   SHELL32.dll - C:\Windows\system32\SHELL32.dll
   KERNEL32.dll - C:\Windows\system32\KERNEL32.dll


C:\Users\Usuario\test>


Eso seria todo


0x23 : Bibliografia


PDF Python para todos




Gracias men, muy bueno, si pudieses hacer uno mas detallado de la web y zip, con el  keyloger seriá muy bueno, xDDDDD


grax

no tengo tiempo fortil , temporalmente esta es la version final del tuto xDD

Siempre es bueno leer guias creadas por programadores constantes y eficientes :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Siempre es bueno leer guias creadas por programadores constantes y eficientes :)

entonces no vas a leer mi guia ?  xDD.

Impresionante Doddy, magnífico trabajo, me lo leeré bro, un saludo.
Twitter: @The_Pr0ph3t
[email protected]