SpammySMS : envoyer des spams SMS via Android

Neamar

SpammySMS est une application ProofOfConcept pour m'entraîner au développement sur Android. Il est fort probable que l'application contiennent des memory leaks ou autres, et je m'en excuse.

Présentation

L'application pour téléphones Android SpammySMS permet d'envoyer en boucle des SMS à un destinataire.
Elle se veut drôle et n'est pas destinée à une attaque par DoS sur un mobile ;)

L'utilisateur configure la victime, le message spam, et le nombre de répétitions, puis clique sur OK... et vole, petit spam ! Bienvenue dans le monde merveilleux des spammeurs, même s'il ne tient qu'à vous de ne pas vendre de v1agrA ou de ne pas proposer "un changmeent dans l'expériance PayPale". Innovez, amusez-vous... mais restez raisonnable : souvenez-vous que ce n'est qu'un jeu, et que l'humour est un plat qui se sert froid... et peu souvent !

Téléchargement

Pour télécharger l'application, cliquez sur ce lien.

L'installation hors market Android nécessite de modifer les paramètres du téléphone pour l'installation d'applications de sources inconnues : dans Paramètres, cliquez sur Paramètres des applications puis cochez Sources inconnues.

Astuce

Dans le champ message, vous pouvez utiliser les valeurs joker %i et %l qui seront respectivement remplacés par le nombre de SMS envoyés / le nombre de SMS restants.

Captures d'écran

Ces captures d'écran proviennent de l'émulateur Android sur PC.
L'application a été testée sur un téléphone Samsung Galaxy, Android 1.5.

Lancement de l'application SpammySMS

Lancement de l'application SpammySMS

Écran d'accueil

Écran d'accueil

Choix de la victime qui recevra le spam SMS Android

Choix de la victime qui recevra le spam SMS Android

Entrée du message spam

Entrée du message spam

Choix du nombre de SMS à envoyer

Choix du nombre de SMS à envoyer

Envoi des SMS

Envoi des SMS

De l'autre côté du miroir : réception des SMS

De l'autre côté du miroir : réception des SMS

Codes sources

Manifest

Déclare l'icone et les permissions nécessaires à l'éxécution de SpammySMS.

Code source : AndroidManifest.xml
  • Langage : xml
  • ΔT : 0.001s
  • Taille :815 caractères
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.neamar.sms"
      android:versionCode="1"
      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainScreen"
                  android:label="@string/app_name">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="3" />
   
        <uses-permission android:name="android.permission.SEND_SMS" />
        <uses-permission android:name="android.permission.READ_CONTACTS"/>
</manifest>

MainScreen

L'interface de l'application, gestion des clics et autres.

Code source : MainScreen.java
  • Langage : java
  • ΔT : 0.016s
  • Taille :5579 caractères
span class="co2">com.neamar.smsjava.util.ArrayListandroid.app.Activityandroid.content.ContentResolverandroid.database.Cursorandroid.net.Uriandroid.os.Bundleandroid.provider.Contacts.Peopleandroid.telephony.gsm.SmsManagerandroid.view.Viewandroid.view.View.OnClickListenerandroid.widget.ArrayAdapterandroid.widget.AutoCompleteTextViewandroid.widget.EditTextandroid.widget.ImageButtonandroid.widget.ProgressBarandroid.widget.Spinnerandroid.widget.Toast/** Called when the activity is first created. *///Créer l'interface globale
//Masquer la barre de progression et afficher des scrollbars pour l'application
//Remplir le spinner avec les possibilités pour le nombre de messages
//Préparer l'auto complétion des contacts
"<"">""Ano Nymous";
                Phone=Destinataire;
        }

        /*try
        {
                Integer.parseInt(Phone);
        }
        catch(NumberFormatException e)
        {
                Tip(getString(R.string.InvNumero));
                cDestinataire.requestFocus();
                return;
        }*/


       
        //Préparer l'interface graphique
       
        //Empêcher de renvoyer les données
"%N""%C""%C"// instance qui permet d'acceder au contenu d'autre application
//Récupérer les contacts dans un curseur
"<"+Numero+">"

SMSHandler

Gestion de l'envoi des SMS.

Code source : SMSHandler.java
  • Langage : java
  • ΔT : 0.006s
  • Taille :1483 caractères
span class="co2">com.neamar.smsandroid.app.Activityandroid.app.PendingIntentandroid.content.BroadcastReceiverandroid.content.Contextandroid.content.Intentandroid.content.IntentFilterandroid.telephony.gsm.SmsManagerandroid.view.Viewandroid.widget.ProgressBar"SMS_SENT"//---when the SMS has been sent---
"%i""%l"

Layout

Déclare la structure de l'interface.

Code source : main.xml
  • Langage : xml
  • ΔT : 0.002s
  • Taille :2146 caractères
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/GlobalLayout">


<!-- Disclamer -->
<!--<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/disclamer"/>-->

<!-- Destinataire -->
<TextView android:id="@+id/Destinataire_TV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/DestinataireCaption"></TextView>
<AutoCompleteTextView android:id="@+id/Destinataire_ET" android:hint="@string/DestinataireDefaut" android:layout_width="fill_parent" android:layout_height="wrap_content"></AutoCompleteTextView>


<!--  Message -->
<TextView android:id="@+id/Message_TV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/MessageCaption"></TextView>
<EditText android:id="@+id/Message_ET" android:layout_height="wrap_content" android:hint="@string/MessageDefaut" android:layout_width="fill_parent" android:maxLength="160"></EditText>

<!-- Répétitions -->
<TextView android:id="@+id/Repetitions_TV" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/RepetitionsCaption"></TextView>
<Spinner android:id="@+id/Repetitions_S" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:prompt="@string/RepetitionsCaption" />


<!-- Go ! -->
<LinearLayout android:layout_height="wrap_content" android:id="@+id/CenterStart" android:orientation="horizontal" android:layout_width="fill_parent" android:gravity="center">
        <ImageButton android:id="@+id/Go_B" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:layout_width="wrap_content" android:layout_gravity="center"></ImageButton>
</LinearLayout>
<ProgressBar android:id="@+id/Progress_PB" android:layout_width="fill_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal"></ProgressBar>

</LinearLayout>
 
Auteur
Neamar
Date
Nov. 2009
Menu
Index des ressources

Chargement du sommaire...