atentos a este articulo
Practicas en diferentes lenguajes, comunicación con hardware, proyectos electrónica, todo lo que me de la gana de hacer!!
Buscar este blog
julio 16, 2011
julio 08, 2011
Icarus 0.1.6a-RC1
Ya esta lista la versión 0.1.6a-RC1 de Icarus teniendo algunos cambios en su gui como el cambio del menú del clic derecho del tray a:
Como desintalar:
Para desinstalar se debe dirigir a la carpeta descomprimida y tipear el siguiente comando
- Añadir fondo de pantalla (icarus_fondo v0.1-alfa siempre en modo scale)
- Seleccionar demonio (integra a "activar/desactivar demonio")
- Tonar captura de pantalla (icarus_pantallazo v0.2)
- Acerca de
- Salir
En este punto no se va a tener mucho cambios en la interfaz gráfica, ni ningún demonio; la versión final sale el 15 julio de este anio. Se va a comenzar a trabajar en las librerías para poder dar el salto a la versión 0.1.7a
Como instalar:
Después de descargar se descomprime y se dirige a la carpeta desde un terminal y se tipea las siguientes ordenes.
sudo python setup.py install
bash ./icarus_data.sh
Como desintalar:
Para desinstalar se debe dirigir a la carpeta descomprimida y tipear el siguiente comando
sudo python setup.py uninstall
julio 07, 2011
Desacivar la respuesta del ping de nuestra maquina
pagina del post original
Este es un pequeño truco que tenía anotado en la libreta y comparto con todos. Es muy sencillo y con cierta utilidad, por ejemplo si queremos pasar desapercibidos en una red. Muchas veces el primer paso para un ataque es buscar la presencia de host vulnerables en la red usando ping y un rango de direcciones. Este truco no te hace mas segura la conexión, pero con un poco de suerte puede que pasen de largo y no intenten otros métodos.
Para desactivar la respuesta a un Ping:
Para volver a activarlo:
Si queremos hacerlo permanente debemos editar /etc/sysctl.conf y añadir:
Fuente: http://www.ubuntucommand.com/
Este es un pequeño truco que tenía anotado en la libreta y comparto con todos. Es muy sencillo y con cierta utilidad, por ejemplo si queremos pasar desapercibidos en una red. Muchas veces el primer paso para un ataque es buscar la presencia de host vulnerables en la red usando ping y un rango de direcciones. Este truco no te hace mas segura la conexión, pero con un poco de suerte puede que pasen de largo y no intenten otros métodos.
Para desactivar la respuesta a un Ping:
echo 1 >> /proc/sys/net/ipv4/icmp_echo_ignore_all
Para volver a activarlo:
echo 0 >> /proc/sys/net/ipv4/icmp_echo_ignore_all
Si queremos hacerlo permanente debemos editar /etc/sysctl.conf y añadir:
net.ipv4.conf.icmp_echo_ignore_all = 1
Fuente: http://www.ubuntucommand.com/
julio 05, 2011
Zeya - streaming de musica
Zeya
"Zeya is a media player that lets you bring your music to any computer with a web browser.
The client runs in any browser that supports the HTML 5 draft standard technologies— no Flash needed. No Silverlight, no applets, no plugins, no external players.
Zeya is free software. You may use it under the terms of the GNU Affero GPL, v.3 or (at your option) any later version." Tomado de la pagina del proyecto
Dependencias:
- Python 2.5+ (2.6+ recommended)
- oggenc
- mpg123 (optional— for decoding MP3 files)
- flac (optional— for decoding FLAC files)
Para instalarlo se tipea en un terminal lo siguiente:
sudo apt-get install zeya
ya instalado se ejecuta de la siguiente manera:
zeya --path=/home/badanni/Music/ --port=8888 --bitrate=128
Aca una imagen ya funcionando:
julio 04, 2011
-censurado-
Me cargue el openbox y las X en mi maquina de nuevo voy a volver a instalar todo desde cero respaldando todos los programas y libros, trabajo largo
junio 29, 2011
Icarus 0.1.6a va por buen camino
Se anade un lanzado de cuatro botones con iconos, se mejora el reloj y el capturador de pantalla y correcciones menores, ahora todo si es widgets en pantalla
tomar capturas de pantalla con python - parte 2
Se anadio la captura por recuadro, esto quiere decir que se puede tomar solo un area de la pantalla sin tener que tomar la captura de toda la pantalla dando clic en la hoja que tiene la ventana.
import pygtk; pygtk.require('2.0')
import gtk
import os, datetime
import sys
version="0.2"
data = [
"16 16 3 1",
" c None",
". c #000000",
"X c #FFFFFF",
" ",
" ...... ",
" .XXX.X. ",
" .XXX.XX. ",
" .XXX.XXX. ",
" .XXX..... ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" ......... ",
" ",
" "
]
class icarus_pantallazo:
def main(self):
root = gtk.gdk.get_default_root_window();
rootwidth, rootheight = root.get_size();
current_dt=datetime.datetime.now()
dia_numero= "%02d" % current_dt.day
meses_numero="%02d" % current_dt.month
anio=str(current_dt.year)
hora_24="%02d" % current_dt.hour
minuto="%02d" % current_dt.minute
segundo="%02d" % current_dt.second
self.fecha="_"+dia_numero+"-"+meses_numero+"-"+anio+"_"+hora_24+":"+minuto+":"+segundo
#
self.pix = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 1, 8, rootwidth, rootheight);
self.pix.get_from_drawable(root, root.get_colormap(), 0, 0, 0, 0, rootwidth, rootheight);
def guardar(self,modo):
if modo==1:
#crear ventana para tomar el recuadro
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_decorated(True)
self.window.connect("delete_event", self.close_application)
self.window.set_events(self.window.get_events() | gtk.gdk.BUTTON_PRESS_MASK)
self.window.connect("button_press_event", self.press_aplication)
self.window.show()
pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(self.window.window, None, data)
self.image = gtk.Image()
self.image.set_from_pixmap(pixmap, mask)
self.image.show()
# To display the image, we use a fixed widget to place the image
self.fixed = gtk.Fixed()
self.fixed.set_size_request(50,50) #16,16
self.fixed.put(self.image, 0, 0)
self.window.add(self.fixed)
self.fixed.show()
self.window.shape_combine_mask(mask, 0, 0)
gtk.main()
#
if self.pix!=None:
home = os.environ['HOME']
self.pix.save(home+"/pantallazo"+self.fecha+".png", "png")
print "Tomo foto"
return 0
return 1
def press_aplication(self, widget, event):
#print event
if event.x<=16 and event.y<=16 and event.button==1:
dimension=self.window.get_size()
posicion=self.window.get_position()
pix_aux = self.pix.subpixbuf(posicion[0],posicion[1], dimension[0], dimension[1])
self.pix=pix_aux
self.window.hide()
gtk.main_quit()
#self.pix=None
return 0
def close_application(self, widget, event, data=None):
gtk.main_quit()
self.pix=None
#del self.window
return gtk.FALSE
if __name__ == '__main__':
a=icarus_pantallazo()
a.main()
if sys.argv[1].lower()=="completa":
a.guardar(0)
elif sys.argv[1].lower()=="recuadro":
a.guardar(1)
else:
print "parametro incorrecto"
$python archivo.py recuadro "toma la captura del area marcada por la ventana"
o
$python archivo.py completa "Toma la captura completa"
Descargar despues de descargar anadir la extension py
import pygtk; pygtk.require('2.0')
import gtk
import os, datetime
import sys
version="0.2"
data = [
"16 16 3 1",
" c None",
". c #000000",
"X c #FFFFFF",
" ",
" ...... ",
" .XXX.X. ",
" .XXX.XX. ",
" .XXX.XXX. ",
" .XXX..... ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" .XXXXXXX. ",
" ......... ",
" ",
" "
]
class icarus_pantallazo:
def main(self):
root = gtk.gdk.get_default_root_window();
rootwidth, rootheight = root.get_size();
current_dt=datetime.datetime.now()
dia_numero= "%02d" % current_dt.day
meses_numero="%02d" % current_dt.month
anio=str(current_dt.year)
hora_24="%02d" % current_dt.hour
minuto="%02d" % current_dt.minute
segundo="%02d" % current_dt.second
self.fecha="_"+dia_numero+"-"+meses_numero+"-"+anio+"_"+hora_24+":"+minuto+":"+segundo
#
self.pix = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 1, 8, rootwidth, rootheight);
self.pix.get_from_drawable(root, root.get_colormap(), 0, 0, 0, 0, rootwidth, rootheight);
def guardar(self,modo):
if modo==1:
#crear ventana para tomar el recuadro
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_decorated(True)
self.window.connect("delete_event", self.close_application)
self.window.set_events(self.window.get_events() | gtk.gdk.BUTTON_PRESS_MASK)
self.window.connect("button_press_event", self.press_aplication)
self.window.show()
pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(self.window.window, None, data)
self.image = gtk.Image()
self.image.set_from_pixmap(pixmap, mask)
self.image.show()
# To display the image, we use a fixed widget to place the image
self.fixed = gtk.Fixed()
self.fixed.set_size_request(50,50) #16,16
self.fixed.put(self.image, 0, 0)
self.window.add(self.fixed)
self.fixed.show()
self.window.shape_combine_mask(mask, 0, 0)
gtk.main()
#
if self.pix!=None:
home = os.environ['HOME']
self.pix.save(home+"/pantallazo"+self.fecha+".png", "png")
print "Tomo foto"
return 0
return 1
def press_aplication(self, widget, event):
#print event
if event.x<=16 and event.y<=16 and event.button==1:
dimension=self.window.get_size()
posicion=self.window.get_position()
pix_aux = self.pix.subpixbuf(posicion[0],posicion[1], dimension[0], dimension[1])
self.pix=pix_aux
self.window.hide()
gtk.main_quit()
#self.pix=None
return 0
def close_application(self, widget, event, data=None):
gtk.main_quit()
self.pix=None
#del self.window
return gtk.FALSE
if __name__ == '__main__':
a=icarus_pantallazo()
a.main()
if sys.argv[1].lower()=="completa":
a.guardar(0)
elif sys.argv[1].lower()=="recuadro":
a.guardar(1)
else:
print "parametro incorrecto"
$python archivo.py recuadro "toma la captura del area marcada por la ventana"
o
$python archivo.py completa "Toma la captura completa"
Descargar despues de descargar anadir la extension py
junio 25, 2011
Icarus 0.1.5b
Mejorado Icarus ya dispone de una interfaz grafica para realizar las acciones
- Activar
- Desactivar
- Seleccionar demonio
- Pantallazo
- Salir
Para poder usarlo es necesario dar click derecho en el tray en el icono de Icarus que tiene la siguiente forma
Demonios anadidos:
- Pantallazo
- Aviso de bataria baja
- wallv2 - Widgets Pasivo
Solo es necesario correrlo una vez y listo queda funcionando asi se cierre Icarus
Aca una imagen del about del programa.

