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.py with:
- MySQL packet header (
payload_length on 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_QUERY packet support
- TCP binding on port 3306
- Add regression tests in
test/contrib/mysql.uts with 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.contrib the 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.
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.contribto simplify parsing and crafting MySQL packets during analysis and testing.Reference style I plan to follow:
scapy/contrib/postgres.pytest/contrib/*.utsMotivation
Proposed scope (MVP)
scapy/contrib/mysql.pywith:payload_lengthon 3 bytes +sequence_id)OK_Packet,ERR_Packet,EOF_PacketCOM_QUERYpacket supporttest/contrib/mysql.utswith deterministic byte fixtures.Out of scope for MVP
Design goals
Questions for maintainers
scapy.contribthe right location for this protocol initially?If this direction looks good, I will open a first Draft PR with the MVP and UTScapy tests.