Modem 56K en filtre d'appels telephone fixe...

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Modem 56K en filtre d'appels telephone fixe...

Message par lost »

Hello,

J'ai posté un message détaillé sur le forum anglophone sur un filtre d'appelants, vu le nombre de pubeux/vendeurs incroyable qui m'emmerdent tous les jours (ils sont désormais déconfinés, ça repart depuis qq semaines après 2 mois de calme) sur mon fixe.

Je ne refais pas le message complet, mais si qqun a de l'expérience avec ces modems (et leur jeu de commandes AT) ici, toute suggestion est bienvenue car le modem semble un peu tatillon (voir buggué) et loupe parfois des informations CID (identification appelant: Caller ID) que mon téléphone reçoit pourtant!

Cf:
https://www.domoticz.com/forum/viewtopi ... 63&t=33161

Alors en désespoir de cause, je vais à la pêche aux idées!

Précision: C'est un modem basé Conexant avec cette version de FW:
CX93001-EIS_V0.2013-V92
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Modem 56K en filtre d'appels telephone fixe...

Message par lost »

Hello,

Jamais totalement résolu les appels passant parfois au travers pour en récupérer les infos appelant, mais ce petit projet s'est bien affiné:

Ajouts de blacklist locale (numéro complet ou prefixe), avec ajouts automatiques possible au fichier de configuration du service pour moins solliciter doisjerepondre.fr

Vu que l'ARCEP publie en open-data les préfixes alloués aux opérateurs j'utilise désormais l'info pour simplement l'afficher... ou y aller, ça se configure, plus violent: Filtrer tous les numéros sur un préfixe complet, si doisjerepondre.fr a répondu négatif sur un seul numéro. En effet, en pratique, les numéros qui abusent sont nombreux à avoir leurs 4 à 6 premiers chiffres identiques (cad un préfixe complet alloué à un opérateur) avec certains opérateurs de VoIP semblant appréciés des télémarketeurs... Pas de filtrage global sur l'identifiant d'un opérateur, cependant, vu qu'un range/prefixe dédié à une entreprise de telemarketing ne présage en rien de l'affectation d'un autre préfixe à une entreprise "normale". Certes, les gros préfixes avec 10k numéros peuvent être re-découpés en interne par l'opérateur de VoIP sans que cela se voit dans les données grosses mailles ARCEP... mais bon, z'avez qu'a faire attention à ce que font vos clients les gars!

Ajout d'une custom page Domoticz auto-générée, qui permet d'afficher la liste des appelants aisément. En lien avec le statut présence/absence côté alarme, en absence une notif mail est également envoyée indiquant le numéro qui vient d'appeler (+ autres données récoltées le cas échéant).

Vu l'efficacité de bloctel, je me dis que ce petit projet (~1000 lignes de python, hors modules d'envoi gmail et d'interaction avec Domoticz utilisés par d'autres services perso) pourrait en intéresser d'autres.

Alors je fais un petit sondage pour savoir si ça vaut le coup d'en faire une version expurgée de mes données perso pour la publier.

Attention: Les modems analogiques ont l'air un peu capricieux à l'usage. Donc il faut être prêt le cas échéant à se sortir les doigts du c.. pour expérimenter/comprendre la partie initialisation/commandes modem si le modèle exact diffère. Je ne pourrais aider sur ce point, en plus cela peut prendre un peu de temps en essai (appels de son fixe via son mobile, tests directs en utilisant un utilitaire type cu ou minicom). Puis pouvoir charcuter au besoin un code qui comporte quelques particularismes liés au reste de mon système (status alarme, utilisation d'une adresse gmail pour les notifs, ailleurs faudra adapter cette partie...), savoir installer un script en service sous Linux et globalement savoir utiliser/administrer le système en ligne de commande.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Modem 56K en filtre d'appels telephone fixe...

Message par Keros »

J'ai de la chance, je ne suis pas ennuyé. Par contre, le projet pourrait m’intéresser pour mes parents. Mais ce serait pas pour tout de suite (j'ai déjà beaucoup à faire chez moi).
Attends d'avoir d'autres retour avant de te lancer dans le partage ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

