SYN端口扫描脚本:"未找到到达目标的MAC地址. 使用广播"错误

0 投票
1 回答
1564 浏览
提问于 2025-04-18 04:37

我正在用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信息段落中获取脚本的第一句话就说了这一点。

撰写回答