Witam!
Temat może trochę niewiele mówi, ale postaram się jak najdokładniej wyjaśnić na czym polega mój problem.
Piszę... a właściwie to chcę napisać program, który prześledzi pakiety protokołu ARP i w razie pojawienia się podejrzanych pakietów (takich jakie wysyła się w celu ataku ARP Spoofing) podejmie odpowiednie czynności i wyśle komunikat do użytkowników sieci np na broadcast.
do wyjaśnienia problemu posłużę się przykładem:
Przykładowa ramka protokołu ARP:
| 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-----+---------------------------------------------------
0000 | ff ff ff ff ff ff 01 23 45 67 89 ab 08 06 00 01 .... ...$ .p.. ....
0010 | 08 00 06 04 00 01 00 24 d1 70 ba f7 c0 a8 00 01 .... ...$ .p.. ....
0020 | 00 00 00 00 00 00 c0 a8 00 05 .... .... ..
i od razu wszystko stało się jasne, ale mimo wszystko rozpiszę to:
00 - 05 --> docelowy adres sprzętowy (ff:ff:ff:ff:ff:ff) czyli adresowany do wszystkich
06 - 0b --> źródłowy adres sprzętowy (01:23:45:67:89:ab)
0c - 0d --> bajty definiujące typ ramki (08 06) czyli ARP
dalsza część należy już bezpośrednio do ARP, czyli to do czego chcę uzyskać dostęp.
Problem polega na tym, że protokół ARP nie jest oparty na protokole IP a jego dane występują zaraz po określeniu trasy za pomocą adresów fizycznych i dwu bajtowym wyrazie definiującym protokół ARP (08 06 hex) i nie mam gniazda, które obsłuży mi taki pakiet (taki, w którym bajty 0c - 0d nie są równe 08 00 (definiujące protokół IP) i po bajtach 00 - 0d nie występuje nagłówek protokołu IP)
no i chciałbym mieć też możliwość wysyłania takich pakietów
wiem.. to trochę zagmatwane, ale mam nadzieję, że wyjaśniłem swój problem na tyle precyzyjnie, że znajdzie się ktoś kto będzie umiał mi pomóc.
oczywiście szukałem w Google i Yahoo! ale hoo!Ya znalazłem =(
Z góry dzięki: Pingvin