webForumDet fria alternativet

Hook'a winsok

C/C++ur C/C++

3 svar · 299 visningar · startad av Toonster

Medlem sedan feb. 20001 590 inlägg
Frågan#1

Jag vill kunna mäta IP trafiken med ett program, och behöver hooka winsock antagerligen. Någon som har tips om detta?
Jag vill alltså kunna visa bytes skickat och mottaget.

Medlem sedan juni 20022 599 inlägg
#2

Tror faktiskt inte man behöver "hooka" i nån djupare mening. Via winsock-funktionen WSAIoctl(2000+XP) och inparametern SIO_RCVALL kan man skapa en socket som snappar upp allt oberoende av IP, Port eller protokoll (alltså i praktiken en sniffer).

Här finns lite kod (i VB udda nog): http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=42170&lngWId=1.
I princip behöver du "bara" porta koden och lägga till summering av antalet bytes per port och protokoll (om det inte redan finns).

Medlem sedan feb. 20001 590 inlägg
#3

Ska kika på den, ett problem är att det är bara IP trafiken till/från internet som jag är intresserad av, inte eventuell trafik i LAN'et.

Medlem sedan juni 20022 599 inlägg
#4

Men det är nog inte nåt större problem. Koden ger dig tillgång till de flesta IP-headerna. Vill du skilja ut Internet-traffik så är det normalt bara att matcha på paket där endera käll- eller destinations-IP:en ligger utanför din nätmask.

Om du istället råkar använda tex en proxy (och inte en router/gateway på paketnivå) så får du kanske även matcha på traffik till och från den.

132 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)