Mostrando postagens com marcador Python. Mostrar todas as postagens
Mostrando postagens com marcador Python. Mostrar todas as postagens

13 de out. de 2016

Python - Revertendo bytecodes

0 comentários
Caso você precise recuperar um arquivo .py de um .pyc uma boa opção é usar o Decompyle++, que reverte os bytecodes compilados à um código python legível por humanos. 

  • Instalando o Decompyle++:
1) Primeiro precisamos instalar o cmake:
$ wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
$ tar xzvf cmake-2.8.12.2.tar.gz
$ cd cmake-2.8.10.2
$ ./bootstrap
$ make
# make install

2) Faça o download do Decompile++ e compile:
$ git clone git@github.com:zrax/pycdc.git
$ cd pycdc
$ /usr/local/bin/cmake ../pycdc/
$ make

  • Recuperando o arquivo .py original:
$ ./pycdc dicionario.pyc > dicionario.py

12 de out. de 2015

Revertendo a base64

1 comentários
A codificação base64 é usada para transmitir dados binários por meios de transmissão que lidam somente com texto, como por exemplo o protocolo SMTP ou o próprio HTTP que foi projetado para transferir textos ASCII, assim como imagens (que são convertidas em texto ASCII).

As conexões TCP suportam transmissão de bytes com 8 bits. Os dados do protocolo SMTP são caracteres ASCII de 7 bits, onde cada caractere é transmitido como um byte de 8 bits com o bit mais significativo zerado. No entanto, o protocolo SMTP interpreta o octeto 998 ou o caractere '.' como sendo uma nova linha, podendo gerar danos aos arquivos que contenham essa sequência de octetos. Assim, a conversão de bytes para ASCII tem sido bastante útil.

Conversão:
Na conversão da base64 o arquivo é dividido em bytes de 6 bits gerando 64 (0...63) possíveis valores, que são representados pelos caracteres: [A-Z] para (0-25)[a-z] para (26-51)[0-9] para (52-61)'+' para 62, '/' para 63 e '=' para adição, dando origem ao seu nome. A codificação da base64 não deve ser confundida com criptografia pois ela não garante nenhuma segurança.

27 de set. de 2015

Python - Hashlib e HMAC

0 comentários
O HMAC (Hash-base Message Authentication Code) é usado para verificar a integridade de informações e arquivos. Mecanismos que verificam a integridade baseados em uma chave secreta são usualmente chamados de MAC (message authentication codes), baseados em 2 partes que compartilham 2 chaves secretas para validar a informação transmitida. O HMAC usa uma variedade de algoritmos como: MD5, SHA1, SHA256, RIPEMD-128/160, entre outros.

exemplo_hmac.py:
import hmac
import hashlib
# o hmac.new possui 3 argumentos: chave, msg e o modulo do hash
gerar_resumo=hmac.new('chave_secreta','',hashlib.md5)
f=open('arquivo.txt','rb')
try:
    while True:
        bloco=f.read(1024)
        if not bloco:
           break
        gerar_resumo.update(bloco)
finally:
    f.close()
resumo=gerar_resumo.hexdigest()
print resumo

14 de jul. de 2015

HTTP Proxy em Python

0 comentários
O proxy age como intermediário entre o servidor local e requisições da internet, facilitando a nagevagação, controlando o acesso e fornecendo anonimato.
  • Criando um HTTP Proxy:
Nesse proxy, vamos criar uma função start() para fazer conexão entre o navegador e o servidor web.
import socket, sys, thread, httplib, re
def start():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind(('', 8001))
        s.listen(10)
        print "[+] Ouvindo as conexoes..."
    except Exception, e:
        print "[-] Nao foi possivel iniciar o socket. :("
        sys.exit(3)
    while True:
        try:
            conn, addr = s.accept()
            data = conn.recv(4096)
            thread.start_new_thread(conn_string, (conn, addr, data))
        except KeyboardInterrupt:
            s.close()
            print "\n[-] Servidor Proxy finalizando..."
            print "[-] Saindo...\n"
            sys.exit(1)

17 de set. de 2013

Python - eval() ou evil()?

1 comentários
    A linguagem python possui várias funções para interagir com o interpretador, uma delas é a eval(), que avalia uma string como uma expressão python:
>>> assert eval("3*3 + len('zeldani')") == 16
>>> marmotas = 7
>>> eval("pow(marmotas,3)")
343

    Podemos executar os mais remotos comandos através do __import__ do módulo __builtins__:
>>> eval("__import__('os').system('clear')", {})
>>> eval("__import__('os').getcwd()", {})
'/home/zeldani'

>>> eval('eval(compile("import os;os.system(\\"ls\\")","q","exec"))')

23 de jul. de 2013

Vim Plugins

