11

在 Scapy 中,我想比较任意两个数据包ab. 此字段列表是预定义的,例如:

fieldsToCompare = ['tos', 'id', 'len', 'proto'] #IP header

通常我会单独做:

if a[IP].tos == b[IP].tos:
   ... do stuff...

有没有办法从字符串列表中访问这些数据包字段,包括每个字符串的名称?像:

for field in fieldsToCompare:
    if a[IP].field == b[IP].field:
         ... do stuff...
4

2 回答 2

29

您可以使用getattr(). 这些行是等效的:

getattr(x, 'foobar')
x.foobar

setattr()是它的对应物。

于 2013-04-17T12:59:08.157 回答
4

我想你正在寻找getattr(). 尝试...

for field in fieldsToCompare:
    if getattr(a[IP], field) == getattr(b[IP], field):
         ... do stuff...
于 2013-04-17T13:00:46.113 回答