Born to be wired
734039 visites
Uptime 81 days

Articles taggés avec ‘SMS’

 SMS automatisé – Bonus round

 6 novembre 2014  Domotique  Aucun commentaire
sms-by-npc-rpg

Le thème de l’envoi automatisé de SMS, je pensais l’avoir traité en long en large et en travers, alors je m’étais jugé que je n’en reparlerais plus. Il faut dire que ça marchait plutôt bien. Ça fonctionnait tellement bien, que parfois, je recevais même des mignons petits messages de gentils inconnus qui s’étaient malencontreusement plantés de numéro, dans ce genre là :

sms-spam

Et il faut le dire, parfois, dans ce cas-là, j’hésitais à répondre. Et parfois, dans ce cas-là, le choix de réponse était cornélien, comme si cela entrainait des répercussions capitales sur tout le reste de ma longue et héroïque quête de l’aventure humaine : (suite…)

 SMS automatisé – Final round

 8 décembre 2013  Domotique  Aucun commentaire
Serveur, onduleur, et modem GSM.

Maintenant, terminé les enfantillages. Envoyer des SMS en ligne de commande à des gens avec un nom rigolo, c’est très amusant, mais ça montre rapidement ses limites. Pour aller plus loin, il faut mettre en place un système capable de gérer de manière autonome les échanges avec la carte SIM, et de proposer une interface de communication à la fois simple, robuste, et utilisable par un grand nombre d’applications.

La base de données est une interface idéale pour cela, et il existe justement un système qui peut l’utiliser comme backend pour communiquer avec le modem GSM. Ce système, c’est gnokii-smsd.

(suite…)

 SMS automatisé – Round two

 11 octobre 2013  Projet Serveur  Aucun commentaire
La carte SIM B&You prête à reprendre du service.

Dans mon premier article sur le sujet, j’avais promis que la suite de l’aventure se déroulerait sur une seconde maquette démontrant l’envoi de SMS grâce à l’utilisation d’un modem GSM et des commandes AT. Cette expérience constituera donc le sujet de cet article.

Comme d’habitude en retard en ce qui concerne la rédaction de mes articles (les photos que vous pourrez voir dans celui-ci ont été prises il y a pile un an), je tiens à préciser que ce retard se comble néanmoins peu à peu, avec pour effet de bord une accumulation de retard sur les interactions sociales avec les individus de mon espèce.

À la question « Pourquoi le modem GSM quand on peut déjà scripter l’envoi de SMS avec un Nokia 3310 ? », je répondrais : « Pour sa capacité à s’intégrer dans une chaîne de traitement automatisée ! Le 3310 ne fonctionne qu’avec son chargeur branché en permanence, avec les conséquences sur la batterie, et il doit être rallumé manuellement si jamais il venait à s’éteindre. Le modem GSM est alimenté par USB et sous tension dès que la machine/le serveur sur lequel il est connecté l’est aussi. »

Maintenant que tout est dit, passons au détail. J’ai choisi un modem Fastrack Wavecom en USB, ou un de ses clones, acheté à un vendeur chinois pour une somme très raisonnable sur un célèbre de site de vente aux enchères au logo multicolore et aux commissions sur les ventes outrageantes. L’appareil m’a été livré seulement deux semaines après l’achat, cette livraison dans un laps de temps si court prouve qu’il n’est pas arrivé à pied par la Chine.

Un paquet mystère en provenance de Chine.

Un paquet mystère en provenance de Chine.

Détail intéressant n°1, comme à leur habitude, les Chinois ne se prennent pas trop la tête avec la douane. La déclaration sur le paquet mentionne une valeur de marchandise de 1$, le contenu est décrit comme étant des LED, et la case « gift » est coché. Tout est fait pour que le colis passe les frontière comme une lettre à la poste, c’est le cas de le dire.

Le formulaire accolé sur le paquet suit à la lettre les préceptes du livre "Comment gruger les services de douane en loucedé", éditions Gallimard.

Le formulaire accolé sur le paquet suit à la lettre les préceptes du livre « Comment gruger les services de douane en loucedé », éditions Gallimard.

Au déballage, on retrouve le modem, son antenne amovible, un cordon USB et un mini-CD.

Pas de grosse surprise au déballage.

