Python 在Windows操作系统上扫描错误?
我使用python 2.6.3在windows上运行scapy 我试图运行我找到的代码,但每次都会得到一个操作错误[Errno 9] 我没有发现任何syntex的错误 我做错了什么 这是源代码:Python 在Windows操作系统上扫描错误?,python,sockets,networking,scapy,raw-sockets,Python,Sockets,Networking,Scapy,Raw Sockets,我使用python 2.6.3在windows上运行scapy 我试图运行我找到的代码,但每次都会得到一个操作错误[Errno 9] 我没有发现任何syntex的错误 我做错了什么 这是源代码: from scapy.all import * import socket host = raw_input('Host: ') target = socket.gethostbyname(host) src = socket.gethostbyname(socket.gethostname()) pr
from scapy.all import *
import socket
host = raw_input('Host: ')
target = socket.gethostbyname(host)
src = socket.gethostbyname(socket.gethostname())
print "Target IP: ",target
print "Source IP: ",src
srcPort = RandShort()
icmpCodes = [1,2,3,9,10,13]
#startPort = 1
#maxPort = 1024
ports = [21,22,23,25,53,80,110,111,123,143,161,194,443,465,993]
print 'scan is starting...'
for port in ports:
ans = sr1(IP(dst=target)/TCP(sport=srcPort,dport=port,flags="S"))
if(str(type(ans))=="<type 'NoneType'>"):
print "Port %s: Filtered" %(port)
elif(ans.haslayer(TCP)):
if(ans.getlayer(TCP).flags == 0x012):#(SYN,ACK)
send_rst = sr(IP(dst=target)/TCP(sport=srcPort,dport=port,flags="R"))
print "Port %s: Open" %(port)
elif (ans.getlayer(TCP).flags == 0x014):#(RST)
print "Port %s: Closed" %(port)
elif(ans.haslayer(ICMP)):
if(int(ans.getlayer(ICMP).type)==3 and int(ans.getlayer(ICMP).code) in icmpCodes): #Destination Unreachable
print "Port %s: Filtered" %(port)
从scapy.all导入*
导入套接字
主机=原始输入(“主机:”)
target=socket.gethostbyname(主机)
src=socket.gethostbyname(socket.gethostname())
打印“目标IP:”,目标
打印“源IP:”,src
srcPort=RandShort()
ICMPcode=[1,2,3,9,10,13]
#startPort=1
#最大端口=1024
端口=[21,22,23,25,53,8010111231431619434465993]
打印“扫描正在开始…”
对于端口中的端口:
ans=sr1(IP(dst=target)/TCP(sport=srcPort,dport=port,flags=“S”))
如果(str(type(ans))==“”):
打印“端口%s:已筛选”%(端口)
elif(ans.haslayer(TCP)):
if(ans.getlayer(TCP.flags==0x012):#(SYN,ACK)
发送rst=sr(IP(dst=target)/TCP(sport=srcPort,dport=port,flags=“R”))
打印“端口%s:打开”%(端口)
elif(ans.getlayer(TCP).flags==0x014):#(RST)
打印“端口%s:已关闭”%(端口)
elif(ans.haslayer(ICMP)):
如果(int(ans.getlayer(ICMP).type)==3,并且在icmpcode中为int(ans.getlayer(ICMP).code):#目标不可到达
打印“端口%s:已筛选”%(端口)
这就是我得到的错误:
Host: www.google.com
Target IP: 173.194.66.147
Source IP: 192.168.1.8
scan is starting...
Begin emission:
Finished to send 1 packets.
Traceback (most recent call last):
File "D:\Document\Desktop\my_project\TcpSynPortScan_scapy.py", line 16, in <module>
ans = sr1(IP(dst=target)/TCP(sport=srcPort,dport=port,flags="S"))
File "C:\Python26\lib\site-packages\scapy\sendrecv.py", line 335, in sr1
a,b=sndrcv(s,x,*args,**kargs)
File "C:\Python26\lib\site-packages\scapy\arch\windows\__init__.py", line 431, in sndrcv
os.write(1, ".")
OSError: [Errno 9] Bad file descriptor
>>>
主机:www.google.com
目标IP:173.194.66.147
来源IP:192.168.1.8
扫描正在开始。。。
开始排放:
已完成发送1个数据包。
回溯(最近一次呼叫最后一次):
文件“D:\Document\Desktop\my_project\TcpSynPortScan_scapy.py”,第16行,在
ans=sr1(IP(dst=target)/TCP(sport=srcPort,dport=port,flags=“S”))
文件“C:\Python26\lib\site packages\scapy\sendrecv.py”,第335行,在sr1中
a、 b=sndrcv(s,x,*args,**kargs)
sndrcv中第431行的文件“C:\Python26\lib\site packages\scapy\arch\windows\\uuuu init\uuuu.py”
操作系统写入(1,“.”)
OSError:[Errno 9]错误的文件描述符
>>>
谢谢我在Linux上试用了你的代码,看起来不错 实际上,它尝试使用坏管道,尝试使用记录器或进程监视器进行调试