Como instalar
se lo instala descomprimiendo la archivo y ejecutando el archivo setup.py de la siguiente manera:
$sudo python setup install
para desintalar
$sudo python setup.py uninstall
todo el codigo esta bajo gplv2
Descargar
link
junio 20, 2011
Pasar de pdf a Html por consola
Primero se tiene que instalar el siguiente paquete (realizado en ubuntu 11.04 server)
$ sudo apt-get install poppler-utils
$ sudo apt-get install poppler-utils
esto nos instalara las siguientes herramientas
{pdftoabw pdftohtml pdftoppm pdftops pdftotext }
de la cual vamos a usar "pdftohtml"de la siguiente manera
junio 19, 2011
SMF MELI
Como crear un foro de una manera simple con la explicacion de metacortex de http://www.forosdelweb.com/ el articulo de el lo encuentras en AQUI al final del articulo encontraran una implementacion del mismo perdon la tardanza pero me olvide de hacer el articulo después de terminar el foro pero que son mas de 100 días de retraso por ese motivo utilizo el articulo de metacortex la pereza e grande...
Aquí un ejemplo ya instalado en nuestro servidor
http://www.softwarelibrespe.org/foro/index.php
Cifrado de Vigenere - parte 2
se añadieron diccionarios del tipo siguiente tipo
>>diccionario={"hola":"que fue",0:"cero""A":"letra A"}
>>print diccionario["A"]
"letra A"
>>print diccionario[0]
"cero"
para el abecedario y la palabra clave teniendo mas de una que puede ser escogida aleatoriamente o segun su clave en el diccionario
import random
letras_diccionario={0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z',26:'1', 27:'2', 28:'3', 29:'4', 30:'5', 31:'6', 32:'7', 33:'8', 34:'9', 35:'0',36:' '}
palabra_clave={"facebook":"nadie es perfecto y yo soy nadie","correo":"la unica lucha que verdaderamente se pierde es la que se abandona","notas":"la casa es de todos","programas":"qwerty ytrewq danny ynnad"}
def codificacion(palabra_clave,mensaje):
mensaje_codificado=" "
mensaje=mensaje.upper()
palabra_clave=palabra_clave.upper()
longitud=len(mensaje)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_quiero=mensaje[i]
#inicial='Y'
#letra_quiero='P'
mensaje_codificado+=vigerene(inicial,letra_quiero)
return mensaje_codificado.lstrip() #Quita el espacio del comienzo
def vigerene(a1,a2,opcion=0):
#a1 letra de la palabra clave y a2 la letra real
inicial=letra_numero(a1)
letra_quiero=letra_numero(a2)
letras=letras_diccionario.values() #genera la lista de valores
letras1=letras[inicial:]+letras[:inicial]
if opcion==0:
return letras1[letra_quiero]
else:
return letras1
def recuperar_virgerene(palabra_clave,mensaje_codificado):
mensaje_original=" "
letras=letras_diccionario.values() #genera la lista de valores
pocision_original=0
longitud=len(mensaje_codificado)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave.upper()*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_resultado=mensaje_codificado[i]
letras1=vigerene(inicial,'Z',opcion=1) #pongo uno ya que no tiene importancion
pocision_original=letras1.index(letra_resultado)
mensaje_original+=letras[pocision_original]
return mensaje_original.lstrip() #Quita el espacio del comienzo
#ord de numero a letra son comandos
#chr de letra a numero son comandos
def letra_numero(letra):
clave=letras_diccionario.values()
return clave.index(letra)
def numero_letra(numero):
return letras_diccionario[numero]
def ciclo_pista (valor_a_probar,numero):
pista="36A81"
aux=333
valor_a_probar1=valor_a_probar
while len(str(aux))>1:
aux=0
for i in range(len(valor_a_probar1)):
aux=aux+int(valor_a_probar1[i])
valor_a_probar1=str(aux)
if aux==numero:
pista=valor_a_probar
else:
valor_a_probar="%05d" % random.randint(1,99999)
pista=ciclo_pista(valor_a_probar,numero)
return pista
def generar_pista(numero):
#buscar una manera de generar un numera de 5 digitos que sumandos
#todos sus digitos hasta tener un digito sea igual a la variable numero
#sin contar el cero
pista="36A81"
if numero==0:
pista="36A81"
else:
valor_a_probar="%05d" % random.randint(1,99999)
pista=ciclo_pista(valor_a_probar,numero)
return pista
def verificar_pista(valor_a_probar):
if valor_a_probar!="36A81":
aux=333
valor_a_probar1=valor_a_probar
while len(str(aux))>1:
aux=0
for i in range(len(valor_a_probar1)):
aux=aux+int(valor_a_probar1[i])
valor_a_probar1=str(aux)
else:
aux=0
return aux
def ingreso_mensaje():
mensaje=raw_input("Ingrese el mensaje: ")
#mensaje="hola como?"
mensaje_alter=mensaje.split()
mensaje=" "
for i in range(len(mensaje_alter)):
#Signo de puntuacion para ser quitados
mensaje_alter[i]=mensaje_alter[i].rstrip("?")
mensaje_alter[i]=mensaje_alter[i].lstrip("?")
mensaje_alter[i]=mensaje_alter[i].rstrip(".")
mensaje_alter[i]=mensaje_alter[i].lstrip(".")
mensaje_alter[i]=mensaje_alter[i].rstrip(",")
mensaje_alter[i]=mensaje_alter[i].lstrip(",")
mensaje_alter[i]=mensaje_alter[i].rstrip(":")
mensaje_alter[i]=mensaje_alter[i].lstrip(":")
mensaje_alter[i]=mensaje_alter[i].rstrip('"')
mensaje_alter[i]=mensaje_alter[i].lstrip('"')
mensaje_alter[i]=mensaje_alter[i].rstrip("!")
mensaje_alter[i]=mensaje_alter[i].lstrip("!")
mensaje_alter[i]=mensaje_alter[i].rstrip("$")
mensaje_alter[i]=mensaje_alter[i].lstrip("$")
mensaje_alter[i]=mensaje_alter[i].rstrip(")")
mensaje_alter[i]=mensaje_alter[i].lstrip(")")
mensaje_alter[i]=mensaje_alter[i].rstrip("(")
mensaje_alter[i]=mensaje_alter[i].lstrip("(")
mensaje+=mensaje_alter[i]+" "
mensaje=mensaje.lstrip()
mensaje=mensaje.rstrip()
return mensaje
def main():
clave=palabra_clave.values()
mensaje=ingreso_mensaje()
valor_tabla=random.randint(0,len(clave)-1) # genera aleatoriamente cualquiera de las llaves privadas
#valor_tabla=clave.index(palabra_clave["facebook"]) #una escoje alguna de las llaves privadas segun su clave de diccionario
pista=generar_pista(valor_tabla)
#el primer par dice que clave utilizo
#Codificacion
print "Mensaje: ",mensaje.upper()
resultado=codificacion(clave[valor_tabla],mensaje)
resultado=resultado.lstrip()
resultado1=pista+" "+resultado
print "resultado: ", resultado1
#recuperacion
valor_tabla=verificar_pista(resultado1[:5])
mensaje_original=recuperar_virgerene(clave[valor_tabla],resultado1[6:])
print "Decodificado: ",mensaje_original
print "Correcto?:", mensaje_original==mensaje.upper()
return 0
if __name__ == '__main__':
main()
Descargar codigo
>>diccionario={"hola":"que fue",0:"cero""A":"letra A"}
>>print diccionario["A"]
"letra A"
>>print diccionario[0]
"cero"
para el abecedario y la palabra clave teniendo mas de una que puede ser escogida aleatoriamente o segun su clave en el diccionario
import random
letras_diccionario={0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z',26:'1', 27:'2', 28:'3', 29:'4', 30:'5', 31:'6', 32:'7', 33:'8', 34:'9', 35:'0',36:' '}
palabra_clave={"facebook":"nadie es perfecto y yo soy nadie","correo":"la unica lucha que verdaderamente se pierde es la que se abandona","notas":"la casa es de todos","programas":"qwerty ytrewq danny ynnad"}
def codificacion(palabra_clave,mensaje):
mensaje_codificado=" "
mensaje=mensaje.upper()
palabra_clave=palabra_clave.upper()
longitud=len(mensaje)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_quiero=mensaje[i]
#inicial='Y'
#letra_quiero='P'
mensaje_codificado+=vigerene(inicial,letra_quiero)
return mensaje_codificado.lstrip() #Quita el espacio del comienzo
def vigerene(a1,a2,opcion=0):
#a1 letra de la palabra clave y a2 la letra real
inicial=letra_numero(a1)
letra_quiero=letra_numero(a2)
letras=letras_diccionario.values() #genera la lista de valores
letras1=letras[inicial:]+letras[:inicial]
if opcion==0:
return letras1[letra_quiero]
else:
return letras1
def recuperar_virgerene(palabra_clave,mensaje_codificado):
mensaje_original=" "
letras=letras_diccionario.values() #genera la lista de valores
pocision_original=0
longitud=len(mensaje_codificado)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave.upper()*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_resultado=mensaje_codificado[i]
letras1=vigerene(inicial,'Z',opcion=1) #pongo uno ya que no tiene importancion
pocision_original=letras1.index(letra_resultado)
mensaje_original+=letras[pocision_original]
return mensaje_original.lstrip() #Quita el espacio del comienzo
#ord de numero a letra son comandos
#chr de letra a numero son comandos
def letra_numero(letra):
clave=letras_diccionario.values()
return clave.index(letra)
def numero_letra(numero):
return letras_diccionario[numero]
def ciclo_pista (valor_a_probar,numero):
pista="36A81"
aux=333
valor_a_probar1=valor_a_probar
while len(str(aux))>1:
aux=0
for i in range(len(valor_a_probar1)):
aux=aux+int(valor_a_probar1[i])
valor_a_probar1=str(aux)
if aux==numero:
pista=valor_a_probar
else:
valor_a_probar="%05d" % random.randint(1,99999)
pista=ciclo_pista(valor_a_probar,numero)
return pista
def generar_pista(numero):
#buscar una manera de generar un numera de 5 digitos que sumandos
#todos sus digitos hasta tener un digito sea igual a la variable numero
#sin contar el cero
pista="36A81"
if numero==0:
pista="36A81"
else:
valor_a_probar="%05d" % random.randint(1,99999)
pista=ciclo_pista(valor_a_probar,numero)
return pista
def verificar_pista(valor_a_probar):
if valor_a_probar!="36A81":
aux=333
valor_a_probar1=valor_a_probar
while len(str(aux))>1:
aux=0
for i in range(len(valor_a_probar1)):
aux=aux+int(valor_a_probar1[i])
valor_a_probar1=str(aux)
else:
aux=0
return aux
def ingreso_mensaje():
mensaje=raw_input("Ingrese el mensaje: ")
#mensaje="hola como?"
mensaje_alter=mensaje.split()
mensaje=" "
for i in range(len(mensaje_alter)):
#Signo de puntuacion para ser quitados
mensaje_alter[i]=mensaje_alter[i].rstrip("?")
mensaje_alter[i]=mensaje_alter[i].lstrip("?")
mensaje_alter[i]=mensaje_alter[i].rstrip(".")
mensaje_alter[i]=mensaje_alter[i].lstrip(".")
mensaje_alter[i]=mensaje_alter[i].rstrip(",")
mensaje_alter[i]=mensaje_alter[i].lstrip(",")
mensaje_alter[i]=mensaje_alter[i].rstrip(":")
mensaje_alter[i]=mensaje_alter[i].lstrip(":")
mensaje_alter[i]=mensaje_alter[i].rstrip('"')
mensaje_alter[i]=mensaje_alter[i].lstrip('"')
mensaje_alter[i]=mensaje_alter[i].rstrip("!")
mensaje_alter[i]=mensaje_alter[i].lstrip("!")
mensaje_alter[i]=mensaje_alter[i].rstrip("$")
mensaje_alter[i]=mensaje_alter[i].lstrip("$")
mensaje_alter[i]=mensaje_alter[i].rstrip(")")
mensaje_alter[i]=mensaje_alter[i].lstrip(")")
mensaje_alter[i]=mensaje_alter[i].rstrip("(")
mensaje_alter[i]=mensaje_alter[i].lstrip("(")
mensaje+=mensaje_alter[i]+" "
mensaje=mensaje.lstrip()
mensaje=mensaje.rstrip()
return mensaje
def main():
clave=palabra_clave.values()
mensaje=ingreso_mensaje()
valor_tabla=random.randint(0,len(clave)-1) # genera aleatoriamente cualquiera de las llaves privadas
#valor_tabla=clave.index(palabra_clave["facebook"]) #una escoje alguna de las llaves privadas segun su clave de diccionario
pista=generar_pista(valor_tabla)
#el primer par dice que clave utilizo
#Codificacion
print "Mensaje: ",mensaje.upper()
resultado=codificacion(clave[valor_tabla],mensaje)
resultado=resultado.lstrip()
resultado1=pista+" "+resultado
print "resultado: ", resultado1
#recuperacion
valor_tabla=verificar_pista(resultado1[:5])
mensaje_original=recuperar_virgerene(clave[valor_tabla],resultado1[6:])
print "Decodificado: ",mensaje_original
print "Correcto?:", mensaje_original==mensaje.upper()
return 0
if __name__ == '__main__':
main()
Descargar codigo
junio 13, 2011
Cifrado de Vigenere
"
El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado César formando
estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de Vigenère es un
cifrado polialfabético y de sustitución.
El cifrado Vigenère se ha reinventado muchas veces. El método original fue descrito por Giovan Batista Belaso
en su libro de 1553 La cifra del Sig. Giovan Batista Belaso. Sin embargo, fue incorrectamente atribuido más tarde
a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el "cifrado Vigenère".
Este cifrado es conocido porque es fácil de entender e implementar, además parece irresoluble; esto le hizo
valedor del apodo el código indescifrable (le chiffre indéchiffrable, en francés)." wikipedia
aqui el codigo
def codificacion(palabra_clave,mensaje):
mensaje_codificado=" "
mensaje=mensaje.upper()
palabra_clave=palabra_clave.upper()
longitud=len(mensaje)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_quiero=mensaje[i]
#inicial='Y'
#letra_quiero='P'
mensaje_codificado+=vigerene(inicial,letra_quiero)
return mensaje_codificado.lstrip() #Quita el espacio del comienzo
def vigerene(a1,a2,opcion=0):
#a1 letra de la palabra clave y a2 la letra real
inicial=letra_numero(a1)
letra_quiero=letra_numero(a2)
letras=['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']
letras1=letras[inicial:]+letras[:inicial]
if opcion==0:
return letras1[letra_quiero]
else:
return letras1
def recuperar_virgerene(palabra_clave,mensaje_codificado):
mensaje_original=" "
letras=['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']
pocision_original=0
longitud=len(mensaje_codificado)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave.upper()*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_resultado=mensaje_codificado[i]
letras1=vigerene(inicial,'Z',opcion=1) #pongo uno ya que no tiene importancion
pocision_original=letras1.index(letra_resultado)
mensaje_original+=letras[pocision_original]
return mensaje_original.lstrip() #Quita el espacio del comienzo
def letra_numero(letra):
return ord(letra)-65
def numero_letra(numero):
return chr(numero+65)
def main():
palabra_clave="meliespe"
mensaje=raw_input("Ingrese el mensaje: ")
#mensaje="hola como?"
mensaje_alter=mensaje.split()
mensaje=" "
for i in range(len(mensaje_alter)):
#Signo de puntuacion para ser quitados
mensaje_alter[i]=mensaje_alter[i].rstrip("?")
mensaje_alter[i]=mensaje_alter[i].rstrip(".")
mensaje_alter[i]=mensaje_alter[i].lstrip(".")
mensaje_alter[i]=mensaje_alter[i].rstrip(",")
mensaje_alter[i]=mensaje_alter[i].lstrip(",")
mensaje_alter[i]=mensaje_alter[i].rstrip(":")
mensaje_alter[i]=mensaje_alter[i].lstrip(":")
mensaje_alter[i]=mensaje_alter[i].rstrip('"')
mensaje_alter[i]=mensaje_alter[i].lstrip('"')
mensaje_alter[i]=mensaje_alter[i].rstrip("!")
mensaje_alter[i]=mensaje_alter[i].lstrip("!")
mensaje_alter[i]=mensaje_alter[i].rstrip("$")
mensaje_alter[i]=mensaje_alter[i].lstrip("$")
mensaje+=mensaje_alter[i]
mensaje=mensaje.lstrip()
#Codificacion
print "Mensaje: ",mensaje.upper()
resultado=codificacion(palabra_clave,mensaje)
resultado=resultado.lstrip()
print "resultado: ", resultado
#recuperacion
mensaje_original=recuperar_virgerene(palabra_clave,resultado)
print "Decodificado: ",mensaje_original
print "Correcto?:", mensaje_original==mensaje.upper()
return 0
if __name__ == '__main__':
main()
No esta implementado con la forma matemática sino de una forma manual por así decirlo
Cifrado de Vigenère
El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado César formando
estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de Vigenère es un
cifrado polialfabético y de sustitución.
El cifrado Vigenère se ha reinventado muchas veces. El método original fue descrito por Giovan Batista Belaso
en su libro de 1553 La cifra del Sig. Giovan Batista Belaso. Sin embargo, fue incorrectamente atribuido más tarde
a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el "cifrado Vigenère".
Este cifrado es conocido porque es fácil de entender e implementar, además parece irresoluble; esto le hizo
valedor del apodo el código indescifrable (le chiffre indéchiffrable, en francés)." wikipedia
aqui el codigo
def codificacion(palabra_clave,mensaje):
mensaje_codificado=" "
mensaje=mensaje.upper()
palabra_clave=palabra_clave.upper()
longitud=len(mensaje)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_quiero=mensaje[i]
#inicial='Y'
#letra_quiero='P'
mensaje_codificado+=vigerene(inicial,letra_quiero)
return mensaje_codificado.lstrip() #Quita el espacio del comienzo
def vigerene(a1,a2,opcion=0):
#a1 letra de la palabra clave y a2 la letra real
inicial=letra_numero(a1)
letra_quiero=letra_numero(a2)
letras=['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']
letras1=letras[inicial:]+letras[:inicial]
if opcion==0:
return letras1[letra_quiero]
else:
return letras1
def recuperar_virgerene(palabra_clave,mensaje_codificado):
mensaje_original=" "
letras=['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']
pocision_original=0
longitud=len(mensaje_codificado)
longitud_clave=len(palabra_clave)
palabra_clave=palabra_clave.upper()*int(longitud/longitud_clave+1)
for i in range(longitud):
inicial=palabra_clave[i]
letra_resultado=mensaje_codificado[i]
letras1=vigerene(inicial,'Z',opcion=1) #pongo uno ya que no tiene importancion
pocision_original=letras1.index(letra_resultado)
mensaje_original+=letras[pocision_original]
return mensaje_original.lstrip() #Quita el espacio del comienzo
def letra_numero(letra):
return ord(letra)-65
def numero_letra(numero):
return chr(numero+65)
def main():
palabra_clave="meliespe"
mensaje=raw_input("Ingrese el mensaje: ")
#mensaje="hola como?"
mensaje_alter=mensaje.split()
mensaje=" "
for i in range(len(mensaje_alter)):
#Signo de puntuacion para ser quitados
mensaje_alter[i]=mensaje_alter[i].rstrip("?")
mensaje_alter[i]=mensaje_alter[i].rstrip(".")
mensaje_alter[i]=mensaje_alter[i].lstrip(".")
mensaje_alter[i]=mensaje_alter[i].rstrip(",")
mensaje_alter[i]=mensaje_alter[i].lstrip(",")
mensaje_alter[i]=mensaje_alter[i].rstrip(":")
mensaje_alter[i]=mensaje_alter[i].lstrip(":")
mensaje_alter[i]=mensaje_alter[i].rstrip('"')
mensaje_alter[i]=mensaje_alter[i].lstrip('"')
mensaje_alter[i]=mensaje_alter[i].rstrip("!")
mensaje_alter[i]=mensaje_alter[i].lstrip("!")
mensaje_alter[i]=mensaje_alter[i].rstrip("$")
mensaje_alter[i]=mensaje_alter[i].lstrip("$")
mensaje+=mensaje_alter[i]
mensaje=mensaje.lstrip()
#Codificacion
print "Mensaje: ",mensaje.upper()
resultado=codificacion(palabra_clave,mensaje)
resultado=resultado.lstrip()
print "resultado: ", resultado
#recuperacion
mensaje_original=recuperar_virgerene(palabra_clave,resultado)
print "Decodificado: ",mensaje_original
print "Correcto?:", mensaje_original==mensaje.upper()
return 0
if __name__ == '__main__':
main()
No esta implementado con la forma matemática sino de una forma manual por así decirlo
la tabla de transformación
tomar capturas de pantalla con python
Acabas de instalar tu entorno gráfico no tienes como tomar capturas de pantalla bueno la solucion es python. Como?
import gtk
import os, datetime
class icarus_pantallazo:
def main(self):
root = gtk.gdk.get_default_root_window();
rootwidth, rootheight = root.get_size();
#lo comentado creo que va para cambiar la imagen
#gc = gtk.gdk.GC( root )
#
current_dt=datetime.datetime.now()
dia_numero= "%02d" % current_dt.day
meses_numero="%02d" % current_dt.month
anio=str(current_dt.year)
hora_24="%02d" % current_dt.hour
minuto="%02d" % current_dt.minute
segundo="%02d" % current_dt.second
fecha="_"+dia_numero+"-"+meses_numero+"-"+anio+"_"+hora_24+":"+minuto+":"+segundo
#
pix = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 1, 8, rootwidth, rootheight);
pix.get_from_drawable(root, root.get_colormap(), 0, 0, 0, 0, rootwidth, rootheight);
home = os.environ['HOME']
pix.save(home+"/pantallazo"+fecha+".png", "png")
#root.draw_image(gc,"test.png")
return 0
if __name__ == '__main__':
a=icarus_pantallazo()
a.main()
Entonces este script lo relacionas con alguna combinacion de teclas y listo a tomar capturas de pantalla como esta.
import gtk
import os, datetime
class icarus_pantallazo:
def main(self):
root = gtk.gdk.get_default_root_window();
rootwidth, rootheight = root.get_size();
#lo comentado creo que va para cambiar la imagen
#gc = gtk.gdk.GC( root )
#
current_dt=datetime.datetime.now()
dia_numero= "%02d" % current_dt.day
meses_numero="%02d" % current_dt.month
anio=str(current_dt.year)
hora_24="%02d" % current_dt.hour
minuto="%02d" % current_dt.minute
segundo="%02d" % current_dt.second
fecha="_"+dia_numero+"-"+meses_numero+"-"+anio+"_"+hora_24+":"+minuto+":"+segundo
#
pix = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 1, 8, rootwidth, rootheight);
pix.get_from_drawable(root, root.get_colormap(), 0, 0, 0, 0, rootwidth, rootheight);
home = os.environ['HOME']
pix.save(home+"/pantallazo"+fecha+".png", "png")
#root.draw_image(gc,"test.png")
return 0
if __name__ == '__main__':
a=icarus_pantallazo()
a.main()
Entonces este script lo relacionas con alguna combinacion de teclas y listo a tomar capturas de pantalla como esta.
Python: Módulos y paquetes
Python: Módulos y paquetes
Muy interesante para poder realizar modulos y paquetes en python
modulo
import ergus
paquetes
imports ergus.lo_que_sea
junio 09, 2011
junio 07, 2011
Icarus - Widgets pasivos
Reloj wallpaper con svg y nitrogen
Esta fue la entrada anterior, ahora cambio de tal modo que se gano un nombre le llame icarus por que tarde o temprano va a caer en alguna maquina ^_^
Los cambios realizados son:
- ninguna dependencia de cron para funcionar
- trabaja por hilos para hacer las actualizaciones mediando la libreria ergus hecha para el proyecto
- se maneja por opciones start,stop e imagen
La primera es para los widgets pasivos como reloj y sensores (todavía no esta hecho), solo funciona por el momento con gnome o escritorio que tengan gconftool-2 para el resto para openbox con esetroot y Xcfe4 con su nativo, pero estos solo el ultimo no eh probado para ver si funciona con svg, si no funciona toca modificar demonio_wallv2 en la funcion generador toca añadir el comando pasar_svg_png(el archivo svg,carpeta a donde va). y agregarlo por icarus imagen con un os.popen dentro del mismo metodo y despues se va a icarus a comentar la verificacion del start.
se lo instala descomprimiendo la archivo y ejecutando el archivo setup.py de la siguiente manera:
$sudo python setup install
para desintalar
$sudo python setup.py uninstall
todo el codigo esta bajo gplv2
junio 05, 2011
Reloj wallpaper con svg y nitrogen
la diferencia con el articulo anterior es que el código cambio completamente ya que se puede modificar los valores del svg directamente desde código ahorrando y mejorando completamente la escritura y implementacion para cualquier diseño, el proyecto cuanta con la clase ergus que es la tiene todos los comandos para realizarlo, por el momento esta diseñado para funcionar con nitrogen esto se puede cambiar tranquilamente también lo que es de la transformacion de svg a png si tu setter walllpaper soporta ese formato.
para que se vea la diferencia asi quedo:
dia_numero, dia_letra, meses_numero,mes,anio,hora_24,hora_12,minuto,ampm,hora=valores_reloj()
doc=abrir_archivo(archivo)
doc,a=cambiar_texto(doc,"tspan","hora1",hora)
doc,a=cambiar_texto(doc,"tspan","ampm1",ampm)
doc,a=cambiar_texto(doc,"tspan","mes1",mes)
doc,a=cambiar_texto(doc,"tspan","dia_numero1",dia_numero)
doc,a=cambiar_texto(doc,"tspan","dia_nombre1",dia_letra)
doc,a=cambiar_texto(doc,"tspan","ano_monbre1",anio)
cerrar_archivo(doc,archivo)
Nota: el "tspan" es la etiqueta que contiene el texto y el siguiente parámetro es el id de esta etiqueta.
Y esto cambia los valores del svg del reloj y después toca realizar estos comandos para aplicarlo a nitrogen ya que este no acepta svg.
pasar_svg_png("protector.svg","/home/badanni/wallpapers/")
poner_fondo_pantalla()
igual que el anterior el programa esta atado a cron para que lo repita cada minuto para actualizar la hora de pantalla. pero por utilizar una clase exterior toca utilizar un script en bash para que lo ejecute cron este quedo así:
#! /usr/bin/bash
cd /home/badanni/wallpapers
python reloj_wallv2.py
se le pone cd a la carpeta donde esta todo ya que el archivo librería esta en este lugar y cron al ejecutar lo hace desde la ubicación home(esto creo que pasa por la configuración de mi cron).
El link para descargar el programa.
Ergus-reloj_wall
Suscribirse a:
Entradas (Atom)