Re: Fin de l'acces Gmail aux application non sécurisées

Message par adv »

Edit Keros : Messages déplacés du sujet initial.
lost a écrit : 29 mars 2022, 09:21 le raspberry étant connecté à la box via un vieux modem voix USB recyclé en filtrage d'appel via un service perso pour faire un décroché/raccroché immédiat des pubeux).
Salut, tu as un github où tu as posé ton code ?

Sinon, c'est compliqué de nous "expliquer" ?

Je viens de trouver "callattendant" sur GitHub qui a l'air excellent et supporté.

A tester d'urgence.

Merci pour ton retour en tout cas.

Moi perso j'ai créé une boite chez mon FAI Nordnet, ça marche impec. Tant pis pour gmail...
Dernière modification par Keros le 29 mars 2022, 21:57, modifié 1 fois.
Raison : Ajout info post initial
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Fin de l'acces Gmail aux application non sécurisées

Message par lost »

Keros a écrit : 29 mars 2022, 12:23 Lost en avait parlé là : viewtopic.php?f=10&t=10246 ;)
Ouais... Le sondage avait fait plouf!
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Fin de l'acces Gmail aux application non sécurisées

Message par lost »

adv a écrit : 29 mars 2022, 11:39 Je viens de trouver "callattendant" sur GitHub qui a l'air excellent et supporté.
Ce que j'ai fait est dans le même ordre d'idée pour la partie filtrage, je dirais en mieux de ce côté (plus adapté au contexte français: Box avec base DECT, plages d'allocation publiées en open data par l'ARCEP...) et en plus simple pour le reste (pas de répondeur, juste génération d'une page web simple des listes de numéros bloqués car Domoticz fait la partie serveur web, etc) n'ayant pas ces besoins. Sans doute plus de flexibilité aussi dans la configuration modem sans devoir modifier le code (important: Ces modem voix sont plein de subtilités... et de bugs!).

C'est en premier lieu adapté à la Livebox qui, faisant base DECT, a le bon goût de remplir les champs du caller ID avec l'annuaire de ses téléphones fixes DECT associés. Dès lors, facile pour commencer de laisser passer les numéros de ses contacts sans aucun filtrage. Je ne sais pas si d'autres box font base DECT et savent générer un caller ID de la même manière.

Certaines box plus libres côté implémentation SIP permettraient peut-être d'ailleurs d'y récupérer un Caller ID sans aucun matériel spécifique à connecter au RJ11 ancestral de la Box. A voir. Là dessus Orange nous casse un peu les couilles (pas de possibilité de téléphoner depuis sont PC, comme Free le propose).

Au delà de ces contacts (whitelist automatique en fait), il y a une blacklist possible par numéros, préfixes complets (genre une plage d'allocation ARCEP) voir identifiant d'opérateur (les opérateurs VoIP qui nous emmerdent ayant en général plusieurs plages d'allocation attribuées, ainsi on les barre toutes!).

Cela permet aussi à ce stade de filtrer les numéros n'appartenant à aucune plage d'allocation ARCEP, ceux-ci étant manifestement usurpés/spoofés.

Ces blacklist pouvant être générées à la main au alimentées automatiquement car si un numéro n'est pas filtré à ce stade, un check en ligne est fait via doisjerepondre.fr (de manière analogue à callattendant, utilisant le module python beautifulsoup pour parser la page web de retour et récupérer la classification du numéro ; callattendant utilise pour sa part nomorobo.com ; aucune idée de sa pertinence pour des numéros français).

Et selon le résultat de ce check et la configuration, un score négatif peut mener à ajouter un numéro simple à la blacklist ou une plage d'allocation complète (le plus souvent 10k numéros suivant un préfixe du genre 012030XXXX). Je n'ai pas automatisé l'ajout d'un opérateur complet, certaines plages d'opérateurs grand public étant utilisées (ou usurpées) pour du spam téléphonique et barrer tout FT/BOUYGUES/SFR/FREE serait un peu violent!

=> Quand il commence à y avoir bcp de numéros/plages d'un obscur opérateur (non grand public) blacklistées, j'édite la config (fichier YML) manuellement pour retirer ces plages et ajouter l'identifiant (abrégé en 4 lettres dans les fichiers ARCEP) coté blacklist opérateurs. Ces plages ARCEP sont MAJ mensuellement (un fichier XML récupérable sur leur site, qu'un script+cron check tous les 15j, puis expurge/mets en forme au format CSV pour utilisation directe par le service de filtrage), on obtient cela:

Code : Tout sélectionner

"EZABPQM","Mnémo"
"0105","FRTE"
"01241","FRTE"
"01242","FRTE"
"013000","FRTE"
"013001","FRTE"
"013002","FRTE"
"013003","FRTE"
...
Forcément, au debut y'a que l'opérateur historique qui n'est ici toujours pas Orange (FRTE = FRance TElecom)!

Actuellement y'a ~30k plages d'allocation et c'est ordonné donc le parcours reste rapide:

Code : Tout sélectionner

~/scripts $ wc -l providerPrefixes.csv
30107 providerPrefixes.csv
C'est certes violent, mais efficace. Et au bout de qq semaines/mois, le besoin d'interroger doisjrepondre.fr devient de plus en plus rare rendant le système plus réactif (filtrage dès la 1ère sonnerie au lieu de 2) et évitant de devoir se fader une BDD, comme callattendant le fait: Des listes dans le fichier de config du service suffisent alors sans prendre trop de place en mémoire.

Comme indiqué, j'avais ajouté aussi la possibilité pour Domoticz de faire sonner nos mobiles si l'alarme déclenche via le modem également. Il y a donc une liste de numéros appelés séquentiellement dans ce cas niveau config du service de filtrage. Le principe est simple côté Domoticz: Un signal SIGUSR1 (forme sans doute la plus primitive de communication inter-processus, mais ici largement suffisante) est envoyé par le script Lua qui implémente la partie alarme dans Domoticz au service python (phoneFilter.py) via:

Code : Tout sélectionner

phoneAlarmCmd  = 'pkill -10 -f "python.*phoneFilter.py"&'
os.execute(phoneAlarmCmd)
Pas de pb pour filer des sources au besoin, en direct ou via un compte github qui m'a déjà servi à pousser des configs open-zwave mais sans rien de perso dedans. Pas immédiatement mais possible. Support demerden zizich sur pb spécifique au modem, par contre. Le mien est basé Connexant. Un conseil si tu va sur callattendant, achète celui qu'ils utilisent, US Robotics, ça évitera bien des soucis si toutefois on trouve encore un libre choix de ces machins datant d'avant l'ADSL.
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

Re: Modem 56K en filtre d'appels telephone fixe...

Message par adv »

Merci pour les infos.

J'ai un US Robotics en RS232, je vais le brancher à un pi ou un PC (avec un convertisseur USB/RS) pour avoir s'il remonte le callerID.

Je ferai un petit retour.

Il est vrai que "les gens" en général finissent par débrancher le fixe tellement il y a des abus, par chance je n'ai que quelques appels par semaine.

A+
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

Re: Modem 56K en filtre d'appels telephone fixe...

Message par adv »

Petit retour, à mon tour.

J'ai trouvé un modem USB 5637 USRobotics pour 8€ sur le bon coin (c'est une chance, on le trouve plutôt aux alentours de 40-50€ d'habitude).

Il est couplé à un fork de de callattendant (qui dispose de quelques fonctionnalités en + de l'original): https://github.com/galacticstudios/callattendant qui fonctionne en python.

C'est une tuerie... dans le sens où cela a marché tout de suite sans bricoler (attention il faut cependant que le firmware du modem soit à jour), j'ai utilisé un virtualenv pour Pyhton (et j'ai découvert l'existence au passage). Créer le service (pour qu'il se lance au démarrage) a été aussi très facile. Il tourne sur un pi différent de celui de ma domotique qui est vraiment dédié.

J'utilise principalement les "wildcard", résident en zone 04, je bloque les 01,02,03,05,08 de toute façon ce sont surtout des 01 qui m'appellent.
Les appelants ne se trouvant ni dans la whitelist ni dans la blacklist peuvent être envoyés vers une messagerie vocale, que l'on peut écouter via un navigateur web, perso je n'utilise que la blacklist.

Reste à confectionner un petit montage pour couper la première sonnerie, car pour ceux qui ne le savent pas le callerID "tombe" entre la première et la deuxième sonnerie. Une piste ici: https://jimlaurwilliams.org/wordpress/?p=6738

Je recommande la solution et suis prêt à apporter de l'aide à qui veut pour l'install et la config. Il y a quelques subtilités (notamment pour installer le fork et configurer le service).

A+
callattendant.png
callattendant.png (94.59 Kio) Consulté 2307 fois
PS: depuis mon passage de wibox a Nordnet (je suis dans l'Ain) le callerID se présente sous la forme 336xxxxxxx au lieu de 06xxxxxxxx, ce n'est pas un bug de l'application, j'ai ouvert un ticket chez eux pour essayer de résoudre...
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Modem 56K en filtre d'appels telephone fixe...

Message par lost »

adv a écrit : 13 avr. 2022, 06:14 C'est une tuerie... dans le sens où cela a marché tout de suite sans bricoler...
Hello,

Je pense que le modem USR, qui ne soit pas un clone ou autre truc basé sur le même chipset mais un FW différent, a dû aider à ne pas bricoler!

L'aspect sympa par rapport à mon truc perso, c'est l'interface web au lieu d'un fichier YML pour la config, ainsi que la gestion d'un message/répondeur utilisant cette capacité d'un modem voix. C'était un peu compliqué pour mon truc et vu les bugs du modem que j'ai eu à contourner cela n'invitait pas à trop complexifier.

Par contre, niveau filtrage pur, cela me parait très en dessous car cela oblige à vraiment y aller large sur les wildcards (tout ce qui sort de ton préfixe régional en résumé). Il est vrai que la publication des plages d'allocation ARCEP est un truc franco français et que c'est à la base ce qui me permet de filtrer les opérateurs VoIP qui abusent vraiment sans devoir carrément y aller à la hache.

Attention aussi à une tendance récente (hors numéros ne correspondant a aucune plage d'allocation ARCEP, qui se repèrent quand on les vérifie... et spoofing de numéros de particuliers, lui imparable): Des numéros malformés!

Genre un 0 surnuméraire en début (un 01.XX.XX.XX.XX devient 001.XX.XX.XX.XX) voir, je ne pensais pas cela possible jusqu'hier, un préfixe non alphanumérique: J'ai eu un _01.XX.XX.XX.XX hier.

=> AMHA, tu as intérêt à ajouter "00*" à tes wildcards et, si possible, tout ce qui contient un caractère non aplhanumérique!

A croire que certains emmerdeurs lisent le forum et s'adaptent!
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

Re: Modem 56K en filtre d'appels telephone fixe...

Message par adv »

Yeah merci pour le complément d'info !

Le dev de ce logiciel a prévu l'interface avec le site robocall, mais il ne connait pas les numéros Français, il ne "note" que les numéros des US. Si numéro "signalé" il bloque l'appel.

Je connais rien en python mais un développeur un peu calé pourrait tout à fait développer un autre plugin, afin d'envoyer le numéro de l'appelant sur un site comme, https://www.tellows.fr/num/0173008120 (interrogeable par une simple requête web, même pas besoin de clé d'API) récupérer la note et si supérieure à N (9 dans l'exemple) bloquer l'appel.

Arf j'aimerai tellement avoir cette corde à mon arc... (de bonnes notions de python)

Bien à toi.
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
Répondre