[Envoi de sms]Défi PHP / Java

Statut
N'est pas ouverte pour d'autres réponses.

Ezekiel !

Elite
Bonjour les gamerz !
Dans le cadre de mes études je suis amené à réaliser une application en java qui envoye des sms. Après plusieurs recherches, j'ai trouvé un site permettant de le faire +/- facilement mais il est payant.

J'ai donc encore chercher et je suis tombé sur ceci : http://www.smslisto.com/demosms/senddemosms.php?lang=en
Ce site marche parfaitement mais je n'arrive pas à l'utiliser. Il doit exister une "sécurité" qui empèche que ce soit un autre sript qui l'envoye.
Exemple :
http://nfbyezekiel.free.fr/sms Ce sera up qd je serais plus sur le wifi de l'unif ^^
Je ne sais pas comment ils s'y prennent pour empecher qu'on envoye les données en $_POST depuis un autre site. Peut etre en incluant des variables de session ? Mais ça me semble peu probable et je ne vois pas comment il pourrait faire vu que c'est la meme page pour l'envoi / réception du formulaire.
J'ai après penser aux variables SERVER (HTTP_REFE(E)RER j'ai rajouté un E sinon ça passe pas le filtre =/) mais là encore ça me parait peu probable car certains navigateurs permettent apparament de la modifier.

Je cherche d'abord une solution en PHP car je suppose que si on sait le faire en PHP, on sait le faire en JAVA et au pire mon prog JAVA utilisera le script PHP.

Enfin bref, je cherche des informations sur comment ils empechent mon formulaire d'envoyer un sms depuis leur site. Si qqun a déjà eu un probleme similaire ce serait super sympas de me dire comment faire parce que là je bloque...
Merci d'avance à ceux qui posteront.
 

ozilrit

Elite
J'aimerais comprendre, tu es à l'université et l'énoncé du travail est "envoyez un sms" ? Dois-tu simplement exploiter un service existant ou dialoguer avec un serveur SMSCs ?
 
1er
OP
Ezekiel !

Ezekiel !

Elite
J'aimerais comprendre, tu es à l'université et l'énoncé du travail est "envoyez un sms" ? Dois-tu simplement exploiter un service existant ou dialoguer avec un serveur SMSCs ?
En fait on a eu une formation assez basique en java en première et pour la 2ème on doit faire une logiciel de "trader" qui surveille le porte feuille d'action d'un client. Voila en gros l'énnoncé du problème. Après libre à nous d'implémenter les fonctionnalités que l'ont veut et de la manière que l'on veut.

Une des fonctionnalités que je veux implémenter est l'envoi de sms lorsque certaines actions atteignent tel pallier, ou d'autres évènement sur écoute.

Je sais comment faire pour envoyer des sms via PHP en passant par un service web payant. Il suffit de jouer un peu avec les sockets et ça je sais que c'est possible en JAVA aussi. Seulement, c'est un peu bête de payer un abonnement a un site pour un programme qui ne servira pas (enfin si 15 min pour une démo devant un jury) alors qu'un site permet d'en envoyer gratuitement. On sait envoyer des requêtes en $_POST en java.

Voici ce que j'ai tenté de faire en JAVA :
PHP:
package projet1;

import java.net.Socket;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.net.URLEncoder;
import java.net.URLConnection;
import java.net.URL;
import java.io.InputStreamReader;