Pas de grosse surprise au déballage.

Détail intéressant n°2, le mini-CD inclus dans le package, auquel j’ai tenté d’accéder, comme ça pour rigoler. Évidemment, le support est blindé à craquer de fichiers tous plus chelous les uns que les autres, entre autres des bons vieux exécutables chargés à ras bord de plus de chevaux de Troie qu’il ne faudrait pour mettre à sac un pays entier. Timeo Danaos et dona ferentes, et cela s’applique aussi aux Chinois.

Double-cliquez sur n'importe quel exécutable pour transformer votre PC en robot-spammeur, plate-forme d'échange de numéros de cartes bancaires volés, et proxy pour darknet pédophile.

Double-cliquez sur n’importe quel exécutable pour transformer votre PC en robot-spammeur, plate-forme d’échange de numéros de cartes bancaires volés, et proxy pour darknet pédophile.

Par sécurité, je décide que le mini-CD ne sera plus jamais lu sur un système Windows. La lecture du support sur un système Linux, afin de fouiller si des instructions intéressantes sont présentes, ne me permet de ne faire qu’une seule découverte digne de ce nom : le support Unicode est bien opérationnel sur ma plate forme.

Et on remercie la fonction copier/coller du terminal pour naviguer dans les répertoires en chinois.

Et on remercie la fonction copier/coller du terminal pour naviguer dans les répertoires en chinois.

Le déballage effectué, il est maintenant temps de passer aux choses sérieuses, à savoir, pour commencer, le chargement d’une carte SIM dans le modem et le test de quelques commandes AT. J’ai effectué ces tests de commandes AT sous Windows.

La carte SIM B&You prête à reprendre du service.

La carte SIM B&You prête à reprendre du service.

Le but de cet article n’est pas de détailler l’utilisation des commandes AT. Quelques minutes de browsing en passant par votre moteur de recherche préféré vous conduiront directement à des tutoriels très bien faits sur le sujet, dont celui-ci que je trouve extrêmement complet.

Une fois la base des commandes AT comprises, l’envoi d’un SMS de test devient rapidement une formalité, comme l’illustre la capture d’écran ci dessous.

Envoi d'un message simple par commandes AT.

Envoi d’un message simple par commandes AT.

Un détail intéressant à propos des commandes AT, surtout à l’ère des communications internationales, est la possibilité malgré un ensemble de commandes utilisant un jeu de caractères réduit,  d’envoyer également des caractères Unicode, pour peu que le modem supporte la fonction (et que le mobile puisse les afficher). Cela se fait au travers d’une petite gymnastique de conversion décrite sur ce site. J’ai bien évidemment testé :

Envoi d'un message Unicode par commandes AT.

Envoi d’un message Unicode par commandes AT.

Et le résultat ne se fait pas attendre, les 2 SMS sont bien reçus par le mobile destinataire, ici un Nokia C7.

Réception immédiate et conforme aux messages envoyés.

Réception immédiate et conforme aux messages envoyés.

J’en sais assez, l’expérience peut prendre fin. Il est temps de confier la tâche de l’envoi à une application de plus haut niveau qui se chargera d’envoyer les commandes AT au modem pour moi. Et cette application, c’est encore une fois gnokii, sur système Linux cette fois-ci.

En premier vient la préparation du système. Si ce n’est pas déjà fait, cela consiste à ajouter les options suivantes dans le noyau Linux :

Device Drivers --->
-----USB Support --->
----------USB Serial Converter support --->
--------------- USB FTDI Single Port Serial Driver
--------------- USB Prolific 2303 Single Port Serial Driver

Si pl2303 est bien chargé automatiquement au démarrage, ce n’est pas le cas de ftdi_sio. La déclaration de ftdi_sio  dans /etc/modules permet de résoudre ce problème. J’ai aussi créé un lien symbolique /dev/wavecom vers le périphérique USB adéquat (/dev/ttyUSB0 chez moi) grâce à udev.

Enfin, le fichier de configuration de gnokii (/etc/xdg/gnokii/config sur Debian) est mis à jour de la manière suivante :

[global]
port = /dev/wavecom
model = AT
initlength = default
connection = serial
use_locking = yes
serial_baudrate = 9600

