Mam aplikację, która komunikuje się z jakimś serwerem. Chcę wiedzieć, jaki jest adres IP tego serwera. Jak mogę przechwycić cały ruch z konkretnej aplikacji, a nie tylko cały ruch, tak jak Wireshark?
Mam aplikację, która komunikuje się z jakimś serwerem. Chcę wiedzieć, jaki jest adres IP tego serwera. Jak mogę przechwycić cały ruch z konkretnej aplikacji, a nie tylko cały ruch, tak jak Wireshark?
Odpowiedzi:
Możliwe jest przechwytywanie całego ruchu sieciowego dla danej aplikacji poprzez przechwytywanie wywołań interfejsu API Windows Sockets. Są to narzędzia, które mogą pomóc.
Proxocket napisany przez Luigi Auriemma. Przechwytuje wywołania API i zapisuje przechwycony ruch jako plik .cap zgodny z Wireshark w formacie tcpdump. Nic nie jest bardziej objaśniające niż obraz dostarczony przez samego Luigiego:
NirSoft ma aplikację SocketSniff , która umożliwia przechwytywanie ruchu określonego procesu. Zdjęcie jest również warte tysiąca słów:
Niestety wspomniane narzędzia prawdopodobnie nie będą obsługiwać aplikacji 64-bitowych. Możliwe jest jednak napisanie niestandardowego przechwytywacza przy użyciu biblioteki mhook obsługującej zarówno 32-bitowy, jak i 64-bitowy interfejs API.
Microsoft Network Monitor może powiedzieć „przechwytuj tylko pakiety wysyłane do i z tej aplikacji”.
Najłatwiejszym w użyciu jest Fiddler 2. Jest to debugger, który pozwala przeglądać żądania HTTP, HTTPS i FTP (oba, jeśli są skonfigurowane) za pomocą dowolnej aplikacji na komputerze.
Po zainstalowaniu, aby wybrać konkretną aplikację, kliknij i przytrzymaj element menu „ Dowolny proces ”, a następnie przeciągnij kursor do otwartego okna i zwolnij go. Będzie wyświetlać tę ukierunkowaną aplikację tylko do momentu kliknięcia prawym przyciskiem myszy elementu menu, który teraz czyta docelowy proces na czerwono, aby ją zwolnić.
W systemie Windows TCPView powinien robić to, czego potrzebujesz: może pokazywać wszystkie połączenia TCP i UDP, które otworzył dany program.
Myślę jednak, że przyda się to tylko wtedy, gdy program otwiera połączenie i pozostawia je otwarte; nie będą pokazywać całego ruchu sieciowego przez dany program. Możliwe jest na przykład, że wykonuje bardzo krótkie połączenie telefoniczne z domem podczas ładowania, ale połączenie zostaje zerwane przed uruchomieniem TCPView.
Process Monitor może pomóc uzyskać więcej szczegółów, ale nie korzystałem z niego, więc nie jestem pewien, jak dużo przechwytuje o gniazdach sieciowych.