PyConBrasil 2008 lá vou eu!

Tags: ,
Postado em Eventos, Python por Felipe Tonello on the August 12th, 2008


Ajude a Combater o Spam! Clique aqui!

Galera, é com muita alegria que estou postando novamente aqui.

Primeiramente gostaria de dizer que mudei de trabalho. Estou trabalhando remotamente, em casa, para uma empresa canadense de Open Source e Linux chamada Savoir-faire Linux! Uma maravilha hehehehe

Segundo, é que voltei a trabalhar com coisas que gosto, como Python, C++ e KDE4.

Portanto estarei indo para a PyConBrasil 2008, que vai ser no Rio de Janeiro.

Nós da GruPy-SP estamos tentando fazer algum arranjo para ir de onibus fretado e ficar num hotel por lá, vai ser super legal!

E você, vai?

Você gosta do seu emprego? Em busca do emprego perfeito?

Tags: , , , ,
Postado em Artigos, Open-Source, Python, Tecnologia e Tendências, nerd por Felipe Tonello on the May 29th, 2008


Ajude a Combater o Spam! Clique aqui!

I Love LinuxÉ impressionante como todo mundo que se forma em uma faculdade sai com aquela esperança de revolucionar o mundo, criar uma empresa como o Google ou até mesmo ir para lá como desenvolvedor super power em Python.

É, dizem que nada é impossível mesmo. Mas até quando temos que ficar sonhando?

Bom, apesar de ter menos de 2 anos de experiência eu já trabalhei em 4 empresas, desde pequenas até gigantes. Sempre tentando achar um emprego perfeito.

Como você define algo bom? Salário? Benefícios? Projetos? Tecnologia usada? Aprendizado?

Para nós que somos geeks(linuxeros) isso é mais difícil ainda! Gostamos de Python, PHP, Linux, Vim etc etc. Mas muitas vezes temos que engulir seco por trabalhar com ASP.NET (meu caso).
É, estou me cansando de novo. Não gosto da environment de trabalho, do projeto e principalmente da tecnologia usada. Meu direito, certo?

Mas até onde compensa ficar pulando de trabalho em trabalho, tentando achar algo que você se adapte? Ou então trabalhar por conta?
Muitas vezes você não pode fazer isso. Por falta de oportunidade ou “simplesmente” responsabilidades a cumprir.

Python PoweredBom, eu já estava deixando essa coisa de ter emprego perfeito de lado. Até que me apareceu uma oportunidade para trabalhar com Linux, Python, PHP, C++/Qt GTK. Tudo opensource. Parece até um sonho. Aceitei na hora!

Mas e você? Acha que um dia vai para ser um Guido van Rossum do Google? O que faz para que isso um dia possa ser realizado? Vale a pena lutar por isso? Ou, talvez, não esquenta cabeça mais com isso?

Aqui eu dei um exemplo pessoal, mas não necessariamente você gosta de Linux.

Conte sua história :)

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.

Desafio criptografia Blowfish

Tags: , ,
Postado em Artigos, Dicas Python, Python, nerd por Felipe Tonello on the August 23rd, 2007


Ajude a Combater o Spam! Clique aqui!

Eu estou testando esses dias um brute force que estou fazendo, só que para testa-lo eu tive que usar uma criptografia chamada Blowfish. Ela é bem interessante e também opensource. Ela é bem simples de implementar também.

Desafio!!

Agora vamos para o legal.
O desafio é bem simples também.

Quem descriptografar essa mensagem vai ganhar um post aqui no meu blog além de se divertir um pouquinho heheh :)

  1. 9M39agUxnX8PRznCylaC1/6rEXVP5R85QTO/be8XAO+WRJ2nAGDQ4PWq
  2. SOGSQe/CRDkegrH242gpfOcBHPZ6TURUMcQZXkSV8g7WcEIQiCLTuejOt0HCExewS
  3. XUgxg8wRlvO6G2ZrKOv6YLzcsXmBHB/JbZ5nuMnlIYQNGj1ncYHbxyJrGHj1Xr7Q696E+u
  4. WfcZAm9z/iRfZ9rb79EXY7f/5BBEvdkluxDpedPzam33CQLZoEVixSOwVI18USigj45W6fDk+
  5. yFTGkLF1tmh5Zg==

O detalhe é que não existe essas quebras de linha, só coloquei por questão de não destruir o layout.
A senha da mensagem criptografada é: desafio

Blowfish para Python (está em arquivo .txt porque meu servidor não deixa baixar script direto :( )
Blowfish para PHP(pear package)
Blowfish para Java
Blowfish para C++
Blowfish para C
Blowfish para Pascal
Blowfish para Perl

O desafiante pode usar qualquer tipo de linguagem de programação. O Blowfish existe em qualquer linguagem, até Javascript. É só dar uma pesquisada.

Se você não conhecer criptografia e muito menos blowfish, a ideia principal é dar uma pesquisada como que descriptografa usando a técnica blowfish..

PS: Esse desafio é simples, mas existe pegadinhas nele. hehehe :D

Resposta do desafio!

Encontro Brasileiro da Comunidade Python!

Postado em Eventos, Python por Felipe Tonello on the August 10th, 2007


Ajude a Combater o Spam! Clique aqui!

Galera,

Vai acontecer o PyConBrasil 3 que vai acontecer esse ano em Joinville, SC nos dias 30, 31 de agosto e 1 de setembro na SOCIESC.

Encontro Brasileiro da Comunidade Python!

Eu nunca fui em nenhum, vai ser minha primeira vez e estou muito animado! Vai ser muito bom! Estava vendo a programação e vou debulhar todas as palestras!!!!!

NÃO PERCA TEMPO, FAÇA SUA INSCRIÇÃO AGORA!!!!!