Je veux compter les paquets dupliqués à partir d'un fichier pcap. Les paquets dupliqués sont les paquets dont le numéro de séquence a déjà été vu précédemment. Pour cela j’extraie tout d'abord la liste des numéros de séquences avec cette fonction:
Ensuite, je vérifie si le numéro de séquence actuel a déjà été vu précédemment: (je ne suis pas sûr de cette fonction)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def seq_list(s): v = [] a = [p['TCP'].seq if p.haslayer(TCP) else None for p in s] return a
Après cela, j'ai créé une fonction pour obtenir la liste du paquet dupliqué: (je ne suis pas sûr de cette fonction)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 def is_dupl(s): v = seq_list(s) a = [] for p in s: if p.haslayer(TCP): for i in range(0, len(v)): a += v[0:i+1:1] if p[TCP].seq in a: return True return False
et enfin mon compteur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def find_dupl(s): tcpSeq = [p[TCP].seq if p.haslayer(TCP) and is_dupl(p) else None for p in s] counter = Counter(tcpSeq) #del counter[None] print("---------------------length of counter dictionary : --", counter.items()) return [[s[index] for index, seq in enumerate(tcpSeq) if seq == key] for (key, value) in counter.items() if value > 1]
Puis j'ai appelé la fonction duplication_pkt_count dans mon main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 def duplication_pkt_count(s, s_ip, c_ip): sCount = 0 cCount = 0 duplication = find_dupl(s) for dup in duplication: for p in dup[1:]: if p.haslayer(IP): if (p[IP].src == s_ip): sCount += 1 if (p[IP].src == c_ip): cCount += 1 return (sCount, cCount)
Mais le compteur ne fonctionne pas. Et j'ignore la raison
Partager