# BPF / raw sockets samples * [man 4 bpf](https://man.freebsd.org/cgi/man.cgi?query=bpf&manpath=FreeBSD+14.2-RELEASE+and+Ports) * [man 4 epair](https://man.freebsd.org/cgi/man.cgi?query=epair&manpath=FreeBSD+14.2-RELEASE+and+Ports) Adaption sur _FreeBSD_ sous _bpf_ de codes écrits pour _Linux_ qui utilisait les mécanismes _raw sockets_ pour tester des boucles _Ethernet_. ## sockbpf Créez une interface de type `epair`: ```sh ifconfig create epair ifconfig epair0a 192.168.2.1/24 ifconfig epair0b 192.168.2.2/24 ``` Surveillez le trafic: ```sh tcpdump -vv -i epair0b ``` Envoyez des packets forgés par `sockpvf`, sur une extrémité de l'interface: ```sh sudo ./obj/sockbpf -i epair0a -m "04:04:04:08:08:08" -v Mot de passe : Prepare to send 10 packets to epair0a. Packet #1 sent. Packet #2 sent. Packet #3 sent. Packet #4 sent. Packet #5 sent. Packet #6 sent. Packet #7 sent. Packet #8 sent. Packet #9 sent. Packet #10 sent. ``` * `-i`: interface où envoyer des trames; * `-m`: adresse MAC de destination; * `-v`: mode verbeux; * `-p`: nombre de trames à envoyer; Vous devriez voir les paquets entrer de l'autre coté: ```sh tcpdump: listening on epair0b, link-type EN10MB (Ethernet), snapshot length 262144 bytes 19:28:07.619115 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) Null Supervisory, Receiver Ready, rcv seq 0, Flags [Final], length 64 19:28:07.619117 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) 802.1B I Information, send seq 1, rcv seq 1, Flags [Command], length 64 0x0000: 0202 0202 0202 0202 0202 0202 0202 0202 ................ 0x0010: 0202 0202 0202 0202 0202 0202 0202 0202 ................ 0x0020: 0202 0202 0202 0202 0202 0202 0202 0202 ................ 0x0030: 0202 0202 0202 0202 0202 0202 0202 0202 ................ 19:28:07.619118 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) 802.1B I Unnumbered, ui, Flags [Response], length 64 0x0000: 0303 0303 0303 0303 0303 0303 0303 0303 ................ 0x0010: 0303 0303 0303 0303 0303 0303 0303 0303 ................ 0x0020: 0303 0303 0303 0303 0303 0303 0303 0303 ................ 0x0030: 0303 0303 0303 0303 0303 0303 0303 0303 ................ 19:28:07.619118 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) SNA Information, send seq 2, rcv seq 2, Flags [Command], length 64 0x0000: 0404 0404 0404 0404 0404 0404 0404 0404 ................ 0x0010: 0404 0404 0404 0404 0404 0404 0404 0404 ................ 0x0020: 0404 0404 0404 0404 0404 0404 0404 0404 ................ 0x0030: 0404 0404 0404 0404 0404 0404 0404 0404 ................ 19:28:07.619118 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) SNA Supervisory, Receiver not Ready, rcv seq 2, Flags [Final], length 64 19:28:07.619120 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) IP Information, send seq 3, rcv seq 3, Flags [Command], length 64 0x0000: 0606 0606 0606 0606 0606 0606 0606 0606 ................ 0x0010: 0606 0606 0606 0606 0606 0606 0606 0606 ................ 0x0020: 0606 0606 0606 0606 0606 0606 0606 0606 ................ 0x0030: 0606 0606 0606 0606 0606 0606 0606 0606 ................ 19:28:07.619123 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) IP Unnumbered, 07, Flags [Response], length 64 0x0000: 0707 0707 0707 0707 0707 0707 0707 0707 ................ 0x0010: 0707 0707 0707 0707 0707 0707 0707 0707 ................ 0x0020: 0707 0707 0707 0707 0707 0707 0707 0707 ................ 0x0030: 0707 0707 0707 0707 0707 0707 0707 0707 ................ 19:28:07.619123 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) Unknown DSAP 0x08 Information, send seq 4, rcv seq 4, Flags [Command], length 64 0x0000: 0808 0808 0808 0808 0808 0808 0808 0808 ................ 0x0010: 0808 0808 0808 0808 0808 0808 0808 0808 ................ 0x0020: 0808 0808 0808 0808 0808 0808 0808 0808 ................ 0x0030: 0808 0808 0808 0808 0808 0808 0808 0808 ................ 19:28:07.619126 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) Unknown DSAP 0x08 Supervisory, Reject, rcv seq 4, Flags [Final], length 64 19:28:07.619126 02:a8:7b:88:0b:0a (oui Unknown) > 04:04:04:08:08:08 (oui Unknown) Unknown DSAP 0x0a Information, send seq 5, rcv seq 5, Flags [Command], length 64 0x0000: 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a ................ 0x0010: 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a ................ 0x0020: 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a ................ 0x0030: 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a ................ ``` Il s'agit de trames sans protocole identifié: le code correspond à la taille du cargo (_IEEE 802.3_).