Salut à tous!
Je tenais à partager mes recherches concernant le SMEG+ et ses possibles failles de sécurité.
J'ai une 308 en finition Business, et une chose qui me manque est la clim auto.
Mais vu que le contrôle de la clim se fait depuis l'écran, ça se pourrait que le hardware de contrôle de la clim soit identique, et que l'option soit juste logicielle.
En gros, la meilleure voie que j'ai trouvée avec le SMEG+, c'est d'éditer les fichiers de l'archive de mise à jour, puis de la flasher avec la méthode habituelle.
L'archive contient pas mal de fichiers intéressants, et notamment des bases de données avec des paramètres éditables.
Je soupçonne que l'un des paramètres règle l'activation/désactivation de la clim auto.
Je ne l'ai pas sous les yeux, mais je me souviens au moins avoir vu passer un paramètre concernant le "bi-zone".
Certains ont déjà changé avec succès certains paramètres, mais pas pour la clim, et uniquement sur SMEG+IV2 (voir plus bas).
Voilà donc un peu pêle-mêle les infos que j'ai trouvées. Je les partage en espérant que ça serve et qu'on puisse trouver une solution.
J'éditerai ce post avec de nouvelles infos si j'ai le temps.
Informations matérielles
Le SMEG+ est fabriqué par Magneti Marelli pour PSA.
Informations logicielles
Système d'exploitation : VxWorks
Plus particulièrement, ça serait AltiVec VxWorks 5.5
Altivec a l'air d'être une palteforme matérielle basée sur PowerPC. Une " extension SMID ". À creuser.
Le dev est fait en C++ (source : un ingé de chez Magneti Marelli).
Fichiers .xxx.inf
C'est les fichiers de checksum.
Voir plus bas pour calculer la checksum après modif.
Upgplugin.out
À la racine.
On dirait un binaire.
Strings upgplugin.out sort des choses intéressantes.
On voit tout le process d'upgrade : checksum, chemins…
Fichiers en _ctrl.bin
À la racine.
Je pense qu'ils sont lus par le binaire d'upgrade et contiennent des instructions pour l'upgrade.
Avec un coup de strings, on voit des chemins de fichiers et pas grand-chose d'autre.
Bases de données SQLite
SMEG_PLUS_UPG > NAV > system.bin > data_base > sqlite
Ce repertoire contient toutes les bases de données, vraisemblablement tous les paramètres.
Db_manager.sqlite
Memory ?
Clé très intéressante pour permettre d'écraser, via un futur flash USB, des valeurs qui ne sont pas accessibles par l'interface. Pour cela, la passer à 0 pour l'entrée concernée.
Exemples à 1 : up_common, up_config, up_user, up_user_hmi, config_options
Exemples à 0 : tuner, cheatcodes, config, keyboardhistory, radiologo.
Note : apparemment, les backups sont sauvegardés dans /USER_DATA_BACKUP.
Apparemment, ne concerne que tout ce qui touche à l'audio/radio/bluetooth/affichage/mp3/ipod.
Bases de données vides
" Upgrade.sqlite
" diag_zi.sqlite
" diagnosis.sqlite
Repackager les fichiers avec le CRC
Il faut télécharger http://mira308sw.altervista.org/software/RTXcrc%20(v01.00).zip
After I changed all my parameters of interest, I squeezed the halyards back using gzip. Backup Options for those who will say:
gzip -n -6 up_config.sqlite
Then it is necessary to calculate the checksum for the file using applets RTXcrc:
RTXcrc.exe -v up_config.sqlite
And record the value in the file up_config.sqlite.inf opposite words CRC_UNCOMPRESSED
Then it is necessary to calculate the checksum again. But this time, along with the .inf file:
RTXcrc.exe -v -i up_config.sqlite
The output will turn number of 4 characters, appends them after four noughts and the resulting value is written to the first line inf-file.
Idée pour déclencher une commande sans accès root
L'interface donne accès à des " cheat codes "
Les " cheat codes " sont probablement liés à une commande interne.
Peut-être que la commande interne associé au cheat code est définie dans une base de données ou un fichier de configuration modifiable. Au pire, un binaire éditable.
Dans ce cas, on pourrait associer un cheatcode existant (ou en créer un nouveau, pourquoi pas) qui lance une commande qui copie les fichiers de conf depuis la clé USB vers / USER_DATA / user_data / SQLITE.
Fichiers libcheatcode_XXXX.out
Ces fichiers ont l'air d'être des binaires. On en trouve un peu partout.
Un petit coup de strings dessus donne des résultats intéressants.
Il y aurait peut-être moyen de les remplacer par un autre exécutable pour faire les opérations de notre choix.
Il faudrait:
Le SMEG+IV2 offre un accès telnet via son point d'accès Wi-Fi.
Le SMEG+ n'a pas de Wi-Fi, mais il supporte le Bluetooth PAN (précédemment DUN, PAN depuis MàJ en 2016)
Peut-être qu'on peut accéder à ses ports par ce biais, mais j'en doute vu la nature de PAN.
Pour voir l'IP du SMEG, on peut taper le cheat code :
NETINFO
Shows information about the internet connection from the car (when available)
Toutefois après avoir établi une connexion avec le téléphone, NETINFO affiche une IP de DNS mais pas d'IP locale. C'est un échec.
Accès root via JTAG
Peut-être que le SMEG expose des ports de debug sur la carte mère.
Ils donneraient peut-être un accès telnet en root.
Un cheatcode intéressant: Spytake
SPYTAKE
This allows certain system files to be read from the USB stick to the SMEG (+) system.
Autres cheatcodes
MIRE
Vraisemblablement, c'est… une mire. Un strings donne des références à PNG, vertices, TextIMage2D, GPUFreeRAM. Donc probablement un truc graphique.
Autre point intéressant, c'est de loin le binaire le plus lourd de tous les cheatcodes (162kb)
Comment décompresser certains fichiers indécompressibles (décompression à l'infini)
Une piste ici : https://www.clubpeugeot.es/foro/topic/23502-cambiar-temas-de-la-pantalla-multimedia/?page=2
NOTE : peut-être pas si compliqué. Certains y arrivent direct avec tar xvf ou 7-zip.
And finally the beast. The file number 3 that of course, brings its crumb. with extension .bin.gz it seems that it is a binary file compressed with gzip but if we try to unzip it with any tool it does not shoot and error goes out. For these cases there is a magnificent tool called binwalk that searches within binary files to see if it recognizes strings and file formats within another file (said very badly and very fast).
After passing it through the binwalk it tells us:
File Name Offset Description HARMONY.bin.gz 4 Zlib compressed data, default compression, uncompressed size> = 524288
So really there is compressed data but not in the form of a file and on top of the first 4 bytes we have left (offset 4 according to binwalk). We edit the file in a hexadecimal editor, we eliminate by hand the first 4 bytes. If we only do that we are left with compressed data but as we also want to open and look at what there is we add a header file gzip, specifically I have added 1f 8b 08 00 00 00 00 00 at the beginning. With these modifications we can decompress the file for example with winrar, gzip or as you prefer. Although it will give us an error, the file can be extracted.
Well, when it is extracted, the result is another binary file so again to pass binwalk and finally we find more things like png files, many data zones compressed with LZMA, zlib, a parity file and little else. And here I have stood for the moment.
Idée pour flasher des fichiers sélectivement en utilisant le flasher d'usine
Le flasher d'usine lit la liste des choses à flasher dans des fichiers à la racine de la clé USB, ou des répertoires du niveau en dessous.
En changeant cette liste de fichiers, on peut peut-être faire flasher un peu ce qu'on veut au flasher.
La voie diagbox
Diagbox est le logiciel de diagnostic de Peugeot. Ou sa copie, je n'ai pas bien compris.
Apparemment, il serait possible de faire certaines choses avec diagbox.
Diagbox peut fonctionner avec des interfaces ODB2 chinoises.
Mais si j'ai bien compris, ça impose un télécodage du véhicule, ou un truc avec un VIN, et ça demande des identifiants peugeot. À ma connaissance c'est incontournable.
Dispo ici : http://www.c4picasseros.com/t46-d14gb0x-7-y-5-c0mplet0s
Références
Hacking SMEG + iv2 and telekodirovanie without DiagBox:
https://www.drive2.com/l/453828648118518250/
La même chose en step-by-step:
http://www.c4-sedan.ru/forum/viewtopic.php?f=61&t=3349
Collection d'utilitaires peut-être utiles :
http://mira308sw.altervista.org/fr/
Infos intéressantes :
http://twistedminds.ru/2015/06/smeg-radar-dangerz/
SMEG cheat codes :
https://www.jvd-projects.nl/peugeot-smeg-cheat-codes/
Je tenais à partager mes recherches concernant le SMEG+ et ses possibles failles de sécurité.
J'ai une 308 en finition Business, et une chose qui me manque est la clim auto.
Mais vu que le contrôle de la clim se fait depuis l'écran, ça se pourrait que le hardware de contrôle de la clim soit identique, et que l'option soit juste logicielle.
En gros, la meilleure voie que j'ai trouvée avec le SMEG+, c'est d'éditer les fichiers de l'archive de mise à jour, puis de la flasher avec la méthode habituelle.
L'archive contient pas mal de fichiers intéressants, et notamment des bases de données avec des paramètres éditables.
Je soupçonne que l'un des paramètres règle l'activation/désactivation de la clim auto.
Je ne l'ai pas sous les yeux, mais je me souviens au moins avoir vu passer un paramètre concernant le "bi-zone".
Certains ont déjà changé avec succès certains paramètres, mais pas pour la clim, et uniquement sur SMEG+IV2 (voir plus bas).
Voilà donc un peu pêle-mêle les infos que j'ai trouvées. Je les partage en espérant que ça serve et qu'on puisse trouver une solution.
J'éditerai ce post avec de nouvelles infos si j'ai le temps.
Informations matérielles
Le SMEG+ est fabriqué par Magneti Marelli pour PSA.
Informations logicielles
Système d'exploitation : VxWorks
Plus particulièrement, ça serait AltiVec VxWorks 5.5
Altivec a l'air d'être une palteforme matérielle basée sur PowerPC. Une " extension SMID ". À creuser.
Le dev est fait en C++ (source : un ingé de chez Magneti Marelli).
Fichiers .xxx.inf
C'est les fichiers de checksum.
Voir plus bas pour calculer la checksum après modif.
Upgplugin.out
À la racine.
On dirait un binaire.
Strings upgplugin.out sort des choses intéressantes.
On voit tout le process d'upgrade : checksum, chemins…
Fichiers en _ctrl.bin
À la racine.
Je pense qu'ils sont lus par le binaire d'upgrade et contiennent des instructions pour l'upgrade.
Avec un coup de strings, on voit des chemins de fichiers et pas grand-chose d'autre.
Bases de données SQLite
SMEG_PLUS_UPG > NAV > system.bin > data_base > sqlite
Ce repertoire contient toutes les bases de données, vraisemblablement tous les paramètres.
Db_manager.sqlite
Memory ?
- Backup: Rôle probable : si à 1, le SMEG fait un backup de la base existante avant de wiper la NVRAM pour flasher un nouveau firmware, puis la restaure après.
Clé très intéressante pour permettre d'écraser, via un futur flash USB, des valeurs qui ne sont pas accessibles par l'interface. Pour cela, la passer à 0 pour l'entrée concernée.
Exemples à 1 : up_common, up_config, up_user, up_user_hmi, config_options
Exemples à 0 : tuner, cheatcodes, config, keyboardhistory, radiologo.
Note : apparemment, les backups sont sauvegardés dans /USER_DATA_BACKUP.
- ResetAble: Rôle probable : si à 1, peut être réinitialisé dans le cadre d'une remise aux réglages d'usine par l'utilisateur.
Apparemment, ne concerne que tout ce qui touche à l'audio/radio/bluetooth/affichage/mp3/ipod.
Bases de données vides
" Upgrade.sqlite
" diag_zi.sqlite
" diagnosis.sqlite
Repackager les fichiers avec le CRC
Il faut télécharger http://mira308sw.altervista.org/software/RTXcrc%20(v01.00).zip
After I changed all my parameters of interest, I squeezed the halyards back using gzip. Backup Options for those who will say:
gzip -n -6 up_config.sqlite
Then it is necessary to calculate the checksum for the file using applets RTXcrc:
RTXcrc.exe -v up_config.sqlite
And record the value in the file up_config.sqlite.inf opposite words CRC_UNCOMPRESSED
Then it is necessary to calculate the checksum again. But this time, along with the .inf file:
RTXcrc.exe -v -i up_config.sqlite
The output will turn number of 4 characters, appends them after four noughts and the resulting value is written to the first line inf-file.
Idée pour déclencher une commande sans accès root
L'interface donne accès à des " cheat codes "
Les " cheat codes " sont probablement liés à une commande interne.
Peut-être que la commande interne associé au cheat code est définie dans une base de données ou un fichier de configuration modifiable. Au pire, un binaire éditable.
Dans ce cas, on pourrait associer un cheatcode existant (ou en créer un nouveau, pourquoi pas) qui lance une commande qui copie les fichiers de conf depuis la clé USB vers / USER_DATA / user_data / SQLITE.
Fichiers libcheatcode_XXXX.out
Ces fichiers ont l'air d'être des binaires. On en trouve un peu partout.
Un petit coup de strings dessus donne des résultats intéressants.
Il y aurait peut-être moyen de les remplacer par un autre exécutable pour faire les opérations de notre choix.
Il faudrait:
- Recompiler pour l'architecture AltiVec VxWorks, ce qui pourrait être difficile sans le SDK
Le SMEG+IV2 offre un accès telnet via son point d'accès Wi-Fi.
Le SMEG+ n'a pas de Wi-Fi, mais il supporte le Bluetooth PAN (précédemment DUN, PAN depuis MàJ en 2016)
Peut-être qu'on peut accéder à ses ports par ce biais, mais j'en doute vu la nature de PAN.
Pour voir l'IP du SMEG, on peut taper le cheat code :
NETINFO
Shows information about the internet connection from the car (when available)
Toutefois après avoir établi une connexion avec le téléphone, NETINFO affiche une IP de DNS mais pas d'IP locale. C'est un échec.
Accès root via JTAG
Peut-être que le SMEG expose des ports de debug sur la carte mère.
Ils donneraient peut-être un accès telnet en root.
Un cheatcode intéressant: Spytake
SPYTAKE
This allows certain system files to be read from the USB stick to the SMEG (+) system.
Autres cheatcodes
MIRE
Vraisemblablement, c'est… une mire. Un strings donne des références à PNG, vertices, TextIMage2D, GPUFreeRAM. Donc probablement un truc graphique.
Autre point intéressant, c'est de loin le binaire le plus lourd de tous les cheatcodes (162kb)
Comment décompresser certains fichiers indécompressibles (décompression à l'infini)
Une piste ici : https://www.clubpeugeot.es/foro/topic/23502-cambiar-temas-de-la-pantalla-multimedia/?page=2
NOTE : peut-être pas si compliqué. Certains y arrivent direct avec tar xvf ou 7-zip.
And finally the beast. The file number 3 that of course, brings its crumb. with extension .bin.gz it seems that it is a binary file compressed with gzip but if we try to unzip it with any tool it does not shoot and error goes out. For these cases there is a magnificent tool called binwalk that searches within binary files to see if it recognizes strings and file formats within another file (said very badly and very fast).
After passing it through the binwalk it tells us:
File Name Offset Description HARMONY.bin.gz 4 Zlib compressed data, default compression, uncompressed size> = 524288
So really there is compressed data but not in the form of a file and on top of the first 4 bytes we have left (offset 4 according to binwalk). We edit the file in a hexadecimal editor, we eliminate by hand the first 4 bytes. If we only do that we are left with compressed data but as we also want to open and look at what there is we add a header file gzip, specifically I have added 1f 8b 08 00 00 00 00 00 at the beginning. With these modifications we can decompress the file for example with winrar, gzip or as you prefer. Although it will give us an error, the file can be extracted.
Well, when it is extracted, the result is another binary file so again to pass binwalk and finally we find more things like png files, many data zones compressed with LZMA, zlib, a parity file and little else. And here I have stood for the moment.
Idée pour flasher des fichiers sélectivement en utilisant le flasher d'usine
Le flasher d'usine lit la liste des choses à flasher dans des fichiers à la racine de la clé USB, ou des répertoires du niveau en dessous.
En changeant cette liste de fichiers, on peut peut-être faire flasher un peu ce qu'on veut au flasher.
La voie diagbox
Diagbox est le logiciel de diagnostic de Peugeot. Ou sa copie, je n'ai pas bien compris.
Apparemment, il serait possible de faire certaines choses avec diagbox.
Diagbox peut fonctionner avec des interfaces ODB2 chinoises.
Mais si j'ai bien compris, ça impose un télécodage du véhicule, ou un truc avec un VIN, et ça demande des identifiants peugeot. À ma connaissance c'est incontournable.
Dispo ici : http://www.c4picasseros.com/t46-d14gb0x-7-y-5-c0mplet0s
Références
Hacking SMEG + iv2 and telekodirovanie without DiagBox:
https://www.drive2.com/l/453828648118518250/
La même chose en step-by-step:
http://www.c4-sedan.ru/forum/viewtopic.php?f=61&t=3349
Collection d'utilitaires peut-être utiles :
http://mira308sw.altervista.org/fr/
Infos intéressantes :
http://twistedminds.ru/2015/06/smeg-radar-dangerz/
SMEG cheat codes :
https://www.jvd-projects.nl/peugeot-smeg-cheat-codes/