Énoncé du problème
J'ai un fichier composé entièrement de structures de données; J'ai essayé de trouver un outil qui me permettrait d'ouvrir ce fichier et de déclarer (peut-être) un type et un décalage tels que je puisse travailler individuellement avec le type de données primitif présumé.
par exemple Je déclare que les 4 octets situés à l'offset 0x04 sont un entier non signé de 32 bits, et je voudrais inspecter la valeur à cet emplacement (lu peut-être comme big-endian), puis travailler avec cet entier individuellement (peut-être voir à quoi il ressemble encodé comme une chaîne ascii de 4 octets et essayez de le lire, etc.)
Détails
J'ai un fichier de 4096 octets contenant des structures C avec des éléments membres sous forme d'entiers allant de 16 -64 bits de longueur; voici un exemple:
struct my_struct {uint_32 magic} // sizeof (my_struct) == 0x04
Dans ce cas, magic = 'ball ', et donc quand le fichier est ouvert dans un éditeur de texte, il se lit comme' llab ... ', et peut évidemment aussi être représenté comme un entier 32 bits
Question
Existe-t-il un outil qui permet l'analyse statique de fichiers de structure de données plats?
Ce que j'ai considéré jusqu'à présent comme une solution
J'ai envisagé d'écrire un outil de ligne de commande en Python pour faites-le, mais si quelque chose existe déjà, je préférerais gagner du temps et peut-être en apprendre davantage sur ce sujet en utilisant un outil conçu par quelqu'un de plus expérimenté. S'il vous semble que je vais mal à propos de cela (c'est ma première exploration sérieuse de ce genre de retournement), veuillez guider ma compréhension, merci.
Où j'ai déjà recherché
Googlé 'outils d'ingénierie inverse' et parcouru les liens
J'ai vérifié les pages d'ingénierie inverse de wikipedia
J'ai essayé quelques premiers principes de raisonnement
J'ai vérifié pypi
Résultats
Il y a trois réponses complètement valides et correctes, mais j'ai marqué la plus détaillée et la moins chère d'entre elles comme étant correctes, car c'est la plus accessible aux membres de la communauté qui examinent cette question.