我试图将多个参数传递给我写的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]
答案 0 :(得分:2)
尝试dport
作为目的地并将其转换为int:
p=sr1(IP(dst=sys.argv[1])/TCP(dport=int(sys.argv[2])))