0 comentários
    Pela necessidade tive que aprender a usar o Vim, pois o meu Sublime Text 2 expirou. Pesquisando no Google, achei vários plugins interessantes que facilitam a edição, visualização e configuração do vim.
  • NerdTree:
    
    O Nerd Tree permite que vc explore seus arquivos do sistema, que ficam facilmente visualizados na forma de ramificações (tree).



Instalação:
cd ~/.vim/bundle  
git clone https://github.com/scrooloose/nerdtree.git

No Fedora:
# yum install vim-nerdtree     

    Para iniciar o NerdTree, no modo normal use o :NERDTree.

11 de jun. de 2013

Python - Módulo CSV

0 comentários

    O módulo csv é usado para ler arquivos do formato csv (comma-separated values), usado pelo excel e vários outros programas. Cada csv possui um número de linhas e colunas, por exemplo:

filmes.csv:
Titulo,Genero,Data 
Monty Python e o Cálice Sagrado,Comédia,1975
A Vida de Brian,Comédia,1979
   

  • Construtores:
csv.reader(arquivo_csv) -> reader
  Cria um objeto reader para parsear o arquivo, retornando a sequência de valores de cada linha. Sintaxe: ler_csv = csv.reader(open("arquivo.csv", "rb")).

csv.writer(arquivo_csv) -> writer
    Cria um objeto writer que pode formatar a sequência de valores e escrever as linhas no arquivo. Sintaxe: escrever_csv = csv.writer(open("arquivo.csv", "wb")).

13 de nov. de 2012

Criando um Webcrawler em Python

7 comentários
     Os webcrawlers são processos automatizados para busca ou manutenção de sites (checar links e validação do código). Através dos crawlers temos os mecanismos de buscas do Google e Altavista!! Eles interagem com o ambiente através do uso de protocolos HTTP, SMTP, RSS, etc. O Googlebot usa o algoritmo do PageRank para classificar a ordem de importância dos sites. 
    Exitem questões legais para o uso de crawlers, por isso respeite as regras do robots.txt e suas políticas de cortesia.
     Os webcrawlers se identificam no servidor pelo User-Agent http header. Podemos ver esses dados usando o urllib2:

import urllib2
url = raw_input('url: ')
if 'http' not in url:
 url = 'http://'+url
resposta = urllib2.urlopen(url)
html = resposta.read()
print html.split('\n')[0]
print resposta.info()

    Agora vamos aos exemplos!! Para testar os códigos abaixo, é preciso instalar a biblioteca BeautifulSoup e o Requests: 
$ apt-get install python-bs4
$ easy_install beautifulsoup4
ou
$ pip install beautifulsoup4

$ pip install requests
ou
$ easy_install requests 

25 de out. de 2012

Testes Funcionais - Selenium WebDriver

2 comentários
     O Selenium é uma ferramenta para automatização do navegador (playback e scripting), usado para testar aplicações web.  No Django 1.4 temos o LiveServerTestCase para testar o servidor, facilitando a integração de testes do Django com o Selenium.
    O WebDriver são as ações do navegador através da API (no Django é usado a linguagem Python). Ele suporta diferentes navegadores: Firefox, Chrome, IE. Suas funções são: pegar a página, os elementos, adicionar um input e manipular esses elementos.

Instalação:
# pip install selenium
ou
# easy_install selenium

Buscando elementos:
driver.find_element_by_id('id_usuario') 
driver.find_element_by_name('zeldani')
driver.find_element_by_xpath('//input')
driver.find_element_by_link_text('Proximo')
driver.find_element_by_partial_link_text('Prox')
driver.find_element_by_tag_name('frame')
driver.find_element_by_class_name('body')
driver.find_element_by_css_selector('input') 

20 de set. de 2012

Zen of CherryPy

0 comentários
     O CherryPy é um framework gratuito e open source criado por Rémi Delon (2002), voltado para o desenvolvimento de aplicações web, utilizando a linguagem Python. Suas aplicações costumam ser bastante simples, onde o servidor não necessita de customizações extensivas, bastando ter o interpretador Python instalado.
  • Instalação:
     Faça o download da versão atualizada pelo repositório do souce forge.
     Descompacte o arquivo com o comando:
# tar zxvf CherryPy-2.2.1.tar.gz

     Acesse o diretório criado: # cd CherryPy-2.2.1
     Instale o framework: # python setup.py install

9 de set. de 2012

Dicas Python - Criptografia

0 comentários

     As codificações em base são usadas para guardar ou transferir dados que são restritos do US-ASCII  (caracteres baseados no alfabeto inglês - códigos de 0 à 31, 127 em decimal não podem ser impressos).

19 de ago. de 2012

Python - Classes

