Jak monitorować połączenia sieciowe wykonane z symulatora iOS

113

Próbuję monitorować połączenia z aplikacji na mój serwer, tak jak robi to Firebug. Nie mogłem znaleźć sposobu, aby to zobaczyć w symulatorze iOS lub w xCode.

Czy można to zrobić bez wąchania całego ruchu? Jeśli nie, jakie narzędzie byś zaproponował?

Mad Echet
źródło

Odpowiedzi:

84

Osobiście używam Charlesa do tego typu rzeczy.
Po włączeniu monitoruje każde żądanie sieciowe, wyświetlając rozszerzone szczegóły żądania, w tym obsługę SSL i różne formaty żądań / odpowiedzi, takie jak JSON itp.

Możesz również skonfigurować go tak, aby podsłuchiwał tylko żądania do określonych serwerów, a nie cały ruch.

To oprogramowanie komercyjne, ale jest wersja próbna, a IMHO to zdecydowanie świetne narzędzie.

Macmade
źródło
1
Naprawdę łatwy w obsłudze i konfiguracji, robi dokładnie to, co chciałem, dzięki!
Mad Echet
3
Nie działa łatwo, gdy twój serwer jest chroniony przez TLS, a powinien.
carbocation
Próbowałem z Charlesem, ale nie byłem w stanie bardzo dobrze monitorować ruchu wychodzącego. Na przykład nie mogę zmienić formatowania mojego żądania POST na JSON
Jesus Rodriguez.
24

Proxy typu man-in-the-middle, jak sugerują inne odpowiedzi, jest dobrym rozwiązaniem, jeśli chcesz widzieć tylko ruch HTTP / HTTPS. Apartament Burp jest całkiem niezły. Jednak konfiguracja może być trudna. Nie jestem pewien, jak przekonałbyś symulator do rozmowy. Być może będziesz musiał ustawić serwer proxy na lokalnym komputerze Mac na wystąpienie serwera proxy, aby przechwycił, ponieważ symulator będzie korzystał ze środowiska lokalnego komputera Mac.

Najlepszym rozwiązaniem do sniffowania pakietów (choć działa tylko na rzeczywistych urządzeniach z systemem iOS, a nie na symulatorze), które znalazłem, jest użycie rvictl. Ten post na blogu ma niezły opis. Zasadniczo robisz:

rvictl -s <iphone-uid-from-xcode-organizer>

Następnie wąchasz interfejs, który tworzy za pomocą Wiresharka (lub twojego ulubionego narzędzia), a kiedy skończysz, wyłącz interfejs za pomocą:

rvictl -x <iphone-uid-from-xcode-organizer>

Jest to miłe, ponieważ jeśli chcesz węszyć pakietowo symulator, musisz również przebrnąć przez ruch do lokalnego komputera Mac, ale rvictltworzy wirtualny interfejs, który po prostu pokazuje ruch z urządzenia iOS podłączonego do USB Port.

mpontillo
źródło
1
+1 dla Burp Suite i nie ma bólu, aby go skonfigurować: engadget.com/2011/02/21/… Zajmuje to mniej niż 10 minut
Vladimir
20

Darmowe narzędzie proxy typu open source, które łatwo działa na komputerze Mac, to mitmproxy .

Witryna zawiera linki do pliku binarnego Mac, a także kod źródłowy na Github.

Dokumenty zawierają bardzo pomocne wprowadzenie do ładowania certyfikatu na urządzenie testowe w celu wyświetlenia ruchu HTTPS.

Nie jest tak plastyczny jak Charles, ale robi wszystko, czego potrzebuję, jest darmowy i utrzymywany. Dobre rzeczy i całkiem proste, jeśli wcześniej używałeś niektórych narzędzi wiersza poleceń.

AKTUALIZACJA: Właśnie zauważyłem na stronie internetowej, że mitmproxy jest dostępny jako instalacja homebrew. Nie może być prostsze.

giff
źródło
Czy miałeś szczęście, używając MITM dla symulatora iOS? Mam to skonfigurowane, ale ruch z mojego komputera poza symulatorem jest również przechwytywany, co nie jest najlepsze. Używanie go na prawdziwym urządzeniu jest niesamowite. Robię to od lat.
aprobata
mitmweb to internetowy interfejs użytkownika mitmproxy, który umożliwia interaktywne badanie i modyfikację ruchu HTTP. Podobnie jak mitmproxy, różni się od mitmdump tym, że wszystkie przepływy są przechowywane w pamięci, co oznacza, że ​​jest przeznaczony do pobierania małych próbek i manipulowania nimi. Mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak
15

Niedawno znalazłem repozytorium git, które to ułatwia.

Możesz tego spróbować.

To jest zrzut ekranu aplikacji: wprowadź opis obrazu tutaj

Z poważaniem.

Andres Paladines
źródło
Chociaż Bagel jest świetny i prosty, ostatnio zauważyłem, że wyświetla również żądania zapisane w pamięci podręcznej. Jeśli więc chcesz na przykład poznać rzeczywiste przesłane bajty, nie jest to pomocne.
BlackWolf
10

Xcode zapewnia rejestrowanie diagnostyczne CFNetwork. Apple doc

Aby to włączyć, dodaj CFNETWORK_DIAGNOSTICS=3w sekcji Zmienna środowiskowa:

wprowadź opis obrazu tutaj

