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


18 функций MIUI, которые делают её лучше Android

Китайская компания Xiaomi c самого старта принялась подрывать устоявшиеся правила мобильного бизнеса. В то время как все нормальные производители разрабатывают для начала линейку собственных гаджетов, а только потом начинают обвешивать их фирменным программным обеспечением, в Xiaomi поступили совершенно противоположным образом. Эта компания прежде всего занялась собственной операционной системой, и только после того, как MIUI пробила себе путь к использованию на самых разных мобильных устройствах, приступила к выпуску смартфонов и планшетов.

К слову сказать, такой подход оказался на редкость удачным. Привлекательная программная оболочка вместе с качественными и доступными гаджетами позволили китайской компании буквально на глазах ворваться в число лидеров. Многие пользователи всерьёз утверждают, что последняя (на сегодняшний день это уже шестая) версия MIUI гораздо удобнее Android, а по части дизайна интерфейса может на равных конкурировать с iOS. И у них есть для этого все основания, ведь список уникальных функций MIUI действительно впечатляет.

1. Широкие возможности изменения интерфейса

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

2. Функциональный локскрин

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

3. Мощный музыкальный плеер

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

4. Умные иконки

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

5. Встроенный фонарик

Вот вроде мелочь, а приятно. Встроенный фонарик MIUI вызывается удержанием кнопки «Домой» на экране блокировки или из панели переключателей.

6. Блокировка нежелательных звонков и сообщений

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

7. Мониторинг трафика

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

8. Энергосбережение

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

9. Встроенный root и управление правами приложений

На какие только ухищрения не идут пользователи Android, чтобы получить права суперпользователя! В MIUI c этим настолько просто, что даже не интересно. Вы просто передвигаете один ползунок в настройках, и root-права получены. А вместе с ними и куча вкусных возможностей, в том числе управление правами различных программ, управление автозапуском и так далее. Все эти настройки сосредоточены в одном системном приложении, которое так и называется — «Разрешения».

10. Блокировка рекламы

В Android тоже можно блокировать рекламу в приложениях, причём разными способами. Но для этого их необходимо сначала узнать, а затем установить соответствующее программное обеспечение. Компания Xiaomi решила облегчить жизнь пользователям и встроила блокиратор рекламы непосредственно в систему. Работает он достаточно надёжно и режет рекламные баннеры практически во всех программах.

11. Антивирус

Ну да, вирусов под Android вроде пока нет. Так вроде или пока?

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

12. Встроенная система резервного копирования

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

13. Очистка кэша и мусора

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

14. Запись звонков

Запись телефонных разговоров является очень востребованной функцией, которая, однако, из-за необходимости соблюдения приватности вряд ли появится в официальных прошивках Android. Наши китайские друзья всегда отличались лёгким отношением к разным запретам, поэтому в стандартной звонилке MIUI такая функция есть и прекрасно работает.

15. Блокировка от случайных нажатий

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

16. Приватные сообщения

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

17. Скорость передачи данных и заряд батареи в строке состояния

В MIUI вы легко можете активировать отображение оставшегося заряда аккумулятора и скорости передачи данных прямо в строке состояния. Это довольно важные показатели, которые лучше всегда иметь перед глазами.

18. Обновления

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

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

lifehacker.ru

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

Честно признаться, у меня не было планов писать и публиковать эту статью, но, после того, как за два месяца увидел в ближнем кругу коллег 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. Все дальнейшие манипуляции над телефоном Вы делаете на свой страх и риск. Ответственность за любой результат лежит на том, кто именно делал описываемые ниже действия.

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

Серверы, к которым обращается телефон, в большинстве своём расположены в облаке 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. Пример:

root@land:/ # pm disable com.miui.analytics pm disable com.miui.analytics Package com.miui.analytics new state: disabled root@land:/ # pm disable com.miui.systemAdSolution pm disable com.miui.systemAdSolution Package com.miui.systemAdSolution new state: disabled root@land:/ # reboot reboot

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

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) пишем правило:

$IPTABLES -A oem_out --protocol udp --dport 53 -m owner --uid-owner 0 -m string --algo bm --hex-string '|04|miui|03|com|00|' -m comment --comment "Deny UID 0 DNS queries for miui.com domain" -j DROP # $IPTABLES -A oem_out --protocol udp --dport 53 -m owner --uid-owner 0 -j ACCEPT 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 уровня:

# разрешаем инициировать установление TCP соединений на 80 порт всем процессам работающим под UID 1000. $IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT #проверяем наличие слова xtrapath в пакетах TCP соединений установленных на 80 порт процессами с UID 1000 и помечаем эти соединения шестнадцатиричным числом 5555. $IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m string --algo bm --string 'xtrapath' -j CONNMARK --set-xmark 0x5555 # убиваем пакеты всех установленных процессами с UID 1000 TCP соединений не имеющих нашей пометки число 5555 $IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m connmark ! --mark 0x5555 -j DROP 5. Фильтруем доступ в интернет по приложениям (у меня Google Chrome имел UID 10060). Разрешаем выход в интернет Google Chrome и запрещаем всем остальным приложениям.$IPTABLES -A oem_out -m owner --uid-owner 10060 -m comment --comment "Permit Google Chrome internet access" -j ACCEPT # # Block all other processes # $IPTABLES -A oem_out -m owner --uid-owner 0-9999 -m comment --comment "Block all other system processes internet access" -j DROP $IPTABLES -A oem_out -m owner --uid-owner 10000-99999 -m comment --comment "Block all other user processes internet access" -j DROP Слабым местом этого способа фильтрации является его опора на наличие отметки UID на каждом конкретном пакете при прохождении его через Netfilter/IPtables. Обнаружилось это по непонятным TCP соединениям к серверам Google, пакеты которых не содержали UID. Исследование показало, что эти пакеты инициированы процессом Google Captive portal login. Я решил эту проблему обходным путём — просто выключив эти запросы командами в ADB shell:root@land:/ # settings put global captive_portal_detection_enabled 0 root@land:/ # reboot Радует, что (судя по накопленной статистике за несколько суток перехвата Wi-Fi трафика), никаких иных системных процессов отсылающих пакеты без UID в исследовавшемся телефоне нет.Update. Дальнейшее наблюдение показало как я ошибался. Такие «тихие» процессы есть, но часть из них невинно общается друг с другом через адрес 127.0.0.1, что ненаказуемо. Всё остальное надо банить. Поэтому, для их правильной фильтрации, надо добавить в самое начало скрипта ещё две строчки:$IPTABLES -A oem_out --protocol all --source 127.0.0.0/8 --destination 127.0.0.0/8 -m comment --comment "Accept internal traffic" --jump ACCEPT $IPTABLES -A oem_out --protocol all -m owner ! --uid-owner 0-99999 -m comment --comment "Drop any traffic which does not have UID." --jump DROP Update. Уже после опубликования статьи для меня окончательно стало ясно, что UID приложений, задаваемый системой при установке приложения, при обновлении и/или переустановке приложений может непредсказуемым образомменяться. Следовательно, доступ в интернет для приложения тоже отвалится и надо будет переписывать правило Netfilter/IPtables заново. Для решения этой проблемы набросал небольшой кусок скрипта, который читает из хвоста файла наименования приложений, проверяет их наличие в системной базе приложений, и, при наличии, берёт оттуда же UID приложения и динамически (в процессе работы скрипта) формирует правило Netfilter/IPtables. Строго говоря — чтение параметров из тела скрипта — это тоже костыль. Но меня оправдывает то, что на момент работы скрипта, подмонтировать файловую систему доступную снаружи при обычной работе телефона — невозможно. В папке /dev нет соответствующих файлов устройств. Допускаю, что это может быть особенность прошивки конкретного телефона.Текст специально сделал максимально подробным, для лучшего понимания.# Permit intenet access for the packages listed at the end of this file. White list mode. # SU=`/system/bin/which su` # changing reading file behavior (read whole file with \r\n into variable) IFS="" # reading first and second fields of every line of the system packages database into variable PACKAGESDB. # Escalating privileges via su because of filesystem packages database file access limitations. PACKAGESDB=`$SU -c "/system/bin/cut -d' ' -f 1,2 /data/system/packages.list"` # # Reading last lines of current script form the end till "exit 0" line # Filtering empty lines, lines started with # and all symbols after # (comments) in every line. # # 's/#.*//' - remove all in every line after # # '/^#/d' - remove lines staring with # # '/./!d' - remove empty lines # '/exit 0/,$ d' - remove all lines starting line with "exit 0" # 's/ //g' - remove spaces from line # /system/bin/tac $0 | /system/bin/sed -e '/^#/d' -e 's/#.*//' -e '/exit 0/,$ d' -e '/./!d' -e 's/ //g'| while read line; do # Just in case 8-) OUR_PACKAGE_NAME=$line # Strict checking for existence of our package name in the system packages database. Checking first field. PACKAGE_NAME_IN_DB=`echo $PACKAGESDB | /system/bin/cut -f 1 -d' ' | /system/bin/grep -Fx "$line"` if # Checking grep utility exit code. "0" means pattern found test "$?" == "0" then # # Looking for package UID in database. Checking second field. VERY important space after $line!!! # PACKAGE_UID=`echo $PACKAGESDB | /system/bin/grep "$line " | /system/bin/cut -f 2 -d' '` else # All other exit codes return us to the beginning of the cycle. # echo "Package $OUR_PACKAGE_NAME not found" $IPTABLES -A $CHAIN -m comment --comment "Package name $OUR_PACKAGE_NAME not found. Check package name." --jump LOG continue fi # # Set the package right for Internet access # $IPTABLES -A $CHAIN -m owner --uid-owner $PACKAGE_UID -m comment --comment "Permit $OUR_PACKAGE_NAME Internet access" -j ACCEPT # done ###### ... skipped... #### exit 0 #### ####### Do NOT edit before this line ######### # Please add package names and comments after this line for granting them internet access. ##### # Google Play Store and its companion processes # com.google.android.gms # Google Services Framework Internet access com.android.vending # Google Play Market internet access com.android.providers.downloads # Download manager service internet access # # Other Google apps com.google.android.youtube # Youtube application internet access com.google.android.apps.maps # Google Maps application internet access com.google.android.googlequicksearchbox # Google Assistant internet access # # com.android.chrome # Google Chrome browser internet access После переустановки/обновления приложения нужно всего лишь перезагрузить телефон.

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

