the code below:
import socket
import struct
import time
import random
def create_dns_query(domain="example123.com"):
# DNS Header
ID = random.randint(0, 65535) # 随机查询ID
FLAGS = 0x0100 # Standard query
QDCOUNT = 1 # One question
ANCOUNT = 0 # No answers
NSCOUNT = 0 # No authority records
ARCOUNT = 0 # No additional records
# 构建DNS头部
header = struct.pack('!HHHHHH', ID, FLAGS, QDCOUNT, ANCOUNT, NSCOUNT, ARCOUNT)
# 构建查询部分
query_parts = []
for part in domain.split('.'):
query_parts.append(bytes([len(part)]))
query_parts.append(part.encode())
query_parts.append(b'\x00') # 终止符
# 查询类型(A记录)和类(IN)
query_type = struct.pack('!HH', 1, 1) # TYPE=A, CLASS=IN
# 组合所有部分
query = header + b''.join(query_parts) + query_type
return query
def send_dns_query(target_ip="192.168.202.254", port=53, interval=1):
# 创建UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
print(f"开始向 {target_ip}:{port} 发送DNS查询...")
count = 0
while True:
try:
# 创建并发送DNS查询
query = create_dns_query()
sock.sendto(query, (target_ip, port))
count += 1
print(f"已发送 {count} 个DNS查询包")
time.sleep(interval) # 等待指定的间隔时间
except KeyboardInterrupt:
print("\n停止发送...")
break
except Exception as e:
print(f"发送出错: {e}")
break
finally:
sock.close()
if __name__ == "__main__":
# 可以修改目标IP、端口和发送间隔(秒)
send_dns_query("192.168.1.1", 53, 1)

1888

被折叠的 条评论
为什么被折叠?



