SYN端口扫描脚本:"未找到到达目标的MAC地址. 使用广播"错误
我正在用Python和Scapy写一个SYN端口扫描器。代码没有语法错误,但当我运行这个脚本时,无法向任何目标发送数据包。
这是代码
#!/usr/bin/python
#Port Scanner using SYN Scanning (Half Open TCP Scanning)
from scapy.all import *
import sys, argparse
#the 'argparse' module makes it easy to write user-freindly command-line interfaces.
#it also automatically generates help and usage messages and issues errors on invalid arguments
argParser = argparse.ArgumentParser(description='TCP SYN Scanner for a single host.')
argParser.add_argument('--version','-v',action='version', version = '%(prog)s is at version 1.0.0')
argParser.add_argument('host',metavar = 'host', type=str, help='The hostname or IP to scan.')
argParser.add_argument('-p', metavar='port', nargs=2, type=str, help='port range scan eg 80 443')
argParser.add_argument('-t', metavar = 'timeout', type=float, help = 'The time to wait for ACKs.', default=1)
arguments = argParser.parse_args()
print 'Scanning host %s' % (arguments.host)
startPort = 1
endPort = 65535
if arguments.p != None: #if we have arguments
startPort = int(arguments.p[0])
endPort = int(arguments.p[1])
for port in xrange (startPort, endPort +1):
packet=sr1(IP(dst=arguments.host)/TCP(dport=port,flags='S'),verbose=0,timeout=arguments.t) //ERROR
if packet:
print ('Port %d is open!' % port)
注意:另一个有相同错误的问题使用的是完全不同的脚本。请不要标记为重复问题。
1 个回答
0
我真是个傻瓜。你不能使用公共IP地址,因为PAT(端口地址转换)不适用——它必须是私有的A、B或C类地址。在我从GITHUB信息段落中获取脚本的第一句话就说了这一点。