Book Image

Hands-On Penetration Testing with Python

By : Furqan Khan
Book Image

Hands-On Penetration Testing with Python

By: Furqan Khan

Overview of this book

With the current technological and infrastructural shift, penetration testing is no longer a process-oriented activity. Modern-day penetration testing demands lots of automation and innovation; the only language that dominates all its peers is Python. Given the huge number of tools written in Python, and its popularity in the penetration testing space, this language has always been the first choice for penetration testers. Hands-On Penetration Testing with Python walks you through advanced Python programming constructs. Once you are familiar with the core concepts, you’ll explore the advanced uses of Python in the domain of penetration testing and optimization. You’ll then move on to understanding how Python, data science, and the cybersecurity ecosystem communicate with one another. In the concluding chapters, you’ll study exploit development, reverse engineering, and cybersecurity use cases that can be automated with Python. By the end of this book, you’ll have acquired adequate skills to leverage Python as a helpful tool to pentest and secure infrastructure, while also creating your own custom exploits.
Table of Contents (18 chapters)

Debugger

The usual approach to understanding the behavior of an executable program is to attach it to a debugger and to set break points at various locations to interpret the code flow of the software under test. A debugger, as the name suggests, is a software utility or a computer program that can be used by programmers to debug their programs or software. It also lets programmers see the assembly of the code that is being executed. A debugger is capable of displaying the exact stack on which the code is executed. A debugger is capable of displaying the assembly level equivalent of the high-level programming language code written. Thus, a debugger shows the execution flow of the program in terms of execution stack for function calls, registers, and their addresses/values for program variables, and so on.

Let's take a look at the debuggers that we are going to cover in this...