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 📝 Planned Text records
HTTPS 📝 Planned HTTPS service binding records
NS 📝 Planned Name server records
MX 📝 Planned 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}] [-t WAIT_TIME] [--transaction-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}
                        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) (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.2.tar.gz (11.0 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.2-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dns_observe-0.7.2.tar.gz
  • Upload date:
  • Size: 11.0 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.2.tar.gz
Algorithm Hash digest
SHA256 0a73f966f5239086fe1cc162276004c30b7b30ce20d4a0eddc38749ad25d1fc7
MD5 7cc10e96ea4f273019d679cba4c2e5a9
BLAKE2b-256 238f5238a2fc9f10b2787932edc3b8efdb2fd68ae2be0f7b3ee76ed9136dce1b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: dns_observe-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 10.1 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0c29b285fb230dbe1398671700db26b66501f4e971212208791aac802760a105
MD5 ad2e5ffe53f6185ff7535bc744ef80f8
BLAKE2b-256 2467e1eb543795b6d79725091d97a59ea9b59fdf434f4cb8133118273a68a426

See more details on using hashes here.

Provenance

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