python-udp抓包
·
import socket
def capture_udp_broadcast(port=6666, timeout=10):
"""
抓取同一网络下的UDP广播包
:param port: 监听的端口(常见UDP广播端口如 6666, 8888, 9999)
:param timeout: 超时时间(秒),None 表示无限监听
"""
# 创建 UDP Socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定到所有可用接口的指定端口
sock.bind(('0.0.0.0', port))
# 设置超时(可选)
if timeout:
sock.settimeout(timeout)
print(f"🎧 正在监听 UDP 广播 (端口: {port})...")
try:
while True:
try:
# 接收数据(缓冲区大小 1024 字节)
data, addr = sock.recvfrom(1024)
print(f"📦 收到来自 {addr} 的 UDP 广播包:")
print(f" 数据 (原始): {data}")
print(f" 数据 (解码): {data.decode('utf-8', errors='ignore')}") # 尝试UTF-8解码
print("-" * 50)
except socket.timeout:
print("⏱️ 超时,停止监听。")
break
except KeyboardInterrupt:
print("🛑 手动停止监听。")
break
finally:
sock.close()
print("🔌 已关闭 UDP 监听。")
if __name__ == "__main__":
capture_udp_broadcast(port=7001, timeout=5000) # 监听30秒 wifi温控网关用的乐鑫端口固定是7001
更多推荐


所有评论(0)