1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
from itertools import groupby
def tcp_seq(p):
return p['TCP'].seq
def tcp_ack(p):
return p['TCP'].ack
def groups_by_seq(s):
x = sorted((p for p in s if p.haslayer('TCP')), key=tcp_seq)
y = [(k, list(g)) for k, g in groupby(x, key=tcp_seq)]
return [(seq, group) for seq, group in y if len(group) > 1]
def duplication_pkt_count(s, s_ip, c_ip):
sCount = 0
cCount = 0
for seq, group in groups_by_seq(s):
for p in group:
if p.haslayer(IP):
if (p[IP].src == s_ip):
sCount += 1
if (p[IP].src == c_ip):
cCount += 1
return (sCount, cCount) |
Partager