
Récemment j'ai fait l'acquisition d'un modem Alcatel 4G LTE L800Z, j'ai personnellement été surpris des fonctionnalités de cet outil. Mon objectif principal était de trouver un périphérique permettant de mettre en place un serveur SMS pouvant envoyer et de recevoir des SMS à partir d'une carte sim et un abonnement à la carte comme un opérateur Orange, SFR par exemple. Premièrement lors de la réception de l'appareil j'ai constaté qu'il n'y avait aucune documentation sur l'outil, celui-ci venant d'un site de wholesale shipping asiatique. J'ai eu l'opportunité de tester ce gadget sur Ubuntu 15.10 et sur Windows 10. L'installation de l'appareil s'est faite sans encombre sur Windows, la clé 4G a été reconnue directement par le système comme un lecteur CD-ROM, il suffisait alors d'installer l'appareil en exécutant le fichier setup.exe et en suivant les instructions. Le problème demeurant que la clé 4G une fois installée était conçue pour ne fonctionner qu'en interface dont l'adresse du point d'accès (gateway) est 192.168.1.1, c'est embêtant lorsque l'on souhaite utiliser le routeur en réseau local et que nous possèdons déjà au préalable une connexion réseau sans fil ou ethernet avec la même adresse de point d'accès, on a donc un conflit dhcp de résolution des adresses ip qui nous empêche de se connecter à deux réseaux en même temps comme décrit dans la RFC1918. Le fournisseur du routeur est la société de téléphonie basée au Royaume Uni "EE Mobile Broadband" et proposaient à leurs clients de payer un abonnement pour modifier l'adresse du routeur. Sur le site du vendeur du gadget , il était signalé la mention Unlocked(qui signifie débloquée dans le jargon de la téléphonie, cela concernait la compatibilité avec les operateurs) toutefois aucune consignes d'installation n'étaient indiquées.
Dans cet article nous aborderons les points suivants :
- Les caractéristiques de l'appareil
- L'identification de la clé 4g
- Le changement de mode en USB
- La configuration de l'appareil
- La configuration du réseau
- Les liens connexes et annexes
Les caractéristiques de l'appareil
Sur internet on retrouve des modèles dont l'installation est à peu près similaire pour une installation sur des systèmes linux, par exemple le modèle W800 Alcatel comprends à peu de choses près les mêmes caractéristiques.
- Device Type: LTE WiFi Router/LTE Dongle (Plug & Play)
- Platform: Qualcomm MDM9215 + AR6003G
- Network modes: FDD LTE, DC-HSPA+, HSPA+, HSUPA, HSDPA, UMTS, EDGE, GRPS
- 4G Bands: 700/800/850/900/AWS/1800/1900/2100/2600 MHz
- 3G Bands: 850/900/AWS/1800/1900/2100 MHz
- 2G bands: 850/900/1800/1900 MHz
- LTE Speed: Downlink up to 100Mbps and uplink up to 50Mbps
- WiFi: 802.11 b/g/n, (n up to 75Mbps)
- Support up to 10 WiFi users
- Mass storage: 2Gb NAND Flash + 1GB LPDDR
- USB interface: USB 2.0 high speed
- MicroSD storage up to 32GB
- USIM/SIM card slot
- Size: 89 x 27.5 x 14 mm
Vous comprendrez que tout n'a pas été testé de mon côté, le réseau sans fil Wlan est bien présent, il est possible de changer le SSID et la configuration interne toutefois je ne penses pas que le réseau téléphonique avec les forfaits à carte utilisé soit capable de transmettre en parallèle les SMS et la connection Wlan. Les autres caractéristiques ont été testées avec succès et je peux vous confirmer que cela fonctionne parfaitement.
L'identification de la clé 4G
Les étapes suivante permettent l'identification de l'appareil sur linux.
lsusb
Les résultats
Bus 001 Device 004: ID 1bbb:0195 T & A Mobile Phones
Dans certains cas, le numero de produit (product number) est configurer à f000 à la place de 0195, cela signifie (par défaut) que votre système d'exploitation ne reconnaît pas ce périphérique, alors le résultat issu de la commande dmesg qui permet de repérer les changement entre le système et les périphériques affichera votre clé 4g comme modem USB , sans toutefois permettre l'utilisation du périphérique comme point d'accès. les manipulations décrite dans la partie suivante vous permettront de configurer votre système afin qu'il prenne pleinement en compte votre produit(product number).
Les entrées sorties USB récentes :
dmesg | tail
Résultats :
[127899.387213] usb 1-1: Manufacturer: Alcatel [127899.387219] usb 1-1: SerialNumber: 0123456789ABCDEF [127899.408680] option 1-1:1.0: GSM modem (1-port) converter detected [127899.409696] option 1-1:1.1: GSM modem (1-port) converter detected [127899.410001] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1 [127899.410794] usb-storage 1-1:1.2: USB Mass Storage device detected [127899.411622] scsi host13: usb-storage 1-1:1.2 [127900.412411] scsi 13:0:0:0: Direct-Access ONETOUCH SUZUKA 2.31 PQ: 0 ANSI: 2 [127900.415983] sd 13:0:0:0: Attached scsi generic sg1 type 0 [127900.421262] sd 13:0:0:0: [sdb] Attached SCSI removable disk
lsusb -v -d 1bbb:0195
Les résultats
Bus 001 Device 004: ID 1bbb:0195 T & A Mobile Phones Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x1bbb T & A Mobile Phones idProduct 0x0195 bcdDevice 2.32 iManufacturer 1 Alcatel iProduct 2 MobileBroadBand iSerial 3 0123456789ABCDEF bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 79 bNumInterfaces 3 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 224 Wireless bFunctionSubClass 1 Radio Frequency bFunctionProtocol 3 RNDIS iFunction 7 RNDIS Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 3 RNDIS iInterface 5 RNDIS Communications Control Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 6 RNDIS Ethernet Data Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 4 Mass Storage Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered)
Le changement de mode en USB
On va essayer de mettre en place le périphérique afin qu'il soit reconnu par notre système d'exploitation (Ubuntu 15.10), la clé 4G comprends une interface RNDIS, qui est une interface propriétaire inventée par Microsoft, celle ci se sert du protocole SCSI, qui est trés rapide (qui se prononce Scuzi). L'objectif est que notre machine reconnaisse le dongle USB comme une carte réseau visible grâce à la commande ifconfig.
On a besoin que les modules séries soit activés :
nano /etc/modules
Rajouter au dessus du fichier
usbserial option
On a aussi besoin d'installer usb_modeswitch, c'est un utilitaire qui nous permettra de changer de mode notre dongle USB, de stockage amovible à modem.
apt-get install usb-modeswitch-data apt-get install usb-modeswitch
Petit problème usb-modeswitch ne connaît pas notre dongle 4G, on va devoir l'installer manuellement avec les deux commandes suivante, la premiere active le module série selon l'identifiant hexadecimal, et le second envoi un message d'activation du periphérique en mode modem.
modprobe usbserial vendor=0x1bbb product=0x0195 usb_modeswitch -W -v 1bbb -p f000 -V 1bbb -P 0195 --message-content 55534243123456788000000080000606f50402527000000000000000000000
On vérifie le fonctionnement de notre commande précédente :
dmesg | tail
Résultats
[202344.036852] usb 5-2.1.4: New USB device found, idVendor=1bbb, idProduct=0195 [202344.036866] usb 5-2.1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [202344.036874] usb 5-2.1.4: Product: MobileBroadBand [202344.036881] usb 5-2.1.4: Manufacturer: Alcatel [202344.036887] usb 5-2.1.4: SerialNumber: 0123456789ABCDEF [202344.061093] usb-storage 5-2.1.4:1.2: USB Mass Storage device detected [202344.062199] scsi host4: usb-storage 5-2.1.4:1.2 [202344.252119] usbcore: registered new interface driver cdc_ether [202344.304047] rndis_host 5-2.1.4:1.0 usb0: register 'rndis_host' at usb-0000:00:12.0-2.1.4, RNDIS device, 9e:99:3b:e5:9c:49 [202344.308353] usbcore: registered new interface driver rndis_host [202344.339837] rndis_host 5-2.1.4:1.0 enx9e163be39c49: renamed from usb0 [202345.066040] scsi 4:0:0:0: Direct-Access ONETOUCH SUZUKA 2.31 PQ: 0 ANSI: 2 [202345.067439] sd 4:0:0:0: Attached scsi generic sg1 type 0 [202345.087000] sd 4:0:0:0: [sdb] Attached SCSI removable disk [202345.617807] usbcore: registered new interface driver usbserial [202345.617872] usbcore: registered new interface driver usbserial_generic [202345.617930] usbserial: USB Serial support registered for generic [202345.670558] usbcore: registered new interface driver option [202345.670677] usbserial: USB Serial support registered for GSM modem (1-port)
A présent un nouveau périphérique RNDIS vient d'apparaitre dans notre configuration réseau, celui-ci se nomme enx9e163be39c49.
Pour voir la configuration nous effectuons les commandes suivantes
Lister le nom des interfaces réseaux présente :
ls /sys/class/net
Résultats :
enx9e163be39c49 lo wlan0
Voir la configuration détaillée de notre nouvelle interface:
ifconfig enx9e163be39c49
Résultats
enx9e163be39c49 Link encap:Ethernet HWaddr 9e:16:3b:e3:9c:49 inet adr:192.168.1.1 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::9c16:3bff:fee3:9c46/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:0 erreurs:0 :0 overruns:0 frame:0 TX packets:132 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:0 (0.0 B) Octets transmis:27464 (27.4 KB)
Désormais on a besoin d'activer la reconnaissance de notre périphérique USB lors des prochains redémarrages de notre machine, on a deux solutions possibles.
La premiere solution
On créé un fichier .conf
nano /etc/usb_modeswitch.d/1bbb:0195
Et on y insère la configuration :
DefaultVendor= 0x1bbb DefaultProduct= 0xf000 TargetVendor= 0x1bbb TargetProduct= 0x0195 MessageContent="55534243123456788000000080000606f50402527000000000000000000000" NeedResponse=0
On l'insère dans rc.local
cat > /etc/rc.local echo "1bbb 0195" > /sys/bus/usb-serial/drivers/option1/new_id
On pourra aussi changer manuellement la configuration de cette manière.
usb_modeswitch -W -I -v 1bbb -p 0195 -c /etc/usb_modeswitch.d/1bbb:0195
La seconde solution
On ajoute une règle /dev/phone virtuelle.
nano /etc/udev/rules.d/99-phone.rules
On insère la règle.
SUBSYSTEM=="usb", SYSFS{idVendor}=="1bbb", SYSFS{idProduct}=="0195", RUN+="/usr/sbin/usb_modeswitch -W -v 1bbb -p f000 -V 1bbb -P 0195 --message-content 55534243123456788000000080000606f50402527000000000000000000000" SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0195", MODE="0666" , SYMLINK+="phone"
La configuration de l'appareil
A présent notre appareil semble en état de marche cependant, vous n'êtes pas forcément dans la possibilité de vous connecter au panneau d'administration car vous êtes probablement déjà connecté à internet à l'aide d'un point d'accès ou vous avez une ip statique configurée manuellement dans le fichier /etc/network/interfaces. Ma configuration comprends 2 interfaces réseaux, une interface qui me permet de me connecter au réseau sans fil qui est appelée wlan0 et l'autre correspondant à l'interface de mon routeur usb enx9e163be39c49 la 3ème interface est l'interface de loopback (lo). Si votre configuration n'a pas été effectuée manuellement l'adressage Ip est gèré automatiquement par le service dhcp, via dhclient, si dhclient ne fonctionne pas sur votre machine je vous propose d'installer dhcpcd (apt-get install dhcpcd).
Quelques commandes utiles :
Modifier le fichier de configuration du réseau automatiquement (pour utilisation avec l'interface graphique network-manager)
nano /etc/network/interfaces
Modifier le fichier de la sorte (dans l'exemple des 3 interfaces décrites ci-dessus)
auto lo iface lo inet loopback auto wlan0 dns-nameservers 8.8.8.8 8.8.4.4 auto enx9e163be39c49
Supprimer les profiles de connection automatiques sur ubuntu 14.
cd /etc/NetworkManager/system-connections/ rm lenomduprofildeconnection
Redémarrer l'instance réseau.
/etc/init.d/networking restart
Alternative (redémarrer la gestion du réseau).
restart network-manager
Arrêter le service de gestion réseau.
stop network-manager
Activer le mode déboggage lors de la réinitialisation du réseau.
sudo bash -x /etc/init.d/networking restart
Redémarrer l'interface enx9e163be39c49.
sudo ifconfig enx9e163be39c49 down && ifconfig enx9e163be39c49 up
Alternative pour redémarrer l'interface.
sudo ifdown enx9e163be39c49 && sudo ifup enx9e163be39c49
Redémmarer l'adressage dhclient sur l'interface enx9e163be39c49
dhclient -r enx9e163be39c49 && rm /var/lib/dhcp/dhclient.* ; dhclient -v enx9e163be39c49
Ou simplement supprimer le fichier d'adressage automatique des IP dhclient.
rm /var/lib/dhcp/dhclient.leases
Ou bien terminer le signal dhcp avec dhcpcd.
dhcpcd -k
Configurer sa clé 4G LTE
Maintenant qu'il est possible de se connecter au point d'accès grâce au gestionnaire de réseau on peut naviguer sur les pages de l'appareil afin de voir ce qu'il est possible de faire. En première partie nous verrons les emplacement permettant de recueillir des informations et en second lieu les moyens de les modifier à l'aide de requête GET et POST. Comme la plupart des routeurs, cet appareil ne faisant pas exception, des vulnérabilités de type CSRF (cross site request forgery) sont possible, dans le cadre d'une utilisation locale (plateforme d'envoi et de réception de sms) à l'intérieur d'un réseau local DMZ(démilitarisé) ces types de vulnérabilité ne sont pas très dangereuses si l'architecture réseau passant par la DMZ est bien conçu.
Les outils utilisés :
- Firefox muni des plugins webdevelopper, (pour désactiver le javascript et récupérer le fichier http://192.168.1.1/cfgbak/configure.bin, lisible avec un éditeur de texte).
- Firebug , ou l'outil d'inspection de google chrome, (Touche F12) pour afficher la page de login (index.html) en modifiant la propriété "display" en css, et se connecter avec les noms d'utilisateur admin et password admin.
- Curl - l'outil en ligne de commande permettant d'envoyer facilement les requêtes GET et POST.
Les emplacements intéressants
Fichier javascript contenant la liste des fonctions API disponible sur le routeur.
http://192.168.1.1/js/base.js
Configuration Wlan
http://192.168.1.1/default.html#settings/wifiSetting.html
Configuration des profiles APN (doit correspondre avec l'opérateur votre carte SIM), voir le liens connexe (à la fin de l'article).
http://192.168.1.1/default.html#settings/profileManagement.html
Manipulation des paramètres du routeur 4G
C'est probablement la partie la plus intéressante de l'article, ici nous allons voir les moyens que nous avons pour changer les paramètres de configuration du routeur.
Pour modifier les paramètres réseaux comme l'adresse IP du routeur(En terme de sécurité cela permet d'outre-passer la protection mise en place par EE Mobile Broadband interdisant le changement d'ip), le nom de la machine, le serveur dhcp etc..
curl --data "a5_ip_addr=192.168.7.1&sub_net_mask=255.255.255.0&host_name=ctrlfagency&enable_dhcp=1&dhcp_start_addr=192.168.7.2&dhcp_end_addr=192.168.7.254&dhcp_release_time=12h" http://192.168.1.1/goform/setRouterInfo
Vérifier l'exactitude des informations modifiées sur le routeur.
http://192.168.7.1/goform/getRouterInfo?rand=1
Pour modifier les paramètres wlan de la clé 4G
curl --data "wmode=2&wifi_state=1&ssid=CTRLF&hidden_ssid=0&channel=11&max_numsta=10&security_mode=0&wep_sec=2&wep_key=123456789&wpa_sec=2&wpa_passphrase=20640158&ap_status=1" http://192.168.7.1/goform/setWlanInfo
Vérifier les résultats.
http://192.168.7.1/goform/getWlanInfo
Envoyer un SMS avec la ligne de commande
curl --data "sms_id=8&action_type=send&sms_time=2015 17:46:14&sms_number=07XXXXXXXX&sms_content=hello world" http://192.168.7.1/goform/sendSMS
Récupérer le nombre de SMS (variable : inbox , send, draft)
http://192.168.7.1/goform/getSMSPageInfo?key=inbox
Récupérer la inbox de SMS (variable : inbox , send, draft)
http://192.168.7.1/goform/getSMSlist?key=inbox
Récupère un sms par id
http://192.168.7.1/goform/getSingleSMS?sms_id=1
Supprime un sms par id
http://192.168.7.1/goform/deleteSMS?sms_id=1
La configuration du réseau
Notre plateforme d'envoi et de réception de SMS est presque prête à l'emploi, nous avons simplement besoin de restreindre l'accès a notre point d'accès en local. Selon l'utilisation que vous ferez de votre clé 4G la démarche suivante n'est pas forcément nécessaire. Dans le cadre de ce tutoriel qui est l'utilisation de la clé comme plateforme d'envoi de SMS dans un réseau de type entreprise, on va devoir adapter notre architecture réseau aux contraintes de sécurité. Premièrement, utiliser un serveur windows vous facilitera grandement la tâche car l'adressage IP entre plusieurs interfaces se fait à l'aide de l'interface graphique, il suffit de restreindre internet pour notre interface clé 4G et autorisé la propagation d'internet sur notre interface sans fil ou ethernet connecté à notre second routeur. Sur ubuntu on va devoir désactiver l'adressage DHCP automatique de notre clé 4G avec la commande ci dessus et activer l'adressage statique des ip.
La configuration réseau est la suivante:
J'ai 2 interfaces 1 correspondant au routeur, et la seconde correspondant a mon réseau sans fil wlan la passerelle permettant d'accèder à internet pour wlan0 est 192.168.1.1 et la passerelle de mon interface dongle enx9e163be39c49 est 192.168.7.1.
Je créé 2 tables de routage rt2 et rt3.
nano /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 1 rt2 2 rt3
On active l'ip forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
On configure le routage des paquets.
nano /etc/network/interfaces # rt2 auto enx9e163be39c49 iface enx9e163be39c49 inet static address 192.168.7.1 netmask 255.255.255.0 broadcast 192.168.7.255 network 192.168.7.0 gateway 192.168.7.254 up /sbin/ip route add default via 192.168.7.254 dev enx9e163be39c46 table rt2 up /sbin/ip rule add from 192.168.7.0/24 table rt2 post-down /sbin/ip rule del from 192.168.7.0/24 table rt2 post-down /sbin/ip route del default via 192.168.7.254 dev enx9e163be39c46 table rt2 # rt3 auto wlan0 iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 network 192.168.1.0 gateway 192.168.1.254 up /sbin/ip route add default via 192.168.1.254 dev wlan0 table rt3 up /sbin/ip rule add from 192.168.1.0/24 table rt3 post-down /sbin/ip rule del from 192.168.1.0/24 table rt3 post-down /sbin/ip route del default via 192.168.1.254 dev wlan0 table rt3 dns-nameservers 8.8.8.8 4.4.4.4
Notre réseau est à présent prêt a utiliser notre plateforme SMS. De plus nous pouvons configurer le filtrage MAC à l'aide de notre panneau de configuration sur notre dongle.
Liens connexes et annexes
- Comment configurer 2 réseaux wifi et ethernet en interface graphique ici
- La liste des APN et des identifiants opérateurs pour la connection du routeur avec votre carte sim ici
- Liste des autres commandes intéressante sur la clé 4G LTE W800
- Le plugin firefox qui sert à la désactivation du javascript ici
- Les nouveautés sur la compatibilité de la clé W800, L800Z avec le firmware DD-WRT ici
- Usb-modeswitch le lien officiel
- Informations sur le driver USB-net permettant la prise en charge d'équipement propriétaire dont l'hôte RNDIS sur linux.