Spowoduje to wyświetlenie żądań z aplikacji z nagłówkami i treścią. Należy pamiętać, że OS_ACTIVITY_MODEmusi być ustawione enabletak, jak pokazano. W przeciwnym razie żadne dane wyjściowe nie będą wyświetlane na konsoli.

Evan
źródło
4

Wireshark it

Wybierz swój interfejs

wprowadź opis obrazu tutaj

Dodaj filterpoczątekcapture

wprowadź opis obrazu tutaj


Testowanie

Kliknij dowolną akcję lub przycisk, które wywołałyby żądanie GET / POST / PUT / DELETE

Zobaczysz to na liście w wireshark

wprowadź opis obrazu tutaj

Jeśli chcesz poznać więcej szczegółów na temat jednego konkretnego pakietu, po prostu wybierz go i Śledź> Strumień HTTP .

wprowadź opis obrazu tutaj

miej nadzieję, że to pomoże innym!

cyber8200
źródło
3

Jeśli masz połączenie kablowe i komputer Mac, istnieje prosta i wydajna metoda:

  1. zainstaluj darmowy Wireshark, upewnij się, że może przechwytywać urządzenia z (i musisz to zrobić po każdym ponownym uruchomieniu komputera !):

    sudo chmod 644 / dev / bpf *

  2. Teraz udostępnij swoją sieć Wi-Fi. Preferencje systemowe> Udostępnianie> Udostępnianie Internetu. Sprawdź, czy masz „Udostępnij swoje połączenia z: Ethernet” i używasz: Wi-Fi. Możesz również skonfigurować niektóre zabezpieczenia Wi-Fi, nie zakłócają monitorowania danych.

  3. Podłącz telefon do nowo utworzonej sieci. Często potrzebuję tutaj kilku prób. Jeśli telefon nie chce się połączyć, wyłącz Wi-Fi komputera Mac, a następnie powtórz krok 2 powyżej i bądź cierpliwy.

  4. Uruchom Wireshark, przechwytuj swój interfejs bezprzewodowy za pomocą Wireshark, prawdopodobnie jest to „en1”. Filtruj potrzebne adresy IP i / lub porty. Gdy znajdziesz pakiet, który jest interesujący, wybierz go, kliknij prawym przyciskiem myszy (menu kontekstowe)> Śledź strumień TCP, a zobaczysz ładną reprezentację tekstową żądań i odpowiedzi.

A co najlepsze: dokładnie ta sama sztuczka działa również na Androida!

JaakL
źródło
Czy możesz tego użyć ze swoim symulatorem? Nie mam jeszcze aplikacji na swoim telefonie.
Joshua Dance
@Joshua Dance możesz go używać z emulatorem, jeśli ma żądanie sieci zewnętrznej. Połączenia z hostem lokalnym nie mogą być śledzone za pomocą wireshark, ponieważ nie przechodzą przez „przewód” (karta sieciowa)
JaakL
1

Telerik Fiddler to dobry wybór

http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices

Konstantin Salavatov
źródło
Jak to będzie działać na komputerze z systemem OSX? Biorąc pod uwagę dwa z tagów to xcode i ios-simulator.
Kevin R
@KevinR, 1. Telerik ma wersję beta programu Fiddler dla OS X 2. Nigdzie nie jest powiedziane, że wybór ogranicza się do OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov
2
@KonstantinSalavatov, Temat oryginalnego posta to „Jak monitorować połączenia sieciowe wykonywane z symulatora iOS”. Symulator iOS działa tylko na OS X, więc tak, wybór jest ograniczony do OS X.
ChillyPenguin
1
+1 Myślę, że powinieneś zagłosować za tym teraz, ponieważ jest teraz wsparcie dla Mac OS X! : D telerik.com/fiddler#SupportedTechnologies i tutaj telerik.com/download/fiddler/fiddler-osx-beta
David Noreña
1
  1. Zainstaluj WireShark
  2. pobierz adres IP z monitora sieci xcode
  3. słuchaj interfejsu wifi
  4. ustaw filtr ip.addr == 192.168.1.122 w WireShark
August Lin
źródło
0

Dobrym rozwiązaniem, jeśli jesteś przyzwyczajony do narzędzi inspektora Chrome, jest debugger Pony: https://github.com/square/PonyDebugger

Konfiguracja jest trochę uciążliwa, ale kiedy już to zrobisz, działa dobrze. Pamiętaj jednak, aby używać Safari zamiast Chrome, aby z niego korzystać.

Simon Epskamp
źródło
0

Używam netfox. Jest bardzo łatwy w obsłudze i integracji. Możesz go używać na symulatorze i urządzeniu. Pokazuje wszystkie prośby i odpowiedzi. Obsługuje JSON, XML, HTML, obraz i inne typy odpowiedzi. Możesz udostępniać żądania, odpowiedzi i pełny dziennik według domyślnych formatów udostępniania IOS (Gmail, WhatsApp, e-mail, slack, sms itp.)

Możesz sprawdzić na GitHub: https://github.com/kasketis/netfox

Netfox zapewnia szybki podgląd wszystkich wykonanych żądań sieciowych wykonywanych przez aplikację na iOS lub OSX. Przechwytuje wszystkie żądania - oczywiście Twoje, żądania z bibliotek zewnętrznych (takich jak AFNetworking, Alamofire lub inne), UIWebViews i nie tylko

Burcu Kutluay
źródło