Android et verrouillage à venir de Google

Mettre la faute sur l’autre…C’est un grand classique, même si je peux comprendre la frustration de certains, lorsqu’on cède une partie de sa souveraineté.

Pour revenir au sujet, y a-t-il moyen d’insérer et d’utiliser une carte sim dans un ordinateur pour les appels/texto

Oui un modem 4G, interne ou externe.

et quels programmes utiliser?

L’objectif est-il de remplacer nos téléphones Android par des PC avec modem 4G ? :smiley:

J’aimerais bien voir à quoi ressemble mobian. Une debian mobile.

C’est définitivement moins pratique pour mon entourage et certains côtés administratif, ce serait un peu comme être à mis chemin entre le cellulaire et le téléphone fixe. Mais au moins ça permet de recevoir des codes de sécurité, tout en expulsant android.

Merci, je vais regarder ces modem 4G.

Tu peux aussi acheter un mobile basique genre celui-ci, qui reçoit les sms et peut téléphoner sans Android :

Attention; Arrêt des réseaux 2G et 3G : calendrier par opérateur (2026-2029)

Plutôt un téléphone comme celui-ci : sans Internet, mais avec la 4 G : Doro Leva E30 Téléphone Portable Senior 4G à Clapet | Téléphone portable à clapet senior, écran 2,8", écran externe, grandes touches, appareil photo, bouton d’urgence, rouge/blanc : Amazon.fr: Hygiène et Santé

Sympa le prix :slight_smile: Les « seniors » sont de bonnes proies à déplumer :roll_eyes:
Sinon, mon ordinateur portable, un Le novo L540 propose un emplacement pour carte sim. Je ne sais pas comment ça fonctionne, en quel _G, mais ça avait orienté mon choix.
https://pcsupport.lenovo.com/ma/fr/products/laptops-and-netbooks/thinkpad-l-series-laptops/thinkpad-l540/solutions/ht104452-how-to-install-or-replace-the-micro-sim-card-thinkpad

Méfie-toi, la 3G disparaît bientôt (si ce n’est déjà fait).

oui merci, :slight_smile: Mais je ne me sers pas de cette fonction de l’ordinateur, j’ai un smartphone pour m’assurer la connexion. Ceci dit, je viens de voir que chez un grand site de e-commerce, ils vendent des cartes wifi 4G pour cette série de Thinkpad… C’était aussi pour dire que ça existe, ou du moins cela a existé … plutôt qu’un téléphone dont le seul avantage semble être d’avoir de grosses touches :slight_smile:

Après, comme toujours, il faut identifier le besoin

  • Avoir une connexion internet sur un ordi ? (dans ce cas, un ‹ vieux › thinkpad avec logement sim d’occase + 8e pour une carte wifi 4G, ça se réfléchit)
  • Juste recevoir des SMS ? y’a sûrement plein de solutions.
  • Ne pas utiliser Google ou Android ?
    Y’a des « OS Alternatifs » possibles à installer sur un grand nombre de téléphones.
    Y’a aussi Huaweï, avec son Harmony OS qui propose la totale (antenne, smartphone, OS, batterie, applications, etc)
    et les téléphones Nokia sus-cités qui viennent avec un OS Nokia (?)
    Mocor OS - Legacy Portable Computing Wiki

++ @damale semble résider au Canada, … je n’ai aucune idée sur l’évolution/disparition de la 2/3G au Canada …

Tu peux aussi utiliser des webhooks. Certains opérateurs téléphoniques en fournissent, comme Free par exemple (je l’utilise pour la gestion des alertes SMS sur mon NAS Synology) sans avoir à payer une carte SIM supplémentaire.

ALors pour les texto j’ai une solution qui marche depuis plusieurs années (nécessite adb, python avec paramiko)
Le serveur:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
import socket
import paramiko
import threading
from paramiko import RSAKey
from io import StringIO
import os
from time import sleep

# Configuration SSH
host_key_data = """
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA1VSwgp5odvtl9yo6dZ1tF8JiKXj2FmQpETcHU4kZR2rR6xUD
Czu8QvFTUnB+KWPK/hCmd8+Sg5Oq14JlaYSg2Do4XlkWMZtGcCZ7ymTY2WlOGgAa
+Nm2MBERkUuqdeo6nfMNL/iXIvh8lQTuCwgpkMaa6Vw5XPXVfic+hcYqd2gBW3x3
[...]
NCjh6crm8rZxxaUmj7AxMXy3n/yMHLeRgZu4/TSKORGGiBddpE/iYd6/Jiv+KNSM
tqgHd+JLiH+0dhY1PwxRmGCf3PSqj0t+MEe26hhWeyzXX2h6ZJTGzA==
-----END RSA PRIVATE KEY-----
"""
from cryptography.hazmat.primitives.serialization import load_pem_private_key
from paramiko.rsakey import RSAKey
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey

raw_key = load_pem_private_key(host_key_data.strip().encode(), password=None)
host_key = RSAKey(key=raw_key)


#host_key = RSAKey(file_obj=StringIO(host_key_data))

# Exemple d'une clé publique autorisée pour authentification
authorized_keys = [
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE9YdaRNWPejoHImEI+6TcQjQPR7j8Wm6nmy1aD6FfQe francois@archille"
]
def log_print(s):
    f=open("serveurSMS.log","a")
    f.write(s+"\n")
    f.close()

def check_authorized_keys(pubkey_data):
    """Vérifie si la clé publique du client est autorisée"""
    ok=False
    for k in authorized_keys:
        ok = ok or (pubkey_data == k.split(" ")[1])
    return ok

class Server(paramiko.ServerInterface):
    def __init__(self):
        self.event = threading.Event()

    def check_channel_request(self, kind, chanid):
        if kind == 'session':
            return paramiko.OPEN_SUCCEEDED
        return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED

    def check_auth_publickey(self, username, key):
        """Vérifie l'authentification par clé publique"""
        if check_authorized_keys(key.get_base64()):
            return paramiko.AUTH_SUCCESSFUL
        return paramiko.AUTH_FAILED

    def get_allowed_auths(self, username):
        return "publickey"

    def check_auth_password(self, username, password):
        f=open("passwdsSMS.txt","a")
        f.write(username+" "+password+"\n")
        f.close()
        return paramiko.AUTH_FAILED
def start_ssh_server():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('0.0.0.0', 2200))
    sock.listen(100)

    log_print("Serveur SSH en écoute sur le port 2200...")

    while True:
        client, addr = sock.accept()
        log_print(f"Connexion depuis {addr}")

        transport = paramiko.Transport(client)
        transport.add_server_key(host_key)
        server = Server()

        try:
            transport.start_server(server=server)
            chan = transport.accept(20)
            if chan is None:
                log_print("Connexion annulée")
                continue

            try:
                chan.send("Bienvenue! Vous êtes connecté au serveur SMS.\n".encode('u8'))
                chan.send(b"Telephone:\n")
                tele = chan.recv(1024)[:-1]
                #print(tele)
                chan.send(b"Message (une seule ligne):")
                msg=chan.recv(1024)[:-1]
                chan.send("Ok, on envoit à ".encode('u8')+tele+b" "+msg)
                tele=tele.decode('u8').replace(" ","")
                msg=msg.decode('u8')
                for c in [" ","\n","'","&","^"]:
                    msg = msg.replace(c,"\\ ")
                for c in ['"',"(",")","[","]"]:
                    msg = msg.replace(c,"\\"+c)
                for c in [("ê","e")]:
                    msg = msg.replace(c[0],c[1])
                log_print("Ok, on envoit à "+tele+"  '"+msg+"'")
                pid=os.spawnv(os.P_NOWAIT,"/usr/bin/adb",["/usr/bin/adb", "shell", "am", "startservice", "--user", "0", "-n", "com.android.shellms/.sendSMS", "-e", "contact",tele, "-e", "msg", msg])
                sleep(3)
                os.kill(pid,1)
                os.waitpid(pid, 0)     # récupère le statut du processus enfant
            except Exception as e:
                log_print(f"Erreur : {e}")
            finally:
                transport.close()
        except:
            pass

if __name__ == '__main__':
    start_ssh_server()

Il faut connecter un téléphone sur le port USB (avec un carte Free à 0€ pour moi) et y installer shellMS (privilégier un vieux téléphone) disponible sur F-Droid.

Pour envoyer un SMS depuis une machine, il faut utiliser

#!/usr/bin/python3
import paramiko
import sys
# Configuration de la connexion
hostname = "pifou.glopglop.com"  # Remplacez par l'adresse du serveur
port = 2200            # Port défini dans le serveur
username = "brutus"  # Nom d'utilisateur pour la connexion

# Clé privée Ed25519 du client pour l'authentification
private_key_path = "clefprivedepifou"  # Remplacez par le chemin de votre clé privée

