O Desktop KDE4

Tags:
Postado em KDE por Felipe Tonello on the November 25th, 2007


Ajude a Combater o Spam! Clique aqui!

Bom, como o KDE4 é em grande parte algo visível não vou ficar falando muito não. Vou postar screenshots de algumas telas do kde4 para ver o que vocês acham e recomendariam.

KDE4
O desktop!

KDE4 - Dolphin
Dolphin.. o novo gerenciador de pastas

KDE4 - Konqueror
Novo Konqueror.. mais voltado para web browser

KDE4 - KSysGuard
Aee, o Renice Dialog do KSysGuard em ação, lembram??

Veja todas as screenshots no meu flickr!

Depois eu posto como instalar o KDE4 devel no Slackware12 e em outros sistemas!

Resposta do desafio criptografia Blowfish

Tags: , ,
Postado em Artigos, Python, nerd por Felipe Tonello on the November 21st, 2007


Ajude a Combater o Spam! Clique aqui!

Já faz um tempinho que coloquei o ‘Desafio criptografia Blowfish’ no meu blog. Só que ninguem conseguiu, ou tentou, resolver o problema.

Vamos ver que é bem simples esse desafio.

Primeiro coisa a fazer é ler o desafio e perceber que temos 2 coisas importantes alí:

  1. Mensagem criptografada
  2. Senha da mensagem.

Feito isso já podemos matar o problema. Como?
Primeiro escolha a linguagem de programação que você quer resolver. No caso vamos utilizar Python.
Você pode baixar o blowfish.py aqui.

Se você abrir o código, pode perceber que no final do arquivo têm uns exemplos de uso. Ou simplesmente faça:

  1. $ tail blowfish.py -n 20

A saída será essa:

  1. if __name__ == ‘__main__’:
  2.     key = ‘This is a test key’
  3.     cipher = Blowfish (key)    print "Testing encryption:"
  4.     xl = 123456
  5.     xr = 654321
  6.     print "\tPlain text: (%s, %s)" %(xl, xr)
  7.     cl, cr = cipher.cipher (xl, xr, cipher.ENCRYPT)
  8.     print "\tCrypted is: (%s, %s)" %(cl, cr)
  9.     dl, dr = cipher.cipher (cl, cr, cipher.DECRYPT)
  10.     print "\tUnencrypted is: (%s, %s)" %(dl, dr)
  11.     print "Testing buffer encrypt:"
  12.     text = ‘testtest’
  13.     print "\tText: %s" %text
  14.     crypted = cipher.encrypt (text)
  15.     print "\tEncrypted: %s" %crypted
  16.     decrypted = cipher.decrypt (crypted)
  17.     print "\tDecrypted: %s" %decrypted

Agora já sabemos como faz para chamar o método de criptografar e descriptografar.

Mas peraí, no exemplo acima o mensagem era uns números e não vários caracteres como na do nosso desafio.
Aí vem a primeira pegadinha..
nossa string foi convertida para codificação base 64.
Então teremos de converter toda a string para uma string conhecida pelo blowfish(ou não, temos que ver).

  1. import base64
  2. base64.b64decode(’string_do_desafio’)

Beleza, agora sabemos que está tudo ok. Temos que conhecer o Blowfish.

Para isso vamos dar uma pesquisada na internet.

…10 minutos depois…

Bom, pelo que eu vi aqui na wikipedia e vejo isso: A entrada para essa parte do algoritmo são 64 bits…
Com complexas contas chegamos que 64 bits = 8 Bytes = 8 caracteres. Para quem não entendeu ainda, fizemos 64 bits / 8 bits = 8 Bytes

Então quer dizer que o blowfish só recebe em blocos de 8 caracteres as entradas.. hmmmm interessante..
Sabendo isso, vamos ter que separar nossa string com muitos caracteres em várias de 8 caracteres apenas.

Faremos isso com um for normal e vamos cortar a string em vários blocos de 8 caracteres. Mas e se o último bloco conter apenas 6 caracteres? Para termos certeza de que a string contem 8 caracteres podemos forcar com o método string.ljust(variavel, 8 )

Não se esqueça que a senha também não deve ter menos de 8 caracteres, então está a outra dica: Usar o ljust() na senha também.

Depois disso é só você criar seu código. Eu criei uma classe bem simples que criptograda e descriptografa.

Na verdade é bem simples sim. Vou postar meu código aqui e quem quiser baixar ele fique a vontade..

Tente desvendar o mistério e resolva o desafio!!!

Agora só falta postarem o resultado, ficou fácil né? hehe

Faça download do cript.py

