This package provides a new Python wrapper for the dsniff network sniffer suite (originally by Dug Song).
Project description
dsniff Python Package
This package provides a Python wrapper for the dsniff network sniffer suite (originally by Dug Song), allowing you to install and use dsniff tools via pip.
pip install .
Installation
Ensure you have the required dependencies:
berkeley-db(optional; support is disabled by default)libnetlibnidslibpcapopenssl
On macOS with Homebrew:
brew install berkeley-db libnet libnids libpcap openssl
Enable Berkeley DB support (optional)
By default, Berkeley DB compatibility is disabled. To enable support with a newer
Berkeley DB installation, set the DSNIFF_DB_PATH environment variable to your
Berkeley DB prefix and install:
pip install .
DSNIFF_DB_PATH=/opt/homebrew/opt/berkeley-db@4 \
pip install .
On macOS, the installer will attempt to auto-detect a Homebrew keg-only Berkeley DB under
/usr/local/optor/opt/homebrew/opt. If found, you do not need to setDSNIFF_DB_PATHmanually. Manual setting is only required for non-standard installation paths.
Install via pip:
pip install .
To specify custom library paths (e.g., Homebrew on Apple Silicon):
DSNIFF_LIBPCAP=/opt/homebrew/opt/libpcap \
DSNIFF_LIBNET=/opt/homebrew/opt/libnet \
DSNIFF_LIBNIDS=/opt/homebrew/opt/libnids \
DSNIFF_OPENSSL=/opt/homebrew/opt/openssl \
pip install .
Usage
After installation, the following commands are available:
dsniffarpspoofdnsspooffilesnarfmailsnarfmsgsnarfurlsnarfmacofsshowsshmitmwebmitmwebspytcpkilltcpnice
Commands & Examples
Below are common usage patterns and examples for each tool. Replace -i eth0 with your network interface and adjust filters as needed.
- dsniff: sniff credentials on the network (FTP, Telnet, SMTP, HTTP, etc.)
dsniff -i eth0 tcp port ftp or tcp port telnet
- arpspoof: perform ARP spoofing to man-in-the-middle two hosts
arpspoof -i eth0 TARGET_IP GATEWAY_IP
- dnsspoof: spoof DNS responses based on a hosts file
dnsspoof -i eth0 hosts.txt
- filesnarf: capture NFS file reads
filesnarf -i eth0 tcp port nfs
- mailsnarf: capture SMTP mail traffic
mailsnarf -i eth0 tcp port 25
- msgsnarf: capture IRC, IM, and messaging traffic
msgsnarf -i eth0 tcp port 6667 or tcp port 5190
- urlsnarf: capture URLs from HTTP traffic
urlsnarf -i eth0 tcp port 80
- macof: flood a switch by generating random MAC traffic
macof -i eth0
- sshow: display active sniffer sessions
sshow
- sshmitm: perform SSH v1 man-in-the-middle attack
sshmitm -i eth0 REMOTE_HOST
- webmitm: HTTPS man-in-the-middle (requires appropriate certs)
webmitm -i eth0 SERVER_IP
- webspy: passive HTTP snooping
webspy -i eth0 tcp port 80
- tcpkill: kill TCP connections matching a filter
tcpkill -i eth0 port 80
- tcpnice: throttle TCP connections (window-nice)
tcpnice -i eth0 port 80
For detailed help on each tool, run:
<tool-name> -h
Notes
- Original documentation and license can be found in the
dsniff-olddirectory. - Binaries are built and installed into the Python package during installation.
- This wrapper invokes the compiled executables under the hood.
Absolutely, Kael here — I’ve drafted an updated README.md for your dsniff fork that reflects your work modernizing it, wrapping it in Python, and making it installable via PyPI. Here's a clean, structured version with sections for clarity and good developer UX:
dsniff (modernized fork)
A modernized and Python-wrapped version of the classic
dsniff suite of network sniffing tools, originally released in 2000. Now working on modern macOS via Homebrew with automated builds and PyPI installation.
✨ What's New
This fork brings dsniff into the modern development environment:
- ✅ macOS support: Clean builds on modern macOS (Intel & Apple Silicon) via Homebrew.
- 🧠 Python wrapper: Native binaries wrapped in a Python package with
console_scriptsentry points. - 📦 Published on PyPI: Install via
pip install dsniff. - ⚙️ CI/CD ready: Automated build/test/release via GitHub Actions.
- 🖥️ Interactive CLI: Optional curses-style interactive menu for tool selection.
🔧 Build & Compatibility Changes
-
Csource updated to build cleanly on modern systems (tested on macOS). -
No more static Berkeley DB 1.85 headers required.
- Dynamic DB support is auto-detected via
--with-db. - New
record_stubs.clayer provides stubbed DB operations for tools likedsniff,sshow,trigger.
- Dynamic DB support is auto-detected via
-
pcap_init()renamed todsniff_pcap_init()to avoid naming conflicts with modernlibpcap. -
sshmitm(which relied on deprecated OpenSSL internals) is no longer built by default. -
Builds drop into
build/binand are then copied intodsniff_py/binfor packaging.
Environment Variable Support
-
DSNIFF_DB_PATHcan override the default DB path.- If it points to a non-existent prefix, it is ignored and falls back to auto-detection (e.g.,
/usr/local/opt/berkeley-db@*).
- If it points to a non-existent prefix, it is ignored and falls back to auto-detection (e.g.,
📦 Python Package
Installation
pip install dsniff
Tools Included
These wrap the original dsniff binaries:
dsniffarpspoofdnsspoofmacoffilesnarfmailsnarfmsgsnarftcpkilltcpnice- and more...
Usage
dsniff
# Or run the interactive curses-style CLI:
dsniff-menu
Note: The interactive menu is optional and helps quickly run the right tool via keyboard input.
🧪 Development
Build locally
brew install libpcap berkeley-db
./configure --with-db
make
Then build the Python package:
python3 setup.py install
Run tests
pytest
🙌 Credits
Original tools by Dug Song Modernized fork and Python wrapper by @joshjvmes
📄 License
This project is distributed under the same license as the original dsniff tools. See LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dsniff-0.1.2.tar.gz.
File metadata
- Download URL: dsniff-0.1.2.tar.gz
- Upload date:
- Size: 481.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ba2cbb7416e8c7f18958b3346d430ca43f8304a8ab2c870254ba58797304145
|
|
| MD5 |
e927bc0513866c2d3f90d2d942048c8e
|
|
| BLAKE2b-256 |
94ed4ee49b1fc902171b9f1e68810dca9fbd1cc7c5650661b287115ea38269d7
|
File details
Details for the file dsniff-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dsniff-0.1.2-py3-none-any.whl
- Upload date:
- Size: 106.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
667a43c75e0e0f8480639710dfc28259e2256450c3841ed3d97a2483c16f539e
|
|
| MD5 |
07e9444c72e87d6fe62abcebe4223e24
|
|
| BLAKE2b-256 |
f5140a28d4f29d6a274f17e749cd9ff69f673fde534c97947a5af363897320fd
|