Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
21.92 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

взявшемуся непонятно откуда (!), нужно получать текстовые сообщения.

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для обработки намерения SMS_RECEIVED в манифесте приложения необходимо зарегистрировать широковещательный приемник (за подробностями отправляю тебя к прошлым статьям рубрики «Кодинг»):

С этого момента зарегистрированный приемник будет принимать входящие СМС, даже если приложение не запущено, даже если телефон перезагружен!

Нужно сказать, что таких приемников может быть несколько и они сработают друг за другом в соответствии с приоритетом, указанным в поле android:priority. Максимальное значение — 1000, а вот у стандартного обработчика Android (который помещает СМС в папку «Входящие», выводит уведомление и вибрирует) — и это вторая странность — 999. Хотя, если подумать, объяснение достаточно простое: на платформе Android все программы имеют одинаковый статус и написаны на одном и том же API, что позволяет пользователям легко удалять или заменять встроенные ПО на альтернативные разработки, будь то почтовый клиент, приложение для дозвона или программа для работы с сообщениями.

Таким образом, указанный выше приемник EvilSMSReceiver сработает первым, а стандартный — следом. Типичная реализация широковещательного приемника СМС представлена ниже:

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Намерение с действием SMS_RECEIVED содержит информацию обо всех частях входящего сообщения (длинное СМС при передаче автоматически разбивается на несколько). Чтобы извлечь массив объектов SmsMessage, упакованных внутри дополнительного параметра Intent, используется стандартный ключ — intent.getExtras().get(«pdus»). Полученный массив имеет формат PDU (protocol data unit), и для приведения в человеческий вид используется метод SmsMessage.createFromPdu. Далее в цикле сообщение собирается в единое целое, также определяется отправитель (from), дата и время отправки (when).

Всущности, все это уже не раз рассматривалось на страницах «Хакера»

ивполне предсказуемо. А дальше начинается самое интересное: мы смотрим на отправителя и, если его номер 800 (вымышленный, конечно же), начинаем «работать» с этим сообщением особым образом, после чего вызываем метод abortBroadcast, блокирующий дальнейшую обработку другими приемниками. Это сообщение пользователь уже не увидит никогда...

GOOGLE НАНОСИТ ОТВЕТНЫЙ УДАР

Все сказанное прекрасно работало до версии Android 4.4 (которых, кстати, и сейчас в дикой природе достаточно много). Хрустящие палочки надломили (правильнее сказать, нагнули) весь процесс работы с текстовыми сообщениями в этой ОС. Было введено понятие «приложение для работы с СМС по умолчанию», задать которое должен сам пользователь (см. рис. 2). Причем только это приложение имеет полный доступ на запись и удаление в базе сообщений (так называемый SMS Provider, о котором мы еще поговорим) смартфона (папки «Входящие», «Исходящие» и так далее), тогда как другие — только на обработку широковещательного намерения (об этом ниже). Кроме того, прервать обработку входящего сообщения с помощью abortBroadcast больше не представляется возможным.

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

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ет с резервной копией, а потом возвращать обратно. Что тут скажешь, за безопасность всегда нужно платить удобством.

Для разработчиков же все только начиналось. Вместо SMS_RECEIVED были введены сразу два широковещательных намерения: SMS_RECEIVED_ ACTION и SMS_DELIVER_ACTION. Первое очень напоминает по характеру SMS_RECEIVED, но позволяет всего лишь извлечь полученное сообщение — ни abortBroadcast, ни какие-либо манипуляции на «запись и удаление» в базе сообщений не сработают, то есть факт получения СМС скрыть уже так просто не удастся.

Намерение SMS_DELIVER_ACTION получит только то приложение, которое выбрано для работы с СМС по умолчанию. Оно-то и будет обладать всеми правами для непосредственной работы с базой сообщений (SMS Provider). Чтобы приложение стало избранным, то есть приложением по умолчанию, можно попытаться отправить запрос пользователю:

Но тогда на экране появится диалоговое окно (см. рис. 3), не заметить которое сложновато. Хотя я не сомневаюсь, что и здесь найдутся «остроумные» пользователи, ответившие положительно. Мы же попробуем зайти с другой стороны.

Пользователь форума xda-developers. com с ником stepic, исследуя исходный текст Android, обнаружил, что приложение для работы с СМС по умолчанию обладает всего лишь специальным разрешением на запись СМС — OP_WRITE_SMS:

