Jako programista Androida, chcę sprawdzić ruch sieciowy w moim urządzeniu z Androidem. Z własnych aplikacji, w rzeczywistości, istnieje wiele narzędzi pomóc debugowania HTTP (s) ruchu. Jednak, jak można monitorować inne różne aplikacje, takie jak: Youtube, Twitter, itp.?
Ten artykuł pomoże Ci to zrobić za pomocą narzędzia mitmproxy.
W skrócie, mitmproxy jest interaktywnym proxy man-in-the-middle dla HTTP i HTTPS z interfejsem konsoli, a co najważniejsze jest darmowy!
Możesz przeczytać ten dokument, aby zrozumieć, jak to działa.
Wymagania wstępne
- Narzędzie Mitmproxy
- Emulator Androida z uprawnieniami roota
Ważna uwaga: Kiedy tworzysz emulator, musisz wybrać „(Google APIs)” w Target (wersja androida), nie wybieraj „(Google Play)” lub nie będziesz w stanie uzyskać dostępu adb root.
Idea
Idealnie, instalujemy certyfikat mitmproxy CA ręcznie jako dodany przez użytkownika CA i gotowe!
Niestety, od Androida 7, aplikacje ignorują dodane przez użytkownika CA, chyba że są skonfigurowane do ich używania. A większość aplikacji nie decyduje się jawnie na używanie certyfikatów użytkownika. Musimy więc umieścić nasz certyfikat mitmproxy CA w systemowym magazynie certyfikatów jako zaufany CA.
Teraz zaczynajmy!
Create mitmproxy certificate
- Install mitmproxy
brew install mitmproxy
- Generate certificate
mitmproxy
Rename certificate
- Enter your certificate folder
cd ~/.mitmproxy/
- Certyfikaty CA w Androidzie są przechowywane przez nazwę ich hasha, z '0′ jako rozszerzeniem. Teraz wygeneruj hash swojego certyfikatu
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
- Na przykład, wyjście to
hash_value.
Możemy teraz skopiowaćmitmproxy-ca-cert.cer
dohash_value.0
i nasz certyfikat systemowy jest gotowy do użycia
cp mitmproxy-ca-cert.cer hash_value.0
Insert certificate into system certificate store
- Enter folder emulatora w Android SDK
cd .../Android/SDK/emulator/
- Get a list of your AVDs with
emulator -list-avds
./emulator -list-avds
- Start your android emulator with
-writable-system
option in w celu zapisu do/system
./emulator -avd <avd_name_here> -writable-system
- Restartuj adb jako root
adb root
- Umontuj partycję systemową jako zapisywalną
adb shell "mount -o rw,remount /"
- Przesuń swój certyfikat do systemowego magazynu certyfikatów i ustaw uprawnienia do plików
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
- Reboot emulatora
adb reboot
Teraz zainstalowaliśmy certyfikat CA na emulatorze.
Setup Proxy on Emulator
- Otwórz Ustawienia Emulatora, dodaj ręczne proxy z nazwą hosta: 127.0.0.0.1 i port 8080
Uruchom narzędzie i zobacz magię!
Możesz uruchomić dowolne z trzech narzędzi z terminala:
- mitmproxy -> daje ci interaktywne TUI
- mitmdump -> daje ci zwykłe i proste wyjście terminala
- mitmweb -> daje ci GUI oparte na przeglądarce
Na przykład, otwieram aplikację Youtube i monitoruję ruch jak poniżej.
- Run
mitmproxy
- Run
mitmweb
aby zobaczyć szczegóły API
.
Voila!