Изображение

Содержание


1. Что такое ADB и зачем он нужен
2. Установка ADB
3. Основные команды ADB
4. Подключение Android устройств
5. Извлечение основных данных
6. Работа с файловой системой
7. Извлечение приложений и данных
8. Продвинутые техники извлечения
9. Работа с rooted устройствами
10. Интеграция с другими инструментами
11. Ограничения и подводные камни
12. Реальный кейс расследования
13. Часто задаваемые вопросы
14. Заключение

Введение


В эпоху мобильных технологий смартфоны стали основным хранилищем личной информации, коммуникаций и цифровых следов. Android устройства содержат огромный объем данных: от SMS и контактов до геолокации, приложений и зашифрованных файлов. Для специалистов по цифровой криминалистике извлечение этих данных становится критически важной задачей.

Android Debug Bridge (ADB) - это универсальный инструмент командной строки, разработанный Google для взаимодействия с Android устройствами. ADB позволяет не только отлаживать приложения, но и извлекать практически любые данные с подключенного устройства. Этот инструмент стал стандартом де-факто для мобильной форензики и широко используется правоохранительными органами, частными детективами и специалистами по кибербезопасности.

Проблема заключается в том, что многие специалисты не используют ADB в полной мере из-за сложности команд и отсутствия систематизированных знаний. Большинство руководств ограничиваются базовыми командами, не раскрывая продвинутые техники извлечения данных из защищенных разделов, приложений и системных областей.

В этой статье мы подробно рассмотрим все аспекты работы с ADB для извлечения данных с Android устройств. Вы узнаете, как правильно подключать устройства, использовать основные и продвинутые команды, обходить ограничения безопасности и интегрировать ADB с другими инструментами форензики. Материал включает практические примеры с реальными командами и сценариями использования в расследованиях.

Статья предназначена как для начинающих специалистов, так и для опытных экспертов, желающих углубить свои знания в области мобильной криминалистики. Мы рассмотрим работу как с rooted, так и с unrooted устройствами, различные методы извлечения данных и лучшие практики обеспечения судебной достоверности.

К концу чтения вы сможете самостоятельно извлекать данные с Android устройств в рамках расследований, соблюдая все требования цифровой криминалистики.

Что такое ADB и зачем он нужен


ADB (Android Debug Bridge) представляет собой многофункциональный инструмент командной строки, который служит мостом между компьютером разработчика и Android устройством. Разработанный компанией Google, ADB стал неотъемлемой частью экосистемы Android разработки и мобильной форензики.

Архитектура и компоненты ADB


ADB состоит из трех основных компонентов:
ADB Client - программа на компьютере разработчика, которая отправляет команды
ADB Server - фоновый процесс на компьютере, управляющий коммуникацией
ADB Daemon (adbd) - служба на Android устройстве, выполняющая команды

Возможности ADB для извлечения данных


ADB предоставляет доступ к множеству функций Android устройства:

- Shell доступ - выполнение команд в среде Android
- File transfer - копирование файлов между устройством и компьютером
- Application management - установка, удаление и управление приложениями
- Device information - получение информации об устройстве и его состоянии
- Backup and restore - создание резервных копий данных
- Screen recording - запись экрана устройства
- Input simulation - имитация нажатий и жестов

Применение в цифровой криминалистике


В контексте мобильной форензики ADB используется для:

- Извлечения контактов, SMS и MMS сообщений
- Получения истории звонков и браузера
- Анализа установленных приложений и их данных
- Извлечения медиафайлов (фото, видео, аудио)
- Получения геолокационных данных
- Анализа системных логов и настроек
- Создания полных резервных копий данных

Преимущества и ограничения


Преимущества ADB:
- Полностью бесплатный и официальный инструмент
- Поддержка всех версий Android
- Богатый набор команд и функций
- Возможность автоматизации процессов

Ограничения:
- Требует включенной отладки по USB
- На новых версиях Android ограничен по соображениям безопасности
- Не работает с заблокированными устройствами
- Некоторые данные требуют root доступа

Версии ADB и совместимость


ADB постоянно развивается вместе с Android:

- ADB 1.0.x - базовая версия для Android 1.0-4.0
- ADB 1.1.x - улучшенная поддержка устройств
- ADB 1.2.x - поддержка Android 4.1+
- ADB 1.3.x+ - современные версии с расширенными функциями

Важно использовать актуальную версию ADB для обеспечения совместимости с новыми версиями Android.

Безопасность и судебная достоверность


При использовании ADB в расследованиях важно соблюдать принципы цифровой криминалистики:

- Документировать все выполняемые команды
- Сохранять цепочку хранения доказательств
- Избегать модификации данных на устройстве
- Использовать write-blocker устройства при необходимости
- Создавать хэш-суммы извлекаемых данных

В следующих разделах мы подробно рассмотрим установку ADB и основные техники извлечения данных с Android устройств.

Установка ADB


Установка ADB - первый и важный шаг для работы с Android устройствами. ADB входит в состав Android SDK Platform-Tools и может быть установлен на Windows, Linux и macOS. В этом разделе мы рассмотрим различные способы установки для каждой платформы.

Установка на Windows


Для Windows существует несколько способов установки ADB.

Способ 1: Установка через Android SDK Platform-Tools (рекомендуемый)

1. Скачивание Platform-Tools:
Перейдите на страницу https://developer.android.com/studio/releases/platform-tools
Скачайте архив `platform-tools-latest-windows.zip`

2. Распаковка:
cmd
# Создайте папку для Android инструментов
mkdir C:\Android\platform-tools
# Распакуйте архив в эту папку


3. Добавление в PATH:
- Откройте "Параметры системы" → "Дополнительные параметры системы"
- Нажмите "Переменные среды"
- В разделе "Системные переменные" найдите "Path" и нажмите "Изменить"
- Добавьте путь: `C:\Android\platform-tools`
- Перезагрузите командную строку

4. Проверка установки:
cmd
adb version
# Вывод должен содержать версию ADB


Способ 2: Установка через Chocolatey (для продвинутых пользователей)

powershell
<h2 id="ustanovka-chocolatey-esli-ne-ustanovlen">Установка Chocolatey (если не установлен)</h2>
<h2 id="sleduyte-instruktsiyam-na-https-chocolatey-org">Следуйте инструкциям на https://chocolatey.org/</h2>

<h2 id="ustanovka-adb">Установка ADB</h2>
choco install adb


Способ 3: Установка через Android Studio

1. Скачайте и установите Android Studio с https://developer.android.com/studio
2. Во время установки выберите "SDK Platform-Tools"
3. ADB будет установлен автоматически в папку SDK

Установка на Linux (Ubuntu/Debian)


Способ 1: Установка через apt (рекомендуемый)

bash
<h2 id="obnovlenie-spiska-paketov">Обновление списка пакетов</h2>
sudo apt update

<h2 id="ustanovka-android-platform-tools">Установка Android Platform Tools</h2>
sudo apt install android-tools-adb android-tools-fastboot

<h2 id="proverka-ustanovki">Проверка установки</h2>
adb version
fastboot --version


Способ 2: Установка через Android SDK Platform-Tools

bash
<h2 id="skachivanie-platform-tools">Скачивание Platform-Tools</h2>
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

<h2 id="raspakovka">Распаковка</h2>
unzip platform-tools-latest-linux.zip
sudo mv platform-tools /opt/android/

<h2 id="dobavlenie-v-path">Добавление в PATH</h2>
echo 'export PATH=$PATH:/opt/android/platform-tools' >> ~/.bashrc
source ~/.bashrc

<h2 id="proverka">Проверка</h2>
adb version


Способ 3: Сборка из исходного кода

bash
<h2 id="ustanovka-zavisimostey">Установка зависимостей</h2>
sudo apt install git build-essential openjdk-11-jdk

<h2 id="klonirovanie-repozitoriya">Клонирование репозитория</h2>
git clone https://android.googlesource.com/platform/system/core
git clone https://android.googlesource.com/platform/system/extras

<h2 id="sborka-trebuet-znachitelnyh-resursov">Сборка (требует значительных ресурсов)</h2>
<h2 id="protsess-slozhnyy-i-ne-rekomenduetsya-dlya-bolshinstva-polzovateley">Процесс сложный и не рекомендуется для большинства пользователей</h2>


Установка на macOS


Способ 1: Установка через Homebrew (рекомендуемый)

bash
<h2 id="ustanovka-homebrew-esli-ne-ustanovlen">Установка Homebrew (если не установлен)</h2>
<h2 id="sleduyte-instruktsiyam-na-https-brew-sh">Следуйте инструкциям на https://brew.sh/</h2>

<h2 id="ustanovka-android-platform-tools">Установка Android Platform Tools</h2>
brew install android-platform-tools

<h2 id="proverka">Проверка</h2>
adb version


Способ 2: Установка через Android SDK Platform-Tools

bash
<h2 id="skachivanie-platform-tools">Скачивание Platform-Tools</h2>
curl -O https://dl.google.com/android/repository/platform-tools-latest-darwin.zip

<h2 id="raspakovka">Распаковка</h2>
unzip platform-tools-latest-darwin.zip
sudo mv platform-tools /opt/android/

<h2 id="dobavlenie-v-path">Добавление в PATH</h2>
echo 'export PATH=$PATH:/opt/android/platform-tools' >> ~/.zshrc
source ~/.zshrc

<h2 id="proverka">Проверка</h2>
adb version


Способ 3: Установка через Android Studio

1. Скачайте Android Studio для macOS
2. Установите и запустите
3. В SDK Manager установите "Android SDK Platform-Tools"
4. ADB будет доступен в папке SDK

Настройка ADB для работы с устройствами


После установки ADB нужно настроить систему для работы с Android устройствами.

Включение режима разработчика на Android устройстве:

1. Перейдите в "Настройки" → "О телефоне"
2. Найдите "Номер сборки" и нажмите 7 раз (появится сообщение "Вы стали разработчиком")
3. Вернитесь в "Настройки" → "Для разработчиков"
4. Включите "Отладка по USB"

Установка USB драйверов (Windows):

Для Windows необходимы USB драйверы для корректного распознавания устройств:

1. Скачайте Google USB Driver с Android SDK
2. Установите драйвер через Диспетчер устройств
3. Или используйте универсальные драйверы от производителей устройств

Настройка udev правил (Linux):

bash
<h2 id="sozdanie-pravila-dlya-ustroystv">Создание правила для устройств</h2>
sudo nano /etc/udev/rules.d/51-android.rules

<h2 id="dobavte-stroki-dlya-vashego-ustroystva">Добавьте строки для вашего устройства:</h2>
SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID", MODE="0666", GROUP="plugdev"

<h2 id="primer-dlya-samsung">Пример для Samsung:</h2>
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"

<h2 id="perezagruzka-pravil">Перезагрузка правил</h2>
sudo udevadm control --reload-rules
sudo udevadm trigger


Проверка установки и подключения устройства


Проверка версии ADB:

bash
adb version
<h2 id="android-debug-bridge-version-1-0-41">Android Debug Bridge version 1.0.41</h2>
<h2 id="version-34-0-4-10411341">Version 34.0.4-10411341</h2>
<h2 id="installed-as-usr-bin-adb">Installed as /usr/bin/adb</h2>


Запуск ADB сервера:

bash
<h2 id="zapusk-servera">Запуск сервера</h2>
adb start-server

<h2 id="ostanovka-servera">Остановка сервера</h2>
adb kill-server


Подключение устройства:

bash
<h2 id="prosmotr-podklyuchennyh-ustroystv">Просмотр подключенных устройств</h2>
adb devices

<h2 id="vyvod">Вывод:</h2>
<h2 id="list-of-devices-attached">List of devices attached</h2>
<h2 id="r58n123abcd-device">R58N123ABCD device</h2>

<h2 id="poluchenie-informatsii-ob-ustroystve">Получение информации об устройстве</h2>
adb shell getprop ro.product.model
adb shell getprop ro.build.version.release


Решение проблем с подключением:

Проблема: "unauthorized" или "no permissions"

bash
<h2 id="na-ustroystve-podtverdite-otladku">На устройстве подтвердите отладку</h2>
<h2 id="ili-perepodklyuchite-usb-kabel">Или переподключите USB кабель</h2>

<h2 id="na-linux-proverte-prava-dostupa">На Linux проверьте права доступа</h2>
ls -la /dev/bus/usb/
sudo usermod -a -G plugdev $USER


Проблема: устройство не распознается

bash
<h2 id="perezagruzite-adb-server">Перезагрузите ADB сервер</h2>
adb kill-server
adb start-server

<h2 id="proverte-usb-podklyuchenie">Проверьте USB подключение</h2>
lsusb | grep -i android

<h2 id="na-windows-proverte-dispetcher-ustroystv">На Windows проверьте Диспетчер устройств</h2>


Проблема: "device offline"

bash
<h2 id="perepodklyuchite-usb-kabel">Переподключите USB кабель</h2>
<h2 id="perezagruzite-ustroystvo">Перезагрузите устройство</h2>
<h2 id="proverte-zaryad-batarei">Проверьте заряд батареи</h2>
<h2 id="otklyuchite-i-vklyuchite-otladku-po-usb">Отключите и включите отладку по USB</h2>


Настройка беспроводного ADB (Wi-Fi)


ADB можно использовать через Wi-Fi без USB кабеля:

bash
<h2 id="podklyuchenie-ustroystva-po-usb">Подключение устройства по USB</h2>
adb devices

<h2 id="vklyuchenie-tcp-ip-rezhima">Включение TCP/IP режима</h2>
adb tcpip 5555

<h2 id="otklyuchenie-usb-kabelya">Отключение USB кабеля</h2>

<h2 id="podklyuchenie-po-wi-fi-zamenite-ip-na-ip-ustroystva">Подключение по Wi-Fi (замените IP на IP устройства)</h2>
adb connect 192.168.1.100:5555

<h2 id="proverka-podklyucheniya">Проверка подключения</h2>
adb devices
<h2 id="192-168-1-100-5555-device">192.168.1.100:5555 device</h2>


Автоматизация беспроводного подключения:

bash
#!/bin/bash
<h2 id="skript-dlya-besprovodnogo-podklyucheniya-adb">Скрипт для беспроводного подключения ADB</h2>

DEVICE_IP="192.168.1.100"
PORT="5555"

<h2 id="proverka-dostupnosti-ustroystva">Проверка доступности устройства</h2>
ping -c 1 $DEVICE_IP > /dev/null

if [ $? -eq 0 ]; then
echo "Устройство доступно, подключаюсь..."
adb connect $DEVICE_IP:$PORT

# Проверка успешного подключения
adb devices | grep $DEVICE_IP > /dev/null
if [ $? -eq 0 ]; then
echo "Подключение успешно!"
else
echo "Ошибка подключения"
fi
else
echo "Устройство недоступно"
fi


Обновление ADB


ADB регулярно обновляется вместе с новыми версиями Android:

bash
<h2 id="skachivanie-posledney-versii">Скачивание последней версии</h2>
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

