Любите подшучивать над людьми и хотите устроить забавный розыгрыш своему другу, родственнику или даже боссу? Всё что вам нужно это устроить ему телефонный розыгрыш, скачав одно из приложений этой подборки!
Juasapp — телефонные розыгрыши
Большая библиотека самых забавных телефонных розыгрышей
JokesPhone — Prank Calls
Как разыграть друзей на смартфоне Android
Ложный вызов
Ложный вызов, который позволит вырулить из неудобных ситуаций
Ложный вызов с голосом
Подшутите над друзьями с помощью этого приложения
FakeTime fake video call
Скачайте это приложение и симулируйте видеозвонки
A Call From Santa!
Позвольте своему малышу пообщаться с Дедом Морозом!
Burner — Free Private Number
Как получить второй виртуальный номер телефона
Prank Call SMS
Совершайте ложные звонки своим друзьям
Ложный вызов реальным голосом
Поменяйте свой голос и подшутите над своими друзьями
Подшутите над своими друзьями с этим приложением
Любите розыгрыши? Тогда это приложение для Вас!
Ложный вызов 2
Подшутите над друзьями с помощью этого приложения
КТО ЗВОНИТ И СБРАСЫВАЕТ ТЕБЕ КАЖДЫЙ ДЕНЬ?!
Ложный вызов https://www.androidlist-russia.com/collections/29795/pozvonite-druzyam-i-razygrajte-ih/» target=»_blank»]www.androidlist-russia.com[/mask_link]
Пишем свой Dialer для Android и работаем со звонками на низком уровне
В Android существует программный интерфейс к низкоуровневому аппаратному стеку телефона. С его помощью можно написать программу для набора номера или обрабатывать входящий звонок — например, негласно включить запись с микрофона или инициировать отправку текущих координат. Словом, интересных штук можно придумать массу.
INFO
В юбилейном выпуске «Хакера» за номером 200 мы рассматривали скрытые и не очень аспекты работы с СМС. Сегодня мы продолжаем тему, обратив внимание на голосовые звонки.
Одной из самых популярных программ времен Symbian и «Нокии» был так называемый черный список звонков, позволяющий оградить тонкую натуру владельца телефона от нежелательных абонентов. И хотя сегодня подобная функциональность интегрирована в некоторые прошивки смартфонов, зачастую такие возможности сводятся лишь к банальному перманентному «бану» контакта в адресной книге. В исследовательских целях рассмотрим, как подобный механизм реализуется на практике. Будем считать, что ты давно читаешь рубрику «Кодинг», живешь в Android Studio и ругаешься исключительно на Java.
Рекомендуем почитать:
Xakep #289. Взлом в воздухе
- Содержание выпуска
- Подписка на «Хакер» -60%
А где у него кнопочки?
Каким бы ни было приложение, официальным или негласным (только для личного пользования в целях исследования, естественно), одинаково плохо, если оно будет падать из-за отсутствия на устройстве телефонных функций (Wi-Fi-планшет). Поэтому первое, что стоит сделать, — проверить таковые:
Звонят и сбрасывают с разных номеров Как избавиться
PackageManager pm = getPackageManager(); boolean isTelephonySupported = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY); boolean isGSMSupported = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_GSM);
Как видишь, мы воспользовались методом hasSystemFeature из объекта PackageManager, указав константу FEATURE_TELEPHONY в качестве параметра. Кроме того, имеет смысл дополнительно проверить поддержку GSM-модуля константой FEATURE_TELEPHONY_GSM .
Если обе константы лживы, то мы ошиблись устройством, ничего не поделаешь. В этом случае стоит завершить работу приложения, а на выходе попросить пользователя сменить девайс ;).
Принимаем первый звонок
С помощью класса PhoneStateListener в Android’е отслеживается состояние телефона, но лишь в том случае, если приложение запросило полномочие READ_PHONE_STATE в своем манифесте:
Далее необходимо переопределить и зарегистрировать метод onCallStateChanged в реализации PhoneStateListener , чтобы получать уведомления об изменении состояния телефонного вызова. Готовая реализация представлена ниже:
PhoneStateListener stateListener = new PhoneStateListener() < public void onCallStateChanged(int state, String incomingNumber) < switch (state) < case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; case TelephonyManager.CALL_STATE_RINGING: doMagicWork(incomingNumber); // Поступил звонок с номера incomingNumber break; >> >; . TelephonyManager.listen(stateListener, PhoneStateListener.LISTEN_CALL_STATE); // Помещаем в onCreate активности
Когда поступает звонок, целочисленный параметр state принимает значение CALL_STATE_RINGING , что приводит к вызову нашей боевой (или мирной) нагрузки в виде функции doMagicWork .
В природе данный вариант приема телефонного звонка используется чуть реже, чем никогда. Дело в том, что в момент звонка приложение должно работать на переднем плане, — такое своеобразное использование придумать сложновато (разве только в отладочных целях), поэтому двигаемся дальше.
Принимаем второй звонок
Когда состояние телефона изменяется (например, в результате приема звонка), объект TelephonyManager начинает транслировать намерение (Intent) с действием ACTION_PHONE_STATE_CHANGED .
Намерения — межпрограммный фреймворк для обмена сообщениями. Намерения широко используются в Android для запуска/остановки активностей и сервисов, трансляции сообщений по всей системе, неявного вызова активностей, сервисов и широковещательных приемников.
Широковещательные приемники — компоненты, с помощью которых приложение может отслеживать намерения и реагировать на любые полученные действия. Приемники реализуют событийную модель взаимодействия приложений и системы. Более подробно тема создания широковещательного приемника рассмотрена в статье «Хакерский Cron на Android».
Как и в предыдущем случае, приложение должно получить разрешение READ_PHONE_STATE в манифесте:
Там же регистрируется и широковещательный приемник, способный отслеживать трансляцию намерения:
При таком подходе мы всегда можем получать информацию о входящих звонках, даже если приложение в данный момент не запущено.
Намерение, сообщающее об изменении состояния телефона, будет содержать два параметра: EXTRA_STATE_RINGING — признак входящего звонка и EXTRA_INCOMING_NUMBER — телефонный номер звонящего.
Такой подход и следует использовать на практике.
Положи трубку!
Итак, телефон весело звонит, номер входящего определен, наш широковещательный приемник сработал. Что дальше?
Если рассматривать вариант черного списка или же бота, выполняющего команды извне, то неплохо бы научиться вешать трубку, не привлекая внимания пользователя. Аппаратный стек телефона очень похож на нулевое кольцо (ring 0) в Windows, в том смысле, что тоже представляет собой низкоуровневый системный компонент. Поэтому не существует стандартного способа до него добраться (особенно если у тебя нерутованный аппарат).
Как вариант, можно попытаться использовать язык описания интерфейсов (Android Interface Definition Language, AIDL) для обеспечения межпроцессного взаимодействия между компонентами системы.
Для этого необходимо добавить в проект файл-интерфейс ITelephony.aidl следующего вида:
package com.android.internal.telephony; interface ITelephony
Следующий код подхватит интерфейс и, используя рефлексию, «положит» трубку:
import java.lang.reflect.Method; import com.android.internal.telephony.ITelephony; . TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try < Class c = Class.forName(telephony.getClass().getName()); Method m = c.getDeclaredMethod(«getITelephony»); m.setAccessible(true); telephonyService = (ITelephony) m.invoke(telephony); telephonyService.endCall(); >catch (Exception e)
Чтобы это хозяйство заработало, приложение должно получить еще одно разрешение в манифесте:
Из-за этого применить подобный способ на устройствах с Android 2.3 и выше не выйдет, так как начиная с Gingerbread данное разрешение считается системным и попытка его использовать приведет к падению приложения:
Neither user 10031 nor current process has android.permission.MODIFY_PHONE_STATE
Но ведь в Google Play полно приложений, реализующих черный список! Как же они работают? Условно их можно разделить на две группы (кроме тех, кто честно юзает AIDL): фальшивки и. костыли. Первые всего лишь имитируют работу, периодически показывая в шторке статистику «заблокированных» звонков (и СМС).
Взамен они требуют доступ в интернет, скачивают килотонны рекламы, которую крутят по поводу и без. Расчет здесь строится на том, что пользователь не сразу обнаружит обман и свою порцию баннеров гарантированно получит (гомеопатия в чистом виде). Такие программы вряд ли соответствуют рубрике «Кодинг», поэтому мы их пропускаем.
Приложения второй группы пытаются оборвать звонок нетривиальными способами — например, прикидываясь пользователем и нажимая кнопки:
public static void answerPhoneHeadsethook(Context context) < // «Нажимаем» и «отпускаем» кнопку на гарнитуре Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON); buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK)); context.sendOrderedBroadcast(buttonDown, «android.permission.CALL_PRIVILEGED»); Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON); buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); context.sendOrderedBroadcast(buttonUp, «android.permission.CALL_PRIVILEGED»); >
Оригинальным, но вполне рабочим может быть метод уменьшения громкости нежелательного звонка до нуля:
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); int ringerMode = audioManager.getRingerMode(); audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
Используя объект AudioManager , мы сначала получаем текущий звуковой профиль getRingerMode() , а потом устанавливаем бесшумный режим AudioManager.RINGER_MODE_SILENT .
После того как звонок прекратится (текущее состояние сменится на EXTRA_STATE_IDLE ), восстанавливаем исходный режим:
audioManager.setRingerMode(ringerMode);
Но даже в этом случае не обойтись без специальных разрешений:
Здесь мы не блокируем номер как таковой, скорее просто не поднимаем трубку, однако такой подход не требует никаких «выкрутасов».
Встречаются приложения, которые с переменным успехом пытаются получить доступ к кнопкам на экране входящего звонка, как, например, здесь.
INFO
К рассматриваемому вопросу можно отнести задачу вывода информации поверх активности входящего звонка (как вариант — полная визуальная замена окна для маскировки), но из соображений безопасности Android не позволяет создавать собственные активности для этих целей. Тем не менее это не распространяется на системные окна. Любопытная статья по теме.
Как показывает практика, многие «хаки», неплохо функционирующие на одних устройствах, на других в лучшем случае не работают, а в худшем — рушат приложение во время входящего звонка. Соответственно, оценки подобных приложений скачут от единицы («Ничего не работает, верните деньги!») до пяти («Пользуюсь уже двадцать лет, все устраивает!»).
На этом можно было бы поставить жирную точку, если бы внезапно «корпорация добра» не сделала ход слоном.
Липкий список Google
В Android 7.0 Nougat (API 24) появился класс BlockedNumberContract — тот самый черный список, но уже не в виде компонента прошивки смартфона, а в качестве полноценного объекта ОС. Все звонки (а также СМС и электронные письма) от отправителей из этого списка будут автоматически отклонены системой.
BlockedNumberContract представляет собой стандартный контент-провайдер, работать с которым могут, во-первых, системные приложения, во-вторых, приложения для СМС и телефонии, заданные как приложения по умолчанию (Default App). Свойство «по умолчанию» должен установить сам пользователь — это одна из парадигм безопасности Android начиная с версии 4.4. Для телефонии указанное свойство наделяет код правом не только обрабатывать входящие и исходящие звонки, но и изменять базу данных (например, удалять отдельные звонки из логов). Поэтому, кстати, стоит очень настороженно относиться к тем приложениям, даже из Google Play, которые пытаются получить флаг «по умолчанию» и при этом имеют неограниченный доступ в интернет, — вероятность слива информации весьма высока.
INFO
Более подробную информацию о приложениях «по умолчанию» можно почерпнуть из этой статьи.
Работа с BlockedNumberContract напоминает взаимодействие с базой данных: используются узнаваемые методы вставки, удаления и, разумеется, выборки записей.
Контент-провайдер — разделяемое постоянное хранилище (как правило, база данных SQLite), которое содержит информацию, относящуюся к приложению, и управляет ею. Предпочтительный способ обмена данными между различными программами.
Чтобы забанить номер телефона, вызываем стандартный метод getContentResolver().insert :
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, «1234567890»); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
Несмотря на название, столбик COLUMN_ORIGINAL_NUMBER может содержать не только номер телефона, но и электронный адрес:
Удалить номер из бана так же просто:
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, «1234567890»); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null);
Для проверки, не внесен ли номер в черный список, предусмотрен метод isBlocked(Context, String) .
Наконец, чтобы получить всех отвергнутых одним махом:
Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[], null, null, null);
Таким образом, рассмотренные в предыдущем разделе трюки постепенно сойдут на нет. Другой вопрос, как быстро это случится. Доля Android 7 пока не превышает даже инженерной погрешности.
Перезваниваем
Позвонить в Android’е можно двумя принципиально разными способами. Первый, и самый простой, — вызвать стандартную активность, передав ей в качестве параметра номер для набора:
Intent call = new Intent(Intent.ACTION_DIAL, Uri.parse(«tel:8495-123-45-56»)); startActivity(call);
Здесь используется инициирующее звонок намерение Intent.ACTION_DIAL , а номер передается в виде пути URI с обязательным указанием протокола tel. На экране смартфона пользователь увидит привычное окно с заведенным номером.
Стандартная активность для дозвона разрешает изменить номер непосредственно перед выполнением звонка, поэтому никаких разрешений в манифесте приложения не требуется.
Второй вариант — перехват намерений, которые обслуживаются стандартным приложением, и вызов своей активности. В этом случае отрисовка экранных цифровых кнопок и поиск по контактам (и это далеко не полный перечень) ложится на плечи программиста.
Кроме того, поскольку в этом случае требуется разрешение:
начиная с Android 4.4 приложение откажется работать, если оно не будет выбрано по умолчанию, а пользователь вряд ли просто так сменит знакомую «звонилку».
Как видишь, Google неплохо защитила свой телефонный компонент, и вредоносов, скрытно звонящих на короткие платные номера, в природе (пока еще?) не наблюдается.
Ода манифесту
Если ты внимательно читаешь рубрику «Кодинг», то наверняка заметил, что то или иное потенциально опасное действие в Android требует однозначного разрешения. Несмотря на имеющиеся уязвимости (когда в последний раз к тебе прилетали патчи?) в разных компонентах системы, в целом основным рассадником проблем оказывается сам пользователь. Разумеется, если ты заинтересуешь ЦРУ, никакой запрет разрешений приложений тебя не спасет, но в обычной жизни необходимо крайне настороженно относиться ко всему устанавливаемому ПО, даже если оно родом из Google Play. Как думаешь, стоит ли ставить себе калькулятор, если он требует доступа в интернет и возможности отправлять СМС?
Заключение
Сегодня мы познакомились с одним из главных компонентов современного смартфона — телефонией (хотя, возможно, у интернет-мессенджеров другое мнение на этот счет). Как обычно, не все работает так, как хотелось бы, и свет в велосипедной мастерской еще долго не погаснет, но такая уж у программистов судьба. В любом случае «Хакер» будет держать тебя в курсе.
Источник: xakep.ru
Более 90 сайтов с виртуальными номерами для приема SMS и звонков
Для продвижения в соц сетях и мессенджерах необходимо иметь множество акаунтов в различных сервисах, как правило они требуют либо привязку к номеру телефона, либо к почте. Если привязку к почте можно решить простой регистрации новой почты, то с смс и приемом звонков дела обстоят сложнее. Для этого нам и пригодятся Сервисы смс активации.
Я собрал для вас более 90 сервисов смс активации где можно принять звонок или смс для абсолютно любой социальной сети или сервиса либо приложения.
Личный номер для приема смс и звонков:
- Twilio.com
- Textnow.com
- Countrycode.org
- Wp.pinger.com
- Textmagic.com
- Esendex.co.uk — (Легко получить пробный период пользования виртуального номера путем быстрой регистрации, в пакет входит 25 бесплатных сообщений, ограничение пользования в 7 дней. Не требуется кредитная карта.Можно считать за личный номер!)
- Burstsms.com.au — (Похожий сервис, что и предыдущий, быстрая регистрация, в пробник входит 14 дней пользования. Не требуется кредитная карта. Так же можно считать за личный номер!)
- Directsms.com.au -(Регистрируешься, получаешь бесплатную 30-дневную пробную версию Бизнес sms. Личный вирт.номер!)
- Vumber.com — (Регистрируешься, получаешь 14-дневную пробную версию. Личный вирт.номер!)
Публичный номер для приема смс:
- Receive-sms-online.info
- Receivefreesms.net
- Sms-receive.net
- Receive-a-sms.com
- Hs3x.com
- Receive-sms-now.com — (Есть рус.номер)
- Smsreceivefree.com
- Receivesmsonline.com
- Getsms.org — (Рус.номера)
- Tempsms.ru — (Рус.номера)
- Numberforsms.com — (Есть рус.номер)
- Sonetel.com
- Smska.us — (Рус.номера)
- Sellaite.com
- Sms.ink — (Рус.номера)
- Proovl.com
- Onlinesim.ru
- Zadarma.com — (Есть рус.номера)
- Smsc.ru — (Нужна регистрация. Есть рус и укр. номера)
- Freevirtualnumber.skycallbd.com
- Getfreesmsnumber.com
- Receive-smsonline.net
- Receivefreesms.com
- Receivesmsverification.com
- Sms-online.co
- Ireceivesmsonline.com
- Receive-sms-online.com — (Есть укр.номер)
- Receive-sms-free.com
- Esendex.com.au — (Нужна регистрация)
- Receivesmsonline.in
- Mytrashmobile.com
- Receivesmsonline.me
- Anon-sms.com
- Mfreesms.com
- Spryng.nl
- Smsreceiveonline.com
- Smsget.net — (Мегафон и Билайн номера)
- smsvk.net
- 7sim.net/ru
- give-sms.com
- hsmslike.ru/ru
- smsvk.net
- receive-sms-online.com
- 5sim.net
- virtualsms.ru
- regamega.ru
- 7sim.net/ru
- sms-acktiwator.ru
- smsvk.net
- www.proovl.com
- onlinesim.ru
- smsget.net
- receive-sms.com
- receive-sms-online.info
- tempsms.ru
- sms.ink
- smska.us
- freephonenumber.online
- sonetel.com/ru
- simsms.org
- getsms.online/ru
- smsget.net
- anon-sms.com
- receivesmsonline.in
- getfreesmsnumber.com
- sms-online.co/receive-free-sms
- hs3x.com
- getsms.org
- smsreceivefree.com
- sonetel.com/ru/
- smska.us
- tempsms.ru
- sellaite.com/smsreceiver
- sms.ink
- receive-sms-online.info
- proovl.com/ru
- receive-sms-now.com
- receive-sms.com
- receivesmsonline.com
- receivefreesms.com
- smslike.ru/ru
- sms-reg.com
- 5sim.net
- sms-area.org
- sms-activate.ru
- simsms.org
- virtualsms.ru
- getsms.online/ru
- sms-acktiwator.ru
- sms-man.ru
Теги: Бесплатный виртуальный номер, бесплатный виртуальный номер для смс, виртуальный номер телефона бесплатно, бесплатные виртуальные номера для приема, виртуальные номера для приема смс бесплатно, бесплатный виртуальный смс, виртуальный телефон.
Источник: kalininlive.ru