$IPTABLES -A oem_out --source 10.1.30.42 --protocol tcp --jump LOG --log-prefix "IPtables log:" --log-uid Параметр IP адрес отправителя (--source 10.1.30.42) можно опустить, но в этом случае лог будет завален записями сетевой активности процессов, завёрнутых на адрес 127.0.0.1 файлом hosts. Лог можно читать через команду dmesg (dmesg | grep IPtables) в ADB Shell.

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

P.S. Я не разработчик Android-приложений, просто жизнь заставила два месяца поразбираться с сабжевым телефоном. Посему, господа профи, если я где ошибаюсь — поправляйте. Буду признателен.

P.P.S. В качестве средства перехвата использовался Zyxel Keenetic Extra. У него есть возможность перехватывать Wi-Fi трафик и сливать его на флэшку для последующего анализа.

habr.com

OAuth 2.0 простым и понятным языком / Блог компании Mail.Ru Group / Хабр

На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.

Что такое OAuth 2.0

OAuth 2.0 — протокол авторизации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе. Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав, а не все сразу.

Чем отличаются OpenID и OAuth

Не смотря на то, что объяснений на эту тему уже было много, она по-прежнему вызывает некоторое непонимание.

OpenID предназначен для аутентификации — то есть для того, чтобы понять, что этот конкретный пользователь является тем, кем представляется. Например, с помощью OpenID некий сервис Ололо может понять, что зашедший туда пользователь, это именно Рома Новиков с Mail.Ru. При следующей аутентификации Ололо сможет его опять узнать и понять, что, это тот же Рома, что и в прошлый раз.

OAuth же является протоколом авторизации, то есть позволяет выдать права на действия, которые сам Ололо сможет производить в Mail.Ru от лица Ромы. При этом Рома после авторизации может вообще не участвовать в процессе выполнения действий, например, Ололо сможет самостоятельно заливать фотографии на Ромин аккаунт.

Как работает OAuth 2.0

Как и первая версия, OAuth 2.0 основан на использовании базовых веб-технологий: HTTP-запросах, редиректах и т. п. Поэтому использование OAuth возможно на любой платформе с доступом к интернету и браузеру: на сайтах, в мобильных и desktop-приложениях, плагинах для браузеров…

Ключевое отличие от OAuth 1.0 — простота. В новой версии нет громоздких схем подписи, сокращено количество запросов, необходимых для авторизации.

Общая схема работы приложения, использующего OAuth, такова:

  1. получение авторизации
  2. обращение к защищенным ресурсам
Результатом авторизации является access token — некий ключ (обычно просто набор символов), предъявление которого является пропуском к защищенным ресурсам. Обращение к ним в самом простом случае происходит по HTTPS с указанием в заголовках или в качестве одного из параметров полученного access token'а.

В протоколе описано несколько вариантов авторизации, подходящих для различных ситуаций:

  • авторизация для приложений, имеющих серверную часть (чаще всего, это сайты и веб-приложения)
  • авторизация для полностью клиентских приложений (мобильные и desktop-приложения)
  • авторизация по логину и паролю
  • восстановление предыдущей авторизации
