scapy
scapy copied to clipboard
2.7.0 release
Hi everyone ! This issue tracks the associated 2.7.0 release. As usual, feel free to comment down below to have some features/bugs included before the final release.
The current first RC is planned for: 2nd november 2025. You can expect the full release a few days/weeks after that date.
Deprecation notice
- This version will be the last to support Python 3.7 and 3.8. (PEP639 will require a new license format starting in 2026, which isn't supported in the latest version of setuptools available on those older versions of Python.)
CHANGELOG
- [new] ForwardMachine: a new Scapy feature allowing to create a scriptable TCP forwarder. It can edit packets on the fly, redirect them to another server and more. More details here
- Windows protocols:
- SMB client/server : support encryption, require signature, various other bug fixes
- Kerberos: FAST support, DMSA support, bug fixes & improvements
- [new] .NET Remoting layer ([MS-NRTP])
- LDAP: many improvements to the client
- [new] graphical LDAP client "ldaphero"
- DCE/RPC: better handling of contexts, fragmentation, etc.
- [new] DCOM is now supported
- [removal]
scapy -shas been removed. - bluetooth:
- MANY new payloads (EIR, BTLE, HCI_MON ...)
- display of vendor IDs
- many other bug fixes & improvements !
- [new]
radiusd(): a small RADIUS server (CHAP / MS-CHAPv2) - [new]
nbns_request: perform a Netbios discovery - [fixed] Scapy was not loading properly on 32bits *BSD plateforms
- ISAKMP / IKEv2: more supported payloads
- [doc] the "Advanced" section of the documentation was split
- [darwin/osx] support TUN interfaces in
TunTapInterface - automaton:
- various improvements to
spawn(), allowing to serve automatons on a port - support for sessions (e.g.
TCPSession) - many more fixes !
- various improvements to
- HTTP: server/client improvements (custom header, support for GSSAPI + channel binding, session improvements, etc.)
- automotive:
- UDS: various bug fixes, notably to the scanner
- improve SOMEIP fragmentation
- various improvements to Hsfz
- TLS: more structures are implemented, notably related to QUIC
- dns:
- improve
dnsd()relay mode - fix compression bug
dns_requestnow properly fallbacks on TCP when packets are too big
- improve
- TFTP: improvements of the interface selection in the client/server automatons
- pcapng: support of multiple comments, fixes to bound checks
- [fixed] defragment6 was not working in some cases
- [CLI] improve handling of newer IPython version, fix some deprecation warnings
- BGP: support reassembly with TCPSession
- TLS: better handling of NSS KeyLog for TLS 1.3 decryption, doc improvements
- NTP: various fixes, big refactor of the layer
- [fixed] AsyncSniffer stop() failed in some cases
- l2: improvements to
arping()on interfaces with no IP addresses - new protocols:
- PSP
- many other bug fixes to: STUN, 6Lowpan, DHCPv6,
RC1 is out: https://pypi.org/project/scapy/2.7.0rc1/
Try it out with pip install --pre --upgrade scapy
Changelog - Automotive Layers
New Features
DoIP
- Added version field for DoIP and DoIP sockets.
UDS
- Added additional argument for
UDS_DSCEnumerator. - Added software reset function for the UDS scanner.
ISOTP / Automotive Scanning
- Added FD support for
isotpscan. - Added CAN-FD support for
ISOTPScan.
HTTP
- Added EOF condition to the
HTTP_ServerstateSERVE.
Improvements
HSFZ
- Improved incorrect tester field naming.
- Added addressing information to
incorrect_tester_addresspackets. - Improved alive-check dissection.
- Corrected acknowledgment transfer packet structure.
- Ensured vehicle identification string is only parsed when non-zero length.
- Updated HSFZ with more detailed dissection logic.
UDS / GMLAN / AutomotiveScanner
- Various updates and improvements across UDS, GMLAN, and AutomotiveScanner modules.
ISO-TP
- Enhanced ISO-TP soft socket implementation.
- Improved
SOMEIP.fragment()behavior.
DoIP
- Adjusted
hashrethandling in DoIP.
Core / Utilities
- Defaulted
sr1tothreaded=False.
Bug Fixes
- Fixed answer function for
UDS_HSFZSocket. - Improved error handling in
L2Socket.close()by addingValueError.