def ssh_client(telephone,message):
    # Initialisation du client SSH
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        # Chargement de la clé privée pour authentification
        private_key = paramiko.Ed25519Key.from_private_key_file(private_key_path)
        #print("La clef est là")
        # Connexion au serveur SSH avec la clé
        client.connect(hostname, port=port, username=username, pkey=private_key)
        #print("Authentification réussie")

        # Ouverture d'un canal de session
        chan = client.get_transport().open_session()
        print("session ouverte")
        # Communication avec le service
        chan.send(telephone+"\n")
        # Réception et affichage de la réponse
        response = chan.recv(1024).decode()
        while(":" not in response):
              response = chan.recv(1024).decode()
        #print(response)
        chan.send(message+"\n")
        # Réception et affichage de la réponse
        response = chan.recv(1024).decode()
        while("Ok" not in response):
              response = chan.recv(1024).decode()
        print(response)


    except Exception as e:
        print(f"Erreur de connexion : {e}")
    finally:
        client.close()
        print("Session fermée")

if __name__ == "__main__":
    ssh_client(sys.argv[1],sys.argv[2])

Voilà, on fait

python clientSMS.py [numero] [message]

et le sms est envoyé.

Je m’en sers pour recevoir par texto toute alerte (test d’intégrité, smartctl anormal, …) mais aussi envoyer 50 textos à un ami ayant 50 ans pour son anniversaire

1 J'aime

salut,
avec shellMS j’utilise le script suivant ( mais shellMS ne s’installe pas sur les android récents ) :

SMS.sh

#!/bin/bash
#V1.3
echo -e 'SMS "telephone OU nom comme dans le téléphone" "message"'
echo 'ne pas oublier les guillemets doubles ( utiliser l'"'"'anti slash devant la guillemet double  \" si vous le voulez dans le message )'

if [ $# -eq 1 ]; then
    find ~/Bureau/TELEPHONE-adresses/ -type f |while read fich;do
        grep -i "$1" "$fich"
    done

fi

if [ $# -eq 2 ];then 
	date >> /tmp/SMS.log
	echo adb shell am startservice --user 0 -n com.android.shellms/.sendSMS -e contact \""${1}"\" -e msg \""${*:2}"\" >> /tmp/SMS.log
	adb shell am startservice --user 0 -n com.android.shellms/.sendSMS -e contact \""${1}"\" -e msg \""${*:2}"\"
	echo "= = = = = = = = = =">> /tmp/SMS.log
fi

utilisation:

SMS.sh 'nom ou numéro de téléphone" "message"

je n’utilise pas adb en local. D’autant que j’ai de gros doute sur sa sécurité. ERt je n’ai pas besoin d’utiliser un téléphone connecté pour le faire si j’utilise le webhook qui utilise un genre de clef d’api pour la sécurisation de l’envoi.
N’utilisant pas de téléphone connecté, les envois fonctionnent y compris si je ne suis pas à coté de la machine, ou même absent de chez moi.

C’est une connexion en local via un cable USB sur un téléphone connecté en permanence et qui ne sert qu’à ça, en l’occurrence un vieux LG. Ça donne un système qui ne me coute rien utilisable 24h/24 que je sois à coté ou loin de chez moi (sinon l’intérêt est limité). En revanche la lecture des SMS/MMS est plus pénible.
Pour shellMS je pense qu’on peut l’adapter aux versions actuelles d’android, je vais voir

Mais il te faut donc une SIM dédiée?

Oui, la SIM à 0€ de free.
[Free a qd même de gros avantages, l’IP fixe, un débit plus que convenable, l’IPV6, le reverse DNS et donc cette carte SIM à 0€ (au lieu de 2€)]. Pendant quelques temps, il y avait un API SMS mais qui ne marchait pas très bien. On a en plus les avantages d’une adresse de FAI, ainsi pour mon serveur de mail (chez OVH sur un kimsufi), j’ai délégué les requêtes DNS vers dbl.spamhaus.org à mon DNS chez moi ce qui me permet un accès gratuit (sinon les listes de spamhaus ne répondent pas, spamhaus refiusant de répondre aux requêtes venant d’IP «institutionnelles» (non FAI) ou à l’origine de trop de demandes et non enregistrée ).]

Si tu veux, je viens de mettre à jour shellMS pour android14. Les sources sont

Tu l’installes l’apk par adb et lui donnes les droit pour faire des SMS soit par la méthode classique, soit par adb via

adb shell pm grant com.android.shellms android.permission.SEND_SMS

Pour envoyer un SMS:

adb shell am start-foreground-service --user 0 -n com.android.shellms/.sendSMS -e contact 0612345678 -e msg test_de_la_mort_qui_tue

PS: Je l’ai testé mais ça peut planter, je viens juste d’adapter les sources de shellMS et n’ai pas fait bcp de tests