Les préparatifs sont terminés, place à l’action. On commence par tester que le lien avec le modem est fonctionnel, grâce à une commande qui retourne les principales informations liées au modem.

Modem reconnu par gnokii, numéro IMEI générique.

Modem reconnu par gnokii, numéro IMEI générique.

Détail intéressant n°3, le modem est livré avec un numéro IMEI non programmé, c’est à l’utilisateur de le faire au moyen d’une commande AT (vraisemblablement irréversible une fois effectué). Le numéro par défaut est 012345678901234. Je n’ai pas testé l’écriture d’un numéro IMEI à l’heure où j’écris ces lignes, l’envoi de SMS fonctionne très bien sans cela. Je ne pourrais que conseiller d’être prudent avec cette fonction, il serait en effet dommage d’entrer un IMEI au hasard bloqué par les opérateurs (par exemple suite à un vol de mobile). Si je devais le faire, j’utiliserais un IMEI issu d’un vieux téléphone mobile qui traine dans mes cartons, par exemple le Nokia 3310 qui m’a servi lors des tests précédents.

Avant de tenter un envoi, on prendra soin de débloquer la carte SIM en saisissant le code PIN. L’exemple suivant montre comment effectuer l’opération :

dhalsim:/# gnokii --identify
gnokiid Version 0.6.30
IMEI         : 012345678901234
Fabricant: WAVECOM MODEM
Aucune section flags dans le fichier de configuration.
Modele       : MULTIBAND  900E  1800
Nom du produit : MULTIBAND  900E  1800
Revision     : 532a09gg.2C2 182812
dhalsim:/# gnokii --getsecuritycodestatus
gnokiid Version 0.6.30
Etat du code de securite: en attente du code PIN.
dhalsim:/# gnokii --entersecuritycode PIN
gnokiid Version 0.6.30
Entrez votre code:
Code ok.
dhalsim:/# gnokii --getsecuritycodestatus
gnokiid Version 0.6.30
Etat du code de securite: rien a entrer.

On peut ensuite tester l’envoi de SMS en bonne et due forme. Pour commencer, un envoi d’un message long avec divers caractères accentués (NB : l’encodage de caractères des paramètres régionaux de ma session est l’UTF-8). Gnokii m’informe que le message a bien été envoyé en 2 parties.

Envoi d'un message avec caractères accentués par gnokii.

Envoi d’un message avec caractères accentués par gnokii.

Dans la foulée, j’en profite pour tester l’envoi de caractères un peu plus exotiques, directement depuis le shell. Celui-ci est bien envoyé également.

Envoi d'un message avec caractères chinois par gnokii.

Envoi d’un message avec caractères chinois par gnokii.

Attention toutefois, chaque idéogramme compte pour plus d’un caractère, on peut donc vite dépasser la limite du sous-message à 160 caractères en envoyant n’importe quoi. Pour ma part, bien que cela soit prévu par la norme GSM j’ai réussi à bloquer gnokii en tentant d’envoyer « 短信猫驱动与配套软件及安装说明书 ». Je n’ai pas cherché qui de gnokii ou du modem était en faute, ce genre de message n’étant pas représentatif des communications que je compte automatiser. J’aime simplement connaître les limites des systèmes que j’utilise. J’espère juste qu’un modem chinois est capable d’envoyer des message en chinois, sinon, le monde est mal barré.

Les messages correctement traités par gnokii ont bien été reçus sur le Nokia C7, avec un bémol sur le message en chinois : le mobile repère bien 4 caractères correspondant à mes 4 idéogrammes, mais ne les affiche pas. Je présume qu’il n’embarque pas la police de caractère adéquate. Décidément, Nokia, ce n’est plus ce que c’était.

Les messages envoyés par le shell sont reçus sur le mobile, et plus ou moins bien affichés en fonction du jeu de caractères constituant chacun d'entre eux.

Les messages envoyés par le shell sont reçus sur le mobile, et plus ou moins bien affichés en fonction du jeu de caractères constituant chacun d’entre eux.

La photo ci-dessus fait également apparaitre un message « Test réception SMS », que j’ai moi-même écrit à partir du mobile et envoyé au numéro de téléphone correspondant à la carte SIM à l’intérieur du modem. Le but de l’opération étant cette fois-ci de tester la réception et la récupération de messages à partir du shell. Une fois encore, c’est gnokii qui s’occupe de cette tâche. La commande permet d’afficher tous les messages enregistrés dans la boîte de réception de la carte SIM. Le message envoyé à partir de mon mobile est bien visible (tout en bas).

