[Envoi de sms]Défi PHP / Java

Discussion dans 'Web, design' créé par Ezekiel !, 5 Mars 2008.

Statut de la discussion:
Fermée.
  1. Offline
    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 :p
    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.
    Ezekiel !, 5 Mars 2008
    #1
  2. Offline
    ozilrit Touriste
    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 ?
    ozilrit, 6 Mars 2008
    #2
  3. Offline
    Ezekiel ! Elite
    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.
    Ezekiel !, 6 Mars 2008
    #3
  4. Offline
    Ahava Revenant
  5. Offline
    Ezekiel ! Elite
    Merci pour le lien jvais jeter un oeil à ça tout de suite !
    Ezekiel !, 6 Mars 2008
    #5
  6. Offline
    ozilrit Touriste
    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 :
    ozilrit, 6 Mars 2008
    #6
  7. Offline
    Ezekiel ! Elite
    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...
    Ezekiel !, 7 Mars 2008
    #7
  8. Offline
    ozilrit Touriste
    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.
    ozilrit, 7 Mars 2008
    #8
  9. Offline
    Ezekiel ! Elite
    YES I DO IT :cool:
    Ezekiel !, 7 Mars 2008
    #9
  10. Offline
    Ahava Revenant
    Ahava, 12 Mars 2008
    #10
  11. Offline
    Calvin80 Elite
    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
    Calvin80, 14 Mars 2008
    #11
Statut de la discussion:
Fermée.