cript.py

  1. #
  2. # Feito em 22/08/2007
  3. #
  4.  
  5. import sys
  6. import string
  7. import base64
  8. import blowfish
  9.  
  10. __author__ = "Felipe Ferreri Tonello <felipe.tonello@gmail.com>"
  11.  
  12. class BFCript:
  13.     """
  14. Classe que usa criptografia Blowfish juntamente com encodificacao Base64
  15.  
  16. uso: cript.py cript|descript ’senha’ ‘texto’
  17.  
  18. PS: Quando for descriptografar, o texto deve estar codificado em Base64
  19.    """
  20.     CRIPTOGRAFAR = 0
  21.     DESCRIPTOGRAFAR = 1
  22.    
  23.     def cript(self,  sKey,  sTxt,  iAction):
  24.         bf = blowfish.Blowfish((len(sKey) < 8 and [string.ljust(sKey, 8)] or [sKey])[0])
  25.        
  26.         if iAction == self.DESCRIPTOGRAFAR:
  27.             sTxt = base64.b64decode(sTxt)
  28.        
  29.         sCript = ""
  30.        
  31.         for i in [x*8 for x in range(0,  len(sTxt)/8+1)] :
  32.             sSBox = sTxt[i:i+8]
  33.             if len(sSBox) > 0 :
  34.                 if iAction == self.CRIPTOGRAFAR:
  35.                     sCript += bf.encrypt(string.ljust(sSBox,  8))
  36.                 elif iAction == self.DESCRIPTOGRAFAR:
  37.                     sCript += bf.decrypt(sSBox)
  38.        
  39.         if iAction == self.CRIPTOGRAFAR:
  40.             return base64.b64encode(sCript)
  41.         elif iAction == self.DESCRIPTOGRAFAR:
  42.             return sCript
  43.  
  44. ##################################################
  45.  
  46. if __name__ == "__main__" :
  47.     bfc = BFCript()
  48.     if len(sys.argv) != 4 or (sys.argv[1] != "cript" and sys.argv[1] != "descript"):
  49.         print BFCript.__doc__
  50.         sys.exit(0)
  51.     elif sys.argv[1] == "cript" :
  52.         print bfc.cript(sys.argv[2], sys.argv[3],  bfc.CRIPTOGRAFAR)
  53.     elif sys.argv[1] == "descript" :
  54.         print bfc.cript(sys.argv[2],  sys.argv[3],  bfc.DESCRIPTOGRAFAR)

OLPC Game Jam Brazil e Conisli

Tags: , ,
Postado em Eventos, Open-Source, Python por Felipe Tonello on the November 12th, 2007


Ajude a Combater o Spam! Clique aqui!

É isso ae..

Foi muito bom esse final de semana. Na sexta feira fui para o conisli onde dei duas palestras:

  • Engatinhando com PHP e AJAX(odp, pdf)
  • Zend Framework para um PHP mais poderoso(odp, pdf)

E no OLPC Game Jam Brazil foi muitoooo legal, bem mais do que eu imaginei!

Conheci muita gente, inclusive o Leandro Lameiro(manja muito de pyton) que fez parte do time que é super gente fina!

Comemos bastante lá, aprendemos muito e zuamos!
Computadores com Fedora, acesso ao root, XO para todos, internet, wifi, muita comida e até um quartinho para dormir! hehehe

Os jogos estavam muito bons! E a maioria do pessoal também não tinha muita experiência com PyGame, e uns nem com Python, fizeram em SDL com C mesmo!

Nota 10 para o evento, e estamos esperando o próximo!!

Depois eu faço um posto sobre o jogo que eu e o Leandro Lameiro desenvolvemos.

Vocês podem ver as fotos do evento no meu flick e na tag GameJam Brasil.

Conisli e Game Jam OLPC

Tags: , , , ,
Postado em Eventos por Felipe Tonello on the November 6th, 2007


Ajude a Combater o Spam! Clique aqui!

Esse final de semana será bem corrido hehehe

Galera, todos estão convidados para as 2 palestras que irei fazer no conisli, Congresso Internacional de Software Livre, na cidade de São Paulo.

A primeira será 15:45 às 16:45 Engatinhando com AJAX e PHP no dia 9/11.
Em seguida será 17:00 às 18:00 Zend Framework para um PHP mais poderoso no mesmo dia 9/11.

Depois da palestra vou correndo para São Carlos nas UFSCar(Universidade Federal de São Carlos), minha querida facul, onde terá o Game Jam OLPC nos dias 10-11/11.
Vou participar no time com o Leandro Lameiro. Uhuuu vamos lá!!! :)

Plugin Category Show(WordPress) atualizado 0.2

Tags: ,
Postado em PHP, WordPress por Felipe Tonello on the November 5th, 2007


Ajude a Combater o Spam! Clique aqui!

Houve mudanças no banco de dados na versão nova do WP, 2.3.x.

Então lancei a versão 0.2 que está funcionando no wordpress 2.3.x inclusive com a nova função para tags nos posts.

Você pode baixar aqui

wp_catshow0.2.tar.gz
wp_catshow0.2.zip

O Category Show exibe em formato de lista(<ul><li>) seus posts relacionados a categoria ou tag desejada.
Bastante útil para quem quer exibir seus tutoriais, artigos ou simplesmente seus posts de certa categoria.

Modo de uso

É mais fácil ainda usar.
No post seu, onde você quer listar sua(s) categorias é só usar essa sintaxe:
%.%wpcs-CATEGORIA%.%
só que sem o ponto(.) entre os %%. Coloquei se não ele lista as coisas hehe

O nome da categoria não pode ter acentos ou caracteres chatos. Caso sua categoria seja: “Olá tudo bom?“. Use assim:
%.%wpcs-ola tudo bom%.%
lembrando: sem o ponto entre os %%

Versão para WP 2.2.x:

wp_catshow.php.tar.gz
wp_catshow.php.zip

Ajudando no desenvolvimento do KDE 4

Tags: ,
Postado em KDE, Linux, Open-Source por Felipe Tonello on the November 2nd, 2007


Ajude a Combater o Spam! Clique aqui!

Comecei essa semana no projeto de desenvolvimento do KDE4.
No momento estou ajudando no desenvolvimento do KSysGuard, o monitor de sistema do KDE.

Olha, muito fera o desenvolvimento viu.. o pessoal manja demais, e sem contar na ajuda que você recebe..
Muito legal

O KSysGuard está sendo reformulado para o KDE 4, com novas funções de administração do sistema, bem legais.
No caso estou ajudando na parte de gerenciamento do processo. Você pode controlar quanto o processo vai usar de processador, hard disk e até network.

Só pra galera já ir imaginando como vai ser no KDE 4, icones oxygen, plasma, qt4 e sem contar que agora estão incentivando muito a acessibilidade!
KSysGuard KDE4

Por falar nisso, se alguem tiver alguma sugestão do layout da UI, por favor, fique a vontade de se expressar!