Авторизация для приложений, имеющих серверную часть
  1. Редирект на страницу авторизации
  2. На странице авторизации у пользователя запрашивается подтверждение выдачи прав
  3. В случае согласия пользователя, браузер редиректится на URL, указанный при открытии страницы авторизации, с добавлением в GET-параметры специального ключа — authorization code
  4. Сервер приложения выполняет POST-запрос с полученным authorization code в качестве параметра. В результате этого запроса возвращается access token
Это самый сложный вариант авторизации, но только он позволяет сервису однозначно установить приложение, обращающееся за авторизацией (это происходит при коммуникации между серверами на последнем шаге). Во всех остальных вариантах авторизация происходит полностью на клиенте и по понятным причинам возможна маскировка одного приложения под другое. Это стоит учитывать при внедрении OAuth-аутентификации в API сервисов.
Пример
Здесь и далее примеры приводятся для API Mail.Ru, но логика одинаковая для всех сервисов, меняются только адреса страниц авторизации. Обратите внимание, что запросы надо делать по HTTPS.

Редиректим браузер пользователя на страницу авторизации:

> GET /oauth/authorize?response_type=code&client_id=464119& redirect_uri=http%3A%2F%2Fexample.com%2Fcb%2F123 HTTP/1.1 > Host: connect.mail.ru Здесь и далее, client_id и client_secret — значения, полученные при регистрации приложения на платформе.

После того, как пользователь выдаст права, происходит редирект на указанный redirect_uri:

< HTTP/1.1 302 Found < Location: http://example.com/cb/123?code=DoRieb0y

Обратите внимание, если вы реализуете логин на сайте с помощью OAuth, то рекомендуется в redirect_uri добавлять уникальный для каждого пользователя идентификатор для предотвращения CSRF-атак (в примере это 123). При получении кода надо проверить, что этот идентификатор не изменился и соответствует текущему пользователю.

Используем полученный code для получения access_token, выполняя запрос с сервера:

> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=authorization_code&client_id=464119&client_secret=deadbeef&code=DoRieb0y& redirect_uri=http%3A%2F%2Fexample.com%2Fcb%2F123 < HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }

Обратите внимание, что в последнем запросе используется client_secret, который в данном случае хранится на сервере приложения, и подтверждает, что запрос не подделан.

В результате последнего запроса получаем сам ключ доступа (access_token), время его «протухания&raquo (expires_in), тип ключа, определяющий как его надо использовать, (token_type) и refresh_token о котором будет подробнее сказано ниже. Дальше, полученные данные можно использовать для доступа к защищенным ресурсам, например, API Mail.Ru:

> GET /platform/api?oauth_token=SlAV32hkKG&client_id=464119&format=json&method=users.getInfo& sig=... HTTP/1.1 > Host: appsmail.ru Описание в спецификации
Авторизация полностью клиентских приложений
  1. Открытие встроенного браузера со страницей авторизации
  2. У пользователя запрашивается подтверждение выдачи прав
  3. В случае согласия пользователя, браузер редиректится на страницу-заглушку во фрагменте (после #) URL которой добавляется access token
  4. Приложение перехватывает редирект и получает access token из адреса страницы
Этот вариант требует поднятия в приложении окна браузера, но не требует серверной части и дополнительного вызова сервер-сервер для обмена authorization code на access token.
Пример
Открываем браузер со страницей авторизации: > GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru

После того, как пользователь выдаст права, происходит редирект на стандартную страницу-заглушку, для Mail.Ru это connect.mail.ru/oauth/success.html:

< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

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

Описание в спецификации

Авторизация по логину и паролю
Авторизация по логину и паролю представляет простой POST-запрос, в результате которого возвращается access token. Такая схема не представляет из себя ничего нового, но вставлена в стандарт для общности и рекомендуется к применению только, когда другие варианты авторизации не доступны.
Пример
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&[email protected]& password=qwerty < HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < } Описание в спецификации
Восстановление предыдущей авторизации
Обычно, access token имеет ограниченный срок годности. Это может быть полезно, например, если он передается по открытым каналам. Чтобы не заставлять пользователя проходить авторизацию после истечения срока действия access token'а, во всех перечисленных выше вариантах, в дополнение к access token'у может возвращаться еще refresh token. По нему можно получить access token с помощью HTTP-запроса, аналогично авторизации по логину и паролю.
Пример
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8 < HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < } Описание в спецификации

