Buscar este blog

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:

  • 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:
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

pyglet

pyglet

Revisar camino interesante

[Python] KeyCagator 0.5

[Python] KeyCagator 0.5

Revisar se ve interesante

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

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

esto nos instalara las siguientes herramientas

{pdftoabw   pdftohtml  pdftoppm   pdftops    pdftotext }

de la cual vamos a usar "pdftohtml"de la siguiente manera

$ pdftohtml -c test.pdf test.html

se pone el parametro -c porque el pdf tiene imágenes en test.html se encuentran todos los enlaces a las paguinas generadas

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

junio 13, 2011

Cifrado de Vigenere

"

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.

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 07, 2011

Ready for the future of the Internet?

Ready for the future of the Internet?

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:
  1. ninguna dependencia de cron para funcionar
  2. trabaja por hilos para hacer las actualizaciones mediando la libreria ergus hecha para el proyecto
  3. 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

junio 04, 2011

Configurando Cron

Primeramente se puede decir que cron es como una agenda para la computadora diciendole cuando hacer algo, para instalar toca poner:

$sudo apt-get install cron

ya instalado toca revisar si existen los archivos "cron.allow" y "cron.deny" el primero dice quien puede usarlo y el segun quien no, cuando instalas estos archivos no existen y solo tiene permiso el root de usarlo.
Para crearlos solo pon lo en /etc/ y ya el contenido de cron.allow debe ser tu nombre de usuario y uno por linea y el de cron.deny igual pero para los usuario que no pueden usarlo.

Ya hecho esto se tipea lo siguiente

$crontab -e

Y nos preguntara por un editor de texto para comenzar a planificar las actividades de la maquina ya hecho esto toca comenzar a escribir, el modo de ejecución se especifica de la siguiente manera:

  • Minutos: (0-59)
  • Horas: (0-23)
  • Días: (1-31)
  • Mes: (1-12)
  • Día de la semana: (0-6), siendo 1=lunes, 2=martes,... 6=sábado y 0=domingo (a veces también 7=domingo)
  • comando

Un ejemplo para esto seria

30 10 * * * /usr/bin/who>> /home//quien

entonces que hara esto todos los dias a las 10:30 almacena el resultado de who en el archivo quien en la direccion puesta, ahora supongamos que lo queremos hacer solo para los lunes

30 10 * * 1 /usr/bin/who>> /home//quien

Y si se necesita que se realize cada cierto intervalo de tiempo.

*/15 * * 1  /usr/bin/who>> /home//quien

Este lo que hace es todos los lunes cada 15 minutos almacena el resultado de who en el archivo quien

Tener en cuenta que esto sirve solo para aplicaciones sin interfaz gráfica, para las que tiene interfaz gráfica toca anidar antes del comando DISPLAY=:0 como se ve en el siguiente ejemplo

*/1 * * * * DISPLAY=:0 python /home/badanni/wallpapers/reloj_wall.py

eso es todo con esto ya pueden comenzar a utilizar cron.
Nota: una buena pagina para mas informacion es en Linuxesmas

Haciendo un reloj de pantalla (descontinuado)

Después del fiasco que tuve con ubuntu 11.04 y su unity que no pude instalar por compatibilidad en la maquina me decidi a levantar de apoco un entorno gráfico a mi gusto apenas acabe eso subo algo, por el momento queria instalar gdesklets funciona bien pero al refrescarse (ejemplo un reloj) se queda en negro entonces a hacer el mio propio y asusnto sanjado despues de tontear un rato con svg para el reloj no pude mismo modificarlo desde python para cambiarle la hora entonces con cada corrida se genera una nueva imagen con la hora actual me queda algo así.


