Scapy和Arguments

时间:2014-06-06 20:20:55

标签: python scapy

我试图将多个参数传递给我写的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 个答案:

答案 0 :(得分:2)

尝试dport作为目的地并将其转换为int:

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