/* Certaines parties du code sont inspirées d'un exemple donné sur le forum de développez.com */
public class SMS {
    public static void doPost(String adresse) {
        OutputStreamWriter writer = null;
        BufferedReader reader = null;
        try {
            //encodage des paramètres de la requête
            String donnees = URLEncoder.encode("message", "UTF-8") + "="
                    + URLEncoder.encode("MONMESSAGE", "UTF-8");
            donnees += "&" + URLEncoder.encode("recipient", "UTF-8") + "="
                    + URLEncoder.encode("0032(monnumero)", "UTF-8");
            donnees += "&" + URLEncoder.encode("sendSMS", "UTF-8") + "="
                    + URLEncoder.encode("true", "UTF-8");
            donnees += "&" + URLEncoder.encode("remLen", "UTF-8") + "="
                    + URLEncoder.encode("150", "UTF-8");
            donnees += "&" + URLEncoder.encode("submit", "UTF-8") + "="
                    + URLEncoder.encode("submit", "UTF-8");
            //création de la connection
            URL url = new URL(adresse);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);

            //envoi de la requête
            writer = new OutputStreamWriter(conn.getOutputStream());
            writer.write(donnees);
            writer.flush();

            //lecture de la réponse
            reader = new BufferedReader(new InputStreamReader(conn
                    .getInputStream()));
            String ligne;
            while ((ligne = reader.readLine()) != null) {
                System.out.println(ligne);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                writer.close();
            } catch (Exception e) {
            }
            try {
                reader.close();
            } catch (Exception e) {
            }
        }
    }

    public static void main(String[] args) {
        doPost("http://smslisto.com/demosms/senddemosms.php");
    }
}
C'est a titre d'exemple, ce qui m'intéresse, ce n'est pas du code mais bien comment contourner leur "sécurité" qui empeche l'envoi d'sms depuis d'autre site.

EDIT : En fait je suis à la recherche de n'importe quel service gratuit qui me permettrait d'envoyer des sms gratuitement.
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Merci pour le lien jvais jeter un oeil à ça tout de suite !
 

ozilrit

Elite
Le plus simple dans ton cas serait en effet d'outrepasser la sécurité de Smslisto. Je ne t'aiderai pas - cela doit rester un défi - mais sache que c'est possible et aisé.

Sinon, tu as trois solutions plus intéressantes éducativement :
  • dialoguer avec un Web-Service SOAP/REST (mais bonne chance pour trouver un service gratuit),
  • te renseigner sur le protocol SMPP et t'identifier tel ton GSM (mais tu devras lire ta puce SIM),
  • connecter ton GSM à l'ordinateur et ainsi, soustraiter le traitement.

Quelques liens :
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Le plus simple dans ton cas serait en effet d'outrepasser la sécurité de Smslisto. Je ne t'aiderai pas - cela doit rester un défi - mais sache que c'est possible et aisé.

Sinon, tu as trois solutions plus intéressantes éducativement :
  • dialoguer avec un Web-Service SOAP/REST (mais bonne chance pour trouver un service gratuit),
  • te renseigner sur le protocol SMPP et t'identifier tel ton GSM (mais tu devras lire ta puce SIM),
  • connecter ton GSM à l'ordinateur et ainsi, soustraiter le traitement.
Quelques liens :
Hmm j'avais lu 2-3 articles concernant l'envoi de sms et ce que tu viens de me dire confirme ce que je pensais, le plus simple serait d'envoyer mon sms à partir du site.
Par contre tu es sur de ce que tu avances qd tu dis que c'est facilement contournable comme sécurité ? Fin je veux dire tu as testé ta solution pour voir si elle marchait ?

Je demande pas une ligne de code mais plutot un indice vers quoi me diriger... Les $_POST ? les $_SESSION ? les $_COOKIE ? les $_SERVER ? J'ai déjà utiliser 2-3 trucs sans succès...
 

ozilrit

Elite
Au lieu de faire tes essais via Java directement :

  • ouvre un terminal TELNET et discute avec le serveur ou
  • copie le script et lance le localement (en modifiant l'action du formulaire) ou
  • analyse les paquets envoyés et reçus.
Tu devrais rapidement comprendre. ;)

P.S : Pour spoofer le REFEREEER, tu ajoutes simplement le header "Refereeer: www.smslisto.com/..." à la requête.
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Au lieu de faire tes essais via Java directement :
  • ouvre un terminal TELNET et discute avec le serveur ou
  • copie le script et lance le localement (en modifiant l'action du formulaire) ou
  • analyse les paquets envoyés et reçus.
Tu devrais rapidement comprendre. ;)

P.S : Pour spoofer le REFEREEER, tu ajoutes simplement le header "Refereeer: www.smslisto.com/..." à la requête.
YES I DO IT :cool:
 

Calvin80

Respect is key
1 gsm (nokia bien supporté)
1 serveur linux
1 base de données mysql
et gnokii-smsd d'installé

après ca, deux requetes en php (une pour l'envoi, une pour l'accusé de reception) et c'est nickel
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut