Skip to main content

a simple client to observe dns pollution network situation under Great Firewall.

Project description

publish PyPI version

dns-observe

a simple client to observe dns pollution network situation under The Great Firewall of China.

Features

  • Pure Python implementation with no third-party dependencies
  • Uses raw UDP sockets and implements DNS protocol parsing per RFC 1035
  • Listens continuously for a configurable time window to capture multiple responses
  • Box-drawing character output for visually grouping multiple answers

Supported Query Types

Type Status Description
A ✅ Supported IPv4 address records
AAAA ✅ Supported IPv6 address records
CNAME ✅ Supported Canonical name records
TXT ✅ Supported Text records
HTTPS 🚧 incomplete HTTPS service binding records
NS ✅ Supported Name server records
MX ✅ Supported Mail exchange records

Installing

Install and update using pip: pip install dns-observe

usage

cli

> dns-observe -h
usage: dns-observe [-h] [-s DNS_SERVER] [-q {A,AAAA,CNAME,TXT,HTTPS,NS,MX}] [-t WAIT_TIME] [-id TRANSACTION_ID] [-v] domain

Observing DNS pollution

positional arguments:
  domain                query domain

options:
  -h, --help            show this help message and exit
  -s, --dns_server DNS_SERVER
                        DNS server (default: 1.1.1.1)
  -q, --query_type {A,AAAA,CNAME,TXT,HTTPS,NS,MX}
                        DNS record type (default: A)
  -t, --wait_time WAIT_TIME
                        socket reception duration in seconds (default: 5)
  -id, --transaction_id TRANSACTION_ID
                        DNS transaction ID (0=random, 1-65535=fixed), can use in wireshark display filter like `dns.id == 0x123` to track queries (default: 0)
  -v, --version         show program's version number and exit

python:

> python -m dns_observe api.openai.com

from dns_observe import DNSQuery, RecordType
dns = DNSQuery('1.1.1.1')
dns.query('api.openai.com')
dns.query('claude.ai', RecordType.AAAA)

output:

- Time: 2024-11-22 11:18:16.977688, Name: api.openai.com, TTL: 153, A: 103.56.16.112
- Time: 2024-11-22 11:18:16.978715, Name: api.openai.com, TTL: 206, A: 192.133.77.145
┌ Time: 2024-11-22 11:18:17.140652, Name: api.openai.com, TTL: 46, A: 162.159.140.245
└ Time: 2024-11-22 11:18:17.140652, Name: api.openai.com, TTL: 46, A: 172.66.0.243

How to Packaging Python Projects

https://packaging.python.org/en/latest/tutorials/packaging-projects/

python -m build

# testpypi
py -m twine upload --repository testpypi dist/*

# pypi
py -m twine upload dist/*

dev

> pip install -e .

test

> python tests/test_run.py

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

dns_observe-0.8.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

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

dns_observe-0.8.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file dns_observe-0.8.0.tar.gz.

File metadata

  • Download URL: dns_observe-0.8.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dns_observe-0.8.0.tar.gz
Algorithm Hash digest
SHA256 73f8a5187d90104fbb098d86c145f741a9449962dde13efbaa859ea3c3377d1a
MD5 6f0c6e7cbbfe8b42fb22fef96abad86f
BLAKE2b-256 306c82b56fc720c6ba267633e2b5c2c1b29c19478200e254cecd4cc6600ebc96

See more details on using hashes here.

Provenance

The following attestation bundles were made for dns_observe-0.8.0.tar.gz:

Publisher: publish-to-test-pypi.yml on xavierskip/dns-observe

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

File details

Details for the file dns_observe-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: dns_observe-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dns_observe-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 274107faff5bd4c6933817e96fc6ce9db585146311b0ae11097e0b1c49498503
MD5 e510a04a9876a7e28aada93cb043c142
BLAKE2b-256 1149d103194aa3afad039a360f06056e0fc88461c8d280b35bef8288d98b18e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dns_observe-0.8.0-py3-none-any.whl:

Publisher: publish-to-test-pypi.yml on xavierskip/dns-observe

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