Рис.3.«Да, нет...» Стоит добавитьвариант«Не знаю»

Установить такое разрешение можно с помощью скрытого (от глаз пользователя) менеджера разрешений App Ops. Этот фреймворк, запрятанный глубоко

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

в недрах системы Android, позволяет управлять разрешениями для отдельных приложений. Обычно при установке приложения пользователь должен сразу соглашаться со всем списком разрешений или вовсе отказаться от дальнейшей установки. Часто хочется ограничить приложение более гибко, например из всего списка разрешений запретить только отслеживание местоположения. App Ops позволяет с легкостью провернуть этот трюк — да, приложение от неожиданности может и упасть, но почему бы не попробовать?

Начиная с Android 4.3, вызвать App Ops можно из консоли:

adb shell am start -a android.settings.SETTINGS

-e “:android:show_fragment”

“com.android.settings.applications.AppOpsSummary”

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

Если перейти на вкладку Messaging, то можно заметить, что у недефолтного приложения для работы с СМС флаг записи сброшен — WRITE SMS OFF (см. рис. 4), но здесь же его можно и установить (при этом root не нужен!).

GOOGLE НАНОСИТ ВТОРОЙ ОТВЕТНЫЙ УДАР

Рассмотренный выше App Ops был замечен прогрессивной общественностью и взят на вооружение. Разумеется, гибкая настройка разрешений очень не понравилась Google — как же показывать рекламу, если можно отрубить выборочно доступ в сеть? Сославшись на то, что App Ops не предназначен для конечных пользователей, интернет-гигант тихо прикрыл лавочку в Android 4.4.2, косвенно залатав еще одну лазейку теневой работы с СМС.

Рис.4.App Ops собственной персоной

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ПИШИТЕ В СПОРТЛОТО

А как же с отправкой СМС, спросишь ты? В Android за работу с СМС отвечает класс SmsManager. Для получения ссылки на объект этого класса можно использовать метод getDefault:

Также потребуется специальное полномочие SEND_SMS в манифесте:

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

Для отправки текстового сообщения используется метод sendTextMessage объекта SmsManager, в который передается телефонный номер получателя и текст сообщения:

где второй параметр позволяет указать центр обработки сообщений (SMSC), при передаче null используется стандартный центр, предоставляемый оператором сотовой связи. Последние два параметра позволяют задать намерения (Intent) для отслеживания передачи и успешной доставки сообщения. Так как нас не особо интересуют такие мелочи, просто указываем null.

Отосланное таким образом сообщение попадет в папку «Отправленные», что, естественно, нас не устраивает. Попробуем это исправить.

Воснове «низкоуровневой» работы с СМС в Android предусмотрен специальный источник данных — SMS Provider. По определению, источники данных предлагают общий интерфейс для доступа к любой информации путем отделения логики приложения от слоя, отвечающего за хранение данных (как правило, базы данных SQLite). Любой источник данных предоставляет интерфейс для публикации и потребления данных, основанный на простой адресной модели URI, используя схему content://.

ВAndroid предусмотрено несколько стандартных источников данных, такие как менеджер контактов, мультимедийное хранилище, календарь, сообщения. Нас интересует стандартный источник данных «Сообщения» с URI вида content://sms/. Для полноценной работы с ним нам необходимо еще одно разрешение:

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Для удаления отдельных сообщений можно воспользоваться следующим подходом:

Видно, что работа с источником данных напоминает работу с базой данных: метод query подготавливает SQL-запрос вида SELECT со столбцами, переданными в массиве, а delete удаляет запись с идентификатором id.

Приведенный фрагмент удалит вообще все сообщения, присланные с номера 800, как во входящих, так и в отправленных, что может быть заметно, так как у пользователя могут храниться нужные ему сообщения с этого номера. Для более «тонкого» удаления к проверке адресата можно еще добавить проверку времени получения или отправки СМС, взятого из поля date (формат UNIX Time). Учти, что в отличие от упомянутого выше метода abortBroadcast, данный способ не является потокобезопасным.

Как ты уже, наверное, догадался, приведенный код тоже откажется работать в Android 4.4. и выше, если приложение не выбрано для работы с СМС по умолчанию.

ДОБРЫЕ СМС

