YAPTF: Penetration Testing GUI Toolkit
A multi-threaded desktop diagnostics suite automating network scans, credential cracking, and asset fingerprinting.
Project Overview
YAPTF (Yet Another Penetration Testing Framework) is an all-in-one desktop GUI security dashboard. Built to streamline routine penetration testing, reconnaissance, and administrative discovery tasks, it centralizes core active probing algorithms behind a credentialed local gateway.
By implementing desktop window states via Python's standard graphical interface libraries, this tool allows operators to quickly execute low-level port analysis, perform raw web parameter cracking, parse web crawl rules, and map network hardware back to specific manufacturing vendors.
Technical Architecture & Tool Layout
The architecture utilizes a modular layout, dividing specialized network operations into distinct, isolated functions within the GUI execution loop:
Key Framework Capabilities
-
Socket-Level Probing: Uses raw Python
socketinterfaces to execute DNS resolutions and connection attempts. By forcing temporary operational timeouts on active threads, the engine checks port open states and harvests banner metadata safely. -
Active Threat Simulations: Leverages the
requestspackage to run automated pin and password brute-forcing attempts against target web structures, managing thread-safe responses and alerting the operator with dynamic dialog prompts upon success. -
Reconnaissance Automation: Employs
robotparserclasses to fetch, mirror, and analyze remote robots exclusion protocols, instantly identifying structural paths flagged as restricted. - Hardware Identification: Maps 6-digit MAC address Organizationally Unique Identifiers (OUIs) using database stream readers, matching hardware signatures to verify network-attached devices.
Key Python Implementation
Below is the core of the multi-functional toolkit's socket-based port configuration scanner and low-level banner grabber routine:
# Socket-level host resolution and network port analysis
def portscanner():
# Resolves domain parameters or raw IP addresses
host_type = raw_input("Domain [D]/IP [I]: ")
if host_type == "D":
user_specified = raw_input("Host domain: ")
host = socket.gethostbyname(user_specified)
elif host_type == "I":
host = raw_input("IP address: ")
# Probe socket connection
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(5) # Enforce a safe timeout
try:
s.connect((host, port))
# Grab service banner on connection success
s.send("Data")
banner_data = s.recv(1024)
print("[+] Banner Grabbed: %s" % banner_data)
except socket.error:
s.close()
print("[-] Error: Connection failed")
Key Engineering Takeaways
- GUI Event-Loop Optimization: Gained extensive experience managing graphical application windows using `Tkinter`, including managing frame layouts, handling input fields, and triggering system alerts.
- Low-Level Network Communications: Explored Python’s socket module to establish TCP streams, capture protocol banners, configure error safety timeouts, and handle unexpected socket exceptions natively.