Dépilage des messages stockés dans la carte SIM.

Dépilage des messages stockés dans la carte SIM.

Au fait, ne vous en faîtes pas pour les impayés dont il est question dans la capture d’écran ci-dessus, le message bien qu’alarmant a été envoyé par erreur par B&You à un grand nombre de ses clients parfaitement en règle avec leurs échéances de paiement. Les malencontreuses erreurs de fonctionnement que l’on rencontre au début quand on est un nouvel opérateur sur le marché, j’imagine…

Voila pour l’instant, les résultats de ces test sont très satisfaisants. Bien sûr, il reste encore à mettre en place une architecture proposant les interfaces d’envoi et de réception à n’importe quel script ou process présent sur le système, en passant par une base de données par exemple.

C’est là qu’intervient gnokii-smsd. Mais cela sera relaté dans un article futur.

 Bonne année, <insert_name_here> !

 18 janvier 2013  Domotique  5 commentaires
tbird-addess-book

Avertissement  : le contenu suivant est susceptible de heurter la sensibilité des personnes pourvues d’un minimum de sens moral.

Quand on est djeun’s, qu’on a plus de 500 amis sur tous ses réseaux sociaux confondus, et un forfait avec SMS illimités (ce qui aujourd’hui est à portée d’à peu près tout le monde, vu que ça coûte 0 euros chez Free), on est soumis à une rude problématique le soir de la Saint Sylvestre : comment ne pas perdre trop de temps à envoyer des SMS de bonne année à tous ses contacts, pour profiter au maximum de la soirée sans rester pendu à son mobile, tout en montrant ostensiblement et avec classe sa présence sur les réseaux sociaux ?

(suite…)

 SMS automatisé – Round one, fight !

 16 janvier 2013  Domotique  8 commentaires
Nokia 3310 avec carte SIM B&You et data cable

S’il existe une fonctionnalité que je souhaite mettre en place depuis bien longtemps autour de mon serveur sans me ruiner, c’est la possibilité de pouvoir envoyer de manière automatisée des SMS de notifications aux numéros de mon choix. Et accessoirement, de pouvoir en recevoir aussi.

Cela ouvre en effet un large éventail de possibilités supplémentaires : couplage avec le système domotique, diversification des moyens de notification, diversification des moyens de déclenchement d’actions, ou pourquoi pas moyens complémentaires de validation d’une session, comme le font la plupart des banques à l’heure actuelle lorsqu’un particulier demande une transaction d’une certaine importance.

Il y a quelques mois, ceci n’aurait été réalisable pour un montant raisonnable à faible volumétrie, lorsqu’on table comme moi sur une vingtaine de SMS par an à tout casser, qu’en passant par des API développées par des prestataires tiers, du type smsbox.net. Mais pour ma part, j’aime l’idée de garder le contrôle de mon architecture amateur sur le plus grand périmètre possible, et ce type de service facture une valeur ajoutée par rapport au coût du SMS simple que je souhaite pouvoir économiser. Avec l’arrivée l’an dernier de l’opérateur béni des dieux Free Mobile sur le marché, les opérateurs de téléphonie mobile ont tous subitement attrapé « comme par hasard » la fièvre humaniste/altruiste et ont décidé à la quasi-unanimité de revoir à la baisse leurs tarifs exorbitants. D’autres encore se sont diversifiés, à l’instar de B&You, proposant une carte pré-payée sans durée limite de validité, pour peu que le client s’affranchisse d’au moins un acte tarifé (communication, SMS, data…) par an.

C’est cette nouvelle offre qui m’a fait sauter le pas, à 5 centimes par an le coût d’envoi du SMS de ping permettant de maintenir la ligne, il serait dommage de se priver.

