What this book covers
Chapter 1, Working with Python Scripting, introduces you to the Python language, object-oriented programming, data structures, exceptions, managing dependencies for developing with Python, and development environments.
Chapter 2, System Programming Packages, teaches you about the main Python modules for system programming, looking at topics including reading and writing files, threads, sockets, multithreading, and concurrency.
Chapter 3, Socket Programming, gives you some basics on Python networking using the socket
module. The socket
module exposes all of the necessary pieces to quickly write TCP and UDP clients, as well as servers for writing low-level network applications.
Chapter 4, HTTP Programming and Web Authentication, covers the HTTP protocol and the main Python modules, such as the urllib
standard library and requests
module to retrieve and manipulate web content. We also cover HTTP authentication mechanisms and how we can manage them with the requests
module. Finally, we cover how to implement OAuth clients and JWT for token generation in web applications.
Chapter 5, Analyzing Network Traffic and Packet Sniffing, covers the use of Python to analyze network traffic using the pcapy
and scapy
modules. These modules provide the ability to write small Python scripts that can investigate network traffic.
Chapter 6, Gathering Information from Servers with OSINT Tools, covers the main tools we can find in the Python ecosystem for extracting information from publicly-exposed servers using Open Source Intelligence (OSINT) tools. We will review tools such as Google Dorks, SpiderFoot, DnsRecon, DnsPython, and other tools for applying fuzzing processes with Python.
Chapter 7, Interacting with FTP, SFTP, and SSH Servers, details the Python modules that allow us to interact with FTP, SFTP, and SSH servers, checking the security in SSH servers with the ssh-audit tool. Also, we will learn how to implement a brute-force tool for connecting with SSH servers.
Chapter 8, Working with Nmap Scanner, introduces Nmap as a port scanner and covers how to implement network scanning with Python and Nmap to gather information on a network, a specific host, and the services that are running on that host. Also, we cover how to find possible vulnerabilities in a given network with Nmap scripts.
Chapter 9, Interacting with Vulnerability Scanners, covers OpenVAS and OWASP ZAP as vulnerability scanners and gives you reporting tools for the main vulnerabilities we can find in servers and web applications. Also, we cover how to use them programmatically from Python with the python-gmv
and owasp-zap
modules. Finally, we cover how to write a vulnerability report with the WriteHat tool.
Chapter 10, Interacting with Server Vulnerabilities in Web Applications, covers the main vulnerabilities in web applications and the tools we can find in the Python ecosystem to discover vulnerabilities in CMS web applications and sqlmap for detecting SQL vulnerabilities. Regarding server vulnerabilities we cover in detail how to detect vulnerabilities in Tomcat servers.
Chapter 11, Obtain Information from Vulnerabilities Database, covers how to get information about vulnerabilities from CVE, NVD, and vulners databases.
Chapter 12, Extracting Geolocation and Metadata from Documents, Images, and Browsers, covers, main modules we have in Python for extracting information about the geolocation of IP addresses, extracting metadata from images and PDF documents, and identifying the web technologies used by a website. Also, we cover how to extract metadata from the Chrome and Firefox browsers and information related to downloads, cookies, and history data stored in SQLite databases.
Chapter 13, Python Tools for Brute-Force Attacks, covers the main dictionary-builder tools we have in the Python ecosystem for brute-force attacks. We cover the process of executing brute-force attacks and the tools for executing these attacks against web applications and password-protected ZIP files.
Chapter 14, Cryptography and Code Obfuscation, covers the main modules we have in Python to encrypt and decrypt information, including pycryptome
and cryptography
. Also, we cover how to generate keys securely in Python with the secrets
and hashlib
modules. Finally, we cover Python tools for code obfuscation.