Минусы OAuth 2.0

Во всей этой красоте есть и ложка дегтя, куда без нее?

OAuth 2.0 — развивающийся стандарт. Это значит, что спецификация еще не устоялась и постоянно меняется, иногда довольно заметно. Так, что если вы решили поддержать стандарт прямо сейчас, приготовьтесь к тому, что его поддержку придется подпиливать по мере изменения спецификации. С другой стороны, это также значит, что вы можете поучаствовать в процессе написания стандарта и внести в него свои идеи.

Безопасность OAuth 2.0 во многом основана на SSL. Это сильно упрощает жизнь разработчикам, но требует дополнительных вычислительных ресурсов и администрирования. Это может быть существенным вопросом в высоко нагруженных проектах.

Заключение

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

Со своей стороны, мы внедрили OAuth 2.0 в API Mail.Ru и, теперь, вы можете использовать возможности протокола для реализации любых клиентов и сервисов, интегрированных с Mail.Ru.

Ссылки

Дмитрий Битман — менеджер Платформы@Mail.Ru

habr.com

что это за вирус? Решение проблемы

Сегодня, когда практически все владельцы ПК, ноутбуков, смартфонов и планшетов устанавливают на свои устройства надежные и не всегда бесплатные антивирусы, вредоносный софт все так же продолжает представлять опасность для гаджетов и доставлять проблемы нам самим. Дело в том, что разработчики "научили" его незаметно для пользователя обходить защищающие систему приложения, а то и вовсе отключать их. Как это делает FileRepMalware. Что это за вирус, возможно ли с ним бороться, мы расскажем далее.

FileRepMalware: как он проявляется?

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

Но если предупреждение о вредоносной программе FileRepMalware появляется время от времени, а в случае если вы ничего не скачиваете, Avast сообщает о блокировке или удалении вируса, чего на самом деле не случается, то бороться с проблемой нужно другими методами. Но прежде всего узнаем врага в лицо.

Что это - Malware?

Malware (жаргон. "малварь") - слово, с английского дословно переводящееся как "вредоносная программа": malicious - "со злым намерением", software - "софт, программное обеспечение". Это продукт, создатели которого преследуют далеко не самые добросовестные намерения.

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

Norman Malware Cleaner

Большую известность в борьбе с "малварем" получила программа Norman Malware Cleaner. Популярен также и аналогичный софт - Malwarebytes' Anti-Malware. Однако последний грешит тем, что может заодно лишить вас безвредных программ и данных, хранящихся на компьютере.

Norman Malware Cleaner тоже выделяется недостатком: для каждого обновления приложения вам необходимо будет заново закачивать и устанавливать его. Также не представлена поддержка русского языка. Но на фоне всего этого выделяются и достоинства программы: удобный интуитивный интерфейс, быстрая и качественная работа, абсолютно бесплатное использование.

FileRepMalware: как удалить?

Итак, предлагаем вам следовать данному алгоритму:

  1. Скачайте на свой ПК или ноутбук программу Norman Malware Cleaner.
  2. В "Загрузках" найдите ее установочный файл (".exe").
  3. Отметим, что программу можно всегда носить с собой на флеш-накопителе или диске. Устанавливать ее не потребуется: она готова к работе сразу после открытия файла с расширением ".ехе".
  4. Прочтите соглашение об использовании, отметьте галочкой свое его одобрение.
  5. Клик на Accept.
  6. В следующем окне зайдите во вкладку "Опции". Здесь не забудьте поставить галочки на двух пунктах: Enable rootkit cleaning и Apply.
  7. Снова вернитесь на вкладку "Сканирование" (Scan).
  8. Здесь вам нужно выбрать способ проверки компьютера на вирусы. Лучше всего остановиться на полной проверке - Full. Кнопкой "Старт" внизу окошка запустите сканирование.
  9. Предупреждаем, если в вашем компьютере хранятся программы-взломщики ключей, то они тоже будут удалены Norman Malware Cleaner. Когда вам нужен этот софт, необходимо на время сканирования перекинуть его на внешний накопитель, а после завершения работы утилиты вернуть на ПК.
  10. Больше никаких действий осуществлять не нужно: программа сама найдет и удалит "малварь", а также прочие угрозы. По завершении процесса сканирования и борьбы с вирусами в последнем окне будут представлены результаты работы: что и в каком количестве было обезврежено.

