如何进行dns劫持,DNS服务器劫持
转换通过域名服务器(域名服务器)劫持实现连接自建云服务器1.安装依赖服务器安装python3,pip3
安装大蟒的第三方库要求
pip3安装请求2。打开53端口(UDP) 3 .新建文件
#这是十进位计数制代理的默认主机文件#格式:主机名regex-IP地址#[我的主机Entries]^hivebedrock.网络$ ^mco.mineplex .com$ xxx.xxx.xxx.xxx^play.inpvp 净额$ xxx.xxx.xxx.xxx^mco.lbsg .净额$ xxx.xxx.xxx.xxx^mco.立方体工艺。净额xxx.xxx.xxx.xxx美元其中xxx.xxx.xxx.xxx全部替换为服务器的互联网协议(互联网协议的缩写)地址
#!/usr/bin/python 3 import re import sys import socket import trace from OS。路径导入是文件hosts _ FILE= hosts。txt SERVER _ HOST= 0。0 .0 .0 SERVER _ PORT=53 # IP v4 _ exp=re。compile(r d { 1,3}).d{1,3} .d{1,3} .d{1,3 } )class DNSQuery:def _ _ init _ _(self,data):self。数据=数据自我。domain=bytearray()tipo=(data[2]3)15 if tipo==0:ini=12 lon=data[ini]while lon!=0:自我。domain=data[ini 1:ini lon 1]字节(。 ascii )ini=lon 1 lon=data[ini]self。domain=str(self。域,“utf8”).rstrip(.)def response(self,IP):packet=bytearray()if self。域:数据包=自身。data[:2]bytearray([0x 81,0x 80])packet=self。数据[4:6]自我。data[4:6]bytearray([0x00,0x00,0x00,0x00]) #问答计数packet=self.data[12:] #原域名问题packet=bytearray([0xC0,0x0C]) #指向域名的指针packet=bytearray([0x00)]) # 4字节的互联网协议(Internet Protocol)返回包def parse _ host _ file _ as _ regex(data):host _ list=[]for line in data。分割线():if行!= 和第[0]行!=#: split_line=line.split(,1)if len(split _ line)==2:host _ regex=split _ line[0]IP _ addr=split _ line[1]host _ list。追加([re。compile(host _ regex),IP _ addr])return host _ listif _ _ name _ _= _ _ main _ _ :if is FILE(HOSTS _ FILE):host _ data=parse _ host _ FILE _ as _ regex(open(HOSTS _ FILE, r ).read())sock=socket。插座(插座.AF_INET,插座.SOCK _ DGRAM)SOCK。bind((服务器主机,服务器端口))print(DNS代理服务器在用户数据报协议(User Datagram Protocol)端口{}上启动!格式(服务器端口))而True: try: (data,addr)=sock。recvfrom(1024)p=DNS查询(数据)结果=[IP _ addr for(regex,IP _ addr)in host _ data if regex。search(p . domain)]if result:IP=result[0]print( Local:{ }-{ } .format(p.domain,ip)) sock.sendto(p.response(ip),addr)else:IP=socket。gethostbyname(p . domain)print( Remote:{ }-{ } .format(p.domain,ip)) sock.sendto(p.response(ip),addr)除了键盘中断:打印(完成!)袜子。close()sys。退出(0)除了:回溯。print _ exc()else:print(找不到宿主文件!) 4.新建一个屏幕,运行DNS _ server。py screen-S DNS python 3 DNS _ server。巴拉圭