
Un carnet où écrire des notes tout en utilisant rizin!
Un notebook pour l'analyse binaire avec rizin. Gardez les notes, commandes et scripts organisés par binaire.
Nécessite rizin 0.7.0 ou ultérieur.
Chaque page du notebook est liée à un binaire. Il stocke le binaire lui-même, son hachage SHA-256, et une liste de cellules :
Les pages sont stockées sous forme de fichiers .rznb individuels (bases de données SQLite) dans ~/.rizin-notebook/. Elles peuvent être exportées et importées en tant que fichiers autonomes uniques.
rizin-notebook) - l'application principale. Fournit une interface web, expose une API REST protobuf + JSON, stocke tout dans des fichiers .rznb SQLite par page.NB à rizin pour interagir avec le notebook depuis le shell rizin.Les plugins sont optionnels. Le serveur Go fonctionne de manière autonome avec un simple navigateur.
Le serveur Go est indépendant de la plateforme. Les plugins dépendent de la version de Rizin pour laquelle ils sont compilés.
Si rizin autonome et Cutter fournissent des versions différentes de Rizin sur votre machine, compilez rz_notebook une fois pour chaque version. Les deux builds peuvent communiquer avec le même serveur et partager les mêmes données .rznb.
Règle simple :
rz_notebook par version de Rizin utiliséeLes captures d'écran du projet sont organisées dans docs/images/.
Figure 1. Vue de la page d'accueil (avec recherche par cellule et par portée, prenant en charge plusieurs modes.)
Figure 2. Page de paramètres pour la configuration de l'environnement, les raccourcis clavier et le comportement côté serveur.
Figure 3. Auto-complétion des commandes dans la console web, aidant à découvrir et compléter rapidement les commandes Rizin.
Figure 4. Aide intégrée des commandes et fenêtre modale de recherche pour explorer les descriptions et arguments des commandes.
Figure 5. Intégration du plugin noyau Rizin, permettant l'interaction avec le notebook directement depuis le shell Rizin.
Figure 6. Vue d'intégration du plugin Cutter montrant l'expérience du notebook dans l'interface Cutter.
Figure 7. Vue supplémentaire du workflow du plugin Cutter démontrant les utilisations possibles du notebook.
go build -o rizin-notebook .
Intégrez la chaîne de version lors des builds de publication :
go build -ldflags "-X main.NBVERSION=$(git rev-parse --short HEAD)" -o rizin-notebook .
./rizin-notebook
S'ouvre par défaut sur http://127.0.0.1:8000/.
Drapeaux :
-bind 127.0.0.1:8000 adresse et port d'écoute
-root / préfixe de chemin d'URL
-notebook /path/to/data répertoire de données (défaut : ~/.rizin-notebook)
-debug-assets /path charger les modèles depuis le disque au lieu des fichiers embarqués
-debug activer les logs de requêtes HTTP
Définissez RIZIN_PATH pour remplacer le chemin du binaire rizin utilisé pour l'exécution via pipe.
Voir rizin-notebook-plugin/README.md.
Voir cutter-notebook-plugin/README.md.
Si Cutter fournit son propre Rizin embarqué, le plugin rz_notebook chargé par Cutter doit être compilé contre cette même version groupée de Rizin.
Chaque page est un fichier .rznb dans le répertoire de données. C'est une base de données SQLite contenant :
Le serveur maintient un index catalog.db pour un listage rapide sur toutes les pages.
Lors de la première exécution, le serveur migre automatiquement toutes les pages d'un ancien format monolithique notebook.db vers la structure par page .rznb.
Toutes les commandes du plugin NB utilisent l'API protobuf (Content-Type: application/x-protobuf).
Le schéma se trouve dans proto/notebook.proto.
Une API JSON parallèle à /api/v1/json/... est utilisée par le plugin Cutter et l'interface navigateur.