KuWfi GC111 / Qualcomm MDM9607

Beim KuWfi GC111 handelt es sich um einen relativ günstigen Router aus China, der beispielsweise über Aliexpress vertrieben wird. Das Gerät funktioniert grundsätzlich gut. Das Webinterface hat zwar ein paar Fehler (technisch und bei der Übersetzung ins Englisch), kann aber verwendet werden. Da ich solcher Hardware generell nicht vertraue, habe ich ein paar Tests durchgeführt und hier dokumentiert. Wenn Du wissen möchtest, was ich alles für Überraschungen gefunden habe, dann gerne weiterlesen…

Produktbild von aliexpress.com

Allgemeines

Generell möchte ich vom Kauf dieses Routers abraten. Es wird keine Update-Möglichkeiten für die Firmware geben und die Installation einer alternativen Firmware (wie OpenWRT) ist bis jetzt nicht möglich. Das installierte Linux ist alt und bietet, dank ungeschütztem Telnet-Zugang, Angreiffern ein grösstmögliches Einfallstor. Ausserdem verbindet sich der Router nach dem Start mit einen MQTT-Server in China. Zwar war dieser während meinen Tests offline, aber trotzdem kann man erahnen, dass dort auch persönliche Daten ausgetauscht werden. Ein paar davon konnte ich mit Hilfe einer Umleitung auf meinen MQTT-Broker dokumentieren.

Auf dieser Seite werde ich mit ein paar Kommentaren mein Vorgehen dokumentieren. Kommentare und weitere Ideen von Leser-Seite sind willkommen! Vor allem auch was die Installation von alternativen Firmware-Versionen angeht.

Hardware/Betriebssystem

Atheros AR8033-AL1A / NJ90322R
RTL8192ES
IC+ IP175G / 1936S12
Default IP: 192.168.100.1
root-Password: 1020 (gecrackt: weiter unten mehr dazu)

Weitere Infos zum OS:

https://osmocom.org/projects/quectel-modems/wiki/EC25
https://osmocom.org/projects/quectel-modems/wiki/Qualcomm_OE_MSM

Modem

Infos von https://www.qualcomm.com/products/snapdragon-modems-4g-lte-x5

Chipset: Snapdragon X5 LTE Modem, Snapdragon 616 processor, Snapdragon 415 processor, Snapdragon 412 processor, Snapdragon 212 Mobile Platform, Qualcomm 205 Mobile Platform

Multi SIM: LTE Dual SIM Dual Standby (DSDS)
Calling Services: VoLTE with SRVCC to 3G and 2G, Voice over Wi-Fi (VoWiFi) with LTE call continuity, Native HD video calling, HD Voice over 3G and VoLTE, CSFB to 3G and 2G
Downlink LTE Category: LTE Category 4
Downlink LTE Streams: 4x 37.5Mbps LTE streams, 2x 75Mbps LTE streams
Downlink Carrier Aggregation: 2×10 MHz carrier aggregation, 1×20 MHz downlink
Downlink QAM: Up to 64-QAM
Uplink Technology: Uplink Data Compression (UDC)
Uplink Carrier Aggregation: 1×20 MHz
Uplink QAM: Up to 16-QAM
Peak Download Speed: 150 Mbps
Peak Upload Speed: 50 Mbps
Cellular Technology: WCDMA (3C-HSDPA, DC-HSUPA), WCDMA (DC-HSDPA, HSUPA), WCDMA (DC-HSDPA, DC-HSUPA), TD-SCDMA, CDMA 1x, EV-DO, GSM/EDGE, LTE TDD, LTE FDD, LTE Broadcast

/ # uname -a
Linux homerouter.cpe 3.18.44 #1 PREEMPT Wed May 8 16:36:10 CST 2019 armv7l GNU/Linux

Linux version 3.18.44 (chengsong@localhost.localdomain) (gcc version 4.9.3 (GCC) ) #1 PREEMPT Wed May 8 16:36:10 CST 2019
cat /etc/version
 3b4418d

Erstes Backup erstellen

Um ein Backup zu erstellen, starten wir den installierten FTP-Server auf dem Router und geben direkt das Root-Verzeichnis „/“ frei:

tcpsvd -vE 0.0.0.0 21 ftpd /

Nun kann z.B. mit „Filezilla“ eine Verbindung aufgebaut werden. Dazu wird kein Login benötigt (Anonym).

Wichtige Verzeichnisse

Die aktive Webseite befindet sich unter:

/data/kthy_web/web

Was genau „wechat“ auf dem System zu suchen hat, kann man nicht genau sagen 😉

/data/kthy_web/web/html/wechat # ls -all
total 120
drwxrwxr-x    7 1000     1000          1152 Apr  1  2012 .
drwxrwxr-x    3 1000     1000           224 Apr  1  2012 ..
-rwxrwxr-x    1 1000     1000         11808 Aug 22  2018 apn.html
drwxrwxr-x    2 1000     1000           320 Apr  1  2012 css
-rwxrwxr-x    1 1000     1000          4005 Aug 22  2018 device.html
-rwxrwxr-x    1 1000     1000         17672 Jun  3  2019 info.html
drwxrwxr-x    2 1000     1000           304 Apr  1  2012 js
drwxrwxr-x    2 1000     1000           304 Apr  1  2012 language
drwxrwxr-x    2 1000     1000           560 Apr  1  2012 lib
-rwxrwxr-x    1 1000     1000          2608 Aug 22  2018 login.html
-rwxrwxr-x    1 1000     1000         10518 Aug 22  2018 login_psw.html
-rwxrwxr-x    1 1000     1000         38896 Aug 22  2018 quicksetting.html
-rwxrwxr-x    1 1000     1000          4700 Aug 22  2018 reboot.html
drwxrwxr-x    2 1000     1000          3392 Apr  1  2012 res
-rwxrwxr-x    1 1000     1000          4816 Aug 22  2018 restore.html
-rwxrwxr-x    1 1000     1000         11539 Aug 22  2018 wifi_repeat.html
http://192.168.100.1/html/wechat/login.html

Wobei eine alternative Seite in einem anderen Verzeichnis liegt:

/WEBSERVER/www # ls
QCMAP.html                      QCMAP_IPV4.html                 QCMAP_UPNP_DLNA_MDNS.html       QCMAP_login.html
QCMAP_Account.html              QCMAP_IPV4_Help.html            QCMAP_UPNP_DLNA_MDNS_Help.html  cgi-bin
QCMAP_Account_Help.html         QCMAP_IPV6.html                 QCMAP_WLAN.html                 images
QCMAP_Firewall.html             QCMAP_IPV6_Help.html            QCMAP_WLAN_Help.html            js
QCMAP_Firewall_Help.html        QCMAP_NAT.html                  QCMAP_WWAN.html
QCMAP_Help.html                 QCMAP_NAT_Help.html             QCMAP_WWAN_Help.html

Dies scheint das Original-Webinterface von Qualcomm zu sein.

Mit folgendem Befehl, habe ich den httpd Deamon auf Port 81 gestartet (Port 80 ist durch das aktive Webinterface benutzt) und das Webinterfice eingebunden: httpd -h /WEBSERVER/www -p 81

Das Interface ist dann unter dieser URL erreichbar (IP wenn nötig anpassen): http://192.168.100.1:81/QCMAP.html

Das Qualcomm-Webinterface ist so natürlich nicht nutzbar und gibt bei mir auch „Bad State“ Fehlermeldungen aus. Trotzdem kann man so kurz einen Blick darauf werfen 😉
QCMAP steht übrigens für QualComm Mobile Access Point.

Das QCMAP_CLI Binary, dass ein Text-Basiertes Interface darstellt, findet man unter /usr/bin/QCMAP_CLI
Leider konnte ich das Interface per Telnet nicht einfach direkt starten.

Logfiles

/data/kthy_web/kthy_log

Netzwerk-Analyse

Etwas erschreckend ist, dass dämtliche Dienste (auch das ungeschützte Telnet) auf allen Netzwerk-Interfaces erreichbar ist. Also auch über das Internet! Dies ist natürlich inakzeptabel und macht den Router sozusagen unbrauchbar. In meinem Fall vergibt der Mobile-Anbiter keine öffentlichen IP’s, was somit sehr hilfreich ist. Denn so ist der Router immerhin nicht vom Internet her erreichbar.

netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:5037          0.0.0.0:*               LISTEN      236/adbd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      796/kthy_topsw_goah
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      1732/dnsmasq
tcp        0      0 :::53                   :::*                    LISTEN      1732/dnsmasq
tcp        0      0 :::23                   :::*                    LISTEN      767/busybox

Netstat zeigt Verbindungen an. Eine davon ist suspekt:

tcp        0      1 10.35.247.226:36517     134.175.160.67:1883     SYN_SENT  

Port 1883 wird für MQTT verwendet. Ich war schon leicht verwirrt, dass mosquito auf der Kiste installiert ist. Was jedoch über MQTT übertragen wird, muss erst analysiert werden.

IP134.175.160.67
Hostname134.175.160.67
ISPTencent Cloud Computing (Beijing) Co., Ltd
RIRAPNIC
OriginAS45090
Netrange134.175.0.0 – 134.175.255.255
CountryCN
Infos von https://ip-info.org/de/?ip=134.175.160.67

Die IP gehört also einem Cloud-Dienst Anbieter: https://intl.cloud.tencent.com/
Der Laufende Dienst, der die MQTT-Verbindung herstellt, heisst: googol_mosquitto_client_version2. Im Internet findet man nicht viele Infos dazu.

Wird der googol Client manuell gestartet, gibt dieser folgenden Output:

googol_mosquitto_client_version2 
googol_qmi_client.c,153: err_ret = 0

googol_qmi_client.c,304: kthy_topsw_mdm_read_transparent rc is 0

googol_qmi_client.c,305: resp.error: 0, resp.result: 0

googol_qmi_client.c,309: sw1: 90, sw2: 0

googol_qmi_client.c,314: content_len is 10

googol_qmi_client.c,347: kthy_topsw_mdm_get_iccid resp_status is 0

googol_qmi_client.c,354: 98
googol_qmi_client.c,354: 14
googol_qmi_client.c,354: 20
googol_qmi_client.c,354: 10
googol_qmi_client.c,354: 07
googol_qmi_client.c,354: 44
googol_qmi_client.c,354: XX
googol_qmi_client.c,354: XX
googol_qmi_client.c,354: XX
googol_qmi_client.c,354: XX
googol_qmi_client.c,359: 
sim_iccid str is 89410201704400XXXXXX

googol_qmi_client.c,385: rc is 0

googol_qmi_client.c,386: resp.error: 0, resp.result: 0

rsp_data.card_status_valid= 1 
googol_qmi_client.c,391: ...hantao: card info begin...

googol_qmi_client.c,392: index_gw_pri: 0x0

googol_qmi_client.c,393: index_1x_pri: 0xffff

googol_qmi_client.c,394: index_gw_sec: 0xffff

googol_qmi_client.c,395: index_1x_sec: 0xffff

googol_qmi_client.c,398: rsp_data.card_status.card_info[0].app_info_len 0x2

googol_qmi_client.c,401: app_info[0]

googol_qmi_client.c,402: app_type 0x2

googol_qmi_client.c,403: app_state 0x7

googol_qmi_client.c,404: app_pin status 3 3 10

googol_qmi_client.c,401: app_info[1]

googol_qmi_client.c,402: app_type 0x5

googol_qmi_client.c,403: app_state 0x1

googol_qmi_client.c,404: app_pin status 0 0 0

googol_qmi_client.c,435: apptype: 0x2

googol_qmi_client.c,451: 3gpp

googol_qmi_client.c,455: ...hantao: card info end...

googol_qmi_client.c,457: KTHY_usim_card: 1 

googol_qmi_client.c,304: kthy_topsw_mdm_read_transparent rc is 0

googol_qmi_client.c,305: resp.error: 0, resp.result: 0

googol_qmi_client.c,309: sw1: 90, sw2: 0

googol_qmi_client.c,314: content_len is 9

googol_qmi_client.c,495: googol_get_imsi resp_status is 0

googol_qmi_client.c,498: googol: card_result_valid

googol_qmi_client.c,504: 08
googol_qmi_client.c,504: 29
googol_qmi_client.c,504: 82
googol_qmi_client.c,504: 20
googol_qmi_client.c,504: 51
googol_qmi_client.c,504: 60
googol_qmi_client.c,504: 80
googol_qmi_client.c,504: 33
googol_qmi_client.c,504: 52
googol_qmi_client.c,508: 

googol_qmi_client.c,509: tmp_imsi_str: 809228021506XXXXXX

googol_qmi_client.c,512: imsi: 228021506XXXXXX

utils.c,285: no client_id, use imei [356053080XXXXXX]

utils.c,334: no subscribe_topic, use imei [356053080XXXXXX]

utils.c,408: new_server_host is empty, set it to client->host
utils.c,421: new_port is 0, set it to client->port

googol_mosquitto_client.c,910: host: 134.175.160.67

googol_mosquitto_client.c,911: post: 1883

Das verwendete Config-File (im JSON-Format) beinhaltet folgendes:

cat /usr/kthy/kthy_conf/config/googol_mosquitto_client.json
{
        "server_host": "134.175.160.67",
        "server_port": 1883,
        "client_id": "",
        "clean_session": true,
        "username": "100000002",
        "password": "passwd",
        "subscribe_topic": "",
        "subscribe_qos": 2,
        "publish_topic": "100000000",
        "publish_qos": 2,
        "report_interval": 600,
        "ping_interval": 30,
        "product_key": "bbegq8aixmpb7o6z",
        "new_server_host":"",
        "new_server_port": 0,
        "need_report": 1
}

Um zu sehen, was MQTT genau übermittelt, versuche ich eine IP-Umleitung mit iptables auf dem Router zu einer lokalen IP. Dort ist Mosquitto (Default Installation unter Raspian) installiert und hört auf Anfragen mit der IP 192.168.100.104.
Der iptables-Befehl überlebt so einen Reboot des Routers übrigens nicht.

iptables -t nat -A OUTPUT -d [ipaddress1] -j DNAT --to-destination [ipaddress2]

Bei meinem Versuch sind folgende IPs in Verwendung:

iptables -t nat -A OUTPUT -d 134.175.160.67 -j DNAT --to-destination 192.168.100.104

Nun können wir auf dem Lokalen MQTT-Server den Traffic mitlesen. Als Topic wird „10000000“ verwendet. Ich verwende dazu die Software MQTT.fx: http://www.mqttfx.org/. Alle 10 Minuten wird ein MQTT-Packet übertragen. Die unten aufgeführten Daten sind leicht anonymisiert (mit X).

Der MQTT-Server meldet bei der Anmeldung:

New client connected from X.X.X.X(IP) as 356053080XXXXXX (c1, k30, u'100000002').

Die erste Übertragung vom Router:

{"to":"100000000","from":"356053080XXXXXX","msgType":1,"method":"reportDevProperties","msgID":"1","date":"2020-08-20 18:54:28","data":{"product_key":"bbegq8aixmpb7o6z","udid":"356053080XXXXXX","properties":{"version":"GC111-GL-LM321_V3.0_20191211","imei":"356053080XXXXXX","iccid":"89410201704400XXXXXX","imsi":"228021506XXXXXX","flow":2881836938,"up":0,"down":0,"lock":"00","cellId":"2624776","lac":"41000","mcc":"228","mnc":"2","monthly_flow":27000501468,"wan_type":"4G"}}}

Bei den weiteren Übertragungen fehlen dann jeweils die Daten zur „version“. Diese wird also nur bei der ersten Übertragung nach der Anmeldung mitgesendet.

Unter Anderem sind sämtliche Daten zum Lokalisieren der Mobilfunk-Antenne enthalten. Diese können z.B. über http://www.cell2gps.com/ analysiert werden und zeigen so auch den Standort der Antenne (und des Routers).

Screenshot von http://www.cell2gps.com

Auch die imei-Nummer wird übertragen. Damit kann der Hersteller des 4G-Moduls ermittelt werden. Folgende Daten erhällt man von imei24.com:

BrandHong Kong Mcard Technology Co Limited
ModelLC111
Daten von imei24.com.

IMEI.info: The format of the ICCID is: MMCC IINN NNNN NNNN NN C x
MM = Constant (ISO 7812 Major Industry Identifier)
CC = Country Code
II= Issuer Identifier
N{12} = Account ID („SIM number“)
C = Checksum calculated from the other 19 digits using the Luhn algorithm.
x= An extra 20th digit is returned by the ‚AT!ICCID?‘ command, but it is not officially part of the ICCID.

iccid (Integrated Circuit Card Identifier) identifiziert die SIM-Card. Auch diese Daten gehen an den Hersteller. Mehr Infos: https://en.wikipedia.org/wiki/SIM_card#ICCID.

Was mit dem lokalen MQTT-Server jedoch nicht evaluiert werden kann, ist in wiefern der Router gesteuert werden kann. Also ob und wie er Befehle über MQTT ausführt. Hierzu könnte z.B. ein Firmware-Upgrade gehören, das vom Hersteller her initiiert wird.

netstat zeigt folgende offenen Ports (lokal):

/ # netstat -npl
netstat: showing only processes with your user ID
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:5037          0.0.0.0:*               LISTEN      236/adbd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      795/kthy_topsw_goah
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      1712/dnsmasq
tcp        0      0 :::53                   :::*                    LISTEN      1712/dnsmasq
tcp        0      0 :::23                   :::*                    LISTEN      766/busybox
udp        0      0 0.0.0.0:500             0.0.0.0:*                           1870/charon
udp        0      0 0.0.0.0:53              0.0.0.0:*                           1712/dnsmasq
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1712/dnsmasq
udp        0      0 0.0.0.0:4500            0.0.0.0:*               UNKNOWN     1870/charon
udp        0      0 0.0.0.0:1701            0.0.0.0:*                           1874/xl2tpd
udp        0      0 127.0.0.1:5053          0.0.0.0:*                           1144/kthy_doh_proxy
udp        0      0 :::500                  :::*                                1870/charon
udp        0      0 :::53                   :::*                                1712/dnsmasq
udp        0      0 :::4500                 :::*                                1870/charon
raw        0      0 :::58                   :::*                    58          442/QCMAP_Connectio
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING       6838 611/netmgrd         /data/netmgr_connect_socket
unix  2      [ ACC ]     STREAM     LISTENING       6541 223/psmd            /tmp/psm_socket/psm
unix  2      [ ACC ]     STREAM     LISTENING       6581 760/QCMAP_CLI       /media/kthy/kthy_socket/MSG_ID_SAP_CM
unix  2      [ ACC ]     STREAM     LISTENING       6584 763/kthy_topsw_cfg  /tmp/kthy_cfg_path
unix  2      [ ACC ]     STREAM     LISTENING       6592 772/kthy_topsw_daem /media/kthy/kthy_socket/MSG_ID_DAEMON
unix  2      [ ACC ]     STREAM     LISTENING       6595 779/kthy_topsw_nvco /media/kthy/kthy_socket/kthy_nvconfig_server
unix  2      [ ACC ]     STREAM     LISTENING       6605 783/kthy_topsw_wan_ /media/kthy/kthy_socket/MSG_ID_WAN_CTRL
unix  2      [ ACC ]     STREAM     LISTENING       6608 781/kthy_topsw_rout /media/kthy/kthy_socket/MSG_ID_ROUTER
unix  2      [ ACC ]     STREAM     LISTENING       6636 801/kthy_topsw_wms  /media/kthy/kthy_socket/kthy_topsw_wms
unix  2      [ ACC ]     STREAM     LISTENING       6642 785/kthy_topsw_ppp_ /media/kthy/kthy_socket/MSG_ID_WAN_PPP
unix  2      [ ACC ]     STREAM     LISTENING       6643 787/kthy_wan_nwinfo /media/kthy/kthy_socket/MSG_ID_WAN_NWINFO
unix  2      [ ACC ]     STREAM     LISTENING       6644 793/kthy_topsw_mdm  /media/kthy/kthy_socket/kthy_mdm_path
unix  2      [ ACC ]     STREAM     LISTENING       6676 802/kthy_topsw_pbm  /media/kthy/kthy_socket/kthy_pbm
unix  2      [ ACC ]     STREAM     LISTENING       6680 791/kthy_topsw_mc_s /media/kthy/kthy_socket/kthy_mc_startup_path
unix  2      [ ACC ]     STREAM     LISTENING       6778 789/kthy_topsw_mc   /media/kthy/kthy_socket/kthy_mc_path
unix  2      [ ACC ]     STREAM     LISTENING       7160 800/kthy_topsw_lan  /media/kthy/kthy_socket/MSG_ID_WLAN
unix  2      [ ACC ]     STREAM     LISTENING       8214 772/kthy_topsw_daem /media/kthy/kthy_socket/kthy_proc_daemon
unix  2      [ ACC ]     STREAM     LISTENING      11733 1870/charon         /var/run/charon.ctl
unix  2      [ ACC ]     STREAM     LISTENING      11734 1870/charon         /var/run/charon.vici
unix  2      [ ACC ]     STREAM     LISTENING       6153 236/adbd            @jdwp-control

Init-Scripte

ls /etc/init.d/
 adbd                                     psmd
 alignment.sh                             qmi_shutdown_modemd
 banner.sh                                qseecomd
 bootlogd                                 rc
 bootmisc.sh                              rcS
 bsp_paths.sh                             read-only-rootfs-hook.sh
 busybox-cron                             reboot
 checkroot.sh                             reset_reboot_cookie
 chgrp-diag                               rmnologin.sh
 data-init                                save-rtc.sh
 dbus-1                                   sendsigs
 devpts.sh                                set_core_pattern.sh
 dmesg.sh                                 sfs_config
 dnsmasq                                  shutdown
 find_partitions.sh                       single
 firmware-links.sh                        start_MCM_MOBILEAP_ConnectionManager_le
 functions                                start_MCM_atcop_svc_le
 functions.initscripts                    start_QCMAP_ConnectionManager_le
 halt                                     start_atfwd_daemon
 hostname.sh                              start_eMBMs_TunnelingModule_le
 hwclock.sh                               start_embms_le
 inetd.busybox                            start_mcm_data_srv_le
 init_irsc_util                           start_mcm_ril_srv_le
 keymap.sh                                start_qti_le
 mcmlocserverd                            start_stop_qmi_ip_multiclient
 mdev                                     start_stop_qti_ppp_le
 misc-daemon                              start_subsystem_ramdump
 modem-shutdown                           stop-bootlogd
 modutils.sh                              sysfs.sh
 mountall.sh                              syslog
 mountnfs.sh                              syslog.busybox
 mssboot                                  time_serviced
 netmgrd                                  umountfs
 networking                               umountnfs.sh
 populate-volatile.sh                     urandom
 port_bridge                              usb
 power_config                             xl2tpd
 ppp

Busybox

busybox
 BusyBox v1.23.2 (2019-12-11 11:54:25 CST) multi-call binary.
 BusyBox is copyrighted by many authors between 1998-2012.
 Licensed under GPLv2. See source distribution for detailed
 copyright notices.
 Usage: busybox [function [arguments]…]
    or: busybox --list[-full]
    or: busybox --install [-s] [DIR]
    or: function [arguments]…
     BusyBox is a multi-call binary that combines many common Unix     utilities into a single executable.  Most people will create a     link to busybox for each function they wish to use and BusyBox     will act like whatever it was invoked as.
 Currently defined functions:
         [, [[, acpid, add-shell, addgroup, adduser, adjtimex, ar, arp, arping, ash, awk, base64, basename, beep, blkid,
         blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpst, chroot,
         chrt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, delgroup, deluser,
         depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo, ed,
         egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat,
         fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fstrim, fsync, ftpd, ftpget, ftpput, fuser,
         getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id,
         ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm,
         ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, less, linux32, linux64, linuxrc, ln,
         loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat,
         lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.vfat, mknod,
         mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter,
         nohup, nslookup, ntpd, od, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir,
         poweroff, powertop, printenv, printf, ps, pscan, pwd, raidautorun, rdate, rdev, readahead, readlink, readprofile,
         realpath, reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake,
         run-parts, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont, setkeycodes,
         setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, shuf, slattach, sleep, smemcap, softlimit,
         sort, split, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync,
         sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr,
         traceroute, traceroute6, true, tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname, unexpand, uniq, unix2dos,
         unlink, unlzma, unlzop, unxz, unzip, uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, watch,
         watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat, zcip

Zugriff auf den Router (ausser über das Webinterface)

Der Telnet-Zugang ist aus dem LAN ungeschützt (ohne User/Password) mit root-Rechten erreichbar. Entsprechend können grundlegende Informationen auf einfache Weise abgerufen werden. Leider ist Telnet auch vom WAN-Netzwerk aus (grundsätzlich auf allen Netzwerk-Interfaces) erreichbar, was natürlich extrem fahrlässig und unsicher ist.

Allgemeine Informationen zum System

Um auch ohne Geräte einen Überblick über das System und die Hardware zu erhalten, habe ich hier ein paar Systemabfragen (Copy/Paste) angefügt.

cpuinfo

cat cpuinfo 
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : Qualcomm Technologies, Inc MDM9607
Revision        : 0000
Serial          : 0000000000000000
Processor       : ARMv7 Processor rev 5 (v7l)

ps

/ # ps
PID   USER     TIME   COMMAND
    1 root       0:22 init [5]
    2 root       0:00 [kthreadd]
    3 root      36:02 [ksoftirqd/0]
    5 root       0:00 [kworker/0:0H]
    7 root       8:02 [rcu_preempt]
    8 root       0:00 [rcu_sched]
    9 root       0:00 [rcu_bh]
   10 root       0:00 [khelper]
   11 root       0:00 [netns]
   12 root       0:00 [perf]
   13 root       0:02 [msm_watchdog]
   14 root       0:00 [smd_channel_clo]
   15 root       0:00 [smsm_cb_wq]
   16 root       0:00 [kworker/u2:1]
   17 root       0:00 [deferwq]
   19 root       0:01 [irq/46-cpr]
   20 root       0:00 [mpm]
   22 root       0:00 [writeback]
   23 root       0:00 [crypto]
   24 root       0:00 [bioset]
   25 root       0:00 [kblockd]
   26 root       0:00 [system]
   27 root       0:00 [devfreq_wq]
   28 root       0:00 [cfg80211]
   29 root       0:00 [power_off_alarm]
   30 root       0:00 [kswapd0]
   31 root       0:00 [fsnotify_mark]
   40 root       0:00 [glink_ssr_wq]
   41 root       0:52 [hwrng]
   43 root       0:00 [diag_real_time_]
   44 root       0:00 [diag_wq]
   45 root       0:00 [DIAG_USB_diag]
   46 root       0:00 [diag_cntl_wq]
   47 root       0:00 [diag_dci_wq]
   48 root       0:00 [DIAG_SMD_MODEM_]
   49 root       0:00 [DIAG_SMD_MODEM_]
   50 root       0:00 [DIAG_SMD_MODEM_]
   51 root       0:00 [DIAG_SMD_MODEM_]
   52 root       0:00 [DIAG_SMD_MODEM_]
   53 root       0:00 [DIAG_SMD_LPASS_]
   54 root       0:00 [DIAG_SMD_LPASS_]
   55 root       0:00 [DIAG_SMD_LPASS_]
   56 root       0:00 [DIAG_SMD_LPASS_]
   57 root       0:00 [DIAG_SMD_LPASS_]
   58 root       0:00 [DIAG_SMD_WCNSS_]
   59 root       0:00 [DIAG_SMD_WCNSS_]
   60 root       0:00 [DIAG_SMD_WCNSS_]
   61 root       0:00 [DIAG_SMD_WCNSS_]
   62 root       0:00 [DIAG_SMD_WCNSS_]
   63 root       0:00 [DIAG_SMD_SENSOR]
   64 root       0:00 [DIAG_SMD_SENSOR]
   65 root       0:00 [DIAG_SMD_SENSOR]
   66 root       0:00 [DIAG_SMD_SENSOR]
   67 root       0:00 [DIAG_SMD_SENSOR]
   68 root       0:00 [DIAG_SOCKMODEM_]
   69 root       0:00 [DIAG_SOCKMODEM_]
   70 root       0:00 [DIAG_SOCKMODEM_]
   71 root       0:00 [DIAG_SOCKMODEM_]
   72 root       0:00 [DIAG_SOCKMODEM_]
   73 root       0:00 [DIAG_SOCKLPASS_]
   74 root       0:00 [DIAG_SOCKLPASS_]
   75 root       0:00 [DIAG_SOCKLPASS_]
   76 root       0:00 [DIAG_SOCKLPASS_]
   77 root       0:00 [DIAG_SOCKLPASS_]
   78 root       0:00 [DIAG_SOCKWCNSS_]
   79 root       0:00 [DIAG_SOCKWCNSS_]
   80 root       0:00 [DIAG_SOCKWCNSS_]
   81 root       0:00 [DIAG_SOCKWCNSS_]
   82 root       0:00 [DIAG_SOCKWCNSS_]
   83 root       0:00 [DIAG_SOCKSENSOR]
   84 root       0:00 [DIAG_SOCKSENSOR]
   85 root       0:00 [DIAG_SOCKSENSOR]
   86 root       0:00 [DIAG_SOCKSENSOR]
   87 root       0:00 [DIAG_SOCKSENSOR]
   88 root       0:00 [DIAG_CNTL_SOCKE]
   89 root       0:00 [qcrypto_seq_res]
  110 root       0:00 [spi1]
  113 root       0:00 [k_gserial]
  114 root       0:00 [k_ipa_usb]
  115 root       0:00 [uether]
  116 root       0:00 [k_gbridge]
  117 root      19:38 [cfinteractive]
  119 root       0:00 [usb_bam_wq]
  120 root       0:00 [irq/31-7824900.]
  121 root     237:36 [irq/30-mmc0]
  122 root       0:00 [soc:rpm_etm0]
  123 root       0:00 [qmi_svc_event_w]
  124 root       0:00 [msm_ipc_router]
  125 root       0:00 [soc:modem_etm0]
  126 root       0:00 [ipv6_addrconf]
  127 root       0:00 [irq/198-modem]
  128 root       0:00 [sysmon_wq]
  129 root       0:00 [bam_dmux_rx]
  130 root       0:00 [bam_dmux_tx]
  131 root       1:26 [ubi_bgt0d]
  132 root       0:00 [kthy_usb_discon]
  133 root       0:00 [kthy_usb_switch]
  134 root       0:00 [k_bam_data]
  135 root       0:00 [f_mtp]
  140 root       0:08 [ubifs_bgt0_0]
  163 root       0:00 [ubifs_bgt0_2]
  181 root       0:38 [ubifs_bgt0_1]
  190 root       0:00 [ubi_bgt1d]
  223 root       0:04 psmd -c /data/psm
  236 root       0:00 /sbin/adbd
  442 root       0:15 QCMAP_ConnectionManager /data/mobileap_cfg.xml d
  578 root       0:00 [IPCRTR]
  580 root       0:00 [modem_IPCRTR]
  611 root       0:00 /usr/bin/netmgrd
  642 root       0:00 /usr/bin/atfwd_daemon
  658 root       0:00 /usr/bin/mbimd
  659 root       0:00 {getty} /bin/busybox /sbin/getty -L ttyHSL0 115200 console
  760 root       0:00 QCMAP_CLI
  763 root       0:04 kthy_topsw_cfg
  766 root       0:00 {telnetd} /bin/busybox /sbin/telnetd -l /bin/sh
  772 root       2:07 kthy_topsw_daemon -i5 -d
  779 root     245:42 kthy_topsw_nvconfig
  781 root       9:15 kthy_topsw_router
  783 root      41:51 kthy_topsw_wan_ctrl
  785 root       0:00 kthy_topsw_ppp_dial
  787 root       0:44 kthy_wan_nwinfor
  789 root       1:28 kthy_topsw_mc
  791 root       0:18 kthy_topsw_mc_startup
  793 root       0:34 kthy_topsw_mdm
  795 root      17:39 kthy_topsw_goahead
  800 root       0:25 kthy_topsw_lan
  801 root       0:00 kthy_topsw_wms
  802 root       0:00 kthy_topsw_pbm
  814 root       0:03 googol_mosquitto_client_version2
 1047 root       0:00 [irq/78-emac_wol]
 1144 root       0:08 kthy_doh_proxy -d -x -S 3600 -l /data/kthy_web/kthy_log/doh_proxy.log
 1360 root      43:10 [rtw_xmit/wlan0]
 1361 root     309:53 [rtw_cmd/wlan0]
 1712 nobody     0:08 dnsmasq --log-async=5 -K -C /usr/kthy/kthy_conf/config/dnsmasq.conf
 1868 root       0:00 /usr/lib/strongswan/ipsec/starter --daemon charon
 1870 root       0:54 /usr/lib/strongswan/ipsec/charon --use-syslog --debug-dmn 1 --debug-mgr 4 --debug-ike 4 --debug-chd 1 --deb
 1874 root       0:26 xl2tpd -c /etc/xl2tpd.conf
 5945 root       0:02 [kworker/u2:2]
12086 root       0:03 [kworker/0:1]
13862 root       0:01 [kworker/u2:0]
15887 root       0:02 [kworker/0:0]
16199 root       0:00 [kworker/u2:3]
16803 root       0:00 [kworker/0:2]
17512 root       0:00 {sh} /bin/busybox /bin/sh
18537 root       0:00 {ps} /bin/busybox /bin/ps

mount (Dateisystem)

# mount
rootfs on / type rootfs (rw)
ubi0:rootfs on / type ubifs (rw,relatime,bulk_read,chk_data_crc)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)
/dev/ubi0_2 on /softsim type ubifs (rw,relatime,chk_data_crc)
ubi0:usrfs on /data type ubifs (rw,relatime,bulk_read,chk_data_crc)
/dev/ubi1_0 on /firmware type ubifs (ro,relatime,bulk_read,chk_data_crc)
none on /sys/kernel/config type configfs (rw,relatime)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)

Boot-Log

/var/volatile/log # cat boot
Fri Jan 16 23:33:49 1970: MTD : Detected block device : /firmware for modem
Fri Jan 16 23:33:49 1970: UBI device number 1, total 478 LEBs (60694528 bytes, 57.9 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
Fri Jan 16 23:33:49 1970: soc: MDM9607
Fri Jan 16 23:33:49 1970: serialno: d99f9932
Fri Jan 16 23:33:49 1970: Configuring the USB gadget using ConfigFS...
Fri Jan 16 23:33:49 1970: mkdir: can't create directory 'functions/ffs.adb': Device or resource busy
Fri Jan 16 23:33:49 1970: mkdir: can't create directory 'functions/diag.diag': No such file or directory
Fri Jan 16 23:33:49 1970: /etc/rcS.d/S30usb: line 160: setprop: not found
Fri Jan 16 23:33:49 1970: Switching to composition number 0x9025
Fri Jan 16 23:33:51 1970: Starting port_bridge: done
Fri Jan 16 23:33:51 1970: hwclock: can't open '/dev/misc/rtc': No such file or directory
Thu Aug 13 19:25:32 2020: Thu Aug 13 19:25:32 UTC 2020
Thu Aug 13 19:25:32 2020: hwclock: can't open '/dev/misc/rtc': No such file or directory
Thu Aug 13 19:25:32 2020: INIT: Entering runlevel: 5
Thu Aug 13 19:25:32 2020: Configuring network interfaces... Error: argument "eth0" is wrong: Unknown device
Thu Aug 13 19:25:32 2020: kernel.core_pattern = /var/tmp/core.%e.%p.%s.%t
Thu Aug 13 19:25:32 2020: ln: /system/lib/lib: File exists
Thu Aug 13 19:25:32 2020: ln: /vendor/vendor: File exists
Thu Aug 13 19:25:32 2020: chown: /media/card: No such file or directory
Thu Aug 13 19:25:32 2020: hwclock: can't open '/dev/misc/rtc': No such file or directory
Thu Aug 13 19:25:33 2020: /etc/rc5.d/S20xl2tpd: .: line 23: can't open '/lib/lsb/init-functions'
Thu Aug 13 19:25:33 2020: Starting irsc_util: Starting irsc tool
Thu Aug 13 19:25:33 2020: Failed to open file:/etc/sec_config
Thu Aug 13 19:25:33 2020: Absent/Invalid config,Default rules apply
Thu Aug 13 19:25:33 2020: Ending irsc tool
Thu Aug 13 19:25:33 2020: done
Thu Aug 13 19:25:33 2020: Starting time_services: done
Thu Aug 13 19:25:33 2020: Starting modem dependent daemons: time_daemon_mdm:[566]: genoff_pre_init::Base = 0
Thu Aug 13 19:25:33 2020: 
Thu Aug 13 19:25:33 2020: time_daemon_mdm:[566]: ats_rtc_init: Unable to open RTC device
Thu Aug 13 19:25:33 2020: 
Thu Aug 13 19:25:33 2020: time_daemon_mdm:[566]: genoff_init_config: RTC initilization failed
Thu Aug 13 19:25:33 2020: 
Thu Aug 13 19:25:33 2020: time_daemon_mdm:[566]:  Unable to initialize bases, exiting
Thu Aug 13 19:25:33 2020: 
Thu Aug 13 19:25:36 2020: Starting/Loading embms_kernel module: done loading embms_kernel module
Thu Aug 13 19:25:36 2020: Starting netmgrd: done
Thu Aug 13 19:25:36 2020: Starting qmi_shutdown_modem: done
Thu Aug 13 19:25:36 2020: Starting subsystem_ramdump: done
Thu Aug 13 19:25:36 2020: Starting miscellaneous daemons: Starting atreset: done
Thu Aug 13 19:25:36 2020: done
Thu Aug 13 19:25:36 2020: 

passwd

cat passwd
root:x:0:0:root:/home/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
diag:x:53:53:diag:/nonexistent:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
messagebus:x:999:998::/var/lib/dbus:/bin/false

shadow

cat shadow 
root:C98ULvDZe7zQ2:18241:0:99999:7:::
daemon:*:18241:0:99999:7:::
bin:*:18241:0:99999:7:::
sys:*:18241:0:99999:7:::
sync:*:18241:0:99999:7:::
games:*:18241:0:99999:7:::
man:*:18241:0:99999:7:::
lp:*:18241:0:99999:7:::
mail:*:18241:0:99999:7:::
news:*:18241:0:99999:7:::
uucp:*:18241:0:99999:7:::
proxy:*:18241:0:99999:7:::
www-data:*:18241:0:99999:7:::
backup:*:18241:0:99999:7:::
list:*:18241:0:99999:7:::
irc:*:18241:0:99999:7:::
gnats:*:18241:0:99999:7:::
diag:*:18241:0:99999:7:::
nobody:*:18241:0:99999:7:::
messagebus:!:18241:0:99999:7:::

Zwar wird das root-Passwort gar nicht benötigt, trotzdem habe ich online geschaut ob der Hash schon gecrackt wurde. Jawohl: Das Passwort lautet: 1020

group

cat group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
input:x:19:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
shutdown:x:70:
users:x:100:
sdcard:x:1015:diag
diag:x:53:
rebooters:x:1301:diag
nogroup:x:65534:
netdev:x:999:
messagebus:x:998:

iptables

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
chain_kthy_input  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
chain_kthy_forward  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain chain_kthy_forward (1 references)
target     prot opt source               destination         
chain_lan_mac  all  --  anywhere             anywhere            
chain_lan_ip  all  --  anywhere             anywhere            
chain_portal  all  --  anywhere             anywhere            
chain_specialapp  all  --  anywhere             anywhere            
chain_mqtt  all  --  anywhere             anywhere            

Chain chain_kthy_input (1 references)
target     prot opt source               destination         
chain_wanping  all  --  anywhere             anywhere            
chain_service_ctrl  all  --  anywhere             anywhere            

Chain chain_lan_ip (2 references)
target     prot opt source               destination         
zone_lan_ip  all  --  anywhere             anywhere            
policy_lan_ip  all  --  anywhere             anywhere            

Chain chain_lan_mac (1 references)
target     prot opt source               destination         
zone_lan_mac  all  --  anywhere             anywhere            
policy_lan_mac  all  --  anywhere             anywhere            

Chain chain_mqtt (2 references)
target     prot opt source               destination         
zone_mqtt  all  --  anywhere             anywhere            
policy_mqtt  all  --  anywhere             anywhere            

Chain chain_portal (2 references)
target     prot opt source               destination         
zone_portal  all  --  anywhere             anywhere            
policy_portal  all  --  anywhere             anywhere            

Chain chain_service_ctrl (2 references)
target     prot opt source               destination         
zone_service_ctrl  all  --  anywhere             anywhere            
policy_service_ctrl  all  --  anywhere             anywhere            

Chain chain_specialapp (2 references)
target     prot opt source               destination         
zone_specialapp  all  --  anywhere             anywhere            
policy_specialapp  all  --  anywhere             anywhere            

Chain chain_wanping (1 references)
target     prot opt source               destination         
zone_wanping  all  --  anywhere             anywhere            
policy_wanping  all  --  anywhere             anywhere            

Chain policy_kthy_forward (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain policy_kthy_input (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain policy_lan_ip (1 references)
target     prot opt source               destination         
chain_portal  all  --  anywhere             anywhere            

Chain policy_lan_mac (1 references)
target     prot opt source               destination         
chain_lan_ip  all  --  anywhere             anywhere            

Chain policy_mqtt (1 references)
target     prot opt source               destination         
policy_kthy_forward  all  --  anywhere             anywhere            

Chain policy_portal (1 references)
target     prot opt source               destination         
chain_specialapp  all  --  anywhere             anywhere            

Chain policy_service_ctrl (1 references)
target     prot opt source               destination         
policy_kthy_input  all  --  anywhere             anywhere            

Chain policy_specialapp (1 references)
target     prot opt source               destination         
chain_mqtt  all  --  anywhere             anywhere            

Chain policy_wanping (1 references)
target     prot opt source               destination         
chain_service_ctrl  all  --  anywhere             anywhere            

Chain zone_lan_ip (1 references)
target     prot opt source               destination         

Chain zone_lan_mac (1 references)
target     prot opt source               destination         

Chain zone_mqtt (1 references)
target     prot opt source               destination         

Chain zone_portal (1 references)
target     prot opt source               destination         

Chain zone_service_ctrl (1 references)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             tcp dpt:http
DROP       tcp  --  anywhere             anywhere             tcp dpt:https

Chain zone_specialapp (1 references)
target     prot opt source               destination         

Chain zone_wanping (1 references)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere             icmp echo-request

2 Gedanken zu „KuWfi GC111 / Qualcomm MDM9607

  1. Hi Markus,

    Great analisys!
    I’m dealing with a similar router but in an outdoor box.
    I’m relly new to linux and I’m trying to get the frquency band the modem is connected to.
    Did you se any option to read it from console or running any script?
    Thanks a lot in advance.

    Sergio

    Hallo Markus,

    Tolle Analysen!
    Ich habe es mit einem ähnlichen Router zu tun, aber in einer Outdoor-Box.
    Ich bin wirklich neu in Linux und versuche, das Frequenzband zu erhalten, mit dem das Modem verbunden ist.
    Haben Sie eine Option gesehen, um es von der Konsole zu lesen oder ein Skript auszuführen?
    Vielen Dank im Voraus.

    Sergio

    • Hallo Sergio!
      Leider kann ich dir keine Antwort dazu geben – und die Hardware, zum selber ausprobieren, habe ich momentan nicht zur Verfügung. Wenn es eine Möglichkeit gibt, wäre diese sicher im Manual vom Linux-Treiber des Qualcomm-Modems aufgeführt. Weiterführende Informationen zu den Quectel-Modems habe ich hier gefunden: https://osmocom.org/projects/quectel-modems/wiki/EC25

      Ich hoffe Du findest eine Lösung und würde mich freuen, diese auch hier im Blog zu veröffentlichen!
      Mit Linux ist fast alles möglich… Weiterhin viel Freude beim Experimentieren und viel Erfolg!

      Tipp: Schau doch, ob es bei dir in der näheren Umgebung eine Linux User-Gruppe gibt. Diese helfen meistens gerne weiter 🙂

      Markus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.