Question:
Inverser un circuit FPGA
Igor Skochinsky
2013-03-20 22:27:35 UTC
view on stackexchange narkive permalink

Supposons que j'ai un appareil avec un FPGA dessus, et que j'ai réussi à extraire le bitstream de son flash. Comment pourrais-je récupérer son comportement?

Un cas simple est s'il implémente un processeur logiciel - dans ce cas, il devrait y avoir un firmware pour ce processeur quelque part et je peux simplement le démonter. Mais que se passe-t-il s'il ne s'agit que d'un ensemble de blocs IP et d'une logique supplémentaire?

`" s'il implémente un processeur logiciel - dans ce cas, il devrait y avoir un firmware pour cela "` ... mais un processeur logiciel n'est pas un firmware (quel processeur exécuterait ce firmware?) C'est une configuration d'éléments matériels sur le FPGA.
Je voulais dire que le processeur logiciel devrait exécuter * un * code, et ce code devrait être stocké quelque part (peut-être dans la même mémoire flash que le flux binaire fpga)
Trois réponses:
#1
+21
cb88
2013-03-20 22:56:53 UTC
view on stackexchange narkive permalink

Bien que les fabricants de FPGA ne se contentent pas de lancer leurs formats, il existe une documentation complète à un bas niveau. Les appareils Xilinx en sont un bon exemple.

Pour procéder à l'ingénierie inverse du flux binaire, vous pouvez générer des cas de test qui implémentent une logique simple et voir comment ceux-ci se traduisent en flux binaire, puis passer aux conceptions qui utilisent différentes parties de la puce.

Au niveau de base, vous voudriez savoir comment un CLB est contrôlé puis les IOB et les interconnexions. les CLB sont la logique dans laquelle les IOB sont connectés aux broches et les interconnexions relient les CLB et les IOB. Ce document devrait vous donner de nombreuses informations sur la manière dont les FPGA sont implémentés et comment vous pouvez procéder au reverse engineering des flux binaires. Notez que les nouveaux FPGA passent à des luts à 6 entrées plutôt qu'à 4 entrées, comme c'était souvent le cas.

Gardez simplement à l'esprit que le flux binaire n'est pas un logiciel - c'est une image de configuration matérielle. Donc, c'est en fait très similaire à la façon dont ENIAC a dû être programmé - recâbler les circuits et inverser les commutateurs pour le programmer - sauf que dans ce cas, vous configurez des routes avec des interconnexions et de la logique dans les CLB.

Aussi le gars derrière Ben NanoNote est l'écriture d'une fpga-toolchain que je suis avidement. Puisqu'un secondaire à mon passe-temps de collection SparcStation est de réimplémenter sun4m, une architecture SparcStation, en FPGA. Après tout, qui ne voudrait pas pouvoir configurer un FPGA à partir d'un FPGA avec votre propre conception de processeur.

Mise à jour: Il convient de noter que IceStorm (principalement des puces ice40) et NextPNR (Multi ciblé sur ice40 / ECP5 / Xilinx Series 7) sont les chaînes d'outils FPGA à la pointe de la technologie inverse.

le fpga.pdf semble 404 peut-on le relier
Je ne sais pas trop où cela s'est passé ... Je suis à peu près sûr que cela provenait de l'atelier FPGA 2009 de l'ESA.
Pour info: le lien PDF FPGA est 404.
@JonathonReinhart La machine Wayback peut avoir une copie ... il dit que la machine avec la copie est actuellement en panne. https://web.archive.org/web/20120813074341/http://www2-c703.uibk.ac.at/teaching/ws2009/esa/fpga.pdf
#2
+1
bitsdanceforme
2014-01-31 01:36:15 UTC
view on stackexchange narkive permalink

Xilinx Virtex II avait un flux binaire "ouvert", ce qui signifie que le format du flux binaire était documenté et public. Les gens pouvaient alors manipuler le bitstream comme bon leur semblait. Depuis lors, le format a été fermé (IMO) pour empêcher les gens de (1) réutiliser l'appareil, ce qui est une grande préoccupation pour certains intérêts et (2) de garder leur technologie secrète des concurrents.

Les nouvelles technologies permettent au flux binaire d'être chiffré à partir de la chaîne d'outils FPGA et d'effectuer un déchiffrement interne avant de programmer le FPGA. Vous devrez donc vous assurer que le flux binaire que vous avez capturé est déchiffré avant d'essayer de l'analyser.

De plus, avec la réalisation de la reconfiguration partielle (via Xilinx), les tentatives de RE deviendront plus compliquées car vous ne pouvez plus assoir et regarder le comportement des appareils.

#3
+1
Ehsan
2019-03-23 12:37:10 UTC
view on stackexchange narkive permalink

RapidSmith fait cela pour vous. http://rapidsmith.sourceforge.net/

Il existe également un article que vous pouvez lire comme point de départ: "Les progrès récents de l'ingénierie inverse FPGA" Hoyoung Yu, Hansol Lee, Sangil Lee, Youngmin Kim et Hyung-Min Lee



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...