吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2518|回复: 6
收起左侧

[Python 转载] mini DNS server

  [复制链接]
edelweiss92 发表于 2021-3-26 17:07
本帖最后由 edelweiss92 于 2021-3-26 17:14 编辑

功能,搭建一个简易dns服务器,将所有dns解析到指定ip
python3



[Python] 纯文本查看 复制代码
import socket


class DNSQuery:
    def __init__(self, data):
        self.data = data
        self.dominio = ''

        tipo = ((data[2]) >> 3) & 15  # Opcode bits
        print('tipo: ',tipo)
        if tipo == 0:  # Standard query
            ini = 12
            lon = (data[ini])
            print('lon: ',lon)
            while lon != 0:
                self.dominio += (data[ini + 1:ini + lon + 1]).decode('utf8') + '.'
                ini += lon + 1
                lon = (data[ini])

    def respuesta(self, ip):
        packet = b''
        if self.dominio:
            #print(type(self.data[:2]))
            #print(self.data[:2])
            packet += self.data[:2] + b"\x81\x80"
            packet += self.data[4:6] + self.data[4:6] + b'\x00\x00\x00\x00'  # Questions and Answers Counts
            packet += self.data[12:]  # Original Domain Name Question
            packet += b'\xc0\x0c'  # Pointer to domain name
            packet += b'\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'  # Response type, ttl and resource data length -> 4 bytes
            #packet += (str.join('', map(lambda x: chr(int(x)), ip.split('.')))).encode('utf8')  # 4bytes of IP
            packet += bytes(map(int, ip.split('.')))


        return packet


if __name__ == '__main__':
    ip = '192.168.6.2'
    print('pyminifakeDNS:: dom.query. 60 IN A %s' % ip)


    udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udps.bind(('', 53))

    try:
        while 1:
            data, addr = udps.recvfrom(1024)
            print(data)
            p = DNSQuery(data)
            udps.sendto(p.respuesta(ip), addr)
            print('Respuesta: %s -> %s' % (p.dominio, ip))
    except KeyboardInterrupt:
        print('Finalizando')
        udps.close()
2021-03-26_17-13-27.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shangpeng 发表于 2021-3-26 17:32
可以的,666
sic5s 发表于 2021-3-26 17:49
牝一先生 发表于 2021-3-26 18:04
sordar 发表于 2021-3-26 20:27
这个有用,看看我们开发工作中是不是能用上
mws 发表于 2021-3-26 21:37
这个不错诶,感谢楼主分享
头像被屏蔽
First丶云心 发表于 2021-4-6 13:24
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 17:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表