Tworzenie i nasłuchiwanie pakietów ARP

0

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

0

do wysłania możesz użyć SendARP z modułu winsock. Co do podglądania/odbierania to nie wiem czy jesteś to w stanie zrobić na poziomie aplikacji. Może WinpCap da radę przechwycić pakiety ARP

0

yyy... nie ma takiej funkcji w module winsock przynajmniej u mnie...
WinpCap odpada, bo program musi szybko zareagować na podejrzany pakiet a nie wyświetlać wszystkie =(
Dobrze by było, żeby ten program działał trochę jak sniffer i mógł wysyłać pakiety w formacie raw.
może trochę w tę strone da się pokombinować.

0

sorka, ona nie jest w winsock - trzeba sobie ją zadeklarować
Function SendARP (DestIp: DWORD; srcIP: DWORD; pMacAddr: pointer; PhyAddrLen: Pointer): DWORD;stdcall; external 'iphlpapi.dll';
co winpcap to kto Ci każe coś wyświetlać??? Przecież aby znaleźć podejrzany pakiet musisz sprawdzić wszystkie

0

ale nie chce sprawdzać ich osobiście tylko wpisać reguły do programu, który mi zareaguje wybrane.
spróbuję coś znaleźć w dokumentacji biblioteki z której pochodzi ta funkcja

0

chcę napisać program, który prześledzi pakiety protokołu ARP

ale nie chce sprawdzać ich osobiście tylko wpisać reguły do programu, który mi zareaguje wybrane

to się zdecyduj czy piszesz program czy szukasz gotowego rozwiązania!

0

chce żeby to program na podstawie reguł określił czy z danym pakietem trzeba coś zrobić... bo przecież nie będę sterczał i gapił się cały czas w monitor czekając na pakiety arp.. ale z tym to już sobie dam radę
Edit:
już rozumiem o co Ci chodziło, wyszukałem w google winpcap i ktoś to nazwał programem a nie biblioteką co wprowadziło mnie w błąd

1 użytkowników online, w tym zalogowanych: 0, gości: 1