Skip to main content

🛰️ DNS Tunneling Messenger

DNS Tunneling Messenger

Smuggle messages inside DNS queries.

Python License PyPI Platform

"He isn't browsing. He's talking."


What is it?

DNS is the one protocol that is always allowed out. Firewalls may block everything else, but something has to resolve names — and that something can carry cargo. DNS Tunneling Messenger encodes a message in base32, slices it into DNS-label-sized chunks, and ships it as subdomains of a zone you control. A listener parses the query names on the other end and reassembles the message.

The protocol itself is boring, standard DNS. The payload is in the names.

Features

  • ✉️ Encode any text into a valid dotted DNS name
  • 📡 Ship it as a real UDP DNS query (send)
  • 👂 Decode it live from the wire (listen)
  • 🧩 Handles long messages (automatic 63-char label slicing)
  • 📦 Zero dependencies — pure Python standard library

Install

pip install dns-tunnel-messenger

From source:

git clone https://github.com/AnonymoDGH/dns-tunnel-messenger
cd dns-tunnel-messenger
pip install -e .

Quickstart — lab test on loopback

Terminal A (the listener):

dns-tunnel listen --port 5353 --zone t.example.com
# [+] Listening on udp://0.0.0.0:5353 for zone t.example.com

Terminal B (the courier):

dns-tunnel send "meet at dawn, bring the book" \
    --zone t.example.com --server 127.0.0.1 --port 5353

Terminal A prints:

  [*] 127.0.0.1 -> meet at dawn, bring the book

CLI reference

Command What it does
dns-tunnel send <msg> --zone <z> [--server] [--port] Ship a message as a DNS query
dns-tunnel listen [--port] [--zone] Decode incoming queries live
dns-tunnel encode <msg> --zone <z> Print the encoded dotted name
dns-tunnel decode --name <n> [--zone <z>] Decode a name back to text

How it works

Architecture

Tests

pip install pytest
pytest

Includes an end-to-end test that ships a real message over loopback UDP.

License

MIT — a fiction research prop. Point it at zones you control and keep the novel's intrigue on the page, not the network.

Release files for dns-tunnel-messenger 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dns-tunnel-messenger 0.1.0
File Size Uploaded
dns_tunnel_messenger-0.1.0.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dns-tunnel-messenger 0.1.0
File Interpreter ABI Platform
dns_tunnel_messenger-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.3 kB

Release files / dns_tunnel_messenger-0.1.0.tar.gz

Download URL dns_tunnel_messenger-0.1.0.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
eadf1471eb52b06fedd0f71208bfe84bbfefd3b6e7adf5bb610b500af317c903
BLAKE2b-256 checksum
How to use checksums
5a4819ea15707cd0a5a8f010daf22b9dbdf31100b31a2e5208768447f4c7cd60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / dns_tunnel_messenger-0.1.0-py3-none-any.whl

Download URL dns_tunnel_messenger-0.1.0-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
80284109dd1ee35177776308f84e0e326ffb6ff643623ab160bc22b1b76b4738
BLAKE2b-256 checksum
How to use checksums
1dc111ee07c1e5518b35a1590e4615b3e8986ee3e866d5871d86e4d560726c6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page