Impacket is a collection of Python classes and scripts for working with network protocols. It provides programmatic access to low-level protocol details, allowing users to construct and parse packets for protocols like SMB, DCE/RPC, LDAP, and Kerberos. Widely used in penetration testing and security research, it enables interacting with network services, performing authentication, and exploiting protocol-level vulnerabilities. The current version is 0.13.0, with regular updates addressing new features and security fixes.
Install & Compatibility
Where this runs
tested against v0.13.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.920 runs
installs and imports cleanly · install 0.0s · import 0.000s · 71.7MB
glibcpy 3.10–3.920 runs
installs and imports cleanly · install 6.0s · import 0.000s · 73MB
76MB installed
● package 76MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
from impacket.smbconnection import SMBConnection
This quickstart demonstrates how to establish an SMB connection, authenticate, and list available shares using `impacket.smb.SMBConnection`. It fetches sensitive information from environment variables for security and flexibility.
import os
from impacket.smb import SMBConnection
# --- Configuration (replace with your environment variables or actual values) ---
TARGET_IP = os.environ.get('IMPACKET_TARGET_IP', '127.0.0.1')
USERNAME = os.environ.get('IMPACKET_USERNAME', 'guest')
PASSWORD = os.environ.get('IMPACKET_PASSWORD', '')
DOMAIN = os.environ.get('IMPACKET_DOMAIN', '') # Often empty for local accounts
if not TARGET_IP:
print("Please set IMPACKET_TARGET_IP environment variable or replace '127.0.0.1' with an actual SMB server IP.")
exit(1)
try:
print(f"Attempting to connect to SMB share on {TARGET_IP} as {DOMAIN}\\{USERNAME}...")
smb_conn = SMBConnection(TARGET_IP, TARGET_IP)
smb_conn.login(USERNAME, PASSWORD, DOMAIN)
print("Login successful!")
shares = smb_conn.listShares()
print("\nAvailable Shares:")
for share in shares:
print(f" - {share['name'].decode('utf-8')}")
smb_conn.logoff()
print("\nLogged off.")
except Exception as e:
print(f"An error occurred: {e}")
print("Please ensure the target SMB server is reachable and credentials are correct.")
print("For a quick test, you might need a local SMB server (e.g., Samba on Linux, or Windows share).")
impacket --version
Upgrade
Version history
Breaking-change detection hasn't run for this library yet.
Audit
Security & dependencies
CVE tracking and dependency tree are planned for a later release.