0 comentários
- Programação orientada a objetos:
    É uma disciplina da programação que busca unificar a idéia de algoritmos (sequências de instruções) e estrutura de dados através do conceito de Objeto (unidade de software que encapsula os algoritmos e os dados que ele atua).
     Alguns conceitos importantes da OOP:
- Poliformismo: permite que dois objetos diferentes possam ser usados de maneira parecida. 
- Abstração ou Encapsulamento: é o que permite que um objeto seja utilizado sabendo apenas sua interface, não sendo necessário saber sobre a implementação dos métodos.
- Herança: é o que permite construir objetos que são as especializações de outros objetos. 

- Objetos em Python:
     
       A linguagem Python suporta orientação à objetos através de classes.
    - Classes: pode ser definida como uma fábrica de objetos, todos com as mesmas características. 
    - Instâncias: concretização de uma classe. 
      As principais entidades da oop do python são as classes e as instâncias da classe. Observe a figura ao lado. A fabrica representa as classes e os ursinhos as instâncias das suas respectivas classes. Os atributos das classes são as estruturas particulares de cada instância como a cor ou pata.

    15 de ago. de 2012

    Python - Usando o módulo threading

    1 comentários

    Definição de Thread:
         Thread = Linha ou encadeamento de execução, é uma forma de processo que se divide em duas ou mais vezes para executar uma tarefa. Ex: em um jogo um thread pode executar os gráficos e outro o aúdio, onde o usuário percebe sua execução simultanea em tempo real. Um dos seus benefícios é que se um thread ficar parado (em estado de bloqueio) à espera de algum dispositivo de entrada/saída, um outro thread que estava na fila de espera entra em execução.
         Um thread não é um programa, mas executa dentro do programa. É possível executar vários threads em um único programa (multithread):

    Módulo threading:
         No Python, o módulo nativo para executar os threads é o Thread. Ele é interpretado por sistemas que suportem o posix threads (pthreads). O módulo Threading é uma interface de alto nível para utilização de threads. Esse módulo permite que os thread sejam executados de uma maneira mais fácil.

    26 de abr. de 2012

    Módulo Optparse

    0 comentários
        O optparse é uma biblioteca da linguagem Python que permite ao usuário obter ajuda através do comando de linha, ou seja, permite a criação de manuais!!! É possível criar opções curtas ex: "-z" e longas "--zeldani".
         Vamos usar o seguinte código:  
        Salve como zeldani.py e para testar o arquivo, você pode usar os seguintes comandos:
    $ python zeldani.py -h ou --help
    $ python zeldani.py -?
    $ python zeldani.py -z ou --zeldani
    $ python zeldani.py -f /home/zeldani/teste.txt

    * Fontes:
    http://www.alexonlinux.com/pythons-optparse-for-human-beings
    http://docs.python.org/library/optparse.html
    http://www.eurion.net/python-snippets/snippet/Show%20optparse.html

    20 de abr. de 2012

    Enviando emails usando Python Script

    2 comentários
         Ola, nesse post vou explicar com enviar emails usando a biblioteca smtplib!!! ;)
          O código é bastante simples, mas você pode usar a criatividade para colocar mais funções rsrs!!!  No exemplo abaixo eu usei o servidor do hotmail (smpt.live.com), você pode modificar ele de acordo com sua preferência!!!

    * Dica: Ao nomear o arquivo, evite nomes como Email.py pois pode ocorrer um erro de conflito de nomes ao importar os pacotes smtp.

    * Fontes:
    http://thysmichels.com/2012/02/07/python-send-email-gmail/
    http://docs.python.org/library/smtplib.html
    http://love-python.blogspot.com.br/search/label/Python%20send%20email

    31 de jan. de 2012

    Criando um IRC Bot em Python

    3 comentários
         Nesse artigo vou explicar como criar um IRC Bot usando a linguagem Python. Resolvi escrever o artigo pela dificuldade que encontrei em achar materiais sobre o assunto, então reuni o que achei para colocar nesse post!!!
         É isso ai, agora é só usar sua imaginação e criatividade para criar mais funções para o seu irc bot!!! ;)

    24 de ago. de 2011

    Lista de Comandos em Python

    11 comentários
    Print = Imprime uma palavra ou frase.
    # = Serve para colocar comentários em apenas uma linha.
    % = Serve para indicar a variavel.
    %s = Armazena o valor tipo string na variavel.
    %d = Armazena um valor tipo numérico na variável.
    %r = Armazena um valor de qualquer tipo na variável.
    \t = Quebra de linha.
    input = Anexa a uma variável o valor informado pelo usuário.
    raw_input = Anexa um txt a uma variável.
    if = Argumento condicional que significa "se".
    if not = Argumento condicional que significa "se não".
    else = Argumento condicional que significa "então".