Bonjour à tous,
J'ai besoin de vos lumières.
Je suis en train d'écrire un programme python qui lit les trames Ethernet qui passent sur le réseau et qui réagit en fonction.
Mon objectif étant d'identifier quand un équipement wifi spécifique se connecter au LAN et envois une requête.
J'utilise un script python faisant appel à la librairie socket. Je me suis inspiré de codes que j'ai grappillé sur différents forums.
Voici un morceau du code :
Code :
- rawSocket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
- packet = rawSocket.recvfrom( 2048 )
- ethernet_header = packet[0][0:14]
- ethernet_detailed = struct.unpack("!6s6s2s", ethernet_header)
- ethertype = ethernet_detailed[2]
- if ethertype == '\x00\x06':
- Mes action
|
Mon programme marche plutôt bien mais il y a quelque chose que je ne comprends pas.
Comme vous le voyez, je récupère le type de trame ethernet dans ethertype.
Lorsque l'équipement monte la connexion je vois toujours plusieurs trames :
- Une ou deux trames de type 0x0806 : elles correspondent au protocole ARP et je sais à quoi ça sert.
- Une trame ou plusieurs trames de type 0x800 : ça ce sont des paquets IP. Je sais à peu près ce que c'est.
- Une trame de type "0x006". Cette trame est toujours unique et survient toujours. Quand je fais des recherches je vois que cela correspond à une famille d'adresses de type 802. Et là je ne comprends plus !
Alors ma question est la suivante, pour ma compréhension, est-ce que certains d'entres vous savent ce que sont ces trames ? A quoi ça sert ? Comment ça marche grosso-modo ?
D'avance merci.
Alex
---------------
Mon blog domotique : https://framboiseaupotager.blogspot.fr/