
Code source du livre « Black Hat Python » de Justin Seitz. Le code a été entièrement converti en Python 3, reformaté pour respecter les normes PEP8 et refactorisé pour éliminer les problèmes de dépendance liés à l'implémentation de bibliothèques obsolètes.
Code source du livre "Black Hat Python" de Justin Seitz. Le code a été entièrement converti en Python 3, reformaté pour se conformer aux normes PEP8 et refactorisé pour éliminer les problèmes de dépendance liés à l'implémentation de bibliothèques obsolètes.
Bien que de nombreuses optimisations aient pu être implémentées dans le code source présenté tout au long du livre, le code a été laissé aussi inchangé que possible afin que le lecteur puisse appliquer ces modifications à sa guise. Le code tel quel nécessite des efforts de refactorisation sérieux allant des docstrings au typage et à la gestion des exceptions, sans oublier des améliorations comme les gestionnaires de contexte, mais ces problèmes en eux-mêmes peuvent profiter au lecteur s'il a l'intention de les implémenter. Il présente également de nombreux bogues provenant de l'indentation qui ont été corrigés pour éviter des erreurs fatales lors de l'exécution.
Une conversion similaire à celle-ci a été mise à disposition par moi-même sur le code source du livre "Violent Python", de TJ O'Connor. Jetez-y un coup d'œil ici si vous ne l'avez pas encore fait.
Choisissez simplement un répertoire (DIR) dans lequel cloner le projet avec git clone, créez un nouvel environnement virtuel ou venv pour celui-ci (recommandé) et installez les dépendances avec 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
Corrections critiques de bogues qui ont dû être apportées pour implémenter correctement le code source et éviter des erreurs fatales :
chapter02/bh_sshserver.py nécessitait la clé RSA contenue dans le fichier test_rsa.key, désormais incluse dans le répertoire correspondant.chapter03/sniffer_ip_header_decode.py, sniffer_with_icmp.py et scanner.py avaient tous de sérieux problèmes dans la définition des tailles de paquets IP et de portabilité entre architectures 32/64 bits en raison de problèmes dans l'implémentation de struct. Plus d'informations sur ces problèmes dans ce fil sur Stack Overflow.chapter03/scanner.py utilisait la bibliothèque netaddr, qui n'est plus maintenue et présente de nombreuses incompatibilités avec Python 3. Pour cette raison, le code a été refactorisé et utilise désormais le module ipaddress de la stdlib de Python.chapter04/arper.py et mail_sniffer.py utilisaient la bibliothèque scapy, qui n'est pas compatible avec Python 3. Pour cette raison, le code a été refactorisé et utilise désormais la bibliothèque kamene.chapter04/pic_carver.py utilise désormais la bibliothèque opencv-python au lieu de cv2. Le module "cv2.cv" était obsolète et a été remplacé. Le paramètre "cv2.cv.CV_HAAR_SCALE_IMAGE" du code original a été remplacé par "cv2.CASCADE_SCALE_IMAGE" à cause de ce commit.chapter05/content_bruter.py nécessitait une liste de mots pour fonctionner. Elle a été ajoutée au chapitre sous all.txt.chapter05/joomla_killer.py nécessitait une liste de mots pour fonctionner. Elle a été ajoutée au chapitre sous cain.txt.chapter06/bhp_bing.py, bhp_fuzzer.py et bhp_wordlist.py ont été reformatés pour se conformer à PEP8, bien que certains avertissements continueront d'être déclenchés en raison de la nécessité de conformer les noms de classes à la casse camel dans cette application spécifique sur Burp Suite.chapter06/jython-standalone-2.7.2.jar est disponible en tant que version plus récente du fichier par rapport à celle présentée dans le livre.chapter07/git_trojan.py a été refactorisé pour remplacer la bibliothèque imp (maintenant obsolète) par types. Une structure de sous-répertoires avec les fichiers de configuration nécessaires a été implémentée comme indiqué dans le livre. La variable "trojan_config" manquait du chemin relatif vers le sous-répertoire config. Un appel à la méthode "to_tree" a été ajouté à la ligne 60 pour éviter une exception AttributeError générée par le code original. Des instructions sur la façon de générer un jeton d'accès au lieu d'utiliser son mot de passe en cas d'utilisation de 2FA ont été incluses en commentaires.chapter08/keylogger.py nécessite la bibliothèque PyHook pour fonctionner. Un fichier wheel a été inclus avec la version 1.6.2. Si nécessaire, d'autres versions peuvent être téléchargées depuis ici.chapter09/ie_exfil.py générait des erreurs en raison de la gestion de la variable plaintext (qui peut apparaître comme une chaîne de caractères ou une chaîne binaire) lorsqu'elle était transmise à la fonction "encrypt_string". De plus, l'utilisation de la bibliothèque base64 a été corrigée. Contribution de Enraged dans ce commit.Les contributions dans d'autres langues peuvent être consultées ici :
Par bon sens, essayez d'abord de discuter du changement que vous souhaitez apporter à ce dépôt via une issue.