Witam. Chcę napisać sobie sniffer sieciowy, który będzie działał podobnie do WireShark czyli będzie monitorował cały ruch w sieci na danym interfejsie sieciowym. Czy aby tego dokonać muszę tworzyć socket dla każdego protokołu osobno i w wątkach je nasłuchiwać, czy może istnieje inny sposób na to? A czy warto zastosować gotową bibliotekę pcacp? Ja bym jednak wolał napisać tego sniffera samemu więc bardzo proszę o pomoc.
Tu masz trochę o WinPcap w porównaniu do socketów:
http://stackoverflow.com/questions/1556772/sockets-vs-winpcap
Nie możesz nie używać jakiegoś pcapa, bo to pcap właśnie daje ci dostęp do tych danych. Pod Windowsem używamy WinPcap.
Pomysł z socketami jest poroniony... Zbierasz cały ruch sieciowy i filtrujesz to, co cię interesuje. W c++ to jest jakieś ~50 linijek kodu.
A może firewalla od razu? Pisanie tego samodzielnie jest bardzo trudne, ale jak się ma bibliotekę taką jak WinPKFilter:
http://www.ntkernel.com/wpfk-help/whatis.htm
to sprawa staje się o wiele łatwiejsza. Jest darmowa do użytku niekomercyjnego.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.