Даже если у вас на ПК или ноутбуке стоит надежный антивирус, все же стоит время от времени проверять и очищать устройство с помощью Norman Malware Cleaner. Причина в том, что спектр "придирчивости" и широты обследования у этой утилиты более объемный, нежели у обычного софта - защитника системы.

Мы разобрали, что это за вирус - FileRepMalware. Опасен он тем, что может деактивировать незаметно для вас программу, защищающую от вредоносного софта. Однако сам "малварь" легко обнаруживает и устраняет бесплатная и интуитивно понятная Norman Malware Cleaner. Поэтому, если ваш "Аваст" обнаружил такую угрозу и не может с нею справиться, лучше просканировать компьютер с помощью этой утилиты.

fb.ru

Обзор CDN-сервиса CloudFlare / Хабр

Привет, хабр! Сегодня я расскажу о сервисе CloudFlare. Куча возможностей, помощь в переносе, и многое другое. Хотелось бы начать с того, что данным сервисом можно пользоваться бесплатно. В CloudFlare предусмотрены PRO возможности, но лично мне эти возможности не нужны. Стоимость PRO довольна высока — $20 в месяц.

Что же предлагает нам CloudFlare?

  • Отличная система переноса — сервис анализирует ваши текущие настройки и полностью копирует их к себе.
  • Защита сайта и его кеширование на уровне DNS.
  • Своя собственная система статистики.
  • Множество приложениий для интеграции.
Я могу с уверенностью заявить, что с системой переноса справится даже ребенок. Вы просто указываете адрес своего сайта и нажимаете большую зеленую кнопку. В течение минуты ваш сайт анализируется и затем на странице отображаются все предыдущие настройки DNS. Также предлагается изменить/добавить некоторые значения, если что-то вдруг перенеслось неправильно. В чем плюс? Все очень просто, ваш сайт перенесется и не будет простаивать. Ваши пользователи даже не заметят каких-либо изменений.В настройках имеется два пункта: Basic Security Level и Advanced Security (доступно только для PRO). Basic Security ищет наиболее угрожающих (?) посетителей. Какими алгоритмами и методами — я так и не смог понять, но никто из пользователей не жаловался, что их посчитали «угрожающими». С Advanced Security все понятнее — она защищает от возможных SQL-Injection и XSS атак с помощью анализа URL. Если вы не уверены в безопасности своих сайтов, то возможно имеет смысл воспользоваться этой системой (хотя конечно лучше пересмотреть код скриптов). Кстати, система может добавить переменную для определения локации: HTTP_CF_IPCOUNTRY. Вызвать ее можно из Perl: $country_code = $ENV{"HTTP_CF_IPCOUNTRY"}; или из PHP: $country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];Система кеширования позволяет в автоматическом режиме кешировать большинство статических ресурсов, таких как css-файлы, js-скрипты и картинки. Существует два типа кеширования — Basic и Agressive, второй считает example.com/pic.jpg и example.com/pic.jpg?foo=bar разными картинками. Существует возможность автоматической минимизации — система распространяется на JS, CSS и HTML файлы.Своя статистика — довольно мощный инструмент. Существует некоторое ограничение — в бесплатных аккаунтах она обновляется раз в 24 часа, в PRO — раз в 15 минут. Ведется анализ как и посетителей, так и поисковых ботов. Также в ней отображается сколько запросов и какое количество трафика помог сжать CloudFlare. Не забыли и о графиках, когда не хочется выполнять анализ то можно просто взглянуть на красивый график и увидеть развитие своего сайта.Среди приложений для интеграции доступно множество сторонних сервисов статистики — например Clicky, которая анализирует огромное количество параметров, среди которых время посещения, переходы с поисковиков и многое другое. Доступны системы мониторинга сайтов, например Monitis и Pingdom. Уведомления по SMS, Twitter или по эл. почте теперь настраиваются в течение 5 минут. На мой взгляд, самая полезная вещь среди этих приложений — сервис CodeGuard. Он полностью «бекапит» ваш сайт и если он не доступен, то показывает его сохраненную копию. Пользоваться данным сервисом можно бесплатно, если ваш сайт занимает меньше 1 ГБ. Кстати, именно на CloudFlare хостился сайт небезызвестных LulzSec, и именно CodeGuard показывал страницы, когда сервер LulzSec упал.CloudFlare — действительно очень удобный сервис. Согласитесь, защитить сайт, забыть о кешировании, установить статистику и не тратить нервы, если сайт недоступен, просто перенеся сайт на другие DNS — это здорово. А если почти всеми этими возможностями можно пользоваться бесплатно, то такой сервис — просто сказка :)