como el script es de una corrida (se ejecuta y finaliza) decidí probar cron para que se encargue de correrlo cada minuto y el resultado es como yo quería(bueno a medias ya que depende de inkspace y nitrogen el uno para realizar imágenes vectorial y el otro para  poner imagenes de fondo de pantalla respectivamente, apenas los pueda remplazar con un código de python doy por sanjado el asunto.

El principal problema del script es que el reloj no se mueve es decir se le puede decir que cambie la imagen de fondo pero no el reloj y se debe fijar la imagen manualmente la primera vez después el escript restaura solo (esto es del nitrogen).

la configuracion del cron usada es:

*/1 * * * * DISPLAY=:0 python /home/badanni/wallpapers/reloj_wall.py

todo el script hace referencia a la direccion /home/badanni/wallpapers/ por problemas de ejecución en cron al ubicar los archivos, como nitrogen necesita de entorno gráfico para funcionar se le debe decir a cron que utilice un display en mi caso 0 para todos a menos que tengas mas de un monitor según lo que entendí sin mas lata el codigo para descargar con la imagen

Actualización:
toca separar la linea6 como linea6a hasta llegar a la etiqueta <g ........
desde esta etiqueta va otra linea como por ejemplo linea6b pero al final se le quita el ">" del final;
linea6_mover=' transform="translate(%f,%f)"' % (x_nueva,y_nueva)
quedando de la siguiente forma:

linea6=linea6a+linea6b+linea6_mover+'>'

Los valores de x_nueva e y_nueva pueden ser positivo o negativos en negativo x llega hasta -160 e y llega a -200 creo es por que la posicion origina del reloj no esta en (0,0) error mio.

script en Python para mostrar reloj en fondo de pantalla(antiguo)

Ir a este post para ver los cambios

mayo 31, 2011

SQLi vulnerability in United Nation's (UN) Website ! Anonymous

Anonymous Operations

On Tuesday 31st May 2011, @Anony_Ops said:

01100011 01100001 01101100 01101100 01101001 01101110 01100111 00100000 01100001 01101100 01101100 00100000 01110100 01101000 01100101 00100000 01100011 01110010 01100001 01100011 01101011 01100101 01110010 01110011 00100000 01110100 01101111 00100000 01110111 01101111 01110010 01101011 00100000 01101111 01101110 00100000 01100101 01111000 01110100 01110010 01100001 01100011 01110100 01101001 01101111 01101110 00100000 01101111 01100110 00100000 01010101 01001110 00100000 01100011 01101000 01101001 01101110 01100101 01110011 01100101 00100000 01110111 01100101 01100010 01110011 01101001 01110100 01100101 00101110 00100000 01110011 01100101 01100101 00100000 01110100 01101000 01101001 01110011 00100000 00001101 00001010 00001101 00001010 01101000 01110100 01110100 01110000 00111010 00101111 00101111 01110111 01110111 01110111 00101110 01110100 01101000 01100101 01101000 01100001 01100011 01101011 01100101 01110010 01101110 01100101 01110111 01110011 00101110 01100011 01101111 01101101 00101111 00110010 00110000 00110001 00110001 00101111 00110000 00110101 00101111 01110011 01110001 01101100 01101001 00101101 01110110 01110101 01101100 01101110 01100101 01110010 01100001 01100010 01101001 01101100 01101001 01110100 01111001 00101101 01101001 01101110 00101101 01110101 01101110 01101001 01110100 01100101 01100100 00101101 01101110 01100001 01110100 01101001 01101111 01101110 01110011 00101101 01110101 01101110 00101110 01101000 01110100 01101101 01101100 00001101 00001010 00001101 00001010 01100001 00100000 01101100 01101001 01110100 01110100 01101100 01100101 00100000 01101000 01100101 01101100 01110000 00100000 01100110 01110010 01101111 01101101 00100000 01100100 01100101 01110110 01101001 01100001 01101110 01110100 00100000 01101000 01110100 01110100 01110000 00111010 00101111 00101111 01110011 01101000 01100001 01110000 01100101 01110011 01101000 01101001 01100110 01110100 01100101 01110010 00101110 01100011 01101111 00101110 01100011 01100011 00101111 01100001 01100001 00101110 01101000 01110100 01101101 01101100 00001101 00001010 00001101 00001010

cuando leí esto me dio curiosidad y manos a la obra para ver que dice y el mensajes es

for j in range(len(binstr)):
decnum = 0
print j
for i in binstr[j]:
decnum = decnum * 2 + int(i)
strq=strq+chr(decnum)
print strq

calling all the crackers to work on extraction of UN chinese website. see this

http://www.thehackernews.com/2011/05/sqli-vulnerability-in-united-nations-un.html

a little help from deviant -censurado- transforme usted mismo para ver que dice a continuacion con el codigo de arriba ya esta solo acomodar la matriz binstr del mensaje y listo

mayo 30, 2011

otra perdida de tiempo la steganografia en linux

Que es la steganografia?

"El texto de esta pagina es escondido a dentro de la imagen arriba.
La Steganografia da usted la capacidad de ocultar los archivos dentro de las varias otras formas de datos. La 'sobre' en la mayoría de las aplicaciones de steganografia son los datos digitales, como una imagen, o un archivo de sonido. Haciendo las alteraciones sutiles a los datos tratados es posible de ocultar la información aunque reteniendo casi todo el volumen y cualidad de la muestra original.
Los usuarios de steganografia pueden optar a codificar su información usando los algoritmos de codificación innovadores más fuertes actualmente, para que ni siquiera un enemigo equipado con una misma copia de herramienta de steganografia no pueda ser completamente seguro si los datos ya están ocultos a menos que él consiga su contraseña (la llave digital) confidencial.
Usted podría usar steganografia a ocultar información privada o confidencial que usted no quiere entrar en las manos malas. Usted podría usar steganografia a enviar la información a un otro individuo vía una red de transmisión como Internet. Alternativamente usted podría usar steganografia a verificar sus derechos de propiedad literaria encima de una imagen o una canción guardando la declaración de derechos de propiedad codificada en el gráfico o la canción y extrayéndola en caso de una disputa.
Para abreviar, la steganografia permite usted de poner la información privada en un discreto 'sobre' que no despertará la sospecha.
adaptado por ing. Rafal Swiecki correoNoviembre, 2004,"1
Como utilizarlo en linux?

$sudo apt-get install steghide 

ya instalado para poner el texto en la imagen se realiza lo siguiente


Foto original




$steghide embed -cf foto.jpg -ef texto.txt

Dandonos un texto parecido a este.


badanni@bzkkx:~$ steghide embed -cf foto.jpg -ef texto.txt
Anotar salvoconducto: ******
Re-ingresar salvoconducto: ******
adjuntando "texto.txt" en "foto.jpg"... hecho
badanni@bzkkx:~$ 


la clave puesta es "foto" sin comillas




Listo foto con el mensaje!!!


A ver quien dice la diferencia!!!

Para extraer la información se realiza lo siguiente: 


badanni@bzkkx:~$ steghide extract -sf foto.jpg
Anotar salvoconducto: ****
anote los datos extraidos e/"texto.txt".
badanni@bzkkx:~$ ls
Android    foto.jpg           jd.sh   programs      texto.txt
Documents  foto_original.jpg  libros  steghide.pdf  wallpapers
Downloads  gpodder-downloads  Music  workspace
badanni@bzkkx:~$ 



Si deseamos ver la informacion de la foto caracteristicas y esas cosas asi toca poner


badanni@bzkkx:~$ steghide info foto.jpg
"foto.jpg":
  formato: jpeg
  capacidad: 4,2 KB
Intenta informarse sobre los datos adjuntos? (s/n) s
Anotar salvoconducto: **** 
  archivo adjunto "texto.txt":
    tamano: 144,0 Byte
    encriptado: rijndael-128, cbc
    compactado: si
badanni@bzkkx:~$ 


Nota: Por cierto las fotos aqui mostradas no sirven a ponerlas en picasa altero la foto y me da una pereza subir de nuevo asi que toca hacerlo ustedes mismo para probar


mayo 26, 2011

How To Change, Customize & Create Android Boot Animation [Guide]

How To Change, Customize & Create Android Boot Animation [Guide]

Explica como hacer un boot animation, la animacion cuando arranca el telefono... en mi telefono basta poner en /data/local


pero para telefono

pero yo puse la version para telefono, esta animacion de la version tablet

tratando de quitar aplicaciones de fabrica de un android!!!

Encontre varias maneras desde hacer esta tarea que supestamente es facil, que hiba desde hacer root y adb hasta instalar unas aplicaciones con root,  me fui por la primera y toco instalar primero z4root(aplicacion de android no esta en el market) comence con la version 1.1.0 pero no funciono hasta llegar a la version 1.3.0 que me dejo el root activado, me pase al adb del sdk para tratar de borrar pero por algun motivo no me dejaba hacer adb unmount para cambiar los permisos de system, que es donde se encuentrar las aplicaciones de fabrica "/system/app/" tener cuidado ya que estan phone, calendar, y las del sistema. como no pude por ese camino probe "root explorer" este esta en el market pero es pagado, buscando en el internet lo encuentras para instalar la ventaja de usarlo es que tiene un modo unmount para cambiar los permisos de escritura de la unidad, ya ubicado la aplicacion en mi caso "aldiko" que por alun motivo no deja pasar de la version 1.algo a la version 2 , segun lo que decia en el internet con borrar basta pero me daba problema en el android market para instalar de nuevo, toco instalar de nuevo la version que traia el android de aldiko y desintalarla despues de esto ya dejo instalar la nueva version.

recomendacion: para borrar las aplicaciones de fabrica preferible respaldar lo que se va a borrar a la SD( o TF ) por cualquier eventualidad de este tipo.

mayo 03, 2011

Ergus tradando de jugar un poco con Android

El momento de arrancar Ergus en la barra de avisos sale el mensaje "Estas acelerado!!" como Ongoing para saber que se encuentra corriendo el programa la idea es que cuando se salga (desacelere) se quite el mensaje de Ergus en onging pero por el momento no puedo hacerlo

También se aprovecha el ongoing para que si por error se presiona "home", o "atras" se tenga una manera rápida de regresar. Ergus esta divido en cuatro pestañas cada una tiene una cierta actividad como el estatus del jugador, las acciones o comandos, los requisitos para avanzar, reglas

Uno de los problemas que me tope es que no podía refrescar automáticamente (tal vez usando un hilo o algo por el estilo pero me da pereza estoy viendo lo de los ciclo de Entity para ver que se puede hacer), por lo tanto se requiere un menú para refrescar todo y salir (pero por el momento no sale bien solo cierra la actividad pero quiero que la termine del sistema para poder mantener la idea de "Accel World")

Se tiene problemas con el conteo de creditos para salir de la aplicacion si llegas a cero pero asi va, no se si valga la pena hacer animaciones 2d para esto, bueno esto esta por el momento.

Binario del programa / Codigo del programa