Scapy 与参数

0 投票
1 回答
1860 浏览
提问于 2025-04-18 08:55

我正在尝试给我写的一个scapy脚本(scapy1.py)传递多个参数:

#! /usr/bin/env python

import sys
from scapy.all import *

p=sr1(IP(dst=sys.argv[1])/TCP(dport=sys.argv[2]))

我这样执行它:

./scapy1.py 192.168.1.100 80

但是这样执行并不正常,我收到了下面的错误:

Traceback (most recent call last):
  File "./scapy1.py", line 6, in <module>
    p=srp(IP(dst=sys.argv[1])/TCP(dport=sys.argv[2]))
  File "/usr/local/lib/python2.7/dist-packages/scapy/base_classes.py", line 198, in     __call__
    i.__init__(*args, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 84, in __init__
    self.fields[f] = self.get_field(f).any2i(self,fields[f])
  File "/usr/local/lib/python2.7/dist-packages/scapy/fields.py", line 733, in any2i
    return self.any2i_one(pkt,x)        
  File "/usr/local/lib/python2.7/dist-packages/scapy/fields.py", line 722, in any2i_one
    x = self.s2i[x]
KeyError: '22'

有没有人知道为什么这样不行?我知道如果我执行:

print sys.argv[1]
print sys.arvg[2]

1 个回答

2

试着用 dport 作为目标端口,然后把它转换成整数:

p=sr1(IP(dst=sys.argv[1])/TCP(dport=int(sys.argv[2])))

撰写回答