P.S.: Во избежание глупых обвинений в том, что пост проплачен, я сразу говорю, что не имею никакого отношения к сайту CloudFlare и комании CloudFlare, Inc. (US).

UPD: Заголовок действительно был некорректен, это не DNS-хостинг, а CDN-прокси, пропускающая через себя трафик.

habr.com

Код ошибки 500 - что это такое и как с ним бороться

 Доброго времени суток всем читателям блога SEOBID.NET! Наверняка почти каждый из вас, пользователей интернета, сталкивался с такой проблемой – вместо страницы сайта вдруг возникает сообщение 500 internal server error, что означает — внутренняя ошибка сервера.

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

Часто 500 ошибка сервера может возникнуть в Joomla, WordPress, OpenCart, Битрикс, DLE и многих других, даже самописных. Но, хоть от нас здесь мало что зависит, я предлагаю все же рассмотреть наиболее распространенные причины, по которым может возникнуть ошибка сервера, а также некоторые (они все же есть) способы устранения ошибки 500.

Что означает внутренняя ошибка сервера 500

Это сообщение может значить, что программная сторона вашего сервера рабочая технически, но время от времени появляются непредвиденные внутренние ошибки. Как результат – ваш запрос не обрабатывается в рабочем режиме, поэтому через отведенное время в ответ на неотвеченные запросы пользователю (в данном случае это браузер посетителя или поисковая система), отдается код ошибки сервера 500.

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

Из-за чего показывается ошибка 500 и как исправляется

  1. Неправильно выставлены права доступа на директории сайта и/или их файлы. Это ваш недосмотр или неведение, но ошибки сервера в этом случае имеют место быть. Если на файлы, написанные на php и размещенные на вашем хостинге, установлены права на запись 777, то скрипты могут блокироваться сервером и не выполняться. Вам, соответственно, браузер покажет ошибку 500. Хотя все в этом случае зависит от настроек хостера. Поэтому выбирайте надежного партнера, с весомыми рекомендациями. Случаться эта неприятность может, потому что права доступа 777 позволяют всем пользователям аккаунта проводить любые операции с файлами и папками, что очень сильно влияет на целостность вашего веб-ресурса и его безопасность. Оградить себя от этого может только единоличное управление своим аккаунтом – не давайте никому доступ в корневые папки сайтов!

Как можно решить: Необходимо проверить права доступа на запись всех папок и файлов ваших сайтов. Для папок (директорий) рекомендуется выставлять права доступа 755, для исполняемых скриптов – права доступа 600, а для остальных файлов – права 644. Если нужно установить права 777, то поставщик заранее предупреждает об этом.

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

Как можно решить: Попробуйте оптимизировать скрипт. Найти медленно работающий скрипт несложно – для этого есть специальные сервисы. Еще одно решение – увеличение времени ожидания сервера. Но оно возможно только в том случае, если вы заказали VPS или выделенный сервер, а на обычном виртуальном хостинге это сделать не получится. Разве что техподдержка сделает для вас исключение.

  1. Файл настроек .htaccess может содержать неправильные директивы или такие правила, которые не поддерживаются вашим сервером. Файл .htaccess пишется в очень строгих рамках, и если вы при его настройке допустили какие-то ошибки, то в результате обязательно получите ошибку 500 Internal Server Error. На продвинутых хостингах файл .htaccess предлагается хостером, и ошибок в нем быть не может, если только вы сами их туда не впишете.

Как можно решить: Убедитесь в наличии файла .htaccess. Он должен лежать в корневой директории вашего сайта. Если он есть, сделайте резервную копию файла и удалите его совсем. Сайт без файла .htaccess отлично работает, и если так и случилось – значит, виноват файл, его нужно корректировать или попросить хостера дать новый файл.

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

[Wed May 15 19:11:50 2013] [alert] [client 219.18.17.18] /home/UXXXXX/vash-sait.ru/www/.htaccess: Invalid command 'RewritRule', perhaps mis-spelled or defined by a module not included in the server configuration

То есть, в этом сообщении вы увидите, какая директива вызывает ошибку. В нашем примере это директива RewritRule – такой директивы просто не существует. Есть директива RewriteRule, но в нашем примере пропущена одна буква, поэтому сервер отвечает ошибкой.

  1. Скрипт очень большой или многофункциональный, поэтому для его работы нужно большое количество памяти. Такая причина может возникнуть на виртуальном хостинге, где в php настройках сайта устанавливается лимит памяти, а также отслеживается общий объем памяти, потребляемой всеми скриптами и файлами. Если потребление памяти превышает установленный лимит (смотрите свой тарифный план на хостинге), то работа скрипта прекращается и вы получаете долгожданное сообщение error 500 внутренняя ошибка сервера. Устанавливается такое ограничение для того, чтобы предупредить появление повышенной нагрузки на сервер со стороны аккаунтов виртуального хостинга.

