[Python] Visualisez les informations acquises par Wireshark

Visualisez les informations acquises par Wireshark

introduction

C'est bien si seuls les paquets générés sur localhost sont utilisés, mais lorsque la redirection de port est terminée, Wireshark est foiré et c'est difficile à comprendre, alors j'ai essayé de le visualiser.

Cette fois, nous ne traitons que des paquets qui se produisent sur localhost, mais nous utilisons le PageRank (visualisez l'importance du nœud) pour ceux qui reçoivent plusieurs paquets.

environnement

Python 3.7.5

Préparation

Installer le package Python

pip install dpkt
pip install networkx
pip install matplotlib

Exporter les données capturées par Wireshark

Enregistrez-le car vous utiliserez le fichier capturé par Wireshark. Sélectionnez «.pcap» de «Wireshark / tcpdump / ...» comme format de fichier à enregistrer.

Formulaire rempli

L'adresse IP a été corrigée pour le moment.

Screen Shot 2020-01-19 at 4.17.45.png

Comment utiliser

Les deux sont supposés être dans la même hiérarchie.

python pcap_Visualization.py <nom de fichier.pcap>

Code source

pcap_Visualization.py


import binascii
import dpkt
import matplotlib.pyplot as plt
import networkx as nx
import os
import socket
import string
import sys


def main(file_name):
    packet_count = 0
    pcr = dpkt.pcap.Reader(open(file_name,'rb'))

    #Traitement des paquets
    for ts,buf in pcr:
        packet_count += 1
        try:
            eth = dpkt.ethernet.Ethernet(buf)
        except:
            continue

        #Pour les données IP
        if type(eth.data) == dpkt.ip.IP:
            ip = eth.data
            src = socket.inet_ntoa(ip.src)
            dst = socket.inet_ntoa(ip.dst)
            with open('./edgelist.txt', 'a') as f:
                print("{} {}".format(src, dst), file = f)

    G = nx.read_edgelist('edgelist.txt', nodetype=str)  #Lecture de fichiers
    plt.figure(figsize=(7, 7))
    pos = nx.spring_layout(G)

    #Ajouter un PageRank
    pr = nx.pagerank(G)
    nx.draw_networkx_edges(G, pos, edge_color='y')

    #node_Incorporer la valeur du PageRank à la taille
    nx.draw_networkx_nodes(
        G,
        pos,
        node_color='r',
        alpha=0.5,
        node_size=[5000*v for v in pr.values()]
    )
    nx.draw_networkx_labels(
        G,
        pos,
        font_size=10
    )

    plt.axis('off')
    plt.show()

    os.remove("edgelist.txt")
    print("Sortie de traitement:{}".format(packet_count))

#Fonction principale
if __name__ == '__main__':
    if (len(sys.argv) != 2):
        print("Veuillez spécifier le fichier")
        exit()
    #Définissez le deuxième argument sur le nom du fichier
    file_name = sys.argv[1]

    main(file_name)

prime

Quand j'ai ajouté un paquet généré par un autre appareil, ça ressemblait à ça! Il est difficile de faire la différence entre le PageRank ... Je vais le réparer quand j'en ai envie!

Screen Shot 2020-01-19 at 4.09.29.png

Résumé

NetworkX est intéressant !! C'est un package qui exprime la connexion entre les nœuds et les bords, mais il semble qu'il puisse être appliqué à d'autres que les réseaux !! Nous attendons vos suggestions avec impatience!

Recommended Posts

[Python] Visualisez les informations acquises par Wireshark
Visualisez la matrice de corrélation par l'analyse des composants principaux avec Python
Obtenez des informations sur la propriété en grattant avec python
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Pandas du débutant, par le débutant, pour le débutant [Python]
La première application Web créée par des débutants en Python
Visualisez les informations du capteur d'accélération de la carte micro-ordinateur en temps réel avec mbed + Python
[Python] Trier la table par sort_values (pandas DataFrame)
Comment effacer les caractères générés par Python
J'ai essayé d'utiliser le module Datetime de Python
Linux: comprendre les informations affichées par la commande top
Informations d'identification utilisées par Boto3 (AWS SDK for Python)
Trouver la fonction de distribution cumulative par tri (version Python)
Informations de base Écrire le problème d'algorithme de l'automne 2018 en Python
[Python] Spécifiez la plage de l'image en faisant glisser la souris
Le datetime Python3 est plus rapide en spécifiant simplement le fuseau horaire
Obtenez le SQL exécuté par l'ensemble de données (mappeur Python OR)
Visualisez la gamme d'insertions internes et externes avec python
Lisez le fichier xml en vous référant au didacticiel Python
Informations pour contrôler les moteurs avec Python sur RaspberryPi
Décale la chaîne de l'alphabet de N caractères en Python
J'ai essayé de visualiser les informations spacha de VTuber
Le VIF calculé par Python et le VIF calculé par Excel sont différents .. ??
Visualisons les données pluviométriques publiées par la préfecture de Shimane
Mémo de visualisation par Python
Traitement de la communication par Python
le zen de Python
Visualiser les dataframes Python (Rstudio)
Réponse de Beamformer par python
[Python] Fractionner la date
Essayez d'importer dans la base de données en manipulant ShapeFile d'informations numériques sur les terres nationales avec Python
python> link> dir_util.copy_tree ()> update = 1> Ne pas copier celui acquis?
[Python] Ouvrez le fichier csv dans le dossier spécifié par pandas
Pourquoi puis-je utiliser le module en important avec python?
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
[python] Décomposez la chronologie Twitter acquise en morphologie avec MeCab
Visualisez la "couleur régionale" de la ville en appliquant la vectorisation des documents
Les débutants acquièrent des informations sur les balises Qiita et visualisent et considèrent le TOP10.
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Attacher au processus Python de la destination SSH et déboguer
Trouver le diamètre du graphique par recherche de priorité de largeur (mémoire Python)
Le douzième problème de référence d'écriture en temps réel hors ligne. Implémenté par python