Book Image

Effective Python Penetration Testing

By : Rejah Rehim
Book Image

Effective Python Penetration Testing

By: Rejah Rehim

Overview of this book

Penetration testing is a practice of testing a computer system, network, or web application to find weaknesses in security that an attacker can exploit. Effective Python Penetration Testing will help you utilize your Python scripting skills to safeguard your networks from cyberattacks. We will begin by providing you with an overview of Python scripting and penetration testing. You will learn to analyze network traffic by writing Scapy scripts and will see how to fingerprint web applications with Python libraries such as ProxMon and Spynner. Moving on, you will find out how to write basic attack scripts, and will develop debugging and reverse engineering skills with Python libraries. Toward the end of the book, you will discover how to utilize cryptography toolkits in Python and how to automate Python tools and libraries.
Table of Contents (16 chapters)
Effective Python Penetration Testing
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface

Using PyDBG


We can use the PyDBG module to debug executables in run time. We can go through a basic script with PyDBG to understand how it works.

First, we import the modules:

from pydbg import *
import sys

Then we define a function to handle the breakpoint. Also, it takes the pydbg instance as the argument. Inside this function, it prints out the execution context of the process and instructs pydbg to continue:

define breakpoint_handler(dbg):
   print dbg.dump_context()
   return DBG_CONTINUE

Then we initialize the pydbg instance and set the handler_breakpoint function to handle the breakpoint exception:

dbg = pydbg()
dbg.set_callback(EXEPTION_BREAKPOINT, breakpoint_handler)

Then attach the process ID of the process which we need to debug using pydbg:

dbg.attach(int(sys.argv[1]))

Next we will set the address at which to trigger the breakpoint. Here, we use bp_set() function, which accepts three arguments. The first is the address at which to set the breakpoint, the second is an optional description...