Как можно решить: обратитесь в службу технической поддержки хостинга. Если они не помогут устранить ошибку 500 — меняйте хостинг.

На этом все. Есть еще множество причин возникновения ошибки 500, но их можно перечислять на нескольких страницах. Да и возникают они очень редко, а если у вас надежный хостинг, то вы вообще забудете, что такое ошибка 500. До следующих встреч на страницах блога SEOBID.NET!

seobid.net

Технология NFC в смартфоне: что это и как работает?

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

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

Что такое NFC?

NFC (Near field communication, или коммуникация ближнего поля) – это интерфейс беспроводной связи, одной из главных характеристик которого, как видно из названия, является небольшой радиус действия (до 10 см). Среди особенностей технологии можно также выделить:

  • Возможность обмена с другими устройствами и пассивными метками.
  • Компактные размеры.
  • Низкое энергопотребление.
  • Невысокую скорость передачи данных.
  • Время установки соединения — 0,1 секунды.
  • Бюджетную стоимость.

Благодаря небольшим размерам и низкому потреблению энергии NFC можно использовать в небольших устройствах. В смартфонах антенна обычно крепится на крышке батарейного отсека или внутренней стороне задней панели, в случае если аккумулятор съемный. Чтобы у пользователей не возникало вопроса, как именно прикладывать гаджет для передачи данных (особенно такая проблема характерна для планшетов из-за их большого размера и маленького радиуса действия технологии), местонахождение чипа часто помечается специальной наклейкой на корпусе.

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

Актуальный список смартфонов с NFC можно посмотреть здесь.

Способы использования NFC

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

Для осуществления платежа через NFC потребуется:

  1. Банковская карта с пометкой paypass.
  2. Приложение соответствующего банка.
  3. Найти в меню приложения пункт NFC.
  4. Приложить карту к задней крышке телефона для считывания.
  5. Запомнить пароль для проведения платежных операций, высланный в SMS-сообщении.

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

Инструкция:

1. Активируйте NFC — поставьте галочку напротив этого пункта в меню «Беспроводные сети», разблокировать смартфон и включить экран.

2. Выберите агента:

  • Google Chrome — для передачи текущей активной ссылки.
  • Google Maps — для передачи маршрута.
  • Google Play — для передачи приложений, книг и другого контента, представленного в сервисе.
  • YouTube — для передачи ссылки на видеоролик.
  • Контакты — для передачи контакта.
  • Галерея — для передачи фотографий и картинок (однако это может занять много времени из-за низкой скорости передачи, поэтому в данном случае лучше использовать специальные приложения, о которых будет рассказано ниже).

3. Приблизьте устройства, пока не сработает сигнал.

4. Коснитесь экрана и удерживайте для подтверждения передачи.

5. Прозвучит еще один сигнал, который означает успешную передачу файлов.

Существуют различные приложения, которые используют интерфейс NFC только для согласования, а последующая передача файлов осуществляется через соединение Bluetooth или Wi-Fi: Send! File Transfer, File Expert HD и Super Beam WiFi Direct Share .

Следующий способ — чтение и запись меток. Данная функция работает аналогично считыванию QR-кода, только используется не камера смартфона, а чип NFC. Может пригодиться для автоматизирования домашнего и рабочего быта. Для создания собственных NFC-меток понадобятся чистые заготовки и специальные программы для записи необходимой информации. За меткой можно закрепить следующие действия, которые будут выполняться после ее считывания: отправка SMS-сообщения или электронного письма, вызов контакта, открытие ссылки, соединение по Bluetooth, запуск приложение и многое другое.

Несколько программ для создания меток:

  1. WiFiTap WiFi NFC — для подключения беспроводной сети. Поможет гостям подключиться к Wi-Fi-точке быстро и без ввода пароля.
  2. ABA NFC — для создания различных меток стандартного формата.
  3. SmartTag Maker — специальное приложение для пользователей продукции Sony, которое содержит ряд заготовок, используемых не только с интерфейсом NFC, но и гарнитурой, устройствами Bluetooth, блоком питания и т. д.

Итог

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

Заходите на наш канал в Яндекс.Дзене — там собрано самое интересное. Загрузка...

androidlime.ru