翻墙路由器的原理与实现(9)_掘图志

返回首页
当前位置: 主页 > 路由器设置 >

翻墙路由器的原理与实现(9)

时间:2016-02-01 13:38点击:

               ip_packet.ttl = current_ttl 

               current_ttl += 1  

               ip_packet.sum = 0 

               nfqueue_element.set_payload(str(ip_packet))  

           else:  

               if contains_wrong_answer(dpkt.dns.DNS(ip_packet.udp.data)):  

                   sys.stdout.write('* ')  

                   sys.stdout.flush()  

                   nfqueue_element.drop()  

                   return  

               else:  

                   print('END')  

       nfqueue_element.accept()  

   except:  

       traceback.print_exc()  

       nfqueue_element.accept()      

   

def contains_wrong_answer(dns_packet):  

   for answer in dns_packet.an:  

       if socket.inet_ntoa(answer['rdata']) in WRONG_ANSWERS:  

           return True  

   return False     

   

nfqueue = NetfilterQueue()  

nfqueue.bind(0, locate_dns_hijacking)      

   

def clean_up(*args):  

   subprocess.call('iptables -D OUTPUT -p udp --dst %s -j QUEUE' % DNS_IP, shell=True)  

   subprocess.call('iptables -D INPUT -p udp --src %s -j QUEUE' % DNS_IP, shell=True)  

------分隔线----------------------------
推荐内容