Also einen Paket-Sniffer zu schreiben ist an für sich nicht besonders schwer. Hab da auch mal einen Kleinen geschrieben. Was ich wohl gemerkt habe ist, dass das Projekt sehr schnell, sehr groß werden kann und regelrecht ausufern zu vermag. (Immer mehr Protokolle implementieren usw.)
Man lernt viel davon, benötigt aber auch nicht gerade wenig Grundlagen im Netzwerk-Bereich. Also man sollte schon wissen wie ICMP funktioniert und die Layer 2-7 Schichten des OSI-Models zu handhaben sind.
Ich würde eher zum lernen mal vorschlagen sowas wie einen SNMP-Manager zu schreiben. Das Protokoll ist richtig geil und man kann richtig versaute Dinge damit anstellen. Beispiel: Mit dem Protokoll ist es möglich einzelne Ports eines Layer 2 Switches zu deaktivieren - z. B. wenn der Chef einem mal wieder auf die Nerven geht, kann man seinen Port abstellen.
p.s.: ARP Poisoning ist illegal? Wäre mir neu. Aber wenn er es lokal nur für seine Datenpakete haben will, benötigt er nicht mal ARP Poisoning.