Impacket is a collection of Python classes for working with network protocols. Impacket is focused on providing low-level programmatic access to the packets and for some protocols (for instance NMB, SMB1-3 and MS-DCERPC) the protocol implementation itself. Packets can be constructed from scratch, as well as parsed from raw data, and the object oriented API makes it simple to work with deep hierarchies of protocols. The library provides a set of tools as examples of what can be done within the context of this library.

Featured Protocols:
Ethernet, Linux "Cooked" capture.
IP, TCP, UDP, ICMP, IGMP, ARP. (IPv4 and IPv6)
NMB and SMB1/2/3 (high-level implementations).
DCE/RPC versions 4 and 5, over different transports: UDP (version 4 exclusively), TCP, SMB/TCP, SMB/NetBIOS and HTTP.
Portions of the following DCE/RPC interfaces: Conv, DCOM (WMI, OAUTH), EPM, SAMR, SCMR, RRP, SRVSC, LSAD, LSAT, WKST, NRPC.

Extra Information:
The examples folders have many pre-built tools that can be used for various things such as pass the hash, dumping domain hashes, and golden ticket.