-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Open
Description
Title: [enhancement] Add MySQL client/server protocol layer in scapy.contrib (MVP)
Hi Scapy maintainers,
I would like to contribute a new protocol module for MySQL in scapy.contrib to simplify parsing and crafting MySQL packets during analysis and testing.
Reference style I plan to follow:
scapy/contrib/postgres.py- Existing UTScapy contrib tests in
test/contrib/*.uts
Motivation
- MySQL is common in lab traffic and security assessments.
- Having native packet classes would make dissections and crafted exchanges easier than manual byte handling.
- A contrib module seems appropriate as a first step before considering broader scope.
Proposed scope (MVP)
- Add
scapy/contrib/mysql.pywith:- MySQL packet header (
payload_lengthon 3 bytes +sequence_id) - Initial Handshake (Protocol::HandshakeV10) parsing/building
- Handshake Response (client) basic parsing/building
- Core server responses:
OK_Packet,ERR_Packet,EOF_Packet COM_QUERYpacket support- TCP binding on port 3306
- MySQL packet header (
- Add regression tests in
test/contrib/mysql.utswith deterministic byte fixtures.
Out of scope for MVP
- Full command set coverage
- Full capability/auth plugin matrix
- Compression protocol and all optional extensions
- Complex session reassembly edge cases beyond base packet framing
Design goals
- Keep API Scapy-like and minimal.
- Avoid external runtime dependencies.
- Keep implementation and tests small and reviewable.
Questions for maintainers
- Is
scapy.contribthe right location for this protocol initially? - Is the MVP scope above acceptable for a first PR?
- Any preferred naming conventions for MySQL packet classes/fields before implementation starts?
If this direction looks good, I will open a first Draft PR with the MVP and UTScapy tests.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels