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.1.tar.gz (17.4 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.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dns_observe-0.8.1.tar.gz
  • Upload date:
  • Size: 17.4 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.1.tar.gz
Algorithm Hash digest
SHA256 744a15a8b35b35139d46e96ab07bffafd49bc1215f53eff44c9a46186ee0904f
MD5 31b4bc434e706bd6263c1f28487ad26d
BLAKE2b-256 7ecb0a2680fb600d3fe2505a1506d6bcafb3a454a5e8688d137238d86cbafe72

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: dns_observe-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dacd471b66423b9b107233160d10a79f7bb640f0230f14d5513817904b5dbffc
MD5 57c03f943a56c7e8549634382317e8f4
BLAKE2b-256 68aeea5a751aae7d6e10365ba640ce747996968a3c184bc91411cc54ff2800d1

See more details on using hashes here.

Provenance

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