Как да наблюдавам порт за трафик в Windows?

Опитвам се да намеря решение за наблюдение на трафика (входящ и изходящ) през определен порт. Не е необходимо да улавяте пакетите или да правите нещо друго. Това, което прави, е да бъде слушател на трафика, за да се увери, че има съобщения, изпратени или получени от този порт на всеки 10 минути. Трябва да работи във фонов режим през цялото време (като демон) и без значително въздействие върху производителността. Въз основа на моите изследвания, един избор е да използвам съществуващ инструмент, за да направя това. Има куп инструменти за наблюдение или надушване на трафика, като wireshark. Е, изглежда повечето от тях наблюдават трафика, преминаващ през интерфейс, вместо през порт, или не могат да работят като демон. Друг избор е да напишете програма, която да направи това. SharpPcap изглежда е добър избор, но все още трябва да заснема и анализирам пакетите, за да знаете дали съществува такъв трафик. Може ли някой да ми предложи какво трябва да направя?


person eric young    schedule 05.09.2010    source източник


Отговори (2)


SharpPcap обработва улавянето на пакети по същия начин като Wireshark, така че можете да зададете филтри, за да ограничите пакета, който се улавя до конкретен порт, по същия начин в SharpPcap, както можете в wireshark. Освен това SharpPcap ще бъде много по-лека опция спрямо wireshark.

Изтеглете дървото на изходния код на SharpPcap и погледнете Example05.SetFilter.

За да стесните резултатите, така че да уловите само пакетите, които искате да видите, ще трябва да използвате няколко филтъра.

Pcap използва общ език във всички приложения, които го използват, но посочва филтрите, които да зададете. Програмите за заснемане, които използват winpcap (windows) или libpcap (*nix), включват sharppcap, wireshark, pcap.net, winpcap, libpcap, tcpdump и др... За страхотен ресурс за това как да използвате pcap филтри вижте тази връзка.

Ето филтрите, от които се нуждаете:

  • ether хост ehost
  • порт порт

Където ehost е MAC адресът на компютъра, изпращащ/получаващ пакетите, а портът е портът, който искате да наблюдавате. Така че пълният филтърен низ ще бъде.

SetFilter("ether host ff:ff:ff:ff:ff:ff and port 60");

MAC и портът тук са само за илюстрация, очевидно бихте ги променили със стойностите, които се отнасят за вашата конкретна настройка.

Това, използвано в примера SetFilter, просто ще отпечата ред информация с времето, когато пакетът е бил уловен в командния ред всеки път, когато пакет е уловен и отговаря на критериите, ако вашият филтър.

Ако искате по-подробна информация за пакета, като например информация от заглавките или полезния товар на пакета, ще трябва да анализирате входящия необработен пакет. Не забравяйте да поискате помощ във форума на проекта sourceforge, ако имате нужда от някои съвети как да направите това. Разработчиците на проекта са много активни и винаги готови да помогнат.

person Evan Plaice    schedule 10.11.2010

Най-добрият начин, който ще ограничи влиянието, което вашият инструмент ще има върху производителността, е чрез ETW (Проследяване на събития за Windows) потребител в реално време (т.е. инструмент, който активира ETW проследяване и го чете незабавно, вместо да го записва във файл). Тази MSDN проба е чудесен начин да видите как да направите това чрез C# и ви дава някои код, за да започнете.

person Ana Betts    schedule 06.09.2010