Jak wyodrębnić ukryte dane i telemetrię z Androida za pomocą czystego ADB
Kiedy dostaję w swoje ręce urządzenie testowe z niestabilnym błędem lub podejrzanym zachowaniem, standardowe okno Logcat w Android Studio często nie wystarcza. Chcę szybko wykonać snapshot systemu: jakie konta są powiązane, ile razy telefon był restartowany, co działa w usługach w tle i jak zużywana była bateria.
Większość ludzi w takich przypadkach od razu szuka praw roota lub pobiera ciężkie narzędzia GUI. W rzeczywistości standardowy Android Debug Bridge (ADB) może wyprowadzać ogromne ilości danych bez oprogramowania zewnętrznego. Projekt AndroidForensics autorstwa developera Douglasa Fresha Habiana gromadzi wszystkie te polecenia w jednym przewodniku referencyjnym oraz dwóch gotowych skryptach Bash.
Co znajduje się w repozytorium
Zasadniczo repozytorium to ściągawka i zestaw skryptów automatyzacji do forensyki i głębokiej diagnostyki urządzeń Android. Projekt koncentruje się na pracy z urządzeniami bez praw roota, choć niektóre niskopoziomowe polecenia ujawnią więcej w kompilacjach inżynieryjnych.
Repozytorium zawiera dwa główne pliki wykonywalne:
extract.sh— główny skrypt do triażu i zbierania danych użytkownika. Wyodrębnia właściwości systemu, konfigurację sieci, listy zainstalowanych pakietów, aktywne usługi i próbuje odczytać dostawców treści.dumpsys.sh— kolektor telemetrii systemowej. Skrypt wysyła zapytania do ponad dwóch tuzinów wewnętrznych podsystemów Androida za pomocą narzędziadumpsysi organizuje logi w oddzielnych plikach tekstowych.
Każde uruchomienie tworzy oddzielny folder z timestampem, gdzie wyniki z każdego indywidualnego polecenia są starannie przechowywane. Eliminuje to zaśmiecanie terminala i pomaga natychmiast uchwycić stan systemu w określonym momencie.
Przydatne polecenia do dodania do swojego arsenału
README zawiera zarówno podstawowe wywołania getprop, jak i nieoczywiste one-linery z parsowaniem wyjścia za pomocą grep, sed i awk.
Zbieranie danych o kontach i adresach e-mail
Poprzez menedżer kont możesz szybko sprawdzić, z którymi usługami telefon jest powiązany, oraz zebrać wszystkie zarejestrowane adresy e-mail:
adb shell dumpsys account | grep -i com.*$ -o | cut -d' ' -f1 | cut -d} -f1 | grep -v com$
Do wyszukiwania adresów e-mail autor sugeruje regex bezpośrednio na zrzucie systemu:
adb shell dumpsys | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"
To polecenie jest przydatne, gdy musisz szybko sprawdzić, czy poprzedni tester zapomniał się wylogować z kont służbowych na współdzielonym stanowisku testowym.
Licznik restartów i oś czasu systemu
Czasami błąd reprodukuje się tylko po zimnym restarcie, ale użytkownik twierdzi, że telefon nigdy nie był wyłączony. Możesz to zweryfikować poprzez ustawienia globalne:
adb shell settings list global | grep "boot_count=" | cut -d= -f2 | head -n 1 | xargs echo "Booted:" | sed 's/$/ times/g'
A jeśli potrzebujesz zrozumieć ogólny obraz zużycia zasobów i aktywności aplikacji w czasie, polecenia statystyk przychodzą z pomocą:
adb shell dumpsys usagestats
adb shell dumpsys batterystats
adb shell settings list system
Dostęp do dostawców treści
Aby wyodrębnić kontakty, historię połączeń i wiadomości, skrypt wykonuje bezpośrednie zapytania do URI systemowych:
# Список контактов и номеров телефонов
adb shell content query --uri content://contacts/phones/ --projection display_name:number
# Журнал звонков
adb shell content query --uri content://call_log/calls
# База входящих и исходящих SMS
adb shell content query --uri content://sms/
Oto ważne ograniczenie techniczne. Począwszy od Androida 11, Google znacząco zaostrzył model bezpieczeństwa. W nowszych wersjach systemu operacyjnego bezpośrednie wysyłanie zapytań do content://sms/ lub kontaktów przez ADB bez specjalnych uprawnień lub roota skutkuje błędem dostępu. Jednak na starszych urządzeniach testowych (Android 9–10) lub niestandardowych kompilacjach deweloperskich te polecenia nadal działają niezawodnie.
Jak działa automatyzacja
Jeśli ręczne uruchamianie poleceń staje się nużące, skrypty automatyzują rutynę. Aby rozpocząć, wystarczy sklonować repozytorium i nadać uprawnienia wykonywania:
git clone https://github.com/DouglasFreshHabian/AndroidForensics.git
cd AndroidForensics
chmod +x extract.sh dumpsys.sh
Gdy ./extract.sh jest uruchomiony, skrypt najpierw sprawdza zainstalowany adb, pinguje podłączone urządzenia i rozpoczyna zbieranie danych.
Podczas działania extract.sh wykonuje kilka równoległych zadań:
- Tworzy katalog o nazwie
ADB_Report_20251025_163200. - Wysyła zapytania o właściwości urządzenia (
ro.product.model,ro.build.version.release,ro.serialno). - Wykonuje snapshot ostatnich linii logu systemowego za pomocą
adb logcat -d. - W tle rozpoczyna generowanie pełnego raportu
adb bugreportbez blokowania terminala. - Po zakończeniu wyprowadza pokolorowaną tabelę podsumowującą z rozmiarami wszystkich zapisanych plików.
Drugi skrypt, dumpsys.sh, koncentruje się wyłącznie na diagnozowaniu usług systemowych. Sekwencyjnie wysyła zapytania do meminfo, wifi, power, location, sensorservice, netstats i 15 kolejnych usług, zapisując każde wyjście do wifi.txt, meminfo.txt i tak dalej. Jeśli usługa jest niedostępna, skrypt oznacza ją jako crashed i kontynuuje działanie.
Gdzie to się przydaje w praktyce
Projekt ma kilka oczywistych obszarów zastosowania:
- QA i testowanie aplikacji mobilnych. Skrypt
dumpsys.shpomaga zebrać kompletny kontekst stanu urządzenia w ciągu kilku sekund przed zgłoszeniem złożonego raportu o błędzie dotyczącym wycieków pamięci lub zużycia energii. - Audyt urządzenia przed przekazaniem. Jeśli pula urządzeń testowych krąży w zespole, warto szybko uruchomić skrypt czyszczenia i weryfikacji, aby upewnić się, że na smartfonie nie pozostały czyjeś inne konta ani ciężkie procesy w tle.
- Początkowy triaż incydentu. Specjaliści ds. bezpieczeństwa otrzymują szybki sposób na przechwycenie zrzutu stanu smartfona bez instalowania wątpliwych APK i bez wprowadzania niepotrzebnych zmian w systemie plików.
AndroidForensics nie próbuje wymyślać koła ani zastępować pełnoprawnych pakietów forensycznych jak Autopsy. Siła repozytorium tkwi gdzie indziej — bierze standardowe narzędzia wiersza poleceń Androida, pakuje je w czytelny format i oszczędza czas na ręcznym pisaniu pipeline'ów bash.
Jeśli regularnie podłączasz smartfony Android do komputera do debugowania, testowania lub analizy bezpieczeństwa, dodaj te skrypty do swojego lokalnego toolkitu. Uruchamiają się w kilka sekund i często znajdują rzeczy, które umykają podczas szybkiego rzutu oka na GUI.
Powiązane projekty