-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreceiver_dns.py
More file actions
46 lines (32 loc) · 1.6 KB
/
receiver_dns.py
File metadata and controls
46 lines (32 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from io import BytesIO
from PIL import Image
from scapy.all import sniff, DNS, DNSQR
import dns.resolver
dns_server = '8.8.8.8' # Utilisez le serveur DNS de Google comme exemple
domain_name = 'example.com' # Remplacez par le domaine que vous souhaitez résoudre
result = b'' # Utilisez des octets pour les données binaires
def resolve_dns_and_capture(packet):
global result
if DNS in packet and DNSQR in packet:
dns_query = packet[DNSQR].qname.decode()
# Vérifiez si la requête DNS correspond au domaine que vous recherchez
if dns_query == domain_name + '.':
# Résolvez le domaine pour obtenir l'adresse IP
resolver = dns.resolver.Resolver(configure=False)
resolver.nameservers = [dns_server]
try:
answer = resolver.query(domain_name)
target_ip = str(answer[0])
print(f"Resolved DNS query to IP: {target_ip}")
# Ensuite, envoyez votre requête DNS à l'adresse IP cible
# Vous devrez construire une requête DNS appropriée ici
except dns.resolver.NXDOMAIN:
print("DNS resolution failed (NXDOMAIN)")
def display_image(data):
# Ouvrez l'image à partir des données binaires
image = Image.open(BytesIO(data))
# Affichez l'image
image.show()
# Utilisez la fonction sniff pour capturer les paquets DNS
# Utilisez le paramètre prn pour spécifier la fonction de rappel à appeler pour chaque paquet
sniff(prn=resolve_dns_and_capture, filter=f'dst port 53', store=0)