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.7.4.tar.gz (13.9 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.7.4-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dns_observe-0.7.4.tar.gz
  • Upload date:
  • Size: 13.9 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.7.4.tar.gz
Algorithm Hash digest
SHA256 7568604587ebd55e88975509b299f0e9387a9694cf983cd430d3af3aafe37686
MD5 d0bd351b886ef89a2834d9bbc1f31000
BLAKE2b-256 f3e571c24fa3f5ff3da9db231934c4ccc4bd07027ef4cf2920bc17458fbeeb84

See more details on using hashes here.

Provenance

The following attestation bundles were made for dns_observe-0.7.4.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.7.4-py3-none-any.whl.

File metadata

  • Download URL: dns_observe-0.7.4-py3-none-any.whl
  • Upload date:
  • Size: 12.5 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.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 62ec146861ef494032308f96c098fcef33123665eb1c8f4d45d399696ea0b31a
MD5 79a756e5d1a7b2eafaa57812575a3eb4
BLAKE2b-256 2099317ae9186d5fc76e0ba4ba46da390bed5f88695fbc48065892e6ab0757dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for dns_observe-0.7.4-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