[PYTHON] Jetons un coup d'œil au code Scapy. Comment traitez-vous la structure?

Objectif

J'ai une petite course, par exemple, à quoi ressemble le code Scapy? Qu'est-ce que Scapy? Scapy is a powerful Python-based interactive packet manipulation program and library. (Citation: https://pypi.org/project/scapy/)

** Python n'a pas de structure **, donc J'ai confirmé comment traiter les données structurelles telles que les paquets.

Le code cible est https://github.com/secdev/scapy

Tous les codes de citation sont ci-dessus.

Ce que j'ai trouvé

Aperçu

Dans le code, il y avait les deux processus liés à la structure suivants

Fondamentalement, le premier est utilisé.

module struct

↓ Il était emballé avec le sentiment suivant.

    psdhdr = struct.pack("!4s4sHH",
                         inet_pton(socket.AF_INET, u.src),
                         inet_pton(socket.AF_INET, u.dst),
                         proto,
                         ln)

Classe de structure

↓ Il existe le code suivant, mais est-ce pour la prise en charge de Windows pcap? ?? Je ne savais pas comment m'en servir.

class sockaddr_in(Structure):
    _fields_ = [("sin_family", SHORT),
                ("sin_port", USHORT),
                ("sin_addr", in_addr),
                ("sin_zero", 8 * CHAR)]   

Résumé

J'ai vérifié comment les données structurelles du paquet sont traitées par le célèbre Scapy. Le ** module struct ** a été utilisé. (Ce qui précède est un peu trompeur. Il peut être approprié de dire que le module struct a été utilisé dans la partie qui stocke les données.) En ce qui concerne la façon dont les structures sont gérées en langage C, etc., je pense qu'il est correct de dire que les parties autres que la partie durcie sont normalement des membres de la classe.

Si vous avez des commentaires, veuillez nous le faire savoir. : bonbons:

Recommended Posts

Jetons un coup d'œil au code Scapy. Comment traitez-vous la structure?
Jetons un coup d'œil au code Scapy. Surcharge des méthodes spéciales __div__, __getitem__.
Jetez un œil à l'arborescence des exceptions intégrée à Python
Jetons un coup d'œil à la carte des fonctionnalités de YOLO v3
Jetez un œil à l'arborescence des exceptions intégrée dans Python 3.8.2
Jetez un œil au traitement de LightGBM Tuner
Regardez de plus près le tutoriel Kaggle / Titanic
Challenge classification des images par TensorFlow2 + Keras 2 ~ Regardons de plus près les données d'entrée ~
Jetez un œil au modèle Django.
Regardons le diagramme de dispersion avant l'analyse des données
Jetez un œil au profilage et au vidage avec Dataflow
Jetons un coup d'œil à CornerNet, un détecteur d'objets qui n'utilise pas d'ancres.
Jetons un coup d'œil à la tendance infectieuse du nouveau coronavirus COVID-19 dans chaque pays et à l'état de la réponse médicale (informations supplémentaires).
Un aperçu rapide de votre profil dans l'appli django
Jusqu'à ce que vous le regardiez comme "Vous êtes un data scientist? 100 ans plus vite" - Jusqu'à ce que vous fassiez un Docker sur Win 10 Home et que vous lanciez la version SQL de "Data Science 100 Knock (Structured Data Processing)" -