Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
mtk_bp — Outils d'analyse et de rétro-ingénierie du firmware de bande de base MediaTek, comprenant l'extraction de fichiers, l'analyse de symboles et l'intégration de Ghidra pour les binaires de modem. | Kitploit
Outils/GitHubGitHub/nccgroup/mtk_bp
Sécurité des Systèmes EmbarquésAnalyse StatiqueRétro-ingénierieSécurité MobileSécurité MatérielleAnalyse de BinairesAnalyse de Micrologiciel
GitHubnccgroup/mtk_bp

mtk_bp

Outils d'analyse et de rétro-ingénierie du firmware de bande de base MediaTek, comprenant l'extraction de fichiers, l'analyse de symboles et l'intégration de Ghidra pour les binaires de modem.

Voir le dépôt
76207il y a 3 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Outils de firmware BP MediaTek

Ce dépôt contient des définitions de formats de fichiers basées sur Kaitai relatives au firmware du modem MediaTek, ainsi que quelques outils en ligne de commande de base pour interagir avec ces types de fichiers. L'IDE Kaitai peut également être utilisé pour explorer interactivement les fichiers à l'aide des définitions Kaitai (fichiers *.ksy situés dans le répertoire mtk_structs).

Un chargeur Ghidra pour les fichiers md1img basé sur ces définitions est disponible sur https://github.com/nccgroup/ghidra-mtk-loader.

En utilisant XT2205-1_TESLA_TMO_12_S2STS32.71-118-4-2-6-3_subsidy-TMO_UNI_RSU_QCOM_regulatory-DEFAULT_cid50_CFC.xml.zip depuis https://mirrors.lolinet.com/firmware/lenomola/tesla/official/TMO/ comme exemple :

Extraction du conteneur md1img

md1_extract.py extrait les fichiers contenus dans un md1img :

root@kitploit:~
$ ./md1_extract.py ../XT2205-1_TESLA_TMO_12_S2STS32.71-118-4-2-6-3_subsidy-TMO_UNI_RSU_QCOM_regulatory-DEFAULT_cid50_CFC/md1img.img --outdir ./md1img_out/
extracting files to: ./md1img_out
md1rom: addr=0x00000000, size=43084864
        extracted to 000_md1rom
cert1md: addr=0x12345678, size=1781
        extracted to 001_cert1md
cert2: addr=0x12345678, size=988
        extracted to 002_cert2
md1drdi: addr=0x00000000, size=12289536
        extracted to 003_md1drdi
cert1md: addr=0x12345678, size=1781
        extracted to 004_cert1md
cert2: addr=0x12345678, size=988
        extracted to 005_cert2
md1dsp: addr=0x00000000, size=6776460
        extracted to 006_md1dsp
cert1md: addr=0x12345678, size=1781
        extracted to 007_cert1md
cert2: addr=0x12345678, size=988
        extracted to 008_cert2
md1_filter: addr=0xffffffff, size=300
        extracted to 009_md1_filter
md1_filter_PLS_PS_ONLY: addr=0xffffffff, size=300
        extracted to 010_md1_filter_PLS_PS_ONLY
md1_filter_1_Moderate: addr=0xffffffff, size=300
        extracted to 011_md1_filter_1_Moderate
md1_filter_2_Standard: addr=0xffffffff, size=300
        extracted to 012_md1_filter_2_Standard
md1_filter_3_Slim: addr=0xffffffff, size=300
        extracted to 013_md1_filter_3_Slim
md1_filter_4_UltraSlim: addr=0xffffffff, size=300
        extracted to 014_md1_filter_4_UltraSlim
md1_filter_LowPowerMonitor: addr=0xffffffff, size=300
        extracted to 015_md1_filter_LowPowerMonitor
md1_emfilter: addr=0xffffffff, size=2252
        extracted to 016_md1_emfilter
md1_dbginfodsp: addr=0xffffffff, size=1635062
        extracted to 017_md1_dbginfodsp
md1_dbginfo: addr=0xffffffff, size=1332720
        extracted to 018_md1_dbginfo
md1_mddbmeta: addr=0xffffffff, size=899538
        extracted to 019_md1_mddbmeta
md1_mddbmetaodb: addr=0xffffffff, size=562654
        extracted to 020_md1_mddbmetaodb
md1_mddb: addr=0xffffffff, size=12280622
        extracted to 021_md1_mddb
md1_mdmlayout: addr=0xffffffff, size=8341403
        extracted to 022_md1_mdmlayout
md1_file_map: addr=0xffffffff, size=889
        extracted to 023_md1_file_map

Le firmware principal du modem se trouve dans le fichier md1rom (000_md1rom). Pour la rétro-ingénierie des binaires nanoMIPS, consultez l'extension Ghidra nanoMIPS.

Liste des symboles de débogage

mtk_dbg_extract.py extrait les symboles de md1_dbginfo (nom complet du fichier fourni par md1_file_map) et les génère dans un format texte pouvant être importé avec le script ImportSymbolsScript.py de Ghidra.

root@kitploit:~
$ ./mtk_dbg_extract.py symbols DbgInfo_NR16.R2.MT6879.TC2.PR1.SP_LENOVO_S0MP1_K6879V1_64_MT6879_NR16_TC2_PR1_SP_V17_P38_03_24_03R_2023_05_19_22_31 | tee debug_symbols.txt
INT_Vectors 0x0000084c f
brom_ext_main 0x00000860 f
INT_SetPLL_Gen98 0x00000866 f
PLL_Set_CLK_To_26M 0x000009a2 f
PLL_MD_Pll_Init 0x000009da f
INT_SetPLL 0x000009dc f
INT_Initialize_Phase1 0x027b5c80 f
INT_Initialize_Phase2 0x027b617c f
init_cm 0x027b6384 f
init_cm_wt 0x027b641e f
...

Certains fichiers d'informations de débogage, comme md1_dbginfodsp dans le firmware d'exemple, contiennent des symboles pour plusieurs fichiers. Pour l'instant, les symboles de chaque fichier sont imprimés séquentiellement avec une ligne de séparation commençant par #, par exemple :

root@kitploit:~
# 0x000010 DSP_USIP0 
_ss_reset_entry 0x00000000 l
_vector_excpetion_veneer 0x00000404 l
...
# 0x081c4b DSP_USIP1 
_ss_reset_entry 0x00000000 l
_vector_excpetion_veneer 0x00000404 l
...
# 0x2cb407 DSP_SCQ16 SCQ16_LTE_ROCODE
void_lte_dmrs_comm_cell_info_trace___uint___uint 0x0003aff8 l
void_inv_cholesky_4x4_vst_func_Q3_VMLmvpvHalf_Q3_VMLmvpvHalf_Q3_VMLmvpvcHalf_Q3_VMLmvpvcHalf_Q3_VMLmvpvcHalf_Q3_VMLmvpvcHalf_Q3_VMLmvpvcHalf_Q3_VMLmvpvHalf_Q3_VMLmvpvHalf_Q3_VMLmvpvcHalf_Q3_VMLmvpsHalf___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint___uint 0x0004a5ab l
...

Ces lignes de commentaire ne sont pas prises en charge par ImportSymbolsScript.py, la division doit donc être effectuée manuellement. (TODO : Option pour générer un fichier texte de symboles pour chaque entrée.)

Télécharger l’outil