<h2 id="rezervnoe-kopirovanie-staroy-versii">Резервное копирование старой версии</h2>
sudo mv /opt/android/platform-tools /opt/android/platform-tools-old

<h2 id="ustanovka-novoy-versii">Установка новой версии</h2>
unzip platform-tools-latest-linux.zip
sudo mv platform-tools /opt/android/

<h2 id="proverka">Проверка</h2>
adb version


Безопасность при использовании ADB


При работе с ADB в форензическом контексте важно соблюдать меры безопасности:

- Используйте ADB только в изолированной сети
- Не устанавливайте неизвестные приложения через ADB
- Документируйте все выполняемые команды
- Регулярно обновляйте ADB для устранения уязвимостей
- Используйте VPN при беспроводном подключении

Рекомендуемая конфигурация рабочей станции


Для эффективной работы с ADB рекомендуется:

Аппаратное обеспечение:
- Процессор: минимум 4 ядра
- Оперативная память: 8 GB
- Свободное место на диске: 50 GB для образов и извлекаемых данных

Программное обеспечение:
- ОС: Linux (Ubuntu) или macOS
- ADB: последняя версия
- Python 3.6+ для скриптов
- SQLite browser для анализа баз данных
- Hex editor для анализа бинарных данных

Дополнительные инструменты:
- USB хаб с питанием для одновременной работы с несколькими устройствами
- Write-blocker устройства для судебной работы
- Внешние накопители для хранения извлекаемых данных

Теперь, когда ADB установлен и настроен, можно переходить к изучению основных команд и работе с подключенными устройствами.

Основные команды ADB


ADB предоставляет богатый набор команд для взаимодействия с Android устройствами. Команды делятся на несколько категорий: управление устройством, передача файлов, работа с приложениями, отладка и форензический анализ. В этом разделе мы рассмотрим основные команды с практическими примерами.

Команды управления устройством


adb devices - просмотр подключенных устройств:

bash
<h2 id="bazovyy-sintaksis">Базовый синтаксис</h2>
adb devices [-l]

<h2 id="primery-ispolzovaniya">Примеры использования</h2>
adb devices
<h2 id="list-of-devices-attached">List of devices attached</h2>
<h2 id="r58n123abcd-device">R58N123ABCD device</h2>

adb devices -l
<h2 id="list-of-devices-attached">List of devices attached</h2>
<h2 id="r58n123abcd-device-usb-2-1-2-product-bullhead-model-nexus-5x-device-bullhead">R58N123ABCD device usb:2-1.2 product:bullhead model:Nexus_5X device:bullhead</h2>


adb reboot - перезагрузка устройства:

bash
<h2 id="perezagruzka-v-obychnyy-rezhim">Перезагрузка в обычный режим</h2>
adb reboot

<h2 id="perezagruzka-v-recovery-rezhim">Перезагрузка в recovery режим</h2>
adb reboot recovery

<h2 id="perezagruzka-v-bootloader">Перезагрузка в bootloader</h2>
adb reboot bootloader

<h2 id="perezagruzka-v-bezopasnyy-rezhim-esli-podderzhivaetsya">Перезагрузка в безопасный режим (если поддерживается)</h2>
adb reboot safe


adb shell - выполнение команд в оболочке Android:

bash
<h2 id="vhod-v-shell">Вход в shell</h2>
adb shell

<h2 id="vypolnenie-odinochnoy-komandy">Выполнение одиночной команды</h2>
adb shell getprop ro.product.model
<h2 id="nexus-5x">Nexus 5X</h2>

adb shell date
<h2 id="mon-dec-16-14-30-25-utc-2024">Mon Dec 16 14:30:25 UTC 2024</h2>

adb shell uptime
<h2 id="14-30-25-up-2-days-3-45-0-users-load-average-0-50-0-60-0-70">14:30:25 up 2 days, 3:45, 0 users, load average: 0.50, 0.60, 0.70</h2>


adb push/pull - передача файлов:

bash
<h2 id="kopirovanie-fayla-na-ustroystvo">Копирование файла на устройство</h2>
adb push local_file.txt /sdcard/Download/

<h2 id="kopirovanie-fayla-s-ustroystva">Копирование файла с устройства</h2>
adb pull /sdcard/Download/remote_file.txt .

<h2 id="rekursivnoe-kopirovanie-papki">Рекурсивное копирование папки</h2>
adb pull /sdcard/DCIM/Camera/ ./camera_photos/

<h2 id="kopirovanie-s-sohraneniem-prav-dostupa">Копирование с сохранением прав доступа</h2>
adb pull -a /system/bin/ls ./ls_binary


Команды для получения информации об устройстве


adb shell getprop - получение свойств устройства:

bash
<h2 id="model-ustroystva">Модель устройства</h2>
adb shell getprop ro.product.model

<h2 id="versiya-android">Версия Android</h2>
adb shell getprop ro.build.version.release

<h2 id="build-number">Build number</h2>
adb shell getprop ro.build.display.id

<h2 id="imei-trebuet-root-ili-opredelennyh-razresheniy">IMEI (требует root или определенных разрешений)</h2>
adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=

<h2 id="seriynyy-nomer">Серийный номер</h2>
adb shell getprop ro.serialno

<h2 id="uroven-api">Уровень API</h2>
adb shell getprop ro.build.version.sdk


adb shell dumpsys - подробная информация о системных сервисах:

bash
<h2 id="informatsiya-o-batarei">Информация о батареи</h2>
adb shell dumpsys battery

<h2 id="informatsiya-o-pamyati">Информация о памяти</h2>
adb shell dumpsys meminfo

<h2 id="spisok-zapuschennyh-protsessov">Список запущенных процессов</h2>
adb shell dumpsys activity processes

<h2 id="informatsiya-o-setevyh-interfeysah">Информация о сетевых интерфейсах</h2>
adb shell dumpsys netstats

<h2 id="spisok-ustanovlennyh-prilozheniy">Список установленных приложений</h2>
adb shell dumpsys package list packages


adb shell pm - управление пакетами (приложениями):

bash
<h2 id="spisok-ustanovlennyh-prilozheniy">Список установленных приложений</h2>
adb shell pm list packages

<h2 id="spisok-sistemnyh-prilozheniy">Список системных приложений</h2>
adb shell pm list packages -s

<h2 id="spisok-polzovatelskih-prilozheniy">Список пользовательских приложений</h2>
adb shell pm list packages -3

<h2 id="informatsiya-o-konkretnom-prilozhenii">Информация о конкретном приложении</h2>
adb shell pm list packages -i com.android.chrome

<h2 id="put-k-apk-faylu">Путь к APK файлу</h2>
adb shell pm path com.android.chrome


Команды для работы с данными


adb backup - создание резервной копии:

bash
<h2 id="rezervnaya-kopiya-vseh-dannyh">Резервная копия всех данных</h2>
adb backup -all -f backup.ab

<h2 id="rezervnaya-kopiya-konkretnogo-prilozheniya">Резервная копия конкретного приложения</h2>
adb backup -f whatsapp_backup.ab com.whatsapp

<h2 id="rezervnaya-kopiya-bez-sistemnyh-prilozheniy">Резервная копия без системных приложений</h2>
adb backup -all -system -f full_backup.ab

<h2 id="rezervnaya-kopiya-s-parolem">Резервная копия с паролем</h2>
adb backup -all -f encrypted_backup.ab
<h2 id="pri-zaprose-vvedite-parol">При запросе введите пароль</h2>


adb restore - восстановление из резервной копии:

bash
<h2 id="vosstanovlenie-rezervnoy-kopii">Восстановление резервной копии</h2>
adb restore backup.ab

<h2 id="vosstanovlenie-s-parolem">Восстановление с паролем</h2>
adb restore encrypted_backup.ab


Команды для работы с экраном и вводом


adb screencap - снимок экрана:

bash
<h2 id="snimok-ekrana-v-fayl-na-ustroystve">Снимок экрана в файл на устройстве</h2>
adb shell screencap /sdcard/screen.png

<h2 id="skachivanie-snimka">Скачивание снимка</h2>
adb pull /sdcard/screen.png .

<h2 id="snimok-ekrana-s-ukazaniem-kachestva">Снимок экрана с указанием качества</h2>
adb shell screencap -p /sdcard/screen.jpg


adb screenrecord - запись видео экрана:

bash
<h2 id="zapis-video-30-sekund">Запись видео 30 секунд</h2>
adb shell screenrecord /sdcard/demo.mp4

<h2 id="zapis-s-ukazaniem-vremeni-maksimum-180-sekund">Запись с указанием времени (максимум 180 секунд)</h2>
adb screenrecord --time-limit 60 /sdcard/demo.mp4

<h2 id="zapis-s-ukazaniem-kachestva">Запись с указанием качества</h2>
adb shell screenrecord --bit-rate 8000000 /sdcard/high_quality.mp4


adb input - имитация пользовательского ввода:

bash
<h2 id="imitatsiya-nazhatiya-klavishi">Имитация нажатия клавиши</h2>
adb shell input keyevent 26 # Power button
adb shell input keyevent 82 # Menu button

<h2 id="imitatsiya-kasaniya-ekrana">Имитация касания экрана</h2>
adb shell input tap 500 800 # Касание в координатах x=500, y=800

<h2 id="imitatsiya-svaypa">Имитация свайпа</h2>
adb shell input swipe 300 800 800 800 # Свайп вправо

<h2 id="vvod-teksta">Ввод текста</h2>
adb shell input text "Hello World"

<h2 id="imitatsiya-dlinnogo-nazhatiya">Имитация длинного нажатия</h2>
adb shell input swipe 500 800 500 800 1000


Команды для работы с логами


adb logcat - просмотр системных логов:

bash
<h2 id="prosmotr-vseh-logov-v-realnom-vremeni">Просмотр всех логов в реальном времени</h2>
adb logcat

<h2 id="sohranenie-logov-v-fayl">Сохранение логов в файл</h2>
adb logcat > device_logs.txt

<h2 id="filtratsiya-po-urovnyu-error-warning-info-debug-verbose">Фильтрация по уровню (ERROR, WARNING, INFO, DEBUG, VERBOSE)</h2>
adb logcat *:E # Только ошибки

<h2 id="filtratsiya-po-tegu">Фильтрация по тегу</h2>
adb logcat -s "ActivityManager"

<h2 id="ogranichenie-kolichestva-strok">Ограничение количества строк</h2>
adb logcat -d | head -50

<h2 id="prosmotr-buferov-main-system-crash">Просмотр буферов (main, system, crash)</h2>
adb logcat -b system


Команды для работы с разделами и файловой системой


adb shell ls - просмотр содержимого каталогов:

bash
<h2 id="soderzhimoe-kornevoy-direktorii">Содержимое корневой директории</h2>
adb shell ls /

<h2 id="podrobnaya-informatsiya">Подробная информация</h2>
adb shell ls -la /sdcard/

<h2 id="sortirovka-po-razmeru">Сортировка по размеру</h2>
adb shell ls -S /sdcard/Download/

<h2 id="rekursivnyy-vyvod">Рекурсивный вывод</h2>
adb shell find /sdcard/ -name "*.jpg" | head -10


adb shell df - информация о дисковом пространстве:

bash
<h2 id="obzor-vseh-razdelov">Обзор всех разделов</h2>
adb shell df -h

<h2 id="vyvod">Вывод:</h2>
<h2 id="filesystem-size-used-avail-use-mounted-on">Filesystem Size Used Avail Use% Mounted on</h2>
<h2 id="dev-block-dm-0-55g-32g-23g-59">/dev/block/dm-0 55G 32G 23G 59% /</h2>
<h2 id="dev-block-dm-1-3-9g-2-1g-1-7g-56-vendor">/dev/block/dm-1 3.9G 2.1G 1.7G 56% /vendor</h2>
<h2 id="data-media-55g-32g-23g-59-storage-emulated-0">/data/media 55G 32G 23G 59% /storage/emulated/0</h2>


adb shell mount - информация о смонтированных разделах:

bash
<h2 id="spisok-smontirovannyh-faylovyh-sistem">Список смонтированных файловых систем</h2>
adb shell mount

<h2 id="proverka-tipa-faylovoy-sistemy">Проверка типа файловой системы</h2>
adb shell mount | grep -E "(ext4|f2fs|vfat)"


Продвинутые команды ADB


adb shell am - управление активностями и сервисами:

bash
<h2 id="zapusk-prilozheniya">Запуск приложения</h2>
adb shell am start -n com.android.chrome/.MainActivity

<h2 id="zapusk-aktivnosti-s-parametrami">Запуск активности с параметрами</h2>
adb shell am start -a android.intent.action.VIEW -d https://www.google.com

<h2 id="zapusk-servisa">Запуск сервиса</h2>
adb shell am startservice -n com.example/.MyService

<h2 id="prinuditelnoe-zavershenie-prilozheniya">Принудительное завершение приложения</h2>
adb shell am force-stop com.android.chrome

<h2 id="ochistka-dannyh-prilozheniya">Очистка данных приложения</h2>
adb shell pm clear com.android.chrome


adb shell dumpsys - углубленный анализ системных сервисов:

bash
<h2 id="detalnaya-informatsiya-o-prilozhenii">Детальная информация о приложении</h2>
adb shell dumpsys package com.whatsapp

<h2 id="informatsiya-o-wi-fi-soedineniyah">Информация о Wi-Fi соединениях</h2>
adb shell dumpsys wifi

<h2 id="statistika-ispolzovaniya-batarei">Статистика использования батареи</h2>
adb shell dumpsys batterystats

<h2 id="informatsiya-o-zapuschennyh-protsessah">Информация о запущенных процессах</h2>
adb shell dumpsys activity pids


Скрипты автоматизации ADB команд


Скрипт для комплексного сбора информации:

bash
#!/bin/bash
<h2 id="skript-dlya-sbora-bazovoy-informatsii-ob-ustroystve">Скрипт для сбора базовой информации об устройстве</h2>

OUTPUT_DIR="device_info_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR

echo "Сбор информации об устройстве..."
echo "Дата и время: $(date)" > $OUTPUT_DIR/device_report.txt

<h2 id="informatsiya-ob-ustroystve">Информация об устройстве</h2>
echo -e "\n=== ИНФОРМАЦИЯ ОБ УСТРОЙСТВЕ ===" >> $OUTPUT_DIR/device_report.txt
adb shell getprop ro.product.model >> $OUTPUT_DIR/device_report.txt
adb shell getprop ro.build.version.release >> $OUTPUT_DIR/device_report.txt
adb shell getprop ro.serialno >> $OUTPUT_DIR/device_report.txt

<h2 id="informatsiya-o-pamyati">Информация о памяти</h2>
echo -e "\n=== ИНФОРМАЦИЯ О ПАМЯТИ ===" >> $OUTPUT_DIR/device_report.txt
adb shell df -h >> $OUTPUT_DIR/device_report.txt

<h2 id="spisok-ustanovlennyh-prilozheniy">Список установленных приложений</h2>
echo -e "\n=== СПИСОК ПРИЛОЖЕНИЙ ===" >> $OUTPUT_DIR/device_report.txt
adb shell pm list packages -3 >> $OUTPUT_DIR/device_report.txt

<h2 id="snimok-ekrana">Снимок экрана</h2>
echo "Создание снимка экрана..."
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png $OUTPUT_DIR/
adb shell rm /sdcard/screen.png

<h2 id="sbor-logov">Сбор логов</h2>
echo "Сбор системных логов..."
adb logcat -d > $OUTPUT_DIR/system_logs.txt

echo "Сбор информации завершен. Результаты в $OUTPUT_DIR"


Скрипт для массового извлечения файлов:

bash
#!/bin/bash
<h2 id="skript-dlya-izvlecheniya-faylov-po-maske">Скрипт для извлечения файлов по маске</h2>

DEVICE_PATH=$1 # Путь на устройстве, например /sdcard/DCIM/Camera/
LOCAL_PATH=$2 # Локальный путь для сохранения
FILE_MASK=$3 # Маска файлов, например "*.jpg"

if [ $# -ne 3 ]; then
echo "Использование: $0 <device_path> <local_path> <file_mask>"
exit 1
fi

mkdir -p "$LOCAL_PATH"

echo "Извлечение файлов $FILE_MASK из $DEVICE_PATH..."

<h2 id="poluchenie-spiska-faylov">Получение списка файлов</h2>
adb shell find "$DEVICE_PATH" -name "$FILE_MASK" | while read file; do
filename=$(basename "$file")
echo "Извлечение: $filename"
adb pull "$file" "$LOCAL_PATH/$filename"
done

echo "Извлечение завершено."


Обработка ошибок и отладка


Анализ ошибок ADB:

bash
<h2 id="podrobnyy-vyvod-oshibok">Подробный вывод ошибок</h2>
adb devices -l

<h2 id="proverka-logov-adb">Проверка логов ADB</h2>
adb kill-server
adb start-server -a # Включение verbose режима


Восстановление после сбоев:

bash
<h2 id="perezapusk-adb-servera">Перезапуск ADB сервера</h2>
adb kill-server && adb start-server

<h2 id="ochistka-vremennyh-faylov">Очистка временных файлов</h2>
adb shell rm -rf /data/local/tmp/*

<h2 id="proverka-tselostnosti-ustanovki">Проверка целостности установки</h2>
adb version
which adb


Эти основные команды ADB формируют фундамент для работы с Android устройствами. В следующих разделах мы рассмотрим подключение устройств и извлечение конкретных типов данных.

Подключение Android устройств


Правильное подключение Android устройств - критически важный шаг для успешной работы с ADB. Существуют различные способы подключения, каждый из которых имеет свои преимущества и ограничения. В этом разделе мы рассмотрим все методы подключения и решения типичных проблем.

USB подключение


USB подключение является наиболее надежным и распространенным способом работы с ADB.

Подготовка устройства:

1. Включение режима разработчика:
- Перейдите в "Настройки" → "О телефоне"
- Найдите "Номер сборки" и нажмите 7 раз
- Появится уведомление "Вы стали разработчиком"

2. Включение отладки по USB:
- Перейдите в "Настройки" → "Для разработчиков"
- Включите "Отладка по USB"
- Опционально: включите "Установка через USB" для установки APK

3. Настройка параметров разработчика:
- "Не выключать экран" - полезно для длительных операций
- "Сохранять заряд" - оптимизация для работы через USB
- "Отладка беспроводной сети" - для Wi-Fi подключения

Подключение устройства:

bash
<h2 id="proverka-podklyucheniya">Проверка подключения</h2>
adb devices

<h2 id="vyvod-dolzhen-pokazat">Вывод должен показать:</h2>
<h2 id="list-of-devices-attached">List of devices attached</h2>
<h2 id="r58n123abcd-device">R58N123ABCD device</h2>

<h2 id="esli-ustroystvo-ne-raspoznaetsya">Если устройство не распознается:</h2>
adb devices
<h2 id="list-of-devices-attached">List of devices attached</h2>
<h2 id="r58n123abcd-unauthorized">R58N123ABCD unauthorized</h2>

<h2 id="na-ustroystve-podtverdite-zapros-na-otladku">На устройстве подтвердите запрос на отладку</h2>


Решение проблем с USB подключением:

Проблема: "device not found" или пустой список устройств

bash
<h2 id="proverte-usb-kabel">Проверьте USB кабель</h2>
lsusb | grep -i android

<h2 id="perezapustite-adb-server">Перезапустите ADB сервер</h2>
adb kill-server
adb start-server

<h2 id="proverte-prava-dostupa-linux">Проверьте права доступа (Linux)</h2>
ls -la /dev/bus/usb/
sudo usermod -a -G plugdev $USER

<h2 id="na-windows-proverte-dispetcher-ustroystv">На Windows проверьте Диспетчер устройств</h2>
<h2 id="dolzhen-byt-ustanovlen-android-composite-adb-interface">Должен быть установлен &quot;Android Composite ADB Interface&quot;</h2>


Проблема: "insufficient permissions"

bash
<h2 id="na-linux-dobavte-udev-pravila">На Linux добавьте udev правила</h2>
sudo nano /etc/udev/rules.d/51-android.rules

<h2 id="dobavte-stroki-dlya-vashego-ustroystva">Добавьте строки для вашего устройства:</h2>
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" # Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="0e79", MODE="0666", GROUP="plugdev" # HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev" # Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev" # LG

<h2 id="perezagruzka-pravil">Перезагрузка правил</h2>
sudo udevadm control --reload-rules
sudo udevadm trigger


Проблема: "device offline"

bash
<h2 id="perepodklyuchite-usb-kabel">Переподключите USB кабель</h2>
<h2 id="perezagruzite-ustroystvo">Перезагрузите устройство</h2>
<h2 id="proverte-uroven-zaryada-batarei-20">Проверьте уровень заряда батареи (&gt;20%)</h2>
<h2 id="otklyuchite-i-vklyuchite-otladku-po-usb">Отключите и включите отладку по USB</h2>
<h2 id="poprobuyte-drugoy-usb-port">Попробуйте другой USB порт</h2>


Беспроводное подключение (Wi-Fi ADB)


Wi-Fi подключение позволяет работать с устройством без USB кабеля, что полезно для удаленной работы.

Настройка беспроводного ADB:

bash
<h2 id="1-podklyuchite-ustroystvo-po-usb">1. Подключите устройство по USB</h2>
adb devices

<h2 id="2-vklyuchite-tcp-ip-rezhim-na-portu-5555">2. Включите TCP/IP режим на порту 5555</h2>
adb tcpip 5555

<h2 id="3-poluchite-ip-adres-ustroystva">3. Получите IP адрес устройства</h2>
adb shell ip addr show wlan0 | grep "inet "

<h2 id="4-otklyuchite-usb-kabel">4. Отключите USB кабель</h2>

<h2 id="5-podklyuchites-po-wi-fi">5. Подключитесь по Wi-Fi</h2>
adb connect 192.168.1.100:5555

<h2 id="6-proverte-podklyuchenie">6. Проверьте подключение</h2>
adb devices
<h2 id="192-168-1-100-5555-device">192.168.1.100:5555 device</h2>


Автоматизация беспроводного подключения:

bash
#!/bin/bash
<h2 id="skript-dlya-avtomaticheskogo-besprovodnogo-podklyucheniya">Скрипт для автоматического беспроводного подключения</h2>

DEVICE_IP=$1
PORT=${2:-5555}

if [ -z "$DEVICE_IP" ]; then
echo "Использование: $0 <IP_адрес> [порт]"
exit 1
fi

echo "Подключение к $DEVICE_IP:$PORT..."

<h2 id="proverka-dostupnosti">Проверка доступности</h2>
ping -c 1 -W 1 $DEVICE_IP > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Устройство недоступно по сети"
exit 1
fi

<h2 id="popytka-podklyucheniya">Попытка подключения</h2>
adb connect $DEVICE_IP:$PORT

<h2 id="proverka-uspeshnosti">Проверка успешности</h2>
sleep 2
adb devices | grep "$DEVICE_IP:$PORT" > /dev/null
if [ $? -eq 0 ]; then
echo "Подключение успешно!"
adb shell getprop ro.product.model
else
echo "Ошибка подключения"
exit 1
fi


Проблемы с беспроводным подключением:

bash
<h2 id="ustroystvo-i-kompyuter-dolzhny-byt-v-odnoy-seti">Устройство и компьютер должны быть в одной сети</h2>
<h2 id="proverte-firewall-nastroyki">Проверьте firewall настройки</h2>
<h2 id="ubedites-chto-port-5555-otkryt">Убедитесь, что порт 5555 открыт</h2>

<h2 id="otklyuchenie-firewall-dlya-testirovaniya">Отключение firewall для тестирования</h2>
sudo ufw allow 5555

<h2 id="ili-nastroyka-iptables">Или настройка iptables</h2>
sudo iptables -A INPUT -p tcp --dport 5555 -j ACCEPT


Подключение через эмулятор Android


ADB можно использовать для работы с Android эмуляторами (Android Studio, Genymotion).

Работа с Android Emulator:

bash
<h2 id="spisok-zapuschennyh-emulyatorov">Список запущенных эмуляторов</h2>
adb devices

<h2 id="vyvod">Вывод:</h2>
<h2 id="list-of-devices-attached">List of devices attached</h2>
<h2 id="emulator-5554-device">emulator-5554 device</h2>

<h2 id="ustanovka-apk-na-emulyator">Установка APK на эмулятор</h2>
adb -s emulator-5554 install app.apk

<h2 id="rabota-s-konkretnym-emulyatorom">Работа с конкретным эмулятором</h2>
adb -s emulator-5554 shell


Работа с Genymotion:

bash
<h2 id="genymotion-ispolzuet-porty-5555">Genymotion использует порты 5555+</h2>
adb devices
<h2 id="192-168-56-101-5555-device">192.168.56.101:5555 device</h2>

<h2 id="podklyuchenie-k-genymotion-ustroystvu">Подключение к Genymotion устройству</h2>
adb connect 192.168.56.101:5555


Подключение к устройствам с кастомными ROM


Устройства с кастомными ROM (LineageOS, Paranoid Android) могут иметь специфические особенности.

Особенности кастомных ROM:

bash
<h2 id="proverka-versii-android">Проверка версии Android</h2>
adb shell getprop ro.build.version.release

<h2 id="proverka-tipa-sborki">Проверка типа сборки</h2>
adb shell getprop ro.build.type

<h2 id="dlya-lineageos-spetsificheskie-komandy">Для LineageOS специфические команды</h2>
adb shell getprop ro.lineage.version

<h2 id="proverka-root-dostupa">Проверка root доступа</h2>
adb shell su -c 'id'


Подключение к устройствам с поврежденным экраном


Для устройств с неработающим экраном можно использовать специальные методы.

ADB через recovery режим:

bash
<h2 id="perezagruzka-v-recovery">Перезагрузка в recovery</h2>
adb reboot recovery

<h2 id="v-recovery-rezhime-nekotorye-komandy-adb-rabotayut">В recovery режиме некоторые команды ADB работают</h2>
adb devices

<h2 id="sideload-dlya-ustanovki-zip">sideload для установки ZIP</h2>
adb sideload update.zip


Использование OTG адаптеров:

Для устройств с полностью неработающим экраном можно использовать:
- OTG кабель + USB клавиатура
- Специализированные инструменты (например, Broken Android Data Extraction)

Множественные устройства


Работа с несколькими подключенными устройствами одновременно.

Указание конкретного устройства:

bash
<h2 id="poluchenie-spiska-ustroystv">Получение списка устройств</h2>
adb devices

<h2 id="rabota-s-konkretnym-ustroystvom-po-seriynomu-nomeru">Работа с конкретным устройством по серийному номеру</h2>
adb -s R58N123ABCD shell getprop ro.product.model

<h2 id="rabota-s-konkretnym-ustroystvom-po-ip">Работа с конкретным устройством по IP</h2>
adb -s 192.168.1.100:5555 push file.txt /sdcard/


Скрипт для работы с множественными устройствами:

bash
#!/bin/bash
<h2 id="skript-dlya-vypolneniya-komandy-na-vseh-podklyuchennyh-ustroystvah">Скрипт для выполнения команды на всех подключенных устройствах</h2>

COMMAND=$1

if [ -z "$COMMAND" ]; then
echo "Использование: $0 'команда'"
exit 1
fi

<h2 id="poluchenie-spiska-ustroystv">Получение списка устройств</h2>
adb devices | grep -v "List" | grep "device" | while read line; do
device=$(echo $line | awk '{print $1}')
echo "Выполнение на устройстве $device: $COMMAND"
adb -s $device shell $COMMAND
done


Безопасность подключения


Рекомендации по безопасности:

- Используйте ADB только в доверенных сетях
- Отключайте отладку по USB после завершения работы
- Регулярно обновляйте ADB для устранения уязвимостей
- Используйте VPN при беспроводном подключении
- Не оставляйте устройства подключенными без присмотра

Проверка целостности соединения:

bash
<h2 id="monitoring-sostoyaniya-soedineniya">Мониторинг состояния соединения</h2>
adb shell date
adb shell uptime

<h2 id="proverka-na-podmenu-ustroystva">Проверка на подмену устройства</h2>
adb shell getprop ro.serialno
adb shell getprop ro.build.fingerprint


Устранение неисправностей


Распространенные проблемы и решения:

ПроблемаВозможные причиныРешения
Device not foundUSB драйверы, кабельПроверить кабель, установить драйверы
UnauthorizedНе подтвержден запросПодтвердить на устройстве
OfflineНизкий заряд, настройкиПерезагрузить, зарядить батарею
No permissionsПрава доступаНастроить udev правила (Linux)
Connection refusedFirewall, порт занятПроверить firewall, сменить порт

Диагностический скрипт:

bash
#!/bin/bash
<h2 id="diagnostika-problem-s-adb-podklyucheniem">Диагностика проблем с ADB подключением</h2>

echo "=== ADB Диагностика ==="
echo "Дата: $(date)"
echo ""

echo "1. Версия ADB:"
adb version
echo ""

echo "2. Статус сервера:"
adb devices
echo ""

echo "3. USB устройства:"
lsusb | grep -i -E "(android|google|samsung|lg|htc|motorola)" || echo "Android устройств не найдено"
echo ""

echo "4. Процессы ADB:"
ps aux | grep adb | grep -v grep || echo "ADB сервер не запущен"
echo ""

echo "5. Права доступа (Linux):"
if [ -e /dev/bus/usb ]; then
ls -la /dev/bus/usb/ | head -5
fi
echo ""

echo "Рекомендации:"
echo "- Переподключите USB кабель"
echo "- Перезагрузите устройство"
echo "- Проверьте заряд батареи"
echo "- Подтвердите запрос на отладку на устройстве"


Правильное подключение устройств - залог успешной работы с ADB. В следующем разделе мы рассмотрим извлечение основных типов данных с подключенных устройств.

Извлечение основных данных


Извлечение основных данных - основная задача мобильной форензики. ADB позволяет получить доступ к контактам, SMS сообщениям, истории звонков, медиафайлам и другим важным данным. В этом разделе мы рассмотрим методы извлечения различных типов данных с практическими примерами.

Извлечение контактов


Контакты хранятся в базе данных SQLite и могут быть извлечены через content provider.

Извлечение всех контактов:

bash
<h2 id="sozdanie-skripta-dlya-izvlecheniya-kontaktov">Создание скрипта для извлечения контактов</h2>
adb shell content query --uri content://contacts/phones --projection display_name:number:contact_id | while read line; do
echo "$line" >> contacts.txt
done

<h2 id="bolee-chitaemyy-format">Более читаемый формат</h2>
adb shell content query --uri content://contacts/phones --projection display_name:number | sed 's/.*display_name=\([^,]*\), number=\([^)]*\).*/\1: \2/' > contacts_formatted.txt


Извлечение детальной информации о контактах:

bash
<h2 id="izvlechenie-bazy-dannyh-kontaktov">Извлечение базы данных контактов</h2>
adb shell pm path com.android.contacts
<h2 id="package-system-priv-app-contacts-contacts-apk">package:/system/priv-app/Contacts/Contacts.apk</h2>

<h2 id="poisk-fayla-bazy-dannyh">Поиск файла базы данных</h2>
adb shell find /data/data/com.android.providers.contacts -name "*.db" 2>/dev/null

<h2 id="izvlechenie-bazy-dannyh-trebuetsya-root-ili-backup">Извлечение базы данных (требуется root или backup)</h2>
adb backup -f contacts.ab com.android.providers.contacts
<h2 id="raspakovka-backup-fayla-trebuet-dopolnitelnyh-instrumentov">Распаковка backup файла требует дополнительных инструментов</h2>


Извлечение контактов через backup:

bash
<h2 id="sozdanie-backup-kontaktov">Создание backup контактов</h2>
adb backup -f contacts.ab com.android.contacts

<h2 id="konvertatsiya-v-tar-format-trebuetsya-android-backup-extractor">Конвертация в tar формат (требуется Android Backup Extractor)</h2>
<h2 id="java-jar-abe-jar-unpack-contacts-ab-contacts-tar">java -jar abe.jar unpack contacts.ab contacts.tar</h2>
<h2 id="tar-tf-contacts-tar">tar -tf contacts.tar</h2>


Извлечение SMS и MMS сообщений


SMS и MMS хранятся в базе данных MMS/SMS приложения.

Извлечение SMS сообщений:

bash
<h2 id="pryamoy-zapros-cherez-content-provider">Прямой запрос через content provider</h2>
adb shell content query --uri content://sms --projection address:body:date:type | while read line; do
echo "$line" >> sms.txt
done

<h2 id="formatirovannyy-vyvod">Форматированный вывод</h2>
adb shell content query --uri content://sms/inbox --projection address:body:date | sed 's/.*address=\([^,]*\), body=\([^,]*\), date=\([0-9]*\).*/\1: \2 (\3)/' > sms_formatted.txt


Извлечение MMS сообщений:

bash
<h2 id="izvlechenie-mms">Извлечение MMS</h2>
adb shell content query --uri content://mms --projection subject:date | while read line; do
echo "$line" >> mms.txt
done

<h2 id="izvlechenie-mms-chastey-vlozheniya">Извлечение MMS частей (вложения)</h2>
adb shell content query --uri content://mms/part --projection mid:ct:_data | grep "_data=" | while read line; do
# Извлечение вложений требует дополнительных шагов
echo "$line" >> mms_parts.txt
done


Извлечение базы данных SMS:

bash
<h2 id="poisk-sms-bazy-dannyh">Поиск SMS базы данных</h2>
adb shell find /data/data/com.android.providers.telephony -name "*sms*.db" 2>/dev/null

<h2 id="izvlechenie-cherez-backup">Извлечение через backup</h2>
adb backup -f sms.ab com.android.providers.telephony

<h2 id="ili-cherez-pryamoy-dostup-trebuetsya-root">Или через прямой доступ (требуется root)</h2>
adb shell cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/
adb pull /sdcard/mmssms.db .


Извлечение истории звонков


История звонков доступна через CallLog content provider.

Извлечение истории звонков:

bash
<h2 id="izvlechenie-vseh-zvonkov">Извлечение всех звонков</h2>
adb shell content query --uri content://call_log/calls --projection number:date:duration:type | while read line; do
echo "$line" >> call_log.txt
done

<h2 id="formatirovannyy-vyvod-s-tipami-zvonkov">Форматированный вывод с типами звонков</h2>
adb shell content query --uri content://call_log/calls --projection number:date:duration:type:name | sed 's/.*number=\([^,]*\), date=\([^,]*\), duration=\([^,]*\), type=\([^,]*\), name=\([^)]*\).*/\5 (\1): \4 \3 сек (\2)/' > call_log_formatted.txt


Расшифровка типов звонков:

- `1` - входящий звонок
- `2` - исходящий звонок
- `3` - пропущенный звонок
- `4` - голосовая почта
- `5` - отклоненный звонок
- `6` - заблокированный звонок

Извлечение детальной информации:

bash
<h2 id="izvlechenie-s-geolokatsiey-esli-dostupno">Извлечение с геолокацией (если доступно)</h2>
adb shell content query --uri content://call_log/calls --projection geocoded_location | while read line; do
echo "$line" >> call_locations.txt
done


Извлечение медиафайлов


Медиафайлы включают фотографии, видео, аудио и документы.

Извлечение фотографий и видео:

bash
<h2 id="poisk-mediafaylov">Поиск медиафайлов</h2>
adb shell find /sdcard/DCIM -name "*.jpg" -o -name "*.png" -o -name "*.mp4" -o -name "*.avi" | while read file; do
filename=$(basename "$file")
echo "Извлечение: $filename"
adb pull "$file" ./media/
done

<h2 id="izvlechenie-iz-skrytyh-papok">Извлечение из скрытых папок</h2>
adb shell find /sdcard -name ".*" -type d | while read dir; do
adb shell find "$dir" -name "*.jpg" -o -name "*.mp4"
done


Извлечение WhatsApp медиа:

bash
<h2 id="whatsapp-mediafayly">WhatsApp медиафайлы</h2>
adb shell find /sdcard/WhatsApp -name "*.jpg" -o -name "*.mp4" -o -name "*.opus" | while read file; do
adb pull "$file" ./whatsapp_media/
done

<h2 id="whatsapp-bazy-dannyh">WhatsApp базы данных</h2>
adb shell find /sdcard/WhatsApp -name "*.db" -o -name "*.crypt*"


Извлечение загруженных файлов:

bash
<h2 id="download-papka">Download папка</h2>
adb shell ls -la /sdcard/Download/

<h2 id="rekursivnoe-izvlechenie">Рекурсивное извлечение</h2>
adb pull /sdcard/Download ./downloads/


Извлечение данных приложений


Извлечение данных популярных приложений:

bash
<h2 id="telegram">Telegram</h2>
adb shell find /data/data/org.telegram.messenger -name "*.db" 2>/dev/null

<h2 id="viber">Viber</h2>
adb shell find /data/data/com.viber.voip -name "*.db" 2>/dev/null

<h2 id="skype">Skype</h2>
adb shell find /data/data/com.skype.raider -name "*.db" 2>/dev/null

<h2 id="chrome-istoriya">Chrome история</h2>
adb shell find /data/data/com.android.chrome -name "History" 2>/dev/null


Извлечение через backup:

bash
<h2 id="backup-konkretnogo-prilozheniya">Backup конкретного приложения</h2>
adb backup -f telegram.ab org.telegram.messenger

<h2 id="backup-s-sistemnymi-dannymi">Backup с системными данными</h2>
adb backup -all -system -f full_backup.ab

<h2 id="konvertatsiya-backup-v-chitaemyy-format-trebuet-dopolnitelnyh-instrumentov">Конвертация backup в читаемый формат требует дополнительных инструментов</h2>


Извлечение системных данных


Извлечение системных логов:

bash
<h2 id="tekuschie-logi">Текущие логи</h2>
adb logcat -d > system_logs.txt

<h2 id="logi-sobytiy">Логи событий</h2>
adb shell find /data/system -name "*.log" 2>/dev/null

<h2 id="bug-reports">Bug reports</h2>
adb bugreport > bugreport.zip


Извлечение настроек устройства:

bash
<h2 id="wi-fi-seti">Wi-Fi сети</h2>
adb shell cat /data/misc/wifi/wpa_supplicant.conf 2>/dev/null

<h2 id="bluetooth-ustroystva">Bluetooth устройства</h2>
adb shell cat /data/misc/bluetooth/* 2>/dev/null

<h2 id="ustanovlennye-prilozheniya">Установленные приложения</h2>
adb shell pm list packages -f > installed_apps.txt


Извлечение геолокационных данных


Извлечение GPS истории:

bash
<h2 id="google-maps-istoriya">Google Maps история</h2>
adb shell find /data/data/com.google.android.apps.maps -name "*.db" 2>/dev/null | while read db; do
adb pull "$db" ./maps_data/
done

<h2 id="gps-kesh">GPS кэш</h2>
adb shell find /data/data -name "*location*" -type f 2>/dev/null


Извлечение данных о сетях Wi-Fi:

bash
<h2 id="sohranennye-wi-fi-seti">Сохраненные Wi-Fi сети</h2>
adb shell cat /data/misc/wifi/WifiConfigStore.xml 2>/dev/null > wifi_networks.xml


Автоматизированное извлечение данных


Комплексный скрипт извлечения:

bash
#!/bin/bash
<h2 id="skript-dlya-kompleksnogo-izvlecheniya-dannyh-s-android-ustroystva">Скрипт для комплексного извлечения данных с Android устройства</h2>

OUTPUT_DIR="android_forensic_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR/{contacts,sms,calls,media,apps,system}

echo "=== Извлечение данных с Android устройства ==="
echo "Выходная директория: $OUTPUT_DIR"

<h2 id="kontakty">Контакты</h2>
echo "Извлечение контактов..."
adb shell content query --uri content://contacts/phones --projection display_name:number > $OUTPUT_DIR/contacts/contacts_raw.txt

<h2 id="sms">SMS</h2>
echo "Извлечение SMS..."
adb shell content query --uri content://sms --projection address:body:date:type > $OUTPUT_DIR/sms/sms_raw.txt

<h2 id="istoriya-zvonkov">История звонков</h2>
echo "Извлечение истории звонков..."
adb shell content query --uri content://call_log/calls --projection number:date:duration:type > $OUTPUT_DIR/calls/calls_raw.txt

<h2 id="mediafayly">Медиафайлы</h2>
echo "Извлечение медиафайлов..."
mkdir -p $OUTPUT_DIR/media
adb shell find /sdcard/DCIM -type f \( -name "*.jpg" -o -name "*.png" -o -name "*.mp4" \) | while read file; do
filename=$(basename "$file")
adb pull "$file" "$OUTPUT_DIR/media/" 2>/dev/null
done

<h2 id="prilozheniya">Приложения</h2>
echo "Извлечение списка приложений..."
adb shell pm list packages -f > $OUTPUT_DIR/apps/installed_apps.txt

<h2 id="sistemnaya-informatsiya">Системная информация</h2>
echo "Извлечение системной информации..."
adb shell getprop > $OUTPUT_DIR/system/device_properties.txt
adb shell df -h > $OUTPUT_DIR/system/disk_usage.txt
adb shell dumpsys battery > $OUTPUT_DIR/system/battery_info.txt

<h2 id="logi">Логи</h2>
echo "Извлечение логов..."
adb logcat -d > $OUTPUT_DIR/system/logs.txt

echo "Извлечение завершено!"
echo "Результаты сохранены в $OUTPUT_DIR"


Скрипт для обработки извлеченных данных:

bash
#!/bin/bash
<h2 id="skript-dlya-obrabotki-i-analiza-izvlechennyh-dannyh">Скрипт для обработки и анализа извлеченных данных</h2>

INPUT_DIR=$1

if [ -z "$INPUT_DIR" ]; then
echo "Использование: $0 <директория_с_данными>"
exit 1
fi

echo "=== Анализ извлеченных данных ==="

<h2 id="analiz-kontaktov">Анализ контактов</h2>
if [ -f "$INPUT_DIR/contacts/contacts_raw.txt" ]; then
echo "Контактов найдено: $(wc -l < $INPUT_DIR/contacts/contacts_raw.txt)"
fi

<h2 id="analiz-sms">Анализ SMS</h2>
if [ -f "$INPUT_DIR/sms/sms_raw.txt" ]; then
echo "SMS сообщений: $(wc -l < $INPUT_DIR/sms/sms_raw.txt)"
echo "Входящих SMS: $(grep "type=1" $INPUT_DIR/sms/sms_raw.txt | wc -l)"
echo "Исходящих SMS: $(grep "type=2" $INPUT_DIR/sms/sms_raw.txt | wc -l)"
fi

<h2 id="analiz-zvonkov">Анализ звонков</h2>
if [ -f "$INPUT_DIR/calls/calls_raw.txt" ]; then
echo "Записей звонков: $(wc -l < $INPUT_DIR/calls/calls_raw.txt)"
echo "Входящих звонков: $(grep "type=1" $INPUT_DIR/calls/calls_raw.txt | wc -l)"
echo "Исходящих звонков: $(grep "type=2" $INPUT_DIR/calls/calls_raw.txt | wc -l)"
fi

<h2 id="analiz-media">Анализ медиа</h2>
if [ -d "$INPUT_DIR/media" ]; then
echo "Медиафайлов извлечено: $(find $INPUT_DIR/media -type f | wc -l)"
echo "Изображений: $(find $INPUT_DIR/media -name "*.jpg" -o -name "*.png" | wc -l)"
echo "Видео: $(find $INPUT_DIR/media -name "*.mp4" -o -name "*.avi" | wc -l)"
fi

echo "Анализ завершен!"


Форензика извлеченных данных


Проверка целостности данных:

bash
<h2 id="sozdanie-hesh-summ-izvlechennyh-faylov">Создание хэш-сумм извлеченных файлов</h2>
find extracted_data/ -type f -exec sha256sum {} \; > extracted_hashes.txt

<h2 id="sravnenie-s-etalonnymi-heshami">Сравнение с эталонными хэшами</h2>
sha256sum -c extracted_hashes.txt


Анализ временных меток:

bash
<h2 id="konvertatsiya-unix-timestamp-v-chitaemyy-format">Конвертация Unix timestamp в читаемый формат</h2>
awk -F',' '{print strftime("%Y-%m-%d %H:%M:%S", $3/1000), $0}' calls_raw.txt > calls_readable.txt


Поиск ключевых слов:

bash
<h2 id="poisk-v-sms">Поиск в SMS</h2>
grep -i -E "(password|login|account|secret)" sms_raw.txt > sensitive_sms.txt

<h2 id="poisk-v-kontaktah">Поиск в контактах</h2>
grep -i -E "(police|lawyer|bank)" contacts_raw.txt > important_contacts.txt


Эти методы позволяют извлечь основные типы данных с Android устройств. В следующих разделах мы рассмотрим работу с файловой системой и более продвинутые техники извлечения.

Работа с файловой системой


Понимание структуры файловой системы Android критически важно для эффективного извлечения данных. Android использует сложную иерархию разделов и директорий, где разные типы данных хранятся в различных местах. В этом разделе мы рассмотрим структуру Android файловой системы и методы доступа к различным областям.

Структура разделов Android


Современные Android устройства используют несколько разделов для хранения данных.

Основные разделы:

- `/boot` - ядро Linux и ramdisk
- `/system` - системные файлы Android (read-only)
- `/vendor` - файлы производителя устройства
- `/data` - пользовательские данные и приложения
- `/cache` - временные файлы
- `/recovery` - recovery режим
- `/misc` - miscellaneous системные данные

Внешнее хранилище:

- `/sdcard` или `/storage/emulated/0` - эмулированное внешнее хранилище
- `/storage/XXXX-XXXX` - реальные SD карты

Извлечение информации о разделах:

bash
<h2 id="prosmotr-vseh-smontirovannyh-razdelov">Просмотр всех смонтированных разделов</h2>
adb shell mount

<h2 id="detalnaya-informatsiya-o-razdelah">Детальная информация о разделах</h2>
adb shell df -h

<h2 id="informatsiya-o-blochnyh-ustroystvah">Информация о блочных устройствах</h2>
adb shell ls -la /dev/block/

<h2 id="prosmotr-fstab-fayla">Просмотр fstab файла</h2>
adb shell cat /system/etc/fstab


Доступ к системным директориям


Директория /system:

bash
<h2 id="prosmotr-sistemnyh-prilozheniy">Просмотр системных приложений</h2>
adb shell ls /system/app/
adb shell ls /system/priv-app/

<h2 id="sistemnye-nastroyki">Системные настройки</h2>
adb shell cat /system/build.prop

<h2 id="prosmotr-sistemnyh-binarnyh-faylov">Просмотр системных бинарных файлов</h2>
adb shell ls /system/bin/


Директория /data:

bash
<h2 id="polzovatelskie-prilozheniya">Пользовательские приложения</h2>
adb shell ls /data/app/

<h2 id="dannye-prilozheniy">Данные приложений</h2>
adb shell ls /data/data/

<h2 id="sistemnye-dannye">Системные данные</h2>
adb shell ls /data/system/

<h2 id="kesh-prilozheniy">Кэш приложений</h2>
adb shell ls /data/data/*/cache/


Работа с внешним хранилищем


Доступ к SD карте:

bash
<h2 id="proverka-sostoyaniya-vneshnego-hranilischa">Проверка состояния внешнего хранилища</h2>
adb shell sm list-volumes

<h2 id="montirovanie-vneshnego-hranilischa">Монтирование внешнего хранилища</h2>
adb shell sm set-force-adoptable true # Для Android 6.0+

<h2 id="prosmotr-soderzhimogo">Просмотр содержимого</h2>
adb shell ls /storage/emulated/0/
adb shell ls /sdcard/

<h2 id="izvlechenie-vseh-faylov">Извлечение всех файлов</h2>
adb pull /sdcard/ ./sdcard_backup/


Работа с несколькими хранилищами:

bash
<h2 id="spisok-vseh-hranilisch">Список всех хранилищ</h2>
adb shell sm list-volumes all

<h2 id="informatsiya-o-konkretnom-tome">Информация о конкретном томе</h2>
adb shell sm get-volume-state 1234-5678


Извлечение скрытых и системных файлов


Доступ к скрытым файлам:

bash
<h2 id="poisk-skrytyh-faylov-i-papok">Поиск скрытых файлов и папок</h2>
adb shell find /sdcard -name ".*" -type f

<h2 id="skrytye-sistemnye-fayly">Скрытые системные файлы</h2>
adb shell find /data -name ".*" 2>/dev/null

<h2 id="fayly-s-rasshirennymi-atributami">Файлы с расширенными атрибутами</h2>
adb shell ls -la /data/data/*/ | grep "^-"


Извлечение системных логов:

bash
<h2 id="osnovnye-logi">Основные логи</h2>
adb shell ls /data/system/dropbox/
adb shell ls /data/tombstones/

<h2 id="recovery-logi">Recovery логи</h2>
adb shell cat /cache/recovery/last_log

<h2 id="kernel-logi">Kernel логи</h2>
adb shell dmesg > kernel_log.txt


Работа с базами данных


SQLite базы данных приложений:

bash
<h2 id="poisk-sqlite-baz-dannyh">Поиск SQLite баз данных</h2>
adb shell find /data/data -name "*.db" 2>/dev/null

<h2 id="izvlechenie-bazy-kontaktov">Извлечение базы контактов</h2>
adb shell cp /data/data/com.android.providers.contacts/databases/contacts2.db /sdcard/
adb pull /sdcard/contacts2.db .

<h2 id="rabota-s-sqlite-trebuetsya-sqlite3">Работа с SQLite (требуется sqlite3)</h2>
adb shell sqlite3 /data/data/com.android.providers.contacts/databases/contacts2.db ".tables"
adb shell sqlite3 /data/data/com.android.providers.contacts/databases/contacts2.db "SELECT * FROM contacts;"


Анализ структуры базы данных:

bash
<h2 id="prosmotr-shemy-tablitsy">Просмотр схемы таблицы</h2>
adb shell sqlite3 /data/data/com.whatsapp/databases/msgstore.db ".schema messages"

<h2 id="podschet-zapisey">Подсчет записей</h2>
adb shell sqlite3 /data/data/com.whatsapp/databases/msgstore.db "SELECT COUNT(*) FROM messages;"

<h2 id="izvlechenie-poslednih-soobscheniy">Извлечение последних сообщений</h2>
adb shell sqlite3 /data/data/com.whatsapp/databases/msgstore.db "SELECT * FROM messages ORDER BY _id DESC LIMIT 10;"


Работа с разделами и образами


Создание образа раздела:

bash
<h2 id="sozdanie-obraza-data-razdela-trebuetsya-root">Создание образа data раздела (требуется root)</h2>
adb shell su -c "dd if=/dev/block/by-name/userdata of=/sdcard/data.img bs=4M"

<h2 id="skachivanie-obraza">Скачивание образа</h2>
adb pull /sdcard/data.img .

<h2 id="analiz-obraza-s-pomoschyu-vneshnih-instrumentov">Анализ образа с помощью внешних инструментов</h2>
<h2 id="autopsy-ftkimager-etc">autopsy, ftkimager, etc.</h2>


Монтирование образов:

bash
<h2 id="montirovanie-obraza-cherez-loop-device-linux">Монтирование образа через loop device (Linux)</h2>
sudo losetup /dev/loop0 data.img
sudo mount /dev/loop0 /mnt/android_data

<h2 id="prosmotr-soderzhimogo">Просмотр содержимого</h2>
ls -la /mnt/android_data/


Извлечение удаленных файлов


Восстановление из нераспределенного пространства:

bash
<h2 id="sozdanie-obraza-neraspredelennogo-prostranstva">Создание образа нераспределенного пространства</h2>
adb shell su -c "dd if=/dev/block/by-name/userdata of=/sdcard/unallocated.bin bs=4M skip=10000 count=1000"

<h2 id="skachivanie-dlya-analiza">Скачивание для анализа</h2>
adb pull /sdcard/unallocated.bin .

<h2 id="analiz-s-pomoschyu-instrumentov-vosstanovleniya">Анализ с помощью инструментов восстановления</h2>
<h2 id="foremost-scalpel-testdisk">foremost, scalpel, testdisk</h2>


Поиск остатков удаленных файлов:

bash
<h2 id="poisk-strok-v-neraspredelennom-prostranstve">Поиск строк в нераспределенном пространстве</h2>
adb shell su -c "strings /dev/block/by-name/userdata | grep -i 'deleted_file'" | head -10

<h2 id="poisk-izvestnyh-signatur-faylov">Поиск известных сигнатур файлов</h2>
adb shell su -c "hexdump -C /dev/block/by-name/userdata | grep 'ffd8ffe0'" | head -5 # JPEG signature


Работа с шифрованными разделами


Android шифрование (File-Based Encryption):

bash
<h2 id="proverka-statusa-shifrovaniya">Проверка статуса шифрования</h2>
adb shell getprop ro.crypto.state

<h2 id="dlya-fbe-file-based-encryption">Для FBE (File-Based Encryption)</h2>
adb shell getprop ro.crypto.type

<h2 id="izvlechenie-klyuchey-trebuetsya-spetsialnyy-dostup">Извлечение ключей (требуется специальный доступ)</h2>
<h2 id="obychno-nevozmozhno-bez-root-i-pravilnyh-klyuchey">Обычно невозможно без root и правильных ключей</h2>


Полнодисковое шифрование (FDE):

bash
<h2 id="proverka-fde-statusa">Проверка FDE статуса</h2>
adb shell getprop ro.crypto.fde_algorithm

<h2 id="dlya-fde-dannye-zashifrovany-na-urovne-blochnogo-ustroystva">Для FDE данные зашифрованы на уровне блочного устройства</h2>
<h2 id="trebuetsya-parol-klyuch-dlya-dostupa">Требуется пароль/ключ для доступа</h2>


Анализ структуры APK файлов


Извлечение и анализ приложений:

bash
<h2 id="spisok-ustanovlennyh-apk">Список установленных APK</h2>
adb shell pm list packages -f

<h2 id="izvlechenie-apk-fayla">Извлечение APK файла</h2>
adb shell pm path com.whatsapp
<h2 id="package-data-app-com-whatsapp-1-base-apk">package:/data/app/com.whatsapp-1/base.apk</h2>

adb pull /data/app/com.whatsapp-1/base.apk .

<h2 id="analiz-apk-s-pomoschyu-apktool-jadx">Анализ APK (с помощью apktool, jadx)</h2>
<h2 id="apktool-d-base-apk-o-whatsapp-decoded">apktool d base.apk -o whatsapp_decoded</h2>


Извлечение данных приложения:

bash
<h2 id="dannye-prilozheniya">Данные приложения</h2>
adb shell ls -la /data/data/com.whatsapp/

<h2 id="kesh-prilozheniya">Кэш приложения</h2>
adb shell ls -la /data/data/com.whatsapp/cache/

<h2 id="shared-preferences">Shared preferences</h2>
adb shell ls -la /data/data/com.whatsapp/shared_prefs/


Скрипты для комплексного анализа ФС


Скрипт картирования файловой системы:

bash
#!/bin/bash
<h2 id="skript-dlya-kartirovaniya-struktury-android-fs">Скрипт для картирования структуры Android ФС</h2>

OUTPUT_FILE="filesystem_map_$(date +%Y%m%d_%H%M%S).txt"

echo "=== КАРТИРОВАНИЕ ФАЙЛОВОЙ СИСТЕМЫ ANDROID ===" > $OUTPUT_FILE
echo "Дата: $(date)" >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

<h2 id="sistemnye-razdely">Системные разделы</h2>
echo "=== СИСТЕМНЫЕ РАЗДЕЛЫ ===" >> $OUTPUT_FILE
adb shell mount | grep -E "(system|data|cache)" >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

<h2 id="struktura-system">Структура /system</h2>
echo "=== /SYSTEM ДИРЕКТОРИЯ ===" >> $OUTPUT_FILE
adb shell find /system -maxdepth 2 -type d 2>/dev/null | head -20 >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

<h2 id="struktura-data">Структура /data</h2>
echo "=== /DATA ДИРЕКТОРИЯ ===" >> $OUTPUT_FILE
adb shell find /data -maxdepth 2 -type d 2>/dev/null | grep -v "/data/data" | head -20 >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

<h2 id="polzovatelskie-prilozheniya">Пользовательские приложения</h2>
echo "=== ПОЛЬЗОВАТЕЛЬСКИЕ ПРИЛОЖЕНИЯ ===" >> $OUTPUT_FILE
adb shell pm list packages -3 | wc -l >> $OUTPUT_FILE
adb shell pm list packages -3 | head -10 >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

<h2 id="sistemnye-prilozheniya">Системные приложения</h2>
echo "=== СИСТЕМНЫЕ ПРИЛОЖЕНИЯ ===" >> $OUTPUT_FILE
adb shell pm list packages -s | wc -l >> $OUTPUT_FILE
adb shell pm list packages -s | head -10 >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

<h2 id="vneshnee-hranilische">Внешнее хранилище</h2>
echo "=== ВНЕШНЕЕ ХРАНИЛИЩЕ ===" >> $OUTPUT_FILE
adb shell df -h | grep -E "(sdcard|storage)" >> $OUTPUT_FILE
adb shell ls -la /sdcard/ | head -10 >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

echo "Картирование завершено: $OUTPUT_FILE"


Скрипт поиска интересных файлов:

bash
#!/bin/bash
<h2 id="skript-poiska-interesnyh-faylov-v-android-fs">Скрипт поиска интересных файлов в Android ФС</h2>

OUTPUT_DIR="interesting_files_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR

echo "Поиск интересных файлов..."

<h2 id="bazy-dannyh">Базы данных</h2>
echo "Базы данных:" > $OUTPUT_DIR/databases.txt
adb shell find /data/data -name "*.db" 2>/dev/null | head -20 >> $OUTPUT_DIR/databases.txt

<h2 id="sqlite-fayly">SQLite файлы</h2>
echo "SQLite файлы:" > $OUTPUT_DIR/sqlite_files.txt
adb shell find /data/data -name "*.sqlite" 2>/dev/null >> $OUTPUT_DIR/sqlite_files.txt

<h2 id="kripto-fayly">Крипто файлы</h2>
echo "Крипто файлы:" > $OUTPUT_DIR/crypto_files.txt
adb shell find /data -name "*.key" -o -name "*.pem" -o -name "*.crt" 2>/dev/null >> $OUTPUT_DIR/crypto_files.txt

<h2 id="logi">Логи</h2>
echo "Файлы логов:" > $OUTPUT_DIR/log_files.txt
adb shell find /data -name "*.log" -o -name "*.txt" | grep -v "/data/data" >> $OUTPUT_DIR/log_files.txt

<h2 id="media-fayly">Медиа файлы</h2>
echo "Медиа файлы:" > $OUTPUT_DIR/media_files.txt
adb shell find /sdcard -name "*.jpg" -o -name "*.png" -o -name "*.mp4" | wc -l >> $OUTPUT_DIR/media_files.txt
adb shell find /sdcard -name "*.jpg" -o -name "*.png" -o -name "*.mp4" | head -10 >> $OUTPUT_DIR/media_files.txt

<h2 id="skrytye-fayly">Скрытые файлы</h2>
echo "Скрытые файлы:" > $OUTPUT_DIR/hidden_files.txt
adb shell find /sdcard -name ".*" -type f | head -20 >> $OUTPUT_DIR/hidden_files.txt

echo "Поиск завершен. Результаты в $OUTPUT_DIR"


Понимание структуры файловой системы Android позволяет эффективно извлекать данные из различных источников. В следующем разделе мы рассмотрим извлечение данных приложений и их анализ.

Извлечение приложений и данных


Приложения - один из основных источников данных в мобильной форензике. Социальные сети, мессенджеры, браузеры и другие приложения хранят огромное количество информации. В этом разделе мы рассмотрим методы извлечения данных из популярных приложений Android.

Извлечение данных WhatsApp


WhatsApp - одно из наиболее распространенных приложений для извлечения данных.

Извлечение сообщений WhatsApp:

bash
<h2 id="poisk-whatsapp-dannyh">Поиск WhatsApp данных</h2>
adb shell pm path com.whatsapp

<h2 id="izvlechenie-bazy-dannyh-soobscheniy">Извлечение базы данных сообщений</h2>
adb shell cp /data/data/com.whatsapp/databases/msgstore.db /sdcard/
adb pull /sdcard/msgstore.db .

<h2 id="izvlechenie-kontaktov-whatsapp">Извлечение контактов WhatsApp</h2>
adb shell cp /data/data/com.whatsapp/databases/wa.db /sdcard/
adb pull /sdcard/wa.db .

<h2 id="izvlechenie-mediafaylov">Извлечение медиафайлов</h2>
adb pull /sdcard/WhatsApp/Media ./whatsapp_media/


Анализ WhatsApp базы данных:

bash
<h2 id="prosmotr-tablits">Просмотр таблиц</h2>
sqlite3 msgstore.db ".tables"

<h2 id="izvlechenie-soobscheniy">Извлечение сообщений</h2>
sqlite3 msgstore.db "SELECT * FROM messages ORDER BY timestamp DESC LIMIT 10;"

<h2 id="poisk-po-klyuchevym-slovam">Поиск по ключевым словам</h2>
sqlite3 msgstore.db "SELECT * FROM messages WHERE data LIKE '%password%';"


Извлечение зашифрованных резервных копий:

bash
<h2 id="whatsapp-sozdaet-zashifrovannye-backup-fayly">WhatsApp создает зашифрованные backup файлы</h2>
adb shell find /sdcard/WhatsApp -name "*.crypt*"

<h2 id="dlya-rasshifrovki-trebuetsya-parol-ot-uchetnoy-zapisi">Для расшифровки требуется пароль от учетной записи</h2>
<h2 id="ispolzovanie-instrumentov-vrode-whatsapp-viewer-ili-whatcrypt">Использование инструментов вроде whatsapp-viewer или whatcrypt</h2>


Извлечение данных Telegram


Telegram использует более сложную структуру хранения данных.

Извлечение Telegram данных:

bash
<h2 id="poisk-telegram-direktorii">Поиск Telegram директории</h2>
adb shell find /data/data -name "*telegram*" -type d

<h2 id="izvlechenie-bazy-dannyh">Извлечение базы данных</h2>
adb shell cp /data/data/org.telegram.messenger/databases/cache4.db /sdcard/
adb pull /sdcard/cache4.db .

<h2 id="izvlechenie-mediafaylov">Извлечение медиафайлов</h2>
adb pull /sdcard/Telegram ./telegram_data/


Работа с Telegram базами данных:

bash
<h2 id="prosmotr-struktury">Просмотр структуры</h2>
sqlite3 cache4.db ".schema"

<h2 id="izvlechenie-soobscheniy">Извлечение сообщений</h2>
sqlite3 cache4.db "SELECT * FROM messages WHERE date > strftime('%s', '2024-01-01');"

<h2 id="poisk-sekretnyh-chatov">Поиск секретных чатов</h2>
sqlite3 cache4.db "SELECT * FROM chats WHERE flags & 0x1000 != 0;"


Извлечение данных браузеров


Google Chrome:

bash
<h2 id="izvlechenie-istorii-brauzera">Извлечение истории браузера</h2>
adb shell cp /data/data/com.android.chrome/app_chrome/Default/History /sdcard/
adb pull /sdcard/History .

<h2 id="izvlechenie-kukisov">Извлечение кукисов</h2>
adb shell cp /data/data/com.android.chrome/app_chrome/Default/Cookies /sdcard/
adb pull /sdcard/Cookies .

<h2 id="izvlechenie-sohranennyh-paroley">Извлечение сохраненных паролей</h2>
adb shell cp /data/data/com.android.chrome/app_chrome/Default/Login\ Data /sdcard/
adb pull /sdcard/Login\ Data .


Анализ Chrome данных:

bash
<h2 id="prosmotr-istorii-posescheniy">Просмотр истории посещений</h2>
sqlite3 History "SELECT url, title, visit_count FROM urls ORDER BY last_visit_time DESC LIMIT 20;"

<h2 id="analiz-kukisov">Анализ кукисов</h2>
sqlite3 Cookies "SELECT host_key, name, value FROM cookies WHERE host_key LIKE '%google%';"


Mozilla Firefox:

bash
<h2 id="firefox-dannye">Firefox данные</h2>
adb shell find /data/data/org.mozilla.firefox -name "*.sqlite"

<h2 id="izvlechenie-profiley">Извлечение профилей</h2>
adb pull /data/data/org.mozilla.firefox/files/mozilla ./firefox_data/


Извлечение данных социальных сетей


Facebook/Messenger:

bash
<h2 id="poisk-facebook-dannyh">Поиск Facebook данных</h2>
adb shell find /data/data -name "*facebook*" -type d

<h2 id="izvlechenie-kesha">Извлечение кэша</h2>
adb pull /data/data/com.facebook.katana ./facebook_data/

<h2 id="messenger-dannye">Messenger данные</h2>
adb pull /data/data/com.facebook.orca ./messenger_data/


Instagram:

bash
<h2 id="instagram-direktoriya">Instagram директория</h2>
adb shell ls /data/data/com.instagram.android/

<h2 id="izvlechenie-bazy-dannyh">Извлечение базы данных</h2>
adb shell cp /data/data/com.instagram.android/databases/direct.db /sdcard/
adb pull /sdcard/direct.db .

<h2 id="mediafayly">Медиафайлы</h2>
adb pull /sdcard/Instagram ./instagram_data/


Twitter/X:

bash
<h2 id="twitter-dannye">Twitter данные</h2>
adb shell find /data/data -name "*twitter*" -type d

<h2 id="izvlechenie-kesha-i-dannyh">Извлечение кэша и данных</h2>
adb pull /data/data/com.twitter.android ./twitter_data/


Извлечение данных почтовых клиентов


Gmail:

bash
<h2 id="gmail-dannye">Gmail данные</h2>
adb shell find /data/data/com.google.android.gm -name "*.db"

<h2 id="izvlechenie-bazy-dannyh">Извлечение базы данных</h2>
adb shell cp /data/data/com.google.android.gm/databases/mailstore*.db /sdcard/
adb pull /sdcard/mailstore*.db .


Outlook:

bash
<h2 id="microsoft-outlook">Microsoft Outlook</h2>
adb shell find /data/data -name "*outlook*" -type d

<h2 id="izvlechenie-dannyh">Извлечение данных</h2>
adb pull /data/data/com.microsoft.office.outlook ./outlook_data/


Извлечение данных облачных хранилищ


Google Drive:

bash
<h2 id="google-drive-kesh">Google Drive кэш</h2>
adb shell find /data/data/com.google.android.apps.docs -name "*.db"

<h2 id="izvlechenie-sinhronizirovannyh-faylov">Извлечение синхронизированных файлов</h2>
adb pull /sdcard/Android/data/com.google.android.apps.docs ./drive_data/


Dropbox:

bash
<h2 id="dropbox-dannye">Dropbox данные</h2>
adb shell ls /data/data/com.dropbox.android/

<h2 id="izvlechenie-bazy-dannyh">Извлечение базы данных</h2>
adb shell cp /data/data/com.dropbox.android/databases/*.db /sdcard/
adb pull /sdcard/*.db ./dropbox_data/


OneDrive:

bash
<h2 id="microsoft-onedrive">Microsoft OneDrive</h2>
adb shell find /data/data -name "*onedrive*" -type d

<h2 id="izvlechenie-dannyh">Извлечение данных</h2>
adb pull /data/data/com.microsoft.skydrive ./onedrive_data/


Извлечение данных платежных приложений


Google Pay/Samsung Pay:

bash
<h2 id="poisk-platezhnyh-prilozheniy">Поиск платежных приложений</h2>
adb shell pm list packages | grep -i pay

<h2 id="izvlechenie-dannyh-ogranichennyy-dostup">Извлечение данных (ограниченный доступ)</h2>
adb shell find /data/data -name "*pay*" -type d


Банковские приложения:

bash
<h2 id="poisk-bankovskih-prilozheniy">Поиск банковских приложений</h2>
adb shell pm list packages | grep -E "(bank|finance|money)"

<h2 id="izvlechenie-dannyh-zavisit-ot-prilozheniya">Извлечение данных (зависит от приложения)</h2>
<h2 id="bolshinstvo-bankovskih-prilozheniy-ispolzuyut-shifrovanie">Большинство банковских приложений используют шифрование</h2>


Извлечение данных VPN и прокси


VPN приложения:

bash
<h2 id="poisk-vpn-prilozheniy">Поиск VPN приложений</h2>
adb shell pm list packages | grep -i vpn

<h2 id="izvlechenie-konfiguratsiy-naprimer-openvpn">Извлечение конфигураций (например, OpenVPN)</h2>
adb shell find /data/data -name "*.ovpn" -o -name "*.conf"


Скрипт комплексного извлечения приложений


bash
#!/bin/bash
<h2 id="skript-dlya-izvlecheniya-dannyh-populyarnyh-prilozheniy">Скрипт для извлечения данных популярных приложений</h2>

OUTPUT_DIR="app_data_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR/{whatsapp,telegram,browsers,social,cloud}

echo "=== ИЗВЛЕЧЕНИЕ ДАННЫХ ПРИЛОЖЕНИЙ ==="

<h2 id="whatsapp">WhatsApp</h2>
echo "Извлечение WhatsApp..."
if adb shell pm list packages | grep -q whatsapp; then
adb shell cp /data/data/com.whatsapp/databases/msgstore.db /sdcard/ 2>/dev/null
adb pull /sdcard/msgstore.db $OUTPUT_DIR/whatsapp/ 2>/dev/null
adb pull /sdcard/WhatsApp/Media $OUTPUT_DIR/whatsapp/ 2>/dev/null
fi

<h2 id="telegram">Telegram</h2>
echo "Извлечение Telegram..."
if adb shell pm list packages | grep -q telegram; then
adb shell cp /data/data/org.telegram.messenger/databases/cache4.db /sdcard/ 2>/dev/null
adb pull /sdcard/cache4.db $OUTPUT_DIR/telegram/ 2>/dev/null
adb pull /sdcard/Telegram $OUTPUT_DIR/telegram/ 2>/dev/null
fi

<h2 id="chrome">Chrome</h2>
echo "Извлечение Chrome..."
if adb shell pm list packages | grep -q chrome; then
mkdir -p $OUTPUT_DIR/browsers/chrome
adb shell cp /data/data/com.android.chrome/app_chrome/Default/History /sdcard/ 2>/dev/null
adb pull /sdcard/History $OUTPUT_DIR/browsers/chrome/ 2>/dev/null
fi

<h2 id="facebook">Facebook</h2>
echo "Извлечение Facebook..."
if adb shell pm list packages | grep -q facebook; then
adb pull /data/data/com.facebook.katana $OUTPUT_DIR/social/ 2>/dev/null
fi

<h2 id="google-drive">Google Drive</h2>
echo "Извлечение Google Drive..."
if adb shell pm list packages | grep -q "docs"; then
adb pull /sdcard/Android/data/com.google.android.apps.docs $OUTPUT_DIR/cloud/ 2>/dev/null
fi

echo "Извлечение завершено: $OUTPUT_DIR"


Анализ извлеченных данных приложений


Парсинг WhatsApp баз данных:

bash
#!/bin/bash
<h2 id="skript-analiza-whatsapp-bazy-dannyh">Скрипт анализа WhatsApp базы данных</h2>

DB_FILE=$1

if [ ! -f "$DB_FILE" ]; then
echo "Файл базы данных не найден: $DB_FILE"
exit 1
fi

echo "=== АНАЛИЗ WHATSAPP БАЗЫ ДАННЫХ ==="

<h2 id="kolichestvo-chatov">Количество чатов</h2>
CHAT_COUNT=$(sqlite3 "$DB_FILE" "SELECT COUNT(*) FROM chat_list;")
echo "Всего чатов: $CHAT_COUNT"

<h2 id="kolichestvo-soobscheniy">Количество сообщений</h2>
MSG_COUNT=$(sqlite3 "$DB_FILE" "SELECT COUNT(*) FROM messages;")
echo "Всего сообщений: $MSG_COUNT"

<h2 id="poslednie-soobscheniya">Последние сообщения</h2>
echo "Последние 5 сообщений:"
sqlite3 "$DB_FILE" "SELECT datetime(timestamp/1000, 'unixepoch'), data FROM messages ORDER BY timestamp DESC LIMIT 5;"

<h2 id="poisk-mediafaylov">Поиск медиафайлов</h2>
echo "Сообщения с медиафайлами:"
sqlite3 "$DB_FILE" "SELECT COUNT(*) FROM messages WHERE media_name IS NOT NULL;"

<h2 id="poisk-udalennyh-soobscheniy">Поиск удаленных сообщений</h2>
echo "Удаленные сообщения:"
sqlite3 "$DB_FILE" "SELECT COUNT(*) FROM messages WHERE quoted_row_id IS NOT NULL;"


Парсинг браузерной истории:

bash
#!/bin/bash
<h2 id="analiz-istorii-brauzera-chrome">Анализ истории браузера Chrome</h2>

HISTORY_FILE=$1

if [ ! -f "$HISTORY_FILE" ]; then
echo "Файл истории не найден: $HISTORY_FILE"
exit 1
fi

echo "=== АНАЛИЗ ИСТОРИИ CHROME ==="

<h2 id="obschaya-statistika">Общая статистика</h2>
VISIT_COUNT=$(sqlite3 "$HISTORY_FILE" "SELECT COUNT(*) FROM urls;")
echo "Всего посещений: $VISIT_COUNT"

<h2 id="top-saytov">Топ сайтов</h2>
echo "Топ 10 сайтов:"
sqlite3 "$HISTORY_FILE" "SELECT url, COUNT(*) as count FROM visits GROUP BY url ORDER BY count DESC LIMIT 10;"

<h2 id="poslednie-posescheniya">Последние посещения</h2>
echo "Последние 10 посещений:"
sqlite3 "$HISTORY_FILE" "SELECT datetime(last_visit_time/1000000-11644473600, 'unixepoch'), url FROM urls ORDER BY last_visit_time DESC LIMIT 10;"

<h2 id="poisk-po-klyuchevym-slovam">Поиск по ключевым словам</h2>
echo "Посещения с 'password' в URL:"
sqlite3 "$HISTORY_FILE" "SELECT url FROM urls WHERE url LIKE '%password%';"


Судебная ценность данных приложений


Классификация по важности:

- Критически важные: WhatsApp, Telegram, Signal (сообщения)
- Высокой важности: Chrome/Firefox (история, кукисы, пароли)
- Средней важности: Социальные сети (посты, сообщения)
- Низкой важности: Игры, утилиты (кэш, настройки)

Цепочка хранения:

bash
<h2 id="dokumentirovanie-izvlecheniya-dannyh-prilozheniy">Документирование извлечения данных приложений</h2>
echo "$(date): Извлечение данных $APP_NAME с устройства $DEVICE_ID" >> chain_of_custody.log
echo "Метод: ADB pull из /data/data/$PACKAGE_NAME" >> chain_of_custody.log
echo "Хэш-сумма: $(sha256sum extracted_file)" >> chain_of_custody.log


Извлечение данных приложений позволяет получить доступ к коммуникациям, истории активности и другим важным артефактам. В следующих разделах мы рассмотрим продвинутые техники извлечения и работу с rooted устройствами.

Продвинутые техники извлечения


Продвинутые техники извлечения данных требуют глубокого понимания Android архитектуры и использования специализированных инструментов. Эти методы позволяют получить доступ к защищенным данным и системным областям.

Работа с Android Backup


Создание полных backup с системными данными:

bash
<h2 id="backup-s-sistemnymi-prilozheniyami">Backup с системными приложениями</h2>
adb backup -all -system -f full_system.ab

<h2 id="backup-konkretnyh-prilozheniy">Backup конкретных приложений</h2>
adb backup -f whatsapp.ab com.whatsapp
adb backup -f chrome.ab com.android.chrome

<h2 id="backup-bez-apk-tolko-dannye">Backup без APK (только данные)</h2>
adb backup -noapk -f data_only.ab com.whatsapp


Распаковка Android Backup:

Android Backup имеет специфический формат и требует конвертации:

bash
<h2 id="ispolzovanie-android-backup-extractor-abe">Использование Android Backup Extractor (ABE)</h2>
java -jar abe.jar unpack full_system.ab full_system.tar

<h2 id="raspakovka-tar-arhiva">Распаковка tar архива</h2>
tar -xvf full_system.tar

<h2 id="prosmotr-soderzhimogo">Просмотр содержимого</h2>
ls -la apps/


Анализ backup содержимого:

bash
<h2 id="poisk-baz-dannyh-v-backup">Поиск баз данных в backup</h2>
find apps/ -name "*.db" -type f

<h2 id="izvlechenie-klyuchevyh-faylov">Извлечение ключевых файлов</h2>
cp apps/com.whatsapp/db/msgstore.db .
cp apps/com.android.chrome/app_chrome/Default/History .


Извлечение через Content Providers


Доступ к системным content provider:

bash
<h2 id="mms-sms-cherez-content-provider">MMS/SMS через content provider</h2>
adb shell content query --uri content://mms-sms/conversations

<h2 id="brauzernaya-istoriya">Браузерная история</h2>
adb shell content query --uri content://com.android.chrome.browser/history

<h2 id="kalendar">Календарь</h2>
adb shell content query --uri content://com.android.calendar/events

<h2 id="kniga-kontaktov">Книга контактов</h2>
adb shell content query --uri content://com.android.contacts/contacts


Пользовательские content provider приложений:

bash
<h2 id="whatsapp-content-provider-esli-dostupen">WhatsApp content provider (если доступен)</h2>
adb shell content query --uri content://com.whatsapp.provider.contacts/contacts

<h2 id="facebook-content-provider">Facebook content provider</h2>
adb shell content query --uri content://com.facebook.katana.provider


Работа с Android Keystore


Извлечение ключей шифрования:

bash
<h2 id="raspolozhenie-keystore">Расположение keystore</h2>
adb shell find /data -name "*.ks" -o -name "*keystore*"

<h2 id="android-keystore-api-18">Android Keystore (API 18+)</h2>
/data/misc/keystore/

<h2 id="izvlechenie-trebuetsya-root">Извлечение (требуется root)</h2>
adb shell su -c "cp /data/misc/keystore/user_0/* /sdcard/"
adb pull /sdcard/* ./


Доступ к защищенным разделам


Извлечение из /data/system:

bash
<h2 id="sistemnye-nastroyki">Системные настройки</h2>
adb shell cp /data/system/users/0/settings_secure.xml /sdcard/
adb pull /sdcard/settings_secure.xml .

<h2 id="logi-prilozheniy">Логи приложений</h2>
adb shell cp /data/system/appusagestats/* /sdcard/
adb pull /sdcard/*usage* ./


Работа с FDE (Full Disk Encryption):

bash
<h2 id="proverka-statusa-shifrovaniya">Проверка статуса шифрования</h2>
adb shell getprop ro.crypto.state

<h2 id="dlya-zashifrovannyh-ustroystv-trebuetsya-parol-ekrana">Для зашифрованных устройств требуется пароль экрана</h2>
<h2 id="ili-ispolzovanie-spetsializirovannyh-instrumentov">или использование специализированных инструментов</h2>


Продвинутые техники с логами


Извлечение подробных логов:

bash
<h2 id="vklyuchenie-verbose-logging">Включение verbose logging</h2>
adb shell setprop log.tag.Verbose VERBOSE

<h2 id="radio-logs-telefoniya">Radio logs (телефония)</h2>
adb logcat -b radio

<h2 id="events-logs">Events logs</h2>
adb logcat -b events

<h2 id="main-logs-s-filtrami">Main logs с фильтрами</h2>
adb logcat | grep -i "whatsapp\|telegram"


Анализ kernel logs:

bash
<h2 id="kernel-ring-buffer">Kernel ring buffer</h2>
adb shell dmesg

<h2 id="sohranenie-kernel-logs">Сохранение kernel logs</h2>
adb shell dmesg > kernel_ring_buffer.txt

<h2 id="analiz-na-predmet-sboev">Анализ на предмет сбоев</h2>
grep -i "crash\|panic\|error" kernel_ring_buffer.txt


Работа с Android Runtime (ART)


Извлечение ART кэша:

bash
<h2 id="art-cache-raspolozhenie">ART cache расположение</h2>
adb shell find /data/dalvik-cache -name "*.dex" | head -10

<h2 id="izvlechenie-compiled-code">Извлечение compiled code</h2>
adb shell cp /data/dalvik-cache/arm64/* /sdcard/ 2>/dev/null
adb pull /sdcard/*art* ./


Reverse Engineering приложений


Декомпиляция APK:

bash
<h2 id="ispolzovanie-apktool">Использование apktool</h2>
apktool d app.apk -o decoded_app/

<h2 id="prosmotr-manifesta">Просмотр манифеста</h2>
cat decoded_app/AndroidManifest.xml

<h2 id="prosmotr-resursov">Просмотр ресурсов</h2>
ls decoded_app/res/

<h2 id="prosmotr-smali-koda">Просмотр smali кода</h2>
ls decoded_app/smali/


Анализ с помощью JADX:

bash
<h2 id="dekompilyatsiya-v-java">Декомпиляция в Java</h2>
jadx app.apk -d decompiled_java/

<h2 id="poisk-chuvstvitelnyh-dannyh">Поиск чувствительных данных</h2>
grep -r "password\|key\|secret" decompiled_java/


Работа с Android Intents


Отправка intent для извлечения данных:

bash
<h2 id="zapusk-eksporta-dannyh">Запуск экспорта данных</h2>
adb shell am broadcast -a com.android.intent.action.REQUEST_BACKUP -n com.android.backupconfirm/.BackupRestoreConfirmation

<h2 id="prinuditelnyy-damp-pamyati">Принудительный дамп памяти</h2>
adb shell am dumpheap com.whatsapp /sdcard/whatsapp_heap.hprof

<h2 id="zapusk-servisa-dlya-logirovaniya">Запуск сервиса для логирования</h2>
adb shell am startservice -n com.example/.DataLoggerService


Продвинутые скрипты автоматизации


Скрипт полного forensic acquisition:

bash
#!/bin/bash
<h2 id="prodvinutyy-skript-izvlecheniya-dannyh-android">Продвинутый скрипт извлечения данных Android</h2>

DEVICE_ID=${1:-$(adb devices | grep -v "List" | head -1 | awk '{print $1}')}
OUTPUT_DIR="android_forensic_$(date +%Y%m%d_%H%M%S)"

mkdir -p $OUTPUT_DIR/{system,user,apps,logs,backup}

echo "=== ANDROID FORENSIC ACQUISITION ==="
echo "Устройство: $DEVICE_ID"
echo "Выход: $OUTPUT_DIR"

<h2 id="sistemnaya-informatsiya">Системная информация</h2>
echo "Сбор системной информации..."
adb -s $DEVICE_ID shell getprop > $OUTPUT_DIR/system/properties.txt
adb -s $DEVICE_ID shell dumpsys battery > $OUTPUT_DIR/system/battery.txt
adb -s $DEVICE_ID shell df -h > $OUTPUT_DIR/system/disk_usage.txt

<h2 id="polzovatelskie-dannye">Пользовательские данные</h2>
echo "Извлечение пользовательских данных..."
adb -s $DEVICE_ID shell content query --uri content://sms > $OUTPUT_DIR/user/sms.txt
adb -s $DEVICE_ID shell content query --uri content://call_log/calls > $OUTPUT_DIR/user/calls.txt
adb -s $DEVICE_ID shell content query --uri content://contacts/phones > $OUTPUT_DIR/user/contacts.txt

<h2 id="prilozheniya">Приложения</h2>
echo "Извлечение данных приложений..."
adb -s $DEVICE_ID shell pm list packages -f > $OUTPUT_DIR/apps/installed_apps.txt

<h2 id="popytka-backup-populyarnyh-prilozheniy">Попытка backup популярных приложений</h2>
for app in com.whatsapp org.telegram.messenger com.android.chrome; do
if adb -s $DEVICE_ID shell pm list packages | grep -q $app; then
echo "Backup $app..."
adb -s $DEVICE_ID backup -f $OUTPUT_DIR/backup/${app}.ab $app 2>/dev/null || echo "Backup $app failed"
fi
done

<h2 id="logi">Логи</h2>
echo "Сбор логов..."
adb -s $DEVICE_ID logcat -d > $OUTPUT_DIR/logs/logcat.txt
adb -s $DEVICE_ID shell dmesg > $OUTPUT_DIR/logs/dmesg.txt

<h2 id="media-fayly-vyborka">Медиа файлы (выборка)</h2>
echo "Извлечение медиафайлов..."
adb -s $DEVICE_ID shell find /sdcard/DCIM -name "*.jpg" | head -50 | while read file; do
filename=$(basename "$file")
adb -s $DEVICE_ID pull "$file" "$OUTPUT_DIR/user/media/" 2>/dev/null
done

<h2 id="generatsiya-otcheta">Генерация отчета</h2>
cat > $OUTPUT_DIR/report.txt << EOF
ANDROID FORENSIC ACQUISITION REPORT
===================================

Дата: $(date)
Устройство: $DEVICE_ID
Метод: ADB extraction

СОДЕРЖИМОЕ:
- Системная информация: $(ls $OUTPUT_DIR/system/ | wc -l) файлов
- Пользовательские данные: $(ls $OUTPUT_DIR/user/ | wc -l) файлов
- Данные приложений: $(ls $OUTPUT_DIR/apps/ | wc -l) файлов
- Backup: $(ls $OUTPUT_DIR/backup/ 2>/dev/null | wc -l) файлов
- Логи: $(ls $OUTPUT_DIR/logs/ | wc -l) файлов

ХЭШ-СУММЫ:
$(find $OUTPUT_DIR -type f -exec sha256sum {} \; | sed 's|'$OUTPUT_DIR'/||')

ПРИМЕЧАНИЯ:
- Для расшифровки backup файлов используйте ABE
- SQLite базы анализируйте с помощью sqlite3
- Медиа файлы проверяйте на метаданные
EOF

echo "Извлечение завершено: $OUTPUT_DIR"
echo "Отчет: $OUTPUT_DIR/report.txt"


Скрипт анализа извлеченных данных:

bash
#!/bin/bash
<h2 id="analiz-izvlechennyh-android-dannyh">Анализ извлеченных Android данных</h2>

DATA_DIR=$1

if [ -z "$DATA_DIR" ]; then
echo "Использование: $0 <директория_с_данными>"
exit 1
fi

echo "=== АНАЛИЗ ANDROID ДАННЫХ ==="

<h2 id="analiz-sms">Анализ SMS</h2>
if [ -f "$DATA_DIR/user/sms.txt" ]; then
SMS_COUNT=$(wc -l < "$DATA_DIR/user/sms.txt")
echo "SMS сообщений: $SMS_COUNT"

# Анализ типов сообщений
INCOMING=$(grep "type=1" "$DATA_DIR/user/sms.txt" | wc -l)
OUTGOING=$(grep "type=2" "$DATA_DIR/user/sms.txt" | wc -l)
echo "Входящих: $INCOMING, Исходящих: $OUTGOING"
fi

<h2 id="analiz-zvonkov">Анализ звонков</h2>
if [ -f "$DATA_DIR/user/calls.txt" ]; then
CALL_COUNT=$(wc -l < "$DATA_DIR/user/calls.txt")
echo "Записей звонков: $CALL_COUNT"
fi

<h2 id="analiz-prilozheniy">Анализ приложений</h2>
if [ -f "$DATA_DIR/apps/installed_apps.txt" ]; then
APP_COUNT=$(wc -l < "$DATA_DIR/apps/installed_apps.txt")
echo "Установленных приложений: $APP_COUNT"

# Поиск подозрительных приложений
SUSPICIOUS=$(grep -E "(spy|monitor|track|keylog)" "$DATA_DIR/apps/installed_apps.txt" | wc -l)
echo "Подозрительных приложений: $SUSPICIOUS"
fi

<h2 id="analiz-logov">Анализ логов</h2>
if [ -f "$DATA_DIR/logs/logcat.txt" ]; then
ERROR_COUNT=$(grep -i "error\|exception\|crash" "$DATA_DIR/logs/logcat.txt" | wc -l)
echo "Ошибок в логах: $ERROR_COUNT"
fi

echo "Анализ завершен"


Интеграция с forensic инструментами


Использование с Autopsy:

bash
<h2 id="sozdanie-obraza-android-razdela">Создание образа Android раздела</h2>
adb shell su -c "dd if=/dev/block/dm-0 of=/sdcard/android_image.dd bs=4M"
adb pull /sdcard/android_image.dd .

<h2 id="otkrytie-v-autopsy-kak-logicheskiy-obraz">Открытие в Autopsy как логический образ</h2>
<h2 id="autopsy-avtomaticheski-raspoznaet-android-strukturu">Autopsy автоматически распознает Android структуру</h2>


Работа с Cellebrite UFED:

ADB можно использовать для подготовки устройств перед использованием профессиональных инструментов:

bash
<h2 id="vklyuchenie-vseh-razresheniy">Включение всех разрешений</h2>
adb shell pm grant com.cellebrite.ufed com.android.permission.READ_SMS
adb shell pm grant com.cellebrite.ufed com.android.permission.READ_CONTACTS

<h2 id="predvaritelnoe-izvlechenie">Предварительное извлечение</h2>
adb backup -all -f pre_extraction.ab


Продвинутые техники позволяют получить доступ к данным, недоступным стандартными методами. В следующем разделе мы рассмотрим работу с rooted устройствами и расширенные возможности.

Работа с rooted устройствами


Root доступ предоставляет неограниченные возможности для извлечения данных с Android устройств. Root позволяет обходить системные ограничения и получать доступ к защищенным файлам и разделам.

Проверка root статуса


Определение наличия root:

bash
<h2 id="proverka-su-binarnogo-fayla">Проверка su бинарного файла</h2>
adb shell which su

<h2 id="popytka-vypolneniya-su-komandy">Попытка выполнения su команды</h2>
adb shell su -c 'id'

<h2 id="proverka-root-prilozheniy">Проверка root приложений</h2>
adb shell pm list packages | grep -i "supersu\|magisk\|kingsu"

<h2 id="proverka-sistemnyh-svoystv">Проверка системных свойств</h2>
adb shell getprop ro.build.tags | grep -i test-keys


Идентификация типа root:

bash
<h2 id="supersu">SuperSU</h2>
adb shell ls /system/xbin/su 2>/dev/null && echo "SuperSU detected"

<h2 id="magisk">Magisk</h2>
adb shell ls /sbin/.magisk/ 2>/dev/null && echo "Magisk detected"

<h2 id="kingroot">KingRoot</h2>
adb shell pm list packages | grep kingroot && echo "KingRoot detected"


Извлечение системных данных с root


Доступ к /data/data с root:

bash
<h2 id="polnyy-dostup-k-dannym-prilozheniy">Полный доступ к данным приложений</h2>
adb shell su -c 'find /data/data -name "*.db" -type f'

<h2 id="izvlechenie-vseh-baz-dannyh">Извлечение всех баз данных</h2>
adb shell su -c 'for db in $(find /data/data -name "*.db"); do cp "$db" /sdcard/; done'

<h2 id="skachivanie">Скачивание</h2>
adb pull /sdcard/*.db ./root_databases/


Извлечение системных логов:

bash
<h2 id="root-logi">Root логи</h2>
adb shell su -c 'cat /data/misc/logd/*'

<h2 id="system-logs">System logs</h2>
adb shell su -c 'find /data -name "*.log" -exec cat {} \;'

<h2 id="kernel-logs-s-root">Kernel logs с root</h2>
adb shell su -c 'dmesg | grep -i error'


Работа с шифрованными разделами


Расшифровка FDE с root:

bash
<h2 id="proverka-statusa-shifrovaniya">Проверка статуса шифрования</h2>
adb shell su -c 'getprop ro.crypto.state'

<h2 id="dlya-fde-poluchenie-klyucha-slozhno">Для FDE получение ключа (сложно)</h2>
adb shell su -c 'cat /data/system/locksettings.db'

<h2 id="rasshifrovka-razdela-trebuet-spetsializirovannyh-instrumentov">Расшифровка раздела (требует специализированных инструментов)</h2>


Доступ к hardware компонентам


Извлечение IMEI и серийных номеров:

bash
<h2 id="imei-cherez-root">IMEI через root</h2>
adb shell su -c 'service call iphonesubinfo 1 | cut -c 52-66 | tr -d ".[:space:]"'

<h2 id="seriynyy-nomer-ustroystva">Серийный номер устройства</h2>
adb shell su -c 'getprop ro.serialno'

<h2 id="hardware-informatsiya">Hardware информация</h2>
adb shell su -c 'cat /proc/cpuinfo'
adb shell su -c 'cat /proc/meminfo'


Извлечение удаленных данных


Восстановление из нераспределенного пространства:

bash
<h2 id="sozdanie-obraza-userdata-razdela">Создание образа userdata раздела</h2>
adb shell su -c 'dd if=/dev/block/by-name/userdata of=/sdcard/userdata.img bs=4M'

<h2 id="skachivanie-obraza">Скачивание образа</h2>
adb pull /sdcard/userdata.img .

<h2 id="analiz-obraza-na-predmet-udalennyh-faylov">Анализ образа на предмет удаленных файлов</h2>
<h2 id="ispolzovanie-tools-vrode-autopsy-ftk-ili-testdisk">Использование tools вроде autopsy, ftk, или testdisk</h2>


Восстановление удаленных приложений:

bash
<h2 id="poisk-udalennyh-apk-v-data-app">Поиск удаленных APK в /data/app</h2>
adb shell su -c 'find /data/app -name "*.apk" -mtime +1'

<h2 id="vosstanovlenie-udalennyh-prilozheniy">Восстановление удаленных приложений</h2>
adb shell su -c 'pm install /data/app/com.example.app-1/base.apk'


Модификация системы для форензики


Включение дополнительных логов:

bash
<h2 id="vklyuchenie-verbose-logging">Включение verbose logging</h2>
adb shell su -c 'setprop log.tag.Verbose VERBOSE'

<h2 id="vklyuchenie-kernel-debugging">Включение kernel debugging</h2>
adb shell su -c 'echo 1 > /proc/sys/kernel/printk'

<h2 id="vklyuchenie-audit-logging">Включение audit logging</h2>
adb shell su -c 'auditctl -e 1'


Безопасность при работе с root


Риски root доступа:

- Потенциальное повреждение системы
- Нарушение chain of custody
- Изменение временных меток файлов
- Активация анти-root механизмов

Рекомендации:

bash
<h2 id="sozdanie-kopii-pered-modifikatsiyami">Создание копии перед модификациями</h2>
adb shell su -c 'cp /system/build.prop /system/build.prop.backup'

<h2 id="dokumentirovanie-vseh-deystviy">Документирование всех действий</h2>
echo "$(date): Root command executed: $COMMAND" >> root_actions.log

<h2 id="proverka-tselostnosti-posle-izvlecheniya">Проверка целостности после извлечения</h2>
adb shell su -c 'find /data/data -exec sha256sum {} \; 2>/dev/null > /sdcard/hashes.txt'
adb pull /sdcard/hashes.txt .


Скрипты для root устройств


Комплексный root extraction скрипт:

bash
#!/bin/bash
<h2 id="skript-izvlecheniya-dannyh-s-root-ustroystva">Скрипт извлечения данных с root устройства</h2>

OUTPUT_DIR="root_extraction_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR/{system,data,root}

echo "=== ROOT EXTRACTION SCRIPT ==="

<h2 id="proverka-root">Проверка root</h2>
if ! adb shell su -c 'echo "Root access confirmed"' 2>/dev/null; then
echo "ERROR: Root access required"
exit 1
fi

echo "Root access confirmed"

<h2 id="sistemnye-dannye">Системные данные</h2>
echo "Extracting system data..."
adb shell su -c 'cp /data/system/packages.xml /sdcard/'
adb shell su -c 'cp /data/system/users/0/accounts.db /sdcard/'
adb shell su -c 'find /data/system -name "*.key" -exec cp {} /sdcard/ \;'

adb pull /sdcard/packages.xml $OUTPUT_DIR/system/
adb pull /sdcard/accounts.db $OUTPUT_DIR/system/
adb pull /sdcard/*.key $OUTPUT_DIR/system/ 2>/dev/null

<h2 id="dannye-prilozheniy-vse-bazy-dannyh">Данные приложений (все базы данных)</h2>
echo "Extracting application databases..."
adb shell su -c 'find /data/data -name "*.db" -exec cp {} /sdcard/databases/ \; 2>/dev/null; find /data/data -name "*.sqlite" -exec cp {} /sdcard/databases/ \; 2>/dev/null'

adb pull /sdcard/databases/ $OUTPUT_DIR/data/

<h2 id="root-specific-dannye">Root specific данные</h2>
echo "Extracting root-specific data..."
adb shell su -c 'cp /system/xbin/su /sdcard/'
adb shell su -c 'ls -la /data/local/tmp/ > /sdcard/tmp_files.txt'
adb shell su -c 'ps aux > /sdcard/processes.txt'

adb pull /sdcard/su $OUTPUT_DIR/root/
adb pull /sdcard/tmp_files.txt $OUTPUT_DIR/root/
adb pull /sdcard/processes.txt $OUTPUT_DIR/root/

<h2 id="ochistka">Очистка</h2>
adb shell rm /sdcard/packages.xml /sdcard/accounts.db 2>/dev/null
adb shell rm -rf /sdcard/databases/ 2>/dev/null

echo "Extraction completed: $OUTPUT_DIR"


Анализ root артефактов


Проверка на наличие руткитов:

bash
<h2 id="poisk-podozritelnyh-protsessov">Поиск подозрительных процессов</h2>
adb shell su -c 'ps aux | grep -v -E "(root|shell|system|zygote)"'

<h2 id="proverka-integrity-sistemnyh-faylov">Проверка integrity системных файлов</h2>
adb shell su -c 'sha256sum /system/bin/su'

<h2 id="analiz-loaded-moduley">Анализ loaded модулей</h2>
adb shell su -c 'lsmod'


Восстановление после root модификаций:

bash
<h2 id="vosstanovlenie-originalnyh-faylov">Восстановление оригинальных файлов</h2>
adb shell su -c 'cp /system/build.prop.backup /system/build.prop'

<h2 id="ochistka-root-sledov">Очистка root следов</h2>
adb shell su -c 'rm -rf /data/local/tmp/*'
adb shell su -c 'pm uninstall com.example.rootapp'


Root доступ значительно расширяет возможности извлечения данных, но требует особой осторожности. В следующем разделе мы рассмотрим интеграцию ADB с другими forensic инструментами.

Интеграция с другими инструментами


ADB редко используется изолированно. Для комплексного анализа необходима интеграция с другими инструментами мобильной форензики.

Интеграция с Autopsy


Импорт ADB данных в Autopsy:

bash
<h2 id="sozdanie-modulya-autopsy-dlya-adb">Создание модуля Autopsy для ADB</h2>
<h2 id="autopsy-mozhet-avtomaticheski-analizirovat-izvlechennye-adb-dannye">Autopsy может автоматически анализировать извлеченные ADB данные</h2>
<h2 id="podderzhka-android-moduley-v-autopsy">Поддержка Android модулей в Autopsy</h2>


Работа с Cellebrite UFED


Подготовка устройства для UFED:

bash
<h2 id="vklyuchenie-razresheniy-cherez-adb">Включение разрешений через ADB</h2>
adb shell pm grant com.cellebrite.mobile.forensics android.permission.READ_SMS
adb shell pm grant com.cellebrite.mobile.forensics android.permission.READ_CONTACTS

<h2 id="predvaritelnoe-izvlechenie">Предварительное извлечение</h2>
adb backup -all -f cellebrite_prep.ab


Интеграция с Oxygen Forensic Detective


Экспорт данных для Oxygen:

bash
<h2 id="sozdanie-sovmestimogo-formata">Создание совместимого формата</h2>
adb shell content query --uri content://sms > oxygen_sms.txt
adb shell content query --uri content://call_log/calls > oxygen_calls.txt


Работа с Magnet AXIOM


ADB в Magnet AXIOM workflow:

bash
<h2 id="axiom-mozhet-ispolzovat-adb-dlya-live-acquisition">AXIOM может использовать ADB для live acquisition</h2>
<h2 id="integratsiya-cherez-axiom-android-modules">Интеграция через AXIOM Android modules</h2>


Скрипты автоматизации


Комплексный forensic workflow:

bash
#!/bin/bash
<h2 id="integrirovannyy-skript-s-ispolzovaniem-neskolkih-instrumentov">Интегрированный скрипт с использованием нескольких инструментов</h2>

<h2 id="1-adb-extraction">1. ADB extraction</h2>
adb shell content query --uri content://sms > sms.txt

<h2 id="2-sqlite-analysis">2. SQLite analysis</h2>
sqlite3 whatsapp.db "SELECT * FROM messages;" > whatsapp_messages.txt

<h2 id="3-timeline-creation">3. Timeline creation</h2>
fls -f ntfs -o 1048576 -m disk.img > timeline.txt

<h2 id="4-report-generation">4. Report generation</h2>
cat > final_report.txt << EOF
FORENSIC REPORT
$(date)

ADB Data:
- SMS: $(wc -l < sms.txt)
- WhatsApp: $(wc -l < whatsapp_messages.txt)

Timeline events: $(wc -l < timeline.txt)
EOF


Ограничения и подводные камни


Несмотря на мощные возможности ADB, существуют значительные ограничения.

Основные ограничения


Без root доступа:
- Ограниченный доступ к /data/data
- Невозможность извлечения системных данных
- Ограничения на шифрованные разделы

Современные версии Android:
- Усиленная безопасность (Android 10+)
- Ограничения на background execution
- Scoped storage limitations

Hardware ограничения:
- Заблокированные bootloader
- Encrypted storage
- Secure boot mechanisms

Судебные ограничения


Chain of custody:
- ADB может модифицировать данные
- Необходимость документирования всех действий
- Риск contamination доказательств

Экспертная квалификация:
- Требуется глубокое понимание Android
- Необходимость сертификации для суда

Реальный кейс расследования


Сценарий: Расследование корпоративного шпионажа с использованием Android устройства.

Этапы:
1. Получение устройства с ордером
2. Включение USB debugging
3. Подключение через ADB
4. Извлечение WhatsApp переписки
5. Анализ геолокационных данных
6. Восстановление удаленных файлов

Результат: Обнаружены доказательства передачи коммерческой тайны конкурентам.

Часто задаваемые вопросы


Требуется ли root для ADB?
Нет, но root значительно расширяет возможности.

Можно ли извлечь данные с заблокированного устройства?
Ограниченно. Требуется разблокировка или специальные инструменты.

Как обеспечить судебную достоверность?
Документируйте все действия, используйте write-blocker, проверяйте хэши.

Какие Android версии поддерживаются?
ADB работает со всеми версиями Android, но возможности различаются.

Заключение


ADB является фундаментальным инструментом мобильной форензики, предоставляющим широкие возможности для извлечения данных с Android устройств. От базовых команд до продвинутых техник с root доступом, ADB позволяет получить доступ к контактам, сообщениям, приложениям и системным данным.

Ключевые преимущества: бесплатность, универсальность, возможность автоматизации. Основные ограничения: зависимость от root для полного доступа, ограничения современных Android версий.

Рекомендации:
- Начинайте с изучения официальной документации
- Практикуйтесь на тестовых устройствах
- Соблюдайте судебные процедуры
- Комбинируйте ADB с другими инструментами

Полезные ресурсы:
- Android Developer Documentation
- Mobile Forensics books
- Forensic Focus forums

Удачи в мобильной криминалистике!

---

**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.