Может сложиться ощущение, что легитимная программа, не имеющая статуса приложения для работы с СМС по умолчанию, не сможет работать с СМС в последних версиях Android. Однако это не так. Как уже отмечалось, для получе-

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ния СМС вполне подойдет системное намерение SMS_RECEIVED, а для отправки целесообразно использовать то самое приложение по умолчанию (в качестве «бонуса» — никакого разрешения на отправку сообщения в манифесте не требуется):

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

РЕЗЮМЕ

WWW

Пост на форуме XDA developers

Хороший гайд по работе с СМС в KitKat

Справка по App Ops

Рис.5.Androidвсемогущий

В качестве защитной меры здесь можно было бы написать банальное «Всегда используй последнюю версию Android», но, к большому сожалению, производители смартфонов финансово не заинтересованы обновлять свои старые устройства. Так, некогда флагман Samsung Galaxy Note обновился только до версии 4.1. Для справки на рис. 5 представлена статистика одного приложения из Google Play по версиям Android. Видно, что, хотя версии 4.4 и 5.0 находятся на первом месте, их суммарная доля составляет меньше половины всех устройств. Так что единственный совет (актуальный на все времена, кстати): будь внимателен и критично относись к тому, что ставишь на свой карманный компьютер.

INFO
В июньском номере Хакера (№ 197) в статье «SQLite
под микроскопом» Дмитрий Подкопаев рассказал,
как работать с базой данных сообщений, имея рут.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

ПИНГ-ПОНГ

Android Debug Bridge (ADB) поддерживает передачу СМС между несколькими экземплярами эмулятора. Чтобы отправить СМС из одного эмулятора в другой, необходимо указать номер порта получателя в качестве параметра sendTo для метода sendTextMessage. ADB автоматически адресует сообщение соответствующему экземпляру эмулятора.

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

SMS VS USSD

Для подтверждения операций по банковским счетам и картам вместо СМС иногда используются USSD-запро- сы. Unstructured Supplementary Service Data — сервис в сетях GSM, предназначенный для организации интерактивного взаимодействия между абонентом сети и сервисным приложением в режиме передачи коротких сообщений.

Команда *100# есть не что иное, как USSD-запрос. В настоящее время Android не имеет API для чтения ответных сообщений, что может сильно усложнить жизнь злоумышленникам.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

Кодинг

 

 

 

df-xchan

 

 

 

w Click

to

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

 

Юрий «yurembo» Язев yazevsoft@gmail.com, yazevsoft.blogspot.ru

ЗАДАЧИ

НА СОБЕСЕДОВАНИЯХ

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ЗАДАЧИ ОТ СЕРВИСА МОБИЛЬНОГО ЭКВАЙРИНГА PAY-ME И ПРОСЛАВЛЕНИЕ ПОБЕДИТЕЛЕЙ ОТ ACRONIS

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

В этом выпуске мы расскажем, как отбирают

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

кандидатов в сервис мобильного эквайринга Pay-Me. Передаю слово Игорю Аскарову — техническому директору Pay-Me. Он поделится задачами,

которые он дает на собеседованиях при приеме разработчиков в команду.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Наше решение находится на стыке финансовых и мобильных технологий, оно позволяет принимать оплату картами при помощи картридера и мобильного приложения, поэтому нам важно, чтобы технический специалист имел опыт работы в банковской сфере или представление, как устроена платежная индустрия изнутри. Мы задаем вопросы на знание предметной области, а также в зависимости от навыков, указанных в резюме кандидата, спрашиваем, например: «Что такое индекс в реляционной БД (как структура данных)? Зачем нужен индекс в реляционной БД? Какие вы знаете алгоритмы сортировки данных? Какие отличия были введены в протоколе HTTP версии 1.1?»

Хочешь попробовать свои силы? Вот примеры задач, решить которые могут попросить на встрече в компании.

ЗАДАЧА 1

Два робота десантируются на бесконечно длинную линию (ось) в произвольных ее точках, после посадки роботы смотрят в одну и ту же сторону относительно оси. Роботам неизвестно расположение относительно друг друга. После приземления они сбрасывают свои парашюты на месте посадки. В оба робота перед посадкой заложена одна и та же программа, которая может состоять из нескольких команд:

step_left (шаг влево)

step_right (шаг вправо)

goto N (переход на строку программы с номером N)

goto_p N (переход на строку программы с номером N при условии наличия

парашюта в месте нахождения робота. Парашют может быть как свой, так и другого робота)

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

Соседние файлы в папке журнал хакер