Avant d’investir dans du matériel plus évolué, j’ai tout d’abord cherché à réutiliser ce qui trainait dans mes vieilles affaires. Pour cette maquette, j’ai donc utilisé :

  • Un serveur Linux, dans mon cas un clone de ma Debian sur VM, qui fera office de machine d’émission de SMS.
  • Un téléphone quelconque avec une carte SIM valide, dans mon cas mon Nokia C7-00 (ne vous moquez pas S.V.P, je n’ai pas les moyens de claquer ma fortune dans un Galaxy S3), qui sera l’appareil destiné à la réception.
  • Un vieux Nokia 3310 de récup’, le téléphone star que les moins de vingt ans ne peuvent pas connaitre, qui faisait de vous à l’époque le personnage le plus hype des utilisateurs de mobile, car on pouvait jouer à Snake et composer ses propres sonneries (moi j’avais composé Ecuador de Sash! et pour ça j’inspirais le respect à mes semblables).
  • Une carte SIM B&You, 4.99€, réglée avec Eurocard Mastercard.
  • Un câble de communication 3310 USB, 5€ sur eBay, réglé avec Eurocard Mastercard.
  • Le plaisir de monter sa propre plate-forme d’envoi de SMS, ça n’a pas de prix.

Pour commencer, on insère la carte SIM B&You dans le mobile et on connecte le câble de communication sur celui-ci. Notez que comme il s’agit d’un modèle du début des années 2000, époque où les téléphones mobiles étaient relativement peu conçus pour permettre à leurs utilisateurs de les connecter avec du matériel informatique, il faut démonter la partie arrière de la coque pour pouvoir brancher le câble de comm’.

Nokia 3310 avec carte SIM B&You et data cable

Nokia 3310 avec carte SIM B&You et data cable

On branche ensuite l’autre extrémité du câble sur le port USB du serveur, la VM pour moi dans le cadre de cette maquette. On allume le mobile et on le déverrouille en entrant le code PIN. On en profite pour changer le logo par défaut, parce que ça permet de se la péter quand on poste la photo sur un blog de geek.

Le soft utilisé pour le logo : LogoManager sous Windows. Oui, ça ne sert à rien, et alors ?

Le soft utilisé pour le logo : LogoManager sous Windows. Oui, ça ne sert à rien, et alors ?

Le câble est basé sur un chip PL2303, qui est automatiquement reconnu par le système pour peu qu’on ait embarqué le support pl2303 dans le kernel ou en tant que module.

dhalsim:/$ lsusb
Bus 003 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Ensuite la magie opère grâce à gnokii, un soft en ligne de commande spécialisé dans la communication FBUS utilisée par les vieux Nokia, mais qui peut aussi communiquer en commandes AT comme le font la plupart des téléphones actuels. Le wiki de gnokki indique que le 3310 utilise le driver Nk6100, ce que j’indique dans le fichier de configuration en même temps que le device sur lequel le câble data USB est connecté. J’ai modifié uniquement 3 lignes du fichier de configuration par défaut :

[global]
model = 6110
port = /dev/ttyS0
connection = serial

On demande à gnokii d’envoyer un SMS de test, grâce à une commande simplissime. Par sécurité, j’ai indiqué le n° destination au format international. J’imagine que l’utilisation des n° au format national est possible aussi.

dhalsim-session-gnokii

On admire enfin la réception du SMS sur le mobile destinataire. On peut alors savourer la victoire avec un bon Dry Martini comme le ferait James Bond après une mission accomplie avec classe.

You win! Perfect!

You win! Perfect!

Voila, c’est tout simple ! J’ai fait une mini-vidéo du processus complet d’envoi-réception, dans laquelle j’envoie simplement la date et l’heure système par SMS, au lieu du message de test ci-dessus. C’est un peu flou, filmé et monté à l’arrache, et il a fallu compresser à outrance pour conserver un fichier de taille raisonnable, mais il faut savoir que je subis des pressions fortes d’une partie de mon entourage professionnel et en même temps unique lectorat pour que je mette en ligne l’article accompagné de la vidéo sans attendre les calendes grecques. Ces gens s’acharnent sur la touche F5 de leur clavier toutes les 10 secondes, me mettant par effet de bord sous la menace d’une attaque DDOS, je ne peux me permettre de ruiner leur productivité plus longtemps :)

Prochaine étape de ce projet : seconde maquette avec l’utilisation d’un « vrai » modem GSM et des commandes AT. À moins qu’une connerie ne vienne s’intercaler dans le programme…