一个简单的DNS server

'''
This program simulate as a DNS server

'''

一直工作在UDP 53端口监听DNS请求。收到请求后取出transcation id,query的数据,构造一个DNS相应包。每次返回的IP地址都是127.0.0.1(\x7f\x00\x00\x01)

用于样本分析,触发网络行为。


import socket

server = '192.168.160.1'
dns_header = '\x81\x80\x00\x01\x00\x01\x00\x00\x00\x00'
dns_queries = ''
#\x7f\x00\x00\x01 is 127.0.0.1 you can replace it with
dns_answers = '\xc0\x0c\x00\x01\x00\x01'+'\x00\x00\x01\x2c'+'\x00\x04\x7f\x00\x00\x01'


address = (server, 53)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(address)


while True:
    data, addr = s.recvfrom(2048)
    print "received from", addr
    id = data[0:2]
    dns_queries = data[12:]
    dns_msg = id+dns_header+dns_queries+dns_answers
    s.sendto(dns_msg,addr)
s.close()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值