[Python] Visualisieren Sie die von Wireshark erfassten Informationen

Visualisieren Sie die von Wireshark erfassten Informationen

Einführung

Es ist in Ordnung, wenn es nur die Pakete sind, die auf localhost auftreten, aber wenn die Portweiterleitung abgeschlossen ist, wird Wireshark durcheinander gebracht und es ist schwer zu verstehen, also habe ich versucht, es zu visualisieren.

Dieses Mal haben wir es nur mit Paketen zu tun, die auf localhost auftreten, aber wir verwenden PageRank (visualisieren Sie die Bedeutung des Knotens) für diejenigen, die mehrere Pakete erhalten.

Umgebung

Python 3.7.5

Vorbereitung

Installieren Sie das Python-Paket

pip install dpkt
pip install networkx
pip install matplotlib

Exportieren Sie die von Wireshark erfassten Daten

Speichern Sie es so, wie Sie die von Wireshark erfasste Datei verwenden. Wählen Sie ".pcap" von "Wireshark / tcpdump / ..." als zu speicherndes Dateiformat.

Vollständiges Formular

Die IP-Adresse wurde vorerst korrigiert.

Screen Shot 2020-01-19 at 4.17.45.png

Wie benutzt man

Es wird angenommen, dass sich beide in derselben Hierarchie befinden.

python pcap_Visualization.py <Dateiname.pcap>

Quellcode

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'))

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

        #Für IP-Daten
        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)  #Datei lesen
    plt.figure(figsize=(7, 7))
    pos = nx.spring_layout(G)

    #PageRank hinzufügen
    pr = nx.pagerank(G)
    nx.draw_networkx_edges(G, pos, edge_color='y')

    #node_Integrieren Sie den PageRank-Wert in die Größe
    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("Verarbeitung beenden:{}".format(packet_count))

#Hauptfunktion
if __name__ == '__main__':
    if (len(sys.argv) != 2):
        print("Bitte geben Sie die Datei an")
        exit()
    #Setzen Sie das zweite Argument auf den Dateinamen
    file_name = sys.argv[1]

    main(file_name)

Bonus

Als ich ein von einem anderen Gerät generiertes Paket hinzufügte, sah es so aus! Es ist schwer, den Unterschied zwischen PageRank zu erkennen ... Ich werde es reparieren, wenn ich Lust dazu habe!

Screen Shot 2020-01-19 at 4.09.29.png

Zusammenfassung

NetworkX ist interessant !! Es ist ein Paket, das die Verbindung zwischen Knoten und Kanten ausdrückt, aber es scheint, dass es auf andere als Netzwerke angewendet werden kann !! Wir freuen uns auf Ihre Vorschläge!

Recommended Posts

[Python] Visualisieren Sie die von Wireshark erfassten Informationen
Visualisieren Sie die Korrelationsmatrix durch Hauptkomponentenanalyse mit Python
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Die erste Web-App, die von Python-Anfängern erstellt wurde
Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python
[Python] Sortieren Sie die Tabelle nach sort_values (pandas DataFrame)
So löschen Sie die von Python ausgegebenen Zeichen
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Linux: Verstehen Sie die Informationen, die vom Befehl top angezeigt werden
Von Boto3 verwendete Anmeldeinformationen (AWS SDK für Python)
Finden Sie die kumulative Verteilungsfunktion durch Sortieren (Python-Version)
Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python
[Python] Geben Sie den Bereich des Bildes durch Ziehen der Maus an
Python3 datetime ist schneller, wenn nur die Zeitzone angegeben wird
Lassen Sie die SQL vom Dataset ausführen (Python OR Mapper)
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Lesen Sie die XML-Datei anhand des Python-Tutorials
Informationen zur Steuerung von Motoren mit Python auf RaspberryPi
Verschieben Sie die Alphabetzeichenfolge in Python um N Zeichen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Das von Python berechnete VIF und das von Excel berechnete VIF sind unterschiedlich.
Lassen Sie uns die von der Präfektur Shimane veröffentlichten Niederschlagsdaten visualisieren
Visualisierungsnotiz von Python
Kommunikationsverarbeitung durch Python
der Zen von Python
Visualisieren Sie Python-Datenrahmen (Rstudio)
Beamformer-Antwort von Python
[Python] Teilen Sie das Datum
Versuchen Sie, in die Datenbank zu importieren, indem Sie ShapeFile mit numerischen Informationen zum nationalen Land mit Python bearbeiten
python> link> dir_util.copy_tree ()> update = 1> Kopieren Sie den erworbenen nicht?
[Python] Öffnen Sie die CSV-Datei in dem von Pandas angegebenen Ordner
Warum kann ich das Modul durch Importieren mit Python verwenden?
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
[Python] Zerlegen Sie die erfasste Twitter-Timeline mit MeCab in Morphologie
Visualisieren Sie die "regionale Farbe" der Stadt, indem Sie die Vektorisierung von Dokumenten anwenden
Anfänger erhalten Qiita-Tag-Informationen und visualisieren und betrachten das TOP10.
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Anhängen an den Python-Prozess des SSH-Ziels und Debuggen
Ermitteln Sie den Durchmesser des Diagramms anhand der Suche nach Breitenpriorität (Python-Speicher).
Das zwölfte Offline-Echtzeit-Schreibreferenzproblem. Implementiert von Python