Biokaminy-lux.ru

Все про ремонт быт. техники
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ещё немного про телефоны Xiaomi и борьбу с ними. Updated

Ещё немного про телефоны Xiaomi и борьбу с ними. Updated

image

Честно признаться, у меня не было планов писать и публиковать эту статью, но, после того, как за два месяца увидел в ближнем кругу коллег 5 штук свежеприобретённых телефонов от Xiaomi, и недавнюю статью на Geektimes, рекламирующую управление умным домом от Xiaomi, ко мне пришла совесть и, сцуко, потребовала поделиться знанием с остальными.

Для начала небольшая вводная часть для тех кто не в теме. Есть такая компания Xiaomi, которая делает неплохие по начинке телефоны и заливает в них кастомизированный Android. Бизнес модель, как недавно официально было заявлено — «По сути мы раздаём наши смартфоны, не зарабатывая на этом денег. Нас больше заботят долгосрочные источники дохода. Мы могли бы продать 10 миллиардов смартфонов и не заработать на них ни цента». Источник раз и два.

Заглянув в сентябрьскую статью на Security lab и ещё вот в эту жалобу, у меня лично возникло ощущение, что телефон Xiaomi это что-то типа поводка на котором владельца водит Большой брат (утрирую, конечно же).

Это и стало основным мотивом проведения исследования поведения телефона Xiaomi redmi 3S
с прошивкой MIUI Global 8.1 Стабильная 8.1.1.0 (MALMIDI)

Исследование подопытного кролика и обнаружение проблемы
Беру новенький телефон из коробки. Включаю его и прохожу через мастера начальной настройки, предварительно включив запись трафика на Wi-Fi роутере. Ровно через две секунды, после того как телефон подключился к точке доступа, началось скачивание файла размером около 8Мбайт с одного из серверов Xiaomi. Это был обычный zip архив, внутри которого лежала куча всего и, в том числе, файл AnalyticsCore.apk, упомянутый в статье на SecurityLab.

Дальше — больше. В общей сложности, за всё время наблюдения, я насчитал чуть меньше восьми десятков имён серверов в разных доменах. Сразу оговорюсь, что в этом числе нет серверов Google и Facebook, приложения которых также предустановлены. Просто потому что я их считал отдельно. С ними тоже всё «весело».

Большая часть коннектов к серверам Xiaomi шла через HTTPS, поэтому разобраться в деталях ЧТО именно передаётся напрямую возможности не было. Отключение всевозможных логинов, синхронизаций и т.п. к исчезновению этого трафика не привело.

Дополнительно смущало то, что большей частью запросы были небольшими (объём принятого переданного трафика TCP сессий не превышал 1-2Кб), но, т.к. наши сотовые операторы округляют объём трафика вверх (Например, Tele2 до 150Кб), то, при неудачном совпадении, можно «накачать» таким образом существенные объёмы трафика, а в роуминге неожиданно попасть на деньги.

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

Предварительные условия

Первое что необходимо — это рутовать телефон. Как это делается в случае Xiaomi я здесь описывать не буду, отсылаю желающих пройти этот путь к полной версии этой статьи (ссылка в конце).
Второе — это влить в телефон прошивку через кабель и стереть ВСЕ пользовательские данные.
Третье — телефон НЕ ДОЛЖЕН иметь доступа в интернет после залива свежей прошивки.
Update. До момента установки нижеописываемых ограничений, разумеется.

Disclamier. Все дальнейшие манипуляции над телефоном Вы делаете на свой страх и риск.
Ответственность за любой результат лежит на том, кто именно делал описываемые ниже действия.

Читайте так же:
Установка операционной системы freebsd

Небольшая техническая вводная часть

Серверы, к которым обращается телефон, в большинстве своём расположены в облаке Amazon, поэтому обращения к ним происходит по именам, которые ресолвятся через round-robin DNS в разные IP адреса из разных подсетей /16. Блокировать их все по подсетям смысла особого нет — так можно половину интернета отфильтровать, что не есть хорошо. Блокировать по именам — хорошо, но не факт, что имена хостов из L3 доменов не генерируются динамически. Идеально было бы прибить все приложения, которые обращаются к серверам Xiaomi, но, как показала практика, глубина их интеграции в Android такова, что после удаления некоторых из них телефон может просто отказаться загружаться.

Далее. К внешним серверам обращается не один процесс, а многие, при этом задачу усложняет наличие в Android UID sharing, когда под одним UID могут генерировать сетевой трафик разные процессы (приложения). Более того, один из полезных процессов (отвечающий за GPS) надо выпускать во внешний мир, чтобы скачивать небольшие обновления, но при этом он сидел под тем же UID, что и восемь штук процессов, рвущихся к серверам Xiaomi.

Также надо упомянуть про ограниченность инструментария, доступного для решения вышеописанных задач, т.к. большая часть приложений имеющих в названии firewall доступных на Play Market работают через т.н. VPN, т.е. от сливов информации до запуска приложения они не защищают.

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

В отличие от обычного Linux, где есть файлы конфигурации и стартовые скрипты, лежащие в /etc, в Android всё сделано несколько иначе. Общее управление сетью осуществляет Connection Manager, который дёргает системный демон netd, который, в свою очередь, вызывает iptables с определёнными параметрами командной строки. Соответственно, вызывать IPtables из скрипта начальной загрузки (init и прочих) особого смысла нет — netd при старте всё равно вызовет iptables, очистит правила и зальёт свои.

Единственный выход оставленный Google — писать необходимые команды конфигурации iptables в скрипте /system/bin/oem-iptables-init.sh. Путь к этому скрипту и его имя жёстко прописаны внутри исходного кода демона netd.

Для фильтрации статических имён хостов можно редактировать файл /etc/hosts, но при этом надо помнить про их количество и возможность их динамической генерации.
Дальше будет рассказ как это всё делалось.

Удаление и заморозка (если нет уверенности) ненужных программ

При помощи бесплатной версии Titanium Backup можно посмотреть соответствие между именем программы, показываемое в системе (Play Market), её кодовым именем (com.google.vending) и, при необходимости, удалить то, что явно не нужно.

Недостаток бесплатной версии — не умеет делать заморозку программ, посему заморозку делаем через ADB shell при помощи package manager. Пример:

Фильтрация сетевых запросов

Disclamier 2.В данной статье описано КАК можно фильтровать «левую» сетевую активность телефона. Что конкретно фильтровать — каждый волен решать сам.

Как это можно делать.

1. Cамое простое — заполнение файла /etc/hosts записями имён серверов c IP адресом 127.0.0.1. Мой набор серверов лежит на Google Drive в папке Files.
Недостаток варианта — невозможность блокировки неизвестных и динамически генерируемых имён хостов и доменов L3/L4.

Читайте так же:
Программы синхронизации для пантек

Update. Несколько раз обнаруживал странное поведение Netfilter/IPtables. После загрузки телефона в таблице действующих правил оказывались не все правила, перечисленные в скрипте. Если перезагрузить телефон ещё раз — все правила оказывались на месте. Прям шайтан-машина, а не телефон.
В документации нашёл описание параметра —wait, который вроде бы должен решать эту проблему. Но, для гарантированного решения проблемы, сделал ещё вызов IPtables из скрипта не напрямую, а через несложную функцию, которая проверяет код завершения и, при необходимости, повторно выполняет команду с небольшой задержкой, опять же проверяя результат.

2. пишем команды фильтрация отправки пакетов на подсети /16 и /24 стандартными правилами Netfilter/IPtables в файл oem-iptables-init.sh. Здесь их не описываю, желающие напишут их сами, либо найдут в полной версии статьи.
Update. Недостаток варианта — большая часть серверов расположена в облаке Amazon и имеет переменные (round-robin DNS) IP адреса. Для гарантированной их фильтрации придётся закрыть не один десяток подсетей /16, что не есть хорошо. Можно ненароком забанить и полезные сайты. Но для статичных хостов (если их немного) это решение вполне подходит.

3. Фильтруем DNS запросы к ненужным нам доменам. Это несколько сложнее, поэтому опишу подробнее.

Updated.В составе IPtables, штатно идущем в Android есть модули расширения функционала, которыми мы дальше и воспользуемся. Помня, что DNS запросы отправляет система (UID 0) пишем правило:

Updated. Первая строчка отфильтрует все UDP пакеты, отправленные системой (UID 0) на 53 UDP порт любого IP адреса и содержащие в себе байты 046d69756903636f6d00 (запросы к DNS серверу содержащие в себе .miui.com). IPtables самостоятельно преобразуют строчку |04|miui|03|com|00| в чисто шестнадцатиричый вид 046d69756903636f6d00.
Наличие шестнадцатиричной цифры на первой позиции для параметра —hex-string — обязательно, иначе IPtables не примет команду. Точки-разделители в доменном имени при формировании DNS запроса преобразуются в шестнадцатиричные цифры, означающие количество байт до следующего разделителя. Поэтому последний байт равен нулю (00h).

Вторая строчка пропустит все остальные DNS запросы. Комментарии я указал для удобства, чтобы команда iptables -L -v показывала результаты блокировок нагляднее.

4. Для работы Assited GPS необходимо дать возможность доступа к серверам QualComm процессу с UID 1000. Здесь всё сложнее, т.к. простая фильтрация пакетов по содержимому, как в случае DNS серверов, не сработает — начальные пакеты установления TCP соединения c флагами SYN, ACK ещё НЕ содержат в себе имя хоста, которое обязательно присутствует в HTTP запросе, а пакеты идущие после заголовка HTTP запроса уже могут не содержать в себе имя хоста. В результате фильтр пропустит из всей TCP сессии только часть пакетов, что равносильно её запрету или обрыву.
Поэтому рисуем вот такой костыль для фильтрации запросов седьмого уровня средствами 3-4 уровня:

5. Фильтруем доступ в интернет по приложениям (у меня Google Chrome имел UID 10060). Разрешаем выход в интернет Google Chrome и запрещаем всем остальным приложениям.

Слабым местом этого способа фильтрации является его опора на наличие отметки UID на каждом конкретном пакете при прохождении его через Netfilter/IPtables. Обнаружилось это по непонятным TCP соединениям к серверам Google, пакеты которых не содержали UID. Исследование показало, что эти пакеты инициированы процессом Google Captive portal login. Я решил эту проблему обходным путём — просто выключив эти запросы командами в ADB shell:

Читайте так же:
Ошибка при установке системы 0xc000000f

Радует, что (судя по накопленной статистике за несколько суток перехвата Wi-Fi трафика), никаких иных системных процессов отсылающих пакеты без UID в исследовавшемся телефоне нет.

Update. Дальнейшее наблюдение показало как я ошибался. Такие «тихие» процессы есть, но часть из них невинно общается друг с другом через адрес 127.0.0.1, что ненаказуемо.
Всё остальное надо банить.
Поэтому, для их правильной фильтрации, надо добавить в самое начало скрипта ещё две строчки:

Update. Уже после опубликования статьи для меня окончательно стало ясно, что UID приложений, задаваемый системой при установке приложения, при обновлении и/или переустановке приложений может непредсказуемым образомменяться. Следовательно, доступ в интернет для приложения тоже отвалится и надо будет переписывать правило Netfilter/IPtables заново.
Для решения этой проблемы набросал небольшой кусок скрипта, который читает из хвоста файла наименования приложений, проверяет их наличие в системной базе приложений, и, при наличии, берёт оттуда же UID приложения и динамически (в процессе работы скрипта) формирует правило Netfilter/IPtables.
Строго говоря — чтение параметров из тела скрипта — это тоже костыль. Но меня оправдывает то, что на момент работы скрипта, подмонтировать файловую систему доступную снаружи при обычной работе телефона — невозможно. В папке /dev нет соответствующих файлов устройств. Допускаю, что это может быть особенность прошивки конкретного телефона.
Текст специально сделал максимально подробным, для лучшего понимания.

После переустановки/обновления приложения нужно всего лишь перезагрузить телефон.

6. Для целей мониторинга работы правил Netfilter/IPtables можно добавить ещё вот такую строчку:

Параметр IP адрес отправителя (—source 10.1.30.42) можно опустить, но в этом случае лог будет завален записями сетевой активности процессов, завёрнутых на адрес 127.0.0.1 файлом hosts. Лог можно читать через команду dmesg (dmesg | grep IPtables) в ADB Shell.

Версию статьи, которая писалась как полная инструкция по решению этой проблемы с Xioami Redmi 3S я выложил на Google Drive. Сюда её выкладывать не рискнул именно из-за объёма.

Решение возникнувших проблем

Проблема

Если ни один способ не помог, то необходимо проверить провода на наличие повреждений. Для этого кабель осматривают и подключают к другому компьютеру.

Пользователь может воспользоваться специальной программой QCustomShortcut, предварительно скачав ее на Redmi 3S. Для этого потребуются роутер и доступ к Wi-Fi. Данная программа помогает получить доступ к подключению.

Проблема может быть связана и с самим смартфоном. В этом случае кардинальное решение — смена прошивки устройства. Не рекомендуется применять пиратские версии, чтобы не столкнуться со сбоем системы и другими неполадками. Обновление можно провести самостоятельно, используя режим Fastboot.

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

Чтобы перебросить файлы, можно использовать Bluetooth. Эта функция доступна для ноутбуков, но на персональном компьютере может отсутствовать. Иконка Bluetooth находится в меню «Пуск». Если она отсутствует, то нужно воспользоваться поиском.

После этого необходимо:

  • кликнуть по иконке правой кнопкой мыши;
  • выбрать строку с открытием параметров;
  • разрешить устройству Bluetooth искать смартфон;
  • активировать поиск удаленных устройств;
  • выбрать путь сохранения полученных файлов;
  • включить Bluetooth на гаджете;
  • открыть на компьютере функцию обнаружения телефона;
  • кликнуть по его названию правой кнопкой мыши;
  • выбрать управление.
Читайте так же:
Установка системы на ноутбук lenovo g50

Способ 3

Этот способ позволит осуществлять подключение и передачу данных без проводов. Для этого используется приложение ShareMe (раньше называлось Mi Drop). Важно понимать, что на смартфоне должна стоять прошивка не ниже MIUI 7. Поэтому подойдут все смартфоны, начиная с Xiaomi Mi5 (2016 год выпуска). Для этого способа нужно:

  1. Скачать ShareMe. Случается, что на некоторых моделях эта программа стоит по умолчанию.
  2. Зайти, дать все права, которые требует программа.
  3. Перейти в меню, которое находится в левой стороне и обозначается 3 черточками. Затем нужно нажать кнопку, которая будет предлагать подключение к ПК.
  4. Подключить телефон к сети WIFI, к которой присоединен компьютер. Затем нажать на кнопку «запустить».
  5. Выбрать вид подключения. Программа предложит 2 варианта, с паролем или без него. Если WIFI домашний, то можно выбрать вариант без пароля.
  6. В разделе мой/этот компьютер напечатать FTP адрес, который выдаст программа в смартфоне.
  7. В случае если адрес указан правильно, должен открыться доступ к файлам смартфона.

Эта программа начала устанавливаться по умолчанию только с 2018 года. То есть, например, для Xiaomi Mi Max (2016 год выпуска) программу необходимо скачивать в Google Play. На моделях Mi8 и Mi9 не требуется устанавливать этот софт, он должен располагаться в утилитах.

Если не помогает родная программа ShareMe, то рекомендуют воспользоваться другим похожим софтом, например, MyPhoneExplorer, который можно найти в Google Play. Данный способ не будет работать с Xiaomi Redmi 4x.

Где находится облачная Корзина на смартфонах Xiaomi

Корзина Галереи MIUI

Хранение удалённых картинок на гаджетах Сяоми предполагает синхронизацию с облачным хранилищем Mi Cloud. По сути, это корзина облачного диска пользователя. Её объём напрямую зависит от выделенного аккаунту размера хранилища.

Чтобы найти Корзину, откройте приложение Галерея и переключитесь во вкладку Альбомы. Под кнопкой справа вверху (три точки, расположенных по вертикали) находится контекстное меню с этим режимом.

12345.jpg

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

Чтобы вошла вся коллекция фотографий, разработчики Сяоми предлагают докупить свободное место.

27.jpg

Сейчас это стоит от 928 рублей за 50 Гб. Цена зависит от курса Гонконгского доллара и политики Xiaomi.

Корзина Фото Google

Если пользователь использует приложение Фото от Google, штатное приложение Android, то и искать копии удаленных фотографий надо там.

Нажмите на левую крайнюю кнопку с тремя полосками и выберите нужный пункт из контекстного меню.

25.jpg

Как и в случае с Mi Cloud, необходимо держать включённой синхронизацию с облачным хранилищем Google Диск.

Преимущества в сравнении с Mi Cloud:

Простая возможность управлять своими фотографиями с компьютера и иного устройства

На этом хранилище бесплатно выделяется больше места, что также очевидный плюс.

Корзина Яндекс Диска

У мобильного приложения Яндекс Диск есть полезная функция – Автозагрузка фотографий.

23.jpg

Как только пользователь снимает что-то на камеру смартфона Xiaomi или иного мобильного устройства, файл через Wi-Fi соединение отправляется в облако.

Фотографией легко поделиться, так как ссылка на облачное хранилище делается в один клик.

По различным акциям российским пользователям выделялось в свое время много места навсегда и бесплатно. У автора этой статьи, например, 242 Гб.

Читайте так же:
Как отключит синхронизацию google

Есть режим, когда изображения хранятся в облаке Яндекса, даже если локально вы удалили. Это позволит экономить место на карте мобильника, которого всегда не хватает.

Что делать, если USB подключение Xiaomi к компьютеру по-прежнему не работает

Первоначально надо постараться подключить Xiaomi к другому ПК, применив новый USB-кабель. Если соединение будет успешным (и появится опция передачи данных), то останется лишь найти причину проблемы. Она будет заключаться либо в неисправности USB-кабеля или порта, либо в настройках ПК. Далее следует действовать, исходя из полученных данных.

Если попытка подключения будет неудачной, то советуем воспользоваться альтернативными вариантами – например, передать файлы через облачное хранилище Mi Cloud или Гугл Диск. Также можно попробовать воспользоваться узконаправленным софтом вроде SHAREit.

Если и это не помогло, рекомендуем посмотреть прилагаемое видео. Там рассмотрен еще один вариант подключения телефона к ПК через USB – с помощью приложения BuildProp Editor.

Основные причины почему компьютер или ноутбук не видит подключенный через usb телефон андроид и что делать

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

Чтобы смартфон или планшет был виден компьютеру или ноутбуку, экран устройства должен быть разблокирован, а соединение USB включено для передачи файлов. Режим соединения всегда устанавливается по умолчанию только на зарядку.

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

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

Если виндовс и дальше не видит телефон попробуйте использовать другой USB порт на вашем компьютере, только не используйте концентратор или удлинительный кабель USB. Попробуйте использовать другой кабель, чтобы убедится, что используемый не поврежден.

Если телефон имеет карту памяти микро сд, выключите его, извлеките флешку и снова вставьте. Перезагрузите компьютер. Включите смартфон или планшет и подключите его к компьютеру с помощью кабеля USB.

Проблема осталась? Попробуйте использовать другой компьютер или поищете драйвер USB для используемого устройства смотрите в диспетчере устройств, нет ли желтого знака.

причина в драйвере почему не вижу телефон через компьютер

Если используете Windows N или KN, загрузите пакет обновления Медиа Feature, чтобы разрешить передачу файлов. Эти версии Windows, не поддерживают передачу файлов с использованием MTP. Для ХP нужно установить протокол MTP (Media Transfer Protocol) с сайта майкрософт.

телефон андроид 5.0 не виден на компьютере с виндовс xp - установите протокол MTP

Компьютер видит Xiaomi, но только как цифровую камеру

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

Почему компьютер не видит Xiaomi при подключении через USB

Исправляется проблема довольно просто. В этом случае мы имеем дело с режимом PTP — это передача фото. Все что нужно сделать, это, как и в первом разделе нашей статьи, сменить режим работы USB на «Передача файлов».

Почему компьютер не видит Xiaomi при подключении через USB

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector