banner
Centre d'Information
Notre promesse est de fournir une technologie experte et des solutions fiables et efficaces.

Analyseurs logiques : exploiter les secrets du Raspberry Pi

Sep 02, 2023

Aujourd'hui, j'aimerais mettre en avant un outil qui amène vos compétences en piratage à un tout autre niveau, et ce, sans vous ruiner – en fait, étant donné le temps de débogage que vous pouvez gagner, le nombre d'activités amusantes que vous pouvez débloquer, et les nombreuses fonctionnalités que vous pouvez ajouter, cela pourrait être l'un des outils les moins chers que vous obtiendrez. Qu'il s'agisse de déboguer des problèmes étranges, d'optimiser votre code, de sonder un gadget sur lequel vous faites de l'ingénierie inverse ou peut-être d'essayer de comprendre la bibliothèque open source de quelqu'un, vous manquerez probablement beaucoup de choses si vous n'avez pas d'analyseur logique sous la main. !

Cela me brise le cœur que certains pirates informatiques ne connaissent toujours pas la valeur qu'apporte un analyseur logique. À maintes reprises, l'application tactique d'un analyseur logique m'a aidé à voir une perspective totalement différente sur quelque chose sur lequel je piratais, et c'est exactement ce que j'aimerais démontrer aujourd'hui.

Un analyseur logique possède un certain nombre d'entrées numériques et il lit en permanence l'état de ces entrées numériques, les envoyant à votre ordinateur ou les affichant sur un écran – c'est comme un oscilloscope au niveau logique uniquement. Si vous disposez d'un bus I2C avec un MCU contrôlant un capteur, connectez un analyseur logique aux broches d'horloge et de données, câblez la terre, lancez le logiciel de l'analyseur logique sur votre ordinateur et voyez ce qui se passe réellement.

Par exemple, avez-vous déjà remarqué les broches ID_SC et ID_SD sur le connecteur GPIO du Raspberry Pi ? Vous vous demandez à quoi ils servent ? Vous ne voulez pas vérifier ce qui se passe réellement sur ces épingles ? Faisons-le maintenant !

J'utilise un analyseur logique à 10 $ que vous pouvez acheter sur Aliexpress ou Amazon, un ordinateur portable et un Raspberry Pi avec une carte SD et une alimentation. Ici, c'est câblé : vous n'avez besoin que de trois fils femelle-femelle, de deux signaux et d'une masse. « SD » et « SC » ressemblent à I2C – la fréquence I2C typique est généralement de 100 kHz ou 400 kHz. Une bonne règle de base consiste à définir votre fréquence pour qu'elle soit trois ou quatre fois supérieure à la fréquence d'horloge du flux de données que vous êtes sur le point de capturer. En tant que tel, je prévois de régler la fréquence d'échantillonnage de mon analyseur logique sur 2 MHz. S'il s'avère trop lent pour rattraper les données transférées, je peux augmenter la fréquence d'échantillonnage et simplement refaire l'échantillonnage.

Le logiciel que j'utilise est Pulseview – c'est une merveilleuse interface graphique pour les analyseurs logiques et peut s'interfacer avec une grande variété d'analyseurs logiques. Il est open source, compatible Linux, piratable et possède une bonne UX, même s'il n'a pas été récemment maintenu. Vous pouvez l'installer à partir du référentiel de votre distribution ou télécharger le .exe si vous êtes sous Windows. L'analyseur logique connecté, je le branche sur mon port USB, lance Pulseview, règle la fréquence d'échantillonnage et la durée de lecture, qui peut être infinie, désactive toutes les voies sauf les deux qui m'intéressent, appuie sur 'Capturer' et branche le Pi au pouvoir.

Après avoir branché le Pi, les niveaux logiques sur les deux broches augmentent à mesure que la puissance de 3,3 V apparaît – et, après quelques secondes, il y a une brève explosion d'activité sur ces deux broches. En zoomant, l'activité ressemble effectivement à I2C – et dans Pulseview, c'est assez facile à décoder ! Appuyez sur le bouton « Décodeurs de protocole » dans la barre des tâches des paramètres, tapez « I2C » sur votre clavier, sélectionnez le décodeur I2C, puis double-cliquez sur la balise du décodeur à gauche et sélectionnez quels canaux sont SCL et SDA – c'est facile à dire, SCL ressemblera à comme un signal d'horloge avec des hauts et des bas égaux, tandis que les intervalles hauts et bas sur SDA varient ; sur l'image ci-dessus, D1 est SCL et D0 est SDA. En zoomant sur les événements I2C décodés, nous pouvons voir que cette activité est constituée de requêtes I2C de lecture de données de l'adresse 0x50, et ces requêtes sont suivies d'événements NACK (marqueur rouge), ce qui signifie qu'elles ne reçoivent pas de réponse.

Maintenant, si vous avez examiné la conception du Raspberry Pi HAT, vous devinerez peut-être déjà que ces requêtes I2C proviennent du chargeur de démarrage du Raspberry Pi, qui recherche l'EEPROM I2C contenant les informations sur le périphérique HAT, afin que le Pi puisse charger le périphérique. Arborez les données de superposition et utilisez ces données pour configurer n'importe quel matériel sur le HAT connecté. Vous n'avez pas besoin de vous fier au peu d'informations disponibles en ligne sur ce processus : avec un analyseur logique, vous pouvez enquêter sur ce qui se passe réellement, trouver les fonctionnalités cachées et les mises en garde, de sorte que même le matériel propriétaire ne soit que peu un obstacle pour vous. que possible.