
Código-fonte do livro "Black Hat Python" de Justin Seitz. O código foi totalmente convertido para Python 3, reformatado para atender aos padrões PEP8 e refatorado para eliminar problemas de dependência envolvendo a implementação de bibliotecas obsoletas.
Código-fonte do livro "Black Hat Python" de Justin Seitz. O código foi totalmente convertido para Python 3, reformatado para cumprir os padrões PEP8 e refatorado para eliminar problemas de dependência envolvendo a implementação de bibliotecas obsoletas.
Embora muitas otimizações pudessem ter sido implementadas no código-fonte apresentado ao longo do livro, o código foi deixado o mais inalterado possível para que tais modificações possam ser aplicadas pelo leitor conforme julgar adequado. O código como está precisa de sérios esforços de refatoração, desde docstrings até dicas de tipo e tratamento de exceções, sem mencionar melhorias como gerenciadores de contexto, mas esses problemas por si só podem beneficiar o leitor se ele tiver a intenção de implementá-los. Também apresenta muitos bugs originados de indentação que foram corrigidos se erros fatais fossem evitados durante a execução.
Uma conversão semelhante a esta foi disponibilizada por mim no código-fonte do livro "Violent Python", de TJ O'Connor. Dê uma olhada aqui se ainda não o fez.
Simplesmente escolha um diretório (DIR) no qual clonar o projeto usando git clone, crie um novo ambiente virtual ou venv para ele (recomendado) e instale os requisitos usando pip install.
user@host:~/DIR$ git clone https://github.com/EONRaider/blackhat-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt
Correções críticas de bugs que tiveram que ser feitas para implementar adequadamente o código-fonte e evitar erros fatais:
chapter02/bh_sshserver.py exigia a chave RSA contida no arquivo test_rsa.key, agora incluída no diretório correspondente.chapter03/sniffer_ip_header_decode.py & sniffer_with_icmp.py & scanner.py todos tinham sérios problemas na definição de tamanhos de pacotes IP e portabilidade entre arquiteturas 32/64 bits devido a problemas na implementação de struct. Mais sobre esses problemas neste tópico no Stack Overflow.chapter03/scanner.py usava a biblioteca netaddr, que não é mais mantida e apresenta muitas incompatibilidades com Python 3. Por esse motivo, o código foi refatorado e agora usa o módulo ipaddress da stdlib do Python.chapter04/arper.py & mail_sniffer.py usavam a biblioteca , que não é compatível com Python 3. Por esse motivo, o código foi refatorado e agora usa a biblioteca .Contribuições em outros idiomas podem ser conferidas aqui:
Como questão de bom senso, primeiro tente discutir a mudança que deseja fazer neste repositório através de uma issue.
scapykamenechapter04/pic_carver.py agora usa a biblioteca opencv-python em vez de cv2. O módulo "cv2.cv" foi descontinuado e substituído. O parâmetro "cv2.cv.CV_HAAR_SCALE_IMAGE" do código original foi substituído por "cv2.CASCADE_SCALE_IMAGE" devido a este commit.chapter05/content_bruter.py exigia uma wordlist para funcionar. Ela foi adicionada ao capítulo sob all.txtchapter05/joomla_killer.py exigia uma wordlist para funcionar. Ela foi adicionada ao capítulo sob cain.txtchapter06/bhp_bing.py & bhp_fuzzer.py & bhp_wordlist.py foram reformatados para cumprir PEP8, embora alguns avisos ainda sejam acionados devido à necessidade de conformar nomes de classes ao camelCase nesta aplicação específica no Burp Suite.chapter06/jython-standalone-2.7.2.jar está disponível como uma versão mais atualizada do arquivo em relação ao apresentado no livro.chapter07/git_trojan.py foi refatorado para substituir a biblioteca imp (agora obsoleta) por types. Uma estrutura de subdiretórios com os arquivos de configuração necessários foi implementada conforme instruído no livro. A variável "trojan_config" estava sem o caminho relativo ao subdiretório config. Uma chamada ao método "to_tree" foi adicionada na linha 60 para evitar uma exceção AttributeError gerada pelo código original. Instruções sobre como gerar um token de acesso em vez de usar a senha caso 2FA esteja sendo usado foram incluídas como comentários.chapter08/keylogger.py requer a biblioteca PyHook para funcionar. Um arquivo wheel foi incluído com a versão 1.6.2. Se necessário, outras versões podem ser baixadas aqui.