
Um bloco de notas para escrever notas enquanto usa Rizin & Cutter!
Um notebook para análise binária com rizin. Mantenha notas, comandos e scripts organizados por binário.
Requer rizin 0.7.0 ou superior.
Cada página do notebook está vinculada a um binário. Ela armazena o próprio binário, seu hash SHA-256, e uma lista de células:
As páginas são armazenadas como arquivos .rznb individuais (bases de dados SQLite) em ~/.rizin-notebook/.
Elas podem ser exportadas e importadas como arquivos únicos autocontidos.
rizin-notebook) - a aplicação principal. Serve uma interface web, expõe uma
API REST protobuf + JSON, armazena tudo em arquivos SQLite .rznb por página.NB ao rizin para que você
possa interagir com o notebook a partir do shell do rizin.Os plugins são opcionais. O servidor Go funciona sozinho apenas com um navegador.
O servidor Go é independente de plataforma. Os plugins dependem da versão do Rizin contra a qual foram compilados.
Se o rizin autónomo e o Cutter vierem com versões diferentes do Rizin na sua máquina, compile rz_notebook uma vez para cada. Ambas as compilações podem comunicar com o mesmo servidor e partilhar os mesmos dados .rznb.
Regra simples:
rz_notebook por versão do Rizin em usoAs capturas de tela do projeto estão organizadas em docs/images/.
Figura 1. Visualização da página inicial (com pesquisa baseada em célula e escopo, suportando múltiplos modos.)
Figura 2. Página de definições para configuração de ambiente, atalhos de teclado e comportamento do lado do servidor.
Figura 3. Autocompletar de comandos na consola web, ajudando a descobrir e completar comandos Rizin rapidamente.
Figura 4. Ajuda e modal de pesquisa de comandos integrados para explorar descrições e argumentos de comandos.
Figura 5. Integração do plugin core do Rizin, permitindo interação com o notebook diretamente a partir do shell do Rizin.
Figura 6. Vista da integração do plugin do Cutter mostrando a experiência do notebook dentro da interface do Cutter.
Figura 7. Vista adicional do fluxo de trabalho do plugin do Cutter demonstrando possíveis usos do notebook.
go build -o rizin-notebook .
Embutir a string de versão durante compilações de lançamento:
go build -ldflags "-X main.NBVERSION=$(git rev-parse --short HEAD)" -o rizin-notebook .
./rizin-notebook
Abre em http://127.0.0.1:8000/ por padrão.
Opções:
-bind 127.0.0.1:8000 address and port to listen on
-root / URL path prefix
-notebook /path/to/data data directory (default: ~/.rizin-notebook)
-debug-assets /path load templates from disk instead of embedded
-debug enable HTTP request logs
Defina RIZIN_PATH para substituir o caminho do binário rizin usado para execução do pipe.
Veja rizin-notebook-plugin/README.md.
Veja cutter-notebook-plugin/README.md.
Se o Cutter trouxer o seu próprio Rizin embutido, o plugin rz_notebook carregado pelo Cutter deve ser compilado contra essa mesma versão do Rizin fornecida.
Cada página é um arquivo .rznb no diretório de dados. É uma base de dados SQLite contendo:
O servidor mantém um índice catalog.db para listagem rápida em todas as páginas.
Na primeira execução, o servidor migra automaticamente quaisquer páginas de um formato monolítico antigo notebook.db para o layout por página .rznb.
Todos os comandos do plugin NB usam a API protobuf (Content-Type: application/x-protobuf). O esquema está em proto/notebook.proto.
Uma API JSON paralela em /api/v1/json/... é usada pelo plugin do Cutter e pela interface do navegador.