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)

Socket programming basics

When we talk of sockets, we are referring to both the TCP and the UDP socket. A socket connection is nothing but a combination of the IP address and the port number. Every service that we can think of that runs on a port implements and uses sockets internally.

For example, our web server, which always listens on port 80 (by default), opens a socket connection to the outside world and binds to the socket with the IP address and the port 80. The socket connection can be used in the following two modes:

  • Server
  • Client

When the socket is used as a server, the sequence of steps that the server performs is as follows:

  1. Create a socket.
  2. Bind to the socket.
  3. Listen at the socket.
  4. Accept connections.
  5. Receive and send data.

On the other hand, when the socket connection is used as a client to connect to a server socket, the sequence of steps is as follows:

  1. Create...