Neues Plugin iris-rea-recherche: belegte Recherche an Firmware/Programmen mit Nachbau einzelner Aspekte #357

Open
opened 2026-11-06 10:24:44 +00:00 by alf · 9 comments
Owner

Idee

Ein Plugin für Software-Entwicklung und Prototyping durch Recherche: Du gibst ein Ziel (zuerst Firmware oder ein natives Programm), das Plugin erfasst belegt, was es tut (Funktionen, Abläufe, offene Fragen) und baut einzelne Aspekte in Python nach, um das Verständnis zu prüfen. Craft Anything (3rdparty) dient nur als Vorlage für die Arbeitsweise, nicht als Motor.

Warum

Reverse-Engineering-Recherche hat heute keinen Ablauf mit Beleg-Speicher: Ghidra liefert Funde, aber Befunde, Hypothesen und offene Fragen verschwinden im Chat. Ein Ablauf mit deterministischen Skripten (Zustand, Prüfsummen, Verifikation) und LLM nur für Urteil und Text löst das.

Entschieden (grill-me)

# Entscheidung
1 Ergebnis: belegtes Wissen plus Nachbau einzelner Aspekte; keine kompletten Apps
2 Zieltypen: zuerst native Programme und Firmware; danach Webseiten; dann Java/.NET/Android
3 Beweis-Speicher: JSON im Workspace pro Ziel (Quelle der Wahrheit); daraus erzeugte Markdown-Notiz im Vault
4 Rein statisch: das Original wird nie ausgeführt (Ausführen mit Freigabe = späterer eigener Schritt)
5 Verifikation: Testvektoren aus dem Ziel; Rückfall Struktur-Abgleich; sonst „nicht verifiziert"
6 Clean room umschaltbar: Standard = Nachbau nur aus der Beschreibung (nicht aus Pseudo-C); pro Ziel auf „Deep" stellbar; Modus im Projekt vermerkt
7 Eigenes Plugin iris-rea-recherche, iris-ghidra als Abhängigkeit
8 Firmware entpacken: unblob
9 Ablauf im Dialog; Skript erzwingt Phasenreihenfolge; lange Schritte als Hintergrundjobs
10 Zuerst nur Mac; Skripte plattformneutral; Linux-Parität = Folgeaufgabe
11 Zuerst nur Chat und Vault-Notiz; Seitenpanel in zweiter Etappe
12 Nachbau in Python; je Aspekt ein Ordner mit Code, Test, Befund-IDs
13 Originaldatei: Kopie im Projektordner (nur Workspace, schreibgeschützt), SHA-256 festgehalten
15 Ausgaben: Index zuerst, Details auf Anfrage, plus Suchfilter (Strings, Konstanten, Aufrufer)
16 iris-ghidra wird um xrefs, callers, callees, find-string und einen Export ausgewählter Funktionen erweitert (heute: nur Aufrufer-Anzahl, kein Querverweis)

Etappen (je ein ship)

  1. iris-ghidra erweitern
  2. Projekt und Zustandsautomat im Plugin (Aufnahme, Beweis-Speicher, Phasenregeln), mit Tests
  3. Firmware entpacken (unblob)
  4. Nachbau und Verifikation
  5. Vault-Notiz und Skill (Prompts, Rollentrennung im Clean-room-Modus)
  6. Anleitung, Store-Material, Veröffentlichung (nach grünen Tests und --dry-run)

Offen

  • Linux-Server: iris-ghidra und unblob laufen dort nicht; Parität folgt.
  • Optional am Ende: Hinweis in iris-plugin-dev auf das neue Plugin.
  • Nicht verifiziert: wie gut unblob auf echten Abbildern des Nutzers läuft; wie schnell Ghidra auf großer Firmware ist.
## Idee Ein Plugin für Software-Entwicklung und Prototyping durch Recherche: Du gibst ein Ziel (zuerst Firmware oder ein natives Programm), das Plugin erfasst belegt, was es tut (Funktionen, Abläufe, offene Fragen) und baut einzelne Aspekte in Python nach, um das Verständnis zu prüfen. Craft Anything (3rdparty) dient nur als Vorlage für die Arbeitsweise, nicht als Motor. ## Warum Reverse-Engineering-Recherche hat heute keinen Ablauf mit Beleg-Speicher: Ghidra liefert Funde, aber Befunde, Hypothesen und offene Fragen verschwinden im Chat. Ein Ablauf mit deterministischen Skripten (Zustand, Prüfsummen, Verifikation) und LLM nur für Urteil und Text löst das. ## Entschieden (grill-me) | # | Entscheidung | |---|---| | 1 | Ergebnis: belegtes Wissen plus Nachbau einzelner Aspekte; keine kompletten Apps | | 2 | Zieltypen: zuerst native Programme und Firmware; danach Webseiten; dann Java/.NET/Android | | 3 | Beweis-Speicher: JSON im Workspace pro Ziel (Quelle der Wahrheit); daraus erzeugte Markdown-Notiz im Vault | | 4 | Rein statisch: das Original wird nie ausgeführt (Ausführen mit Freigabe = späterer eigener Schritt) | | 5 | Verifikation: Testvektoren aus dem Ziel; Rückfall Struktur-Abgleich; sonst „nicht verifiziert" | | 6 | Clean room umschaltbar: Standard = Nachbau nur aus der Beschreibung (nicht aus Pseudo-C); pro Ziel auf „Deep" stellbar; Modus im Projekt vermerkt | | 7 | Eigenes Plugin `iris-rea-recherche`, `iris-ghidra` als Abhängigkeit | | 8 | Firmware entpacken: `unblob` | | 9 | Ablauf im Dialog; Skript erzwingt Phasenreihenfolge; lange Schritte als Hintergrundjobs | | 10 | Zuerst nur Mac; Skripte plattformneutral; Linux-Parität = Folgeaufgabe | | 11 | Zuerst nur Chat und Vault-Notiz; Seitenpanel in zweiter Etappe | | 12 | Nachbau in Python; je Aspekt ein Ordner mit Code, Test, Befund-IDs | | 13 | Originaldatei: Kopie im Projektordner (nur Workspace, schreibgeschützt), SHA-256 festgehalten | | 15 | Ausgaben: Index zuerst, Details auf Anfrage, plus Suchfilter (Strings, Konstanten, Aufrufer) | | 16 | `iris-ghidra` wird um `xrefs`, `callers`, `callees`, `find-string` und einen Export ausgewählter Funktionen erweitert (heute: nur Aufrufer-Anzahl, kein Querverweis) | ## Etappen (je ein `ship`) 1. `iris-ghidra` erweitern 2. Projekt und Zustandsautomat im Plugin (Aufnahme, Beweis-Speicher, Phasenregeln), mit Tests 3. Firmware entpacken (`unblob`) 4. Nachbau und Verifikation 5. Vault-Notiz und Skill (Prompts, Rollentrennung im Clean-room-Modus) 6. Anleitung, Store-Material, Veröffentlichung (nach grünen Tests und `--dry-run`) ## Offen - Linux-Server: `iris-ghidra` und `unblob` laufen dort nicht; Parität folgt. - Optional am Ende: Hinweis in `iris-plugin-dev` auf das neue Plugin. - Nicht verifiziert: wie gut `unblob` auf echten Abbildern des Nutzers läuft; wie schnell Ghidra auf großer Firmware ist.
Author
Owner

PR #358 gemergt: feat(iris-ghidra): Querverweise und Suche, mehrere Ziele beim Dekompilieren, Anleitung und Tests (#357)
http://docker:3000/iris/iris-plugins/pulls/358

Commits:

  • feat(iris-ghidra): Querverweise und Suche, mehrere Ziele beim Dekompilieren, Anleitung und Tests (#357)

Etappe 1 von 6: iris-ghidra 0.2.0 (gebaut, nicht veröffentlicht).

Befund: iris-ghidra war in der Registry nicht vorhanden (bewusst privat: keine .include, ohne category, ohne Store-Material, ohne Tests). Das Planwerkzeug von iris-plugin-dev lehnt requires: ["iris-ghidra"] deshalb ab. Der Export lieferte nur die Anzahl der Aufrufer, keine Querverweise, und analyze dekompilierte jede Funktion.

Geändert:

  • Neue Befehle xrefs, callers, callees, find-string (--regex), find-const, seitenweise (--limit, --offset); neues Ghidra-Skript Query.java.
  • decompile nimmt mehrere Ziele; ein unbekanntes steht als Kommentarzeile, nur unbekannte Ziele sind ein Fehler.
  • analyze --ohne-pseudocode dekompiliert nicht alles.
  • plugin.json: Version 0.2.0, category: development, platforms: ["macos"], changelog, user_docs; Anleitung docs/erste-schritte.md, store/ (Icon, Langtext, Changelog); Build-Skript kopiert docs/.
  • 24 Tests (iris-ghidra/tests), PLAN.md und neue session-kontext.md.

Geprüft: Alle neuen Befehle an einem selbstgebauten Testprogramm (arm64, 6 Funktionen) gegen bekannte Erwartungen: Strings und ihre Nutzer, Regex, Aufrufer und Aufgerufene, Querverweise, Seitenblättern, mehrere Ziele beim Dekompilieren. 24 Tests grün, davon 13 mit echtem Ghidra 12.1.4. publish-plugins.sh --dry-run iris-ghidra: „1 würden veröffentlicht, 0 fehlgeschlagen" (mit temporärer .include, danach entfernt). Paketinhalt kontrolliert (Query.java, docs/).

Gefundene Fehler beim Testen: DecompileOne.java hatte eine Methode find, die mit GhidraScript kollidiert (behoben). find-const findet auf ARM nur Teilwerte (movz/movk).

Nicht geprüft: Installation über die Mac-GUI und post_install auf einem frischen Mac; Abfragen an großer Firmware (Dauer von find-const); Verhalten auf einem anderen Ghidra als 12.1.4.

Offen: Veröffentlichung wartet auf die Freigabe (.include). Danach plan setzen für iris-rea-recherche.

PR #358 gemergt: feat(iris-ghidra): Querverweise und Suche, mehrere Ziele beim Dekompilieren, Anleitung und Tests (#357) http://docker:3000/iris/iris-plugins/pulls/358 Commits: - feat(iris-ghidra): Querverweise und Suche, mehrere Ziele beim Dekompilieren, Anleitung und Tests (#357) --- **Etappe 1 von 6: `iris-ghidra` 0.2.0 (gebaut, nicht veröffentlicht).** **Befund:** `iris-ghidra` war in der Registry nicht vorhanden (bewusst privat: keine `.include`, ohne `category`, ohne Store-Material, ohne Tests). Das Planwerkzeug von `iris-plugin-dev` lehnt `requires: ["iris-ghidra"]` deshalb ab. Der Export lieferte nur die Anzahl der Aufrufer, keine Querverweise, und `analyze` dekompilierte jede Funktion. **Geändert:** - Neue Befehle `xrefs`, `callers`, `callees`, `find-string` (`--regex`), `find-const`, seitenweise (`--limit`, `--offset`); neues Ghidra-Skript `Query.java`. - `decompile` nimmt mehrere Ziele; ein unbekanntes steht als Kommentarzeile, nur unbekannte Ziele sind ein Fehler. - `analyze --ohne-pseudocode` dekompiliert nicht alles. - `plugin.json`: Version 0.2.0, `category: development`, `platforms: ["macos"]`, `changelog`, `user_docs`; Anleitung `docs/erste-schritte.md`, `store/` (Icon, Langtext, Changelog); Build-Skript kopiert `docs/`. - 24 Tests (`iris-ghidra/tests`), `PLAN.md` und neue `session-kontext.md`. **Geprüft:** Alle neuen Befehle an einem selbstgebauten Testprogramm (arm64, 6 Funktionen) gegen bekannte Erwartungen: Strings und ihre Nutzer, Regex, Aufrufer und Aufgerufene, Querverweise, Seitenblättern, mehrere Ziele beim Dekompilieren. 24 Tests grün, davon 13 mit echtem Ghidra 12.1.4. `publish-plugins.sh --dry-run iris-ghidra`: „1 würden veröffentlicht, 0 fehlgeschlagen" (mit temporärer `.include`, danach entfernt). Paketinhalt kontrolliert (`Query.java`, `docs/`). **Gefundene Fehler beim Testen:** `DecompileOne.java` hatte eine Methode `find`, die mit `GhidraScript` kollidiert (behoben). `find-const` findet auf ARM nur Teilwerte (`movz`/`movk`). **Nicht geprüft:** Installation über die Mac-GUI und `post_install` auf einem frischen Mac; Abfragen an großer Firmware (Dauer von `find-const`); Verhalten auf einem anderen Ghidra als 12.1.4. **Offen:** Veröffentlichung wartet auf die Freigabe (`.include`). Danach `plan setzen` für `iris-rea-recherche`.
Author
Owner

PR #359 gemergt: chore(iris-ghidra): Freigabe für die Registry (.include), 0.2.0 veröffentlicht (#357)
http://docker:3000/iris/iris-plugins/pulls/359

Commits:

  • chore(iris-ghidra): Freigabe für die Registry (.include), 0.2.0 veröffentlicht (#357)

iris-ghidra 0.2.0 ist veröffentlicht.

Draußen (nach git pull im Registry-Repo geprüft): Paket iris-ghidra-0.2.0.irisplugin mit Kategorie development, nur Mac, Store-Material (Icon, Langtext, Changelog) und Anleitung „Erste Schritte". Der Datenschutz-Scan des Veröffentlichungsskripts lief ohne Fund.

Was Nutzer bekommen: xrefs, callers, callees, find-string, find-const (seitenweise), mehrere Ziele bei decompile, analyze --ohne-pseudocode. Beim Installieren holt der Hook per Homebrew Ghidra, JDK 21 und bei Bedarf den LE/LX-Loader.

Nicht geprüft: Installation aus der Registry über die Mac-GUI und post_install auf einem frischen Mac; Abfragen an großer Firmware.

Offen: Etappen 2 bis 6 von iris-rea-recherche. Als Nächstes plan setzen im Vorhaben (requires: iris-ghidra ist jetzt in der Registry).

PR #359 gemergt: chore(iris-ghidra): Freigabe für die Registry (.include), 0.2.0 veröffentlicht (#357) http://docker:3000/iris/iris-plugins/pulls/359 Commits: - chore(iris-ghidra): Freigabe für die Registry (.include), 0.2.0 veröffentlicht (#357) --- **`iris-ghidra` 0.2.0 ist veröffentlicht.** **Draußen (nach `git pull` im Registry-Repo geprüft):** Paket `iris-ghidra-0.2.0.irisplugin` mit Kategorie `development`, nur Mac, Store-Material (Icon, Langtext, Changelog) und Anleitung „Erste Schritte". Der Datenschutz-Scan des Veröffentlichungsskripts lief ohne Fund. **Was Nutzer bekommen:** `xrefs`, `callers`, `callees`, `find-string`, `find-const` (seitenweise), mehrere Ziele bei `decompile`, `analyze --ohne-pseudocode`. Beim Installieren holt der Hook per Homebrew Ghidra, JDK 21 und bei Bedarf den LE/LX-Loader. **Nicht geprüft:** Installation aus der Registry über die Mac-GUI und `post_install` auf einem frischen Mac; Abfragen an großer Firmware. **Offen:** Etappen 2 bis 6 von `iris-rea-recherche`. Als Nächstes `plan setzen` im Vorhaben (`requires: iris-ghidra` ist jetzt in der Registry).
Author
Owner

PR #360 gemergt: docs(iris-rea-recherche): Plan als Entwurf, Session-Kontext aktualisiert (#357)
http://docker:3000/iris/iris-plugins/pulls/360

Commits:

  • docs(iris-rea-recherche): Plan als Entwurf, Session-Kontext aktualisiert (#357)

Plan für iris-rea-recherche liegt im Checkout (Entwurf).

Geändert: iris-rea-recherche/PLAN.md mit allen Entscheidungen samt Begründung, Phasen, Aufbau, Etappen, Tests und „Nicht Teil“; session-kontext.md aktualisiert. Kein Code.

Hinweis: Das Planwerkzeug von iris-plugin-dev ist für Iris gebaut (Arbeitsordner = Chat-Workspace, Klon von Forgejo). Hier wird direkt im Checkout gearbeitet; der Plan ist deshalb von Hand als PLAN.md geschrieben, mit einer Rubrik für Entscheidungen, die das Werkzeugformat nicht hat.

Nicht geprüft: Alles an dem Plugin selbst; der Plan wartet auf „Plan passt“ vom Nutzer.

Offen: Etappen 2 bis 6.

PR #360 gemergt: docs(iris-rea-recherche): Plan als Entwurf, Session-Kontext aktualisiert (#357) http://docker:3000/iris/iris-plugins/pulls/360 Commits: - docs(iris-rea-recherche): Plan als Entwurf, Session-Kontext aktualisiert (#357) --- **Plan für `iris-rea-recherche` liegt im Checkout (Entwurf).** **Geändert:** `iris-rea-recherche/PLAN.md` mit allen Entscheidungen samt Begründung, Phasen, Aufbau, Etappen, Tests und „Nicht Teil“; `session-kontext.md` aktualisiert. Kein Code. **Hinweis:** Das Planwerkzeug von `iris-plugin-dev` ist für Iris gebaut (Arbeitsordner = Chat-Workspace, Klon von Forgejo). Hier wird direkt im Checkout gearbeitet; der Plan ist deshalb von Hand als `PLAN.md` geschrieben, mit einer Rubrik für Entscheidungen, die das Werkzeugformat nicht hat. **Nicht geprüft:** Alles an dem Plugin selbst; der Plan wartet auf „Plan passt“ vom Nutzer. **Offen:** Etappen 2 bis 6.
Author
Owner

PR #361 gemergt: feat(iris-rea-recherche): Gerüst, Projekt und Beweis-Speicher (Etappe 2) (#357)
http://docker:3000/iris/iris-plugins/pulls/361

Commits:

  • feat(iris-rea-recherche): Gerüst, Projekt und Beweis-Speicher (Etappe 2) (#357)

Etappe 2 von 6: Gerüst, Projekt und Beweis-Speicher (Version 0.1.0, nicht veröffentlicht).

Geändert: Neues Plugin-Verzeichnis iris-rea-recherche mit plugin.json (requires: iris-ghidra, nur Mac), build-irisplugin.sh, SKILL.md, rea_projekt.py und rea_speicher.py, 67 Tests; PLAN.md auf „aktiv“ und um die Etappen-Ergebnisse ergänzt.

  • rea_projekt.py: Ziel aufnehmen (schreibgeschützte Kopie, SHA-256, ab 512 MB Rückfrage mit Exit-Code 3), Modus Clean room (Standard) oder Deep mit vermerktem Verlauf, Phasenregeln, status, weiter, zurueck. Ändert sich die Kopie, führt kein schreibender Befehl Belege fort.
  • rea_speicher.py: Befunde, Hypothesen, offene Fragen als JSON; Befund nur mit gültiger Fundstelle (adresse, offset, funktion, datei), trägt die SHA-256 des Ziels; „verifiziert“ nur über einen bestandenen Nachbau, der den Befund abdeckt; eine Hypothese wird nur mit verifiziertem Befund bestätigt; seitenweise Listen; Markdown-Fassung.

Entscheidung beim Bauen (bitte prüfen): Das Kontextpaket ist ab dem ersten Befund jederzeit erlaubt, nicht erst in der Phase „kontext“, weil der Zweck das Sammeln von Kontext ist, auch ohne Nachbau. Im Plan nachgetragen.

Geprüft: 67 Tests grün; drei Regeln (Fundstelle, Verifikation, Prüfsumme) absichtlich ausgebaut: die Tests wurden rot. Paket gebaut und Inhalt kontrolliert. Durchlauf an einer echten Datei über die Kommandozeile (Aufnahme, Befund, Hypothese, Frage, Phase, Markdown, abgelehnte Bestätigung).

Nicht geprüft: Installation über die Mac-GUI und Aufruf aus Hermes; Verhalten bei Dateien über 512 MB an echten Abbildern (nur mit kleiner Schwelle getestet).

Offen: Etappen 3 bis 6 (Firmware entpacken mit unblob, Nachbau und Verifikation, Vault-Notiz und Systemprompt, Anleitung und Veröffentlichung).

PR #361 gemergt: feat(iris-rea-recherche): Gerüst, Projekt und Beweis-Speicher (Etappe 2) (#357) http://docker:3000/iris/iris-plugins/pulls/361 Commits: - feat(iris-rea-recherche): Gerüst, Projekt und Beweis-Speicher (Etappe 2) (#357) --- **Etappe 2 von 6: Gerüst, Projekt und Beweis-Speicher (Version 0.1.0, nicht veröffentlicht).** **Geändert:** Neues Plugin-Verzeichnis `iris-rea-recherche` mit `plugin.json` (`requires: iris-ghidra`, nur Mac), `build-irisplugin.sh`, `SKILL.md`, `rea_projekt.py` und `rea_speicher.py`, 67 Tests; `PLAN.md` auf „aktiv“ und um die Etappen-Ergebnisse ergänzt. - `rea_projekt.py`: Ziel aufnehmen (schreibgeschützte Kopie, SHA-256, ab 512 MB Rückfrage mit Exit-Code 3), Modus Clean room (Standard) oder Deep mit vermerktem Verlauf, Phasenregeln, `status`, `weiter`, `zurueck`. Ändert sich die Kopie, führt kein schreibender Befehl Belege fort. - `rea_speicher.py`: Befunde, Hypothesen, offene Fragen als JSON; Befund nur mit gültiger Fundstelle (`adresse`, `offset`, `funktion`, `datei`), trägt die SHA-256 des Ziels; „verifiziert“ nur über einen bestandenen Nachbau, der den Befund abdeckt; eine Hypothese wird nur mit verifiziertem Befund bestätigt; seitenweise Listen; Markdown-Fassung. **Entscheidung beim Bauen (bitte prüfen):** Das Kontextpaket ist ab dem ersten Befund jederzeit erlaubt, nicht erst in der Phase „kontext“, weil der Zweck das Sammeln von Kontext ist, auch ohne Nachbau. Im Plan nachgetragen. **Geprüft:** 67 Tests grün; drei Regeln (Fundstelle, Verifikation, Prüfsumme) absichtlich ausgebaut: die Tests wurden rot. Paket gebaut und Inhalt kontrolliert. Durchlauf an einer echten Datei über die Kommandozeile (Aufnahme, Befund, Hypothese, Frage, Phase, Markdown, abgelehnte Bestätigung). **Nicht geprüft:** Installation über die Mac-GUI und Aufruf aus Hermes; Verhalten bei Dateien über 512 MB an echten Abbildern (nur mit kleiner Schwelle getestet). **Offen:** Etappen 3 bis 6 (Firmware entpacken mit `unblob`, Nachbau und Verifikation, Vault-Notiz und Systemprompt, Anleitung und Veröffentlichung).
Author
Owner

PR #362 gemergt: feat(iris-rea-recherche): Firmware entpacken mit unblob, Hook und sasquatch-Ersatz (Etappe 3) (#357)
http://docker:3000/iris/iris-plugins/pulls/362

Commits:

  • feat(iris-rea-recherche): Firmware entpacken mit unblob, Hook und sasquatch-Ersatz (Etappe 3) (#357)

Etappe 3 von 6: Firmware entpacken (Version 0.1.0, nicht veröffentlicht).

Befund vorab: unblob hat keine Homebrew-Formel, aber macOS-Wheels (pip install unblob, 26.6.4). Von 11 externen Entpackern gab es 7 in Homebrew, zwei bringt pip mit; partclone (selten) fehlt. sasquatch baut auf macOS nicht (Linux-Header, sigtimedwait), unblob ruft SquashFS aber nur unter diesem Namen auf. Entscheidung (Variante A): ein Ersatz um das normale unsquashfs; ein Port (Variante C) bleibt eine mögliche spätere Etappe.

Geändert:

  • hooks/post_install.sh (Mac): installiert per Homebrew, was fehlt (p7zip e2fsprogs erofs-utils lziprecover lzop unar simg2img squashfs zstd lz4), und unblob 26.6.4 per pip in ~/.hermes/iris-rea-recherche/venv; zeigt jeden Schritt, idempotent, Exit-Code 1 mit Meldung bei Fehlern.
  • rea_firmware.py: doctor, entpacken (unblob statisch, Zeitlimit, Teile mit Art, Offset, Größe, SHA-256, Entpack-Fehlern, Entropie bei Unbekanntem in den Speicher), dateien (seitenweise, Symlinks werden nicht gefolgt).
  • bin/sasquatch und bin/sasquatch-v4be: Little-Endian-SquashFS an unsquashfs; Big-Endian und herstellereigene Varianten werden mit klarer Meldung abgelehnt.
  • rea_speicher.py/rea_projekt.py: Teile im Speicher (liste --art teile), entpacken ist eine Phasen-Aktion, Fundstelle datei: nur für Dateien im entpackten Ziel (ohne Symlink-Ausbruch), offset: nur innerhalb der Datei; ältere Speicher ohne Teile werden gelesen.
  • SKILL.md, plugin.json (Hook), Build-Skript (bin/), PLAN.md, session-kontext.md.

Geprüft: 107 Tests grün (einer übersprungen: der Fall ohne Homebrew). Der Hook lief für echt auf diesem Mac (Formeln installiert, venv angelegt) und beim zweiten Lauf idempotent; unblob --show-external-dependencies findet danach alles außer partclone. Ein echter unblob-Lauf an einem selbstgebauten Abbild (Rauschen, ZIP, tar.gz mit verschachteltem tar, SquashFS über den Ersatz) liefert die erwarteten Teile, Hashes stimmen mit den Bytebereichen überein, die Dateien aus dem SquashFS sind da. Drei Regeln (Prüfsumme beim Entpacken, Symlink-Ausbruch, Big-Endian-Ablehnung) absichtlich ausgebaut: Tests wurden rot. Paket gebaut, Inhalt kontrolliert.

Nicht geprüft: Hook auf einem frischen Mac ohne die Formeln; Installation über die Mac-GUI und Aufruf aus Hermes; unblob an echter Firmware und großen Abbildern (Dauer, Speicher); Big-Endian-SquashFS, herstellereigene Varianten und partclone werden nicht entpackt.

Grenzen: entpacken läuft synchron (Zeitlimit 3600 s); ob Hermes es als Hintergrundjob startet, hängt an Skill-Text und Job-System.

Offen: Etappen 4 bis 6 (Nachbau und Verifikation, Vault-Notiz und Systemprompt, Anleitung und Veröffentlichung).

PR #362 gemergt: feat(iris-rea-recherche): Firmware entpacken mit unblob, Hook und sasquatch-Ersatz (Etappe 3) (#357) http://docker:3000/iris/iris-plugins/pulls/362 Commits: - feat(iris-rea-recherche): Firmware entpacken mit unblob, Hook und sasquatch-Ersatz (Etappe 3) (#357) --- **Etappe 3 von 6: Firmware entpacken (Version 0.1.0, nicht veröffentlicht).** **Befund vorab:** `unblob` hat keine Homebrew-Formel, aber macOS-Wheels (`pip install unblob`, 26.6.4). Von 11 externen Entpackern gab es 7 in Homebrew, zwei bringt pip mit; `partclone` (selten) fehlt. **`sasquatch` baut auf macOS nicht** (Linux-Header, `sigtimedwait`), `unblob` ruft SquashFS aber nur unter diesem Namen auf. Entscheidung (Variante A): ein Ersatz um das normale `unsquashfs`; ein Port (Variante C) bleibt eine mögliche spätere Etappe. **Geändert:** - `hooks/post_install.sh` (Mac): installiert per Homebrew, was fehlt (`p7zip e2fsprogs erofs-utils lziprecover lzop unar simg2img squashfs zstd lz4`), und `unblob` 26.6.4 per pip in `~/.hermes/iris-rea-recherche/venv`; zeigt jeden Schritt, idempotent, Exit-Code 1 mit Meldung bei Fehlern. - `rea_firmware.py`: `doctor`, `entpacken` (unblob statisch, Zeitlimit, Teile mit Art, Offset, Größe, SHA-256, Entpack-Fehlern, Entropie bei Unbekanntem in den Speicher), `dateien` (seitenweise, Symlinks werden nicht gefolgt). - `bin/sasquatch` und `bin/sasquatch-v4be`: Little-Endian-SquashFS an `unsquashfs`; Big-Endian und herstellereigene Varianten werden mit klarer Meldung abgelehnt. - `rea_speicher.py`/`rea_projekt.py`: Teile im Speicher (`liste --art teile`), `entpacken` ist eine Phasen-Aktion, Fundstelle `datei:` nur für Dateien im entpackten Ziel (ohne Symlink-Ausbruch), `offset:` nur innerhalb der Datei; ältere Speicher ohne Teile werden gelesen. - `SKILL.md`, `plugin.json` (Hook), Build-Skript (`bin/`), `PLAN.md`, `session-kontext.md`. **Geprüft:** 107 Tests grün (einer übersprungen: der Fall ohne Homebrew). Der Hook lief für echt auf diesem Mac (Formeln installiert, venv angelegt) und beim zweiten Lauf idempotent; `unblob --show-external-dependencies` findet danach alles außer `partclone`. Ein echter `unblob`-Lauf an einem selbstgebauten Abbild (Rauschen, ZIP, tar.gz mit verschachteltem tar, SquashFS über den Ersatz) liefert die erwarteten Teile, Hashes stimmen mit den Bytebereichen überein, die Dateien aus dem SquashFS sind da. Drei Regeln (Prüfsumme beim Entpacken, Symlink-Ausbruch, Big-Endian-Ablehnung) absichtlich ausgebaut: Tests wurden rot. Paket gebaut, Inhalt kontrolliert. **Nicht geprüft:** Hook auf einem frischen Mac ohne die Formeln; Installation über die Mac-GUI und Aufruf aus Hermes; `unblob` an echter Firmware und großen Abbildern (Dauer, Speicher); Big-Endian-SquashFS, herstellereigene Varianten und `partclone` werden nicht entpackt. **Grenzen:** `entpacken` läuft synchron (Zeitlimit 3600 s); ob Hermes es als Hintergrundjob startet, hängt an Skill-Text und Job-System. **Offen:** Etappen 4 bis 6 (Nachbau und Verifikation, Vault-Notiz und Systemprompt, Anleitung und Veröffentlichung).
Author
Owner

PR #363 gemergt: feat(iris-rea-recherche): Nachbau und Verifikation mit Testvektoren (Etappe 4) (#357)
http://docker:3000/iris/iris-plugins/pulls/363

Commits:

  • feat(iris-rea-recherche): Nachbau und Verifikation mit Testvektoren (Etappe 4) (#357)

Etappe 4 von 6: Nachbau und Verifikation (Version 0.1.0, nicht veröffentlicht).

Geändert:

  • rea_nachbau.py (neu): neu (Ordner nachbauten/N1-… mit beschreibung.md aus den Befunden, Gerüst nachbau.py, testvektoren.json, struktur.json), beschreibung, testvektor, struktur, pruefen, status. Der Nachbau läuft in einem eigenen Prozess (python3 -I, Zeitlimit), nie das Original.
  • Verifikation: Ergebnis bestanden gilt ab mindestens 2 Testvektoren, die alle stimmen; ein falscher Vektor oder Code, der nicht läuft, ist durchgefallen; mit weniger Vektoren bleibt der Struktur-Abgleich (Funktionen, Konstanten, Aufrufreihenfolge aus dem Syntaxbaum) mit dem Ergebnis struktur = „Struktur plausibel, nicht verifiziert“.
  • Testvektoren brauchen eine Herkunft im Ziel (Fundstelle oder Befund des Nachbaus), sonst werden sie abgelehnt.
  • Prüfsumme: Das Ergebnis hängt an nachbau.py, testvektoren.json und struktur.json; ändert sich eine Datei, lässt sich der Befund nicht mehr verifizieren (befund verifizieren prüft das), status zeigt „veraendert“.
  • Clean room: pruefen lehnt Code mit Ghidra-typischen Namen ab (FUN_…, param_1, local_c, iVar1, undefined8 …); im Modus Deep ist das erlaubt.
  • rea_projekt.py/rea_speicher.py: pruef_hash, Umlaute in Ordnernamen werden ausgeschrieben (Prüfsumme → pruefsumme); SKILL.md, PLAN.md, session-kontext.md.

Entscheidungen beim Bauen (bitte prüfen): Mindestens 2 Testvektoren für bestanden (ein einzelner Vektor ist zu schwache Evidenz); ein einziger falscher Vektor macht das Ergebnis zu durchgefallen, auch wenn der Struktur-Abgleich passt; stimmt der Struktur-Abgleich nicht, aber alle Vektoren, bleibt es bestanden mit Hinweis.

Geprüft: 158 Tests grün (einer übersprungen: der Fall ohne Homebrew). Fünf Regeln einzeln ausgebaut (Mindestzahl, Clean-room-Prüfung, Prüfsumme, Herkunft der Testvektoren, falscher Vektor): die Tests wurden jeweils rot. Der Ablauf Aufnahme → Befund → Nachbau → Testvektoren → Prüfung → Verifikation wurde von Hand über die Kommandozeile durchgespielt; Paket gebaut, Inhalt kontrolliert.

Nicht geprüft: Ob das Modell Testvektoren wirklich aus dem Ziel zieht (der Skill-Text verlangt es, das Skript prüft nur die Herkunftsangabe); ob die Clean-room-Stichprobe genügt (sie erkennt nur Ghidra-typische Namen, kein Abschreiben mit umbenannten Variablen); Installation über die Mac-GUI und Aufruf aus Hermes.

Offen: Etappen 5 und 6 (Kontextpaket, Vault-Notiz, Systemprompt; Anleitung, Store-Material, Veröffentlichung).

PR #363 gemergt: feat(iris-rea-recherche): Nachbau und Verifikation mit Testvektoren (Etappe 4) (#357) http://docker:3000/iris/iris-plugins/pulls/363 Commits: - feat(iris-rea-recherche): Nachbau und Verifikation mit Testvektoren (Etappe 4) (#357) --- **Etappe 4 von 6: Nachbau und Verifikation (Version 0.1.0, nicht veröffentlicht).** **Geändert:** - `rea_nachbau.py` (neu): `neu` (Ordner `nachbauten/N1-…` mit `beschreibung.md` aus den Befunden, Gerüst `nachbau.py`, `testvektoren.json`, `struktur.json`), `beschreibung`, `testvektor`, `struktur`, `pruefen`, `status`. Der Nachbau läuft in einem eigenen Prozess (`python3 -I`, Zeitlimit), nie das Original. - **Verifikation:** Ergebnis `bestanden` gilt ab mindestens 2 Testvektoren, die alle stimmen; ein falscher Vektor oder Code, der nicht läuft, ist `durchgefallen`; mit weniger Vektoren bleibt der Struktur-Abgleich (Funktionen, Konstanten, Aufrufreihenfolge aus dem Syntaxbaum) mit dem Ergebnis `struktur` = „Struktur plausibel, nicht verifiziert“. - **Testvektoren brauchen eine Herkunft** im Ziel (Fundstelle oder Befund des Nachbaus), sonst werden sie abgelehnt. - **Prüfsumme:** Das Ergebnis hängt an `nachbau.py`, `testvektoren.json` und `struktur.json`; ändert sich eine Datei, lässt sich der Befund nicht mehr verifizieren (`befund verifizieren` prüft das), `status` zeigt „veraendert“. - **Clean room:** `pruefen` lehnt Code mit Ghidra-typischen Namen ab (`FUN_…`, `param_1`, `local_c`, `iVar1`, `undefined8` …); im Modus Deep ist das erlaubt. - `rea_projekt.py`/`rea_speicher.py`: `pruef_hash`, Umlaute in Ordnernamen werden ausgeschrieben (Prüfsumme → pruefsumme); `SKILL.md`, `PLAN.md`, `session-kontext.md`. **Entscheidungen beim Bauen (bitte prüfen):** Mindestens **2** Testvektoren für `bestanden` (ein einzelner Vektor ist zu schwache Evidenz); ein einziger falscher Vektor macht das Ergebnis zu `durchgefallen`, auch wenn der Struktur-Abgleich passt; stimmt der Struktur-Abgleich nicht, aber alle Vektoren, bleibt es `bestanden` mit Hinweis. **Geprüft:** 158 Tests grün (einer übersprungen: der Fall ohne Homebrew). Fünf Regeln einzeln ausgebaut (Mindestzahl, Clean-room-Prüfung, Prüfsumme, Herkunft der Testvektoren, falscher Vektor): die Tests wurden jeweils rot. Der Ablauf Aufnahme → Befund → Nachbau → Testvektoren → Prüfung → Verifikation wurde von Hand über die Kommandozeile durchgespielt; Paket gebaut, Inhalt kontrolliert. **Nicht geprüft:** Ob das Modell Testvektoren wirklich aus dem Ziel zieht (der Skill-Text verlangt es, das Skript prüft nur die Herkunftsangabe); ob die Clean-room-Stichprobe genügt (sie erkennt nur Ghidra-typische Namen, kein Abschreiben mit umbenannten Variablen); Installation über die Mac-GUI und Aufruf aus Hermes. **Offen:** Etappen 5 und 6 (Kontextpaket, Vault-Notiz, Systemprompt; Anleitung, Store-Material, Veröffentlichung).
Author
Owner

PR #364 gemergt: feat(iris-rea-recherche): Kontextpaket, Vault-Notiz, Systemprompt und Skill-Text (Etappe 5) (#357)
http://docker:3000/iris/iris-plugins/pulls/364

Commits:

  • feat(iris-rea-recherche): Kontextpaket, Vault-Notiz, Systemprompt und Skill-Text (Etappe 5) (#357)

Etappe 5 von 6: Kontextpaket, Systemprompt und endgültiger Skill-Text (Version 0.1.0, nicht veröffentlicht).

Geändert:

  • rea_kontext.py (neu): kontext schreibt <Projekt>/kontext.md aus dem Beweis-Speicher, deterministisch und mit fester Obergrenze von 12000 Zeichen (etwa 3 bis 4 Seiten). Inhalt nach Wichtigkeit: Ziel mit SHA-256, Modus mit seiner Regel (Pseudocode übernehmen oder nicht), Stand, verifizierte Befunde, nicht verifizierte Befunde (gekennzeichnet), Hypothesen, offene Fragen, Nachbauten (auch „seit der Prüfung geändert“), entpackte Teile mit Entpack-Fehlern, „So geht es weiter“ mit fertigen Aufrufen. Überlänge wird stufenweise gekürzt (zuerst die Texte der nicht verifizierten Befunde, zuletzt die der verifizierten), gekürzte Einträge stehen mit ihren IDs im Text. Ist die Kopie des Ziels verändert, steht das ganz oben.
  • Vault: --vault ORDNER legt die Notiz Recherche <Name>.md mit Frontmatter nach Vault-Regel ab (description höchstens 120 Zeichen). Der Ort wird gemerkt, spätere Aufrufe aktualisieren dieselbe Notiz; eine fremde Notiz gleichen Namens wird nie überschrieben; der Ordner muss es geben, kein .., kein Symlink hinaus; schlägt die Ablage fehl, ist das lokale Paket trotzdem geschrieben. Das Skript rät den Ort nicht: Der Agent bestimmt ihn nach der Ablageregel des Vaults und klärt ihn mit dem Nutzer.
  • system_prompt.md „Recherche“ mit dem Verwendungssatz aus dem Plan, plugin.json (system_prompt*), SKILL.md ganz neu und kompakt (Regeln, Ablauf in sechs Schritten, Grenzen), PLAN.md, session-kontext.md.

Entscheidung beim Bauen (bitte prüfen): Das Kontextpaket ist ab dem ersten Befund erlaubt (so schon im Plan), und die Obergrenze von 12000 Zeichen ist jetzt festgelegt.

Geprüft: 192 Tests grün (einer übersprungen: der Fall ohne Homebrew). Fünf Regeln einzeln ausgebaut (Obergrenze, fremde Notiz, Warnung bei veränderter Kopie, Symlink-Ausbruch aus dem Vault, Verifizierte zuerst): die Tests wurden jeweils rot. Von Hand: ein Projekt mit Befunden, Hypothese und Frage bis zum Kontextpaket und in einen Vault-Ordner. Paket gebaut, Inhalt kontrolliert; publish-plugins.sh --dry-run besteht (mit temporärer .include, danach entfernt).

Nicht geprüft: Aufruf aus Hermes (ob der Auto-Modus „Recherche“ gegen „Ghidra“ richtig wählt, ob der Skill-Text im echten Gespräch trägt); ob eine neue Session aus dem Kontextpaket tatsächlich nicht bei Null anfängt (das zeigt erst ein echter Durchlauf); Installation über die Mac-GUI.

Offen: Etappe 6 (Anleitung, Store-Material, Veröffentlichung nach deinem Wort).

PR #364 gemergt: feat(iris-rea-recherche): Kontextpaket, Vault-Notiz, Systemprompt und Skill-Text (Etappe 5) (#357) http://docker:3000/iris/iris-plugins/pulls/364 Commits: - feat(iris-rea-recherche): Kontextpaket, Vault-Notiz, Systemprompt und Skill-Text (Etappe 5) (#357) --- **Etappe 5 von 6: Kontextpaket, Systemprompt und endgültiger Skill-Text (Version 0.1.0, nicht veröffentlicht).** **Geändert:** - `rea_kontext.py` (neu): `kontext` schreibt `<Projekt>/kontext.md` aus dem Beweis-Speicher, deterministisch und mit fester Obergrenze von 12000 Zeichen (etwa 3 bis 4 Seiten). Inhalt nach Wichtigkeit: Ziel mit SHA-256, Modus mit seiner Regel (Pseudocode übernehmen oder nicht), Stand, verifizierte Befunde, nicht verifizierte Befunde (gekennzeichnet), Hypothesen, offene Fragen, Nachbauten (auch „seit der Prüfung geändert“), entpackte Teile mit Entpack-Fehlern, „So geht es weiter“ mit fertigen Aufrufen. Überlänge wird stufenweise gekürzt (zuerst die Texte der nicht verifizierten Befunde, zuletzt die der verifizierten), gekürzte Einträge stehen mit ihren IDs im Text. Ist die Kopie des Ziels verändert, steht das ganz oben. - **Vault:** `--vault ORDNER` legt die Notiz `Recherche <Name>.md` mit Frontmatter nach Vault-Regel ab (`description` höchstens 120 Zeichen). Der Ort wird gemerkt, spätere Aufrufe aktualisieren dieselbe Notiz; eine fremde Notiz gleichen Namens wird nie überschrieben; der Ordner muss es geben, kein `..`, kein Symlink hinaus; schlägt die Ablage fehl, ist das lokale Paket trotzdem geschrieben. Das Skript rät den Ort nicht: Der Agent bestimmt ihn nach der Ablageregel des Vaults und klärt ihn mit dem Nutzer. - `system_prompt.md` „Recherche“ mit dem Verwendungssatz aus dem Plan, `plugin.json` (`system_prompt*`), `SKILL.md` ganz neu und kompakt (Regeln, Ablauf in sechs Schritten, Grenzen), `PLAN.md`, `session-kontext.md`. **Entscheidung beim Bauen (bitte prüfen):** Das Kontextpaket ist ab dem ersten Befund erlaubt (so schon im Plan), und die Obergrenze von 12000 Zeichen ist jetzt festgelegt. **Geprüft:** 192 Tests grün (einer übersprungen: der Fall ohne Homebrew). Fünf Regeln einzeln ausgebaut (Obergrenze, fremde Notiz, Warnung bei veränderter Kopie, Symlink-Ausbruch aus dem Vault, Verifizierte zuerst): die Tests wurden jeweils rot. Von Hand: ein Projekt mit Befunden, Hypothese und Frage bis zum Kontextpaket und in einen Vault-Ordner. Paket gebaut, Inhalt kontrolliert; `publish-plugins.sh --dry-run` besteht (mit temporärer `.include`, danach entfernt). **Nicht geprüft:** Aufruf aus Hermes (ob der Auto-Modus „Recherche“ gegen „Ghidra“ richtig wählt, ob der Skill-Text im echten Gespräch trägt); ob eine neue Session aus dem Kontextpaket tatsächlich nicht bei Null anfängt (das zeigt erst ein echter Durchlauf); Installation über die Mac-GUI. **Offen:** Etappe 6 (Anleitung, Store-Material, Veröffentlichung nach deinem Wort).
Author
Owner

PR #365 gemergt: feat(iris-rea-recherche): Anleitung, Store-Material und Doku-Tests (Etappe 6) (#357)
http://docker:3000/iris/iris-plugins/pulls/365

Commits:

  • feat(iris-rea-recherche): Anleitung, Store-Material und Doku-Tests (Etappe 6) (#357)

Etappe 6 von 6: Anleitung, Store-Material und Prüfung des Pakets (Version 0.1.0, nicht veröffentlicht).

Geändert:

  • docs/erste-schritte.md (eingetragen unter user_docs): Einrichten, Benutzung im Chat, Ablauf in sechs Phasen, Clean room oder Deep, was „verifiziert“ heißt, das Kontextpaket, Grenzen. Nur Aussagen, die der Code belegt.
  • store/: icon.svg, description.md (173 Wörter), changelog.md; plugin.json mit Änderungstext. Alles mit erfundenen Beispielen, ohne Pfade, Namen oder Dateien aus dem privaten Bestand.
  • tests/test_rea_doku.py: Anleitung, Manifest und Store gegen den Code (Zahlen und Konstanten, jeder Unterbefehl kommt in der Anleitung vor, Homebrew-Liste wie im Hook, Änderungstext gleich Changelog-Abschnitt, Datenschutz-Scan des Registry-Werkzeugs, Grenzen und Form des Store-Materials). PLAN.md, session-kontext.md.

Geprüft: 211 Tests grün (einer übersprungen: der Fall ohne Homebrew). Der neue Doku-Test fand beim ersten Lauf zwei Befehle (beschreibung, testvektor), die in der Anleitung fehlten (ergänzt). Drei Regeln ausgebaut (Konstante, privater Pfad in der Anleitung, abweichender Änderungstext): die Tests wurden rot. publish-plugins.sh --dry-run mit Store und Anleitung: „1 würden veröffentlicht, 0 fehlgeschlagen“ (mit temporärer .include, danach entfernt; der Datenschutz-Scan läuft darin). Das gebaute Paket in einen Temp-Ordner entpackt und damit einen Durchlauf gemacht: Aufnahme, doctor, Entpacken mit echtem unblob (ZIP, tar.gz mit tar darin, SquashFS über den Ersatz aus dem Paket, 85,5 % als bekanntes Format erkannt), Befund mit datei:-Fundstelle, Kontextpaket in einen Vault-Ordner.

Nicht geprüft: Installation über die Mac-GUI und Aufruf aus Hermes (Auto-Auswahl „Recherche“ gegen „Ghidra“, Skill-Text im echten Gespräch); Hook auf einem frischen Mac ohne die Formeln; unblob an echter, großer Firmware; ob das Modell Testvektoren wirklich aus dem Ziel zieht; ob eine neue Session aus dem Kontextpaket tatsächlich nicht bei Null anfängt.

Offen: Veröffentlichung (nur auf das Wort „Veröffentliche“). Folgeaufgaben: Linux-Parität, Port von sasquatch (Big-Endian-SquashFS), optional ein Hinweis in iris-plugin-dev.

PR #365 gemergt: feat(iris-rea-recherche): Anleitung, Store-Material und Doku-Tests (Etappe 6) (#357) http://docker:3000/iris/iris-plugins/pulls/365 Commits: - feat(iris-rea-recherche): Anleitung, Store-Material und Doku-Tests (Etappe 6) (#357) --- **Etappe 6 von 6: Anleitung, Store-Material und Prüfung des Pakets (Version 0.1.0, nicht veröffentlicht).** **Geändert:** - `docs/erste-schritte.md` (eingetragen unter `user_docs`): Einrichten, Benutzung im Chat, Ablauf in sechs Phasen, Clean room oder Deep, was „verifiziert“ heißt, das Kontextpaket, Grenzen. Nur Aussagen, die der Code belegt. - `store/`: `icon.svg`, `description.md` (173 Wörter), `changelog.md`; `plugin.json` mit Änderungstext. Alles mit erfundenen Beispielen, ohne Pfade, Namen oder Dateien aus dem privaten Bestand. - `tests/test_rea_doku.py`: Anleitung, Manifest und Store gegen den Code (Zahlen und Konstanten, jeder Unterbefehl kommt in der Anleitung vor, Homebrew-Liste wie im Hook, Änderungstext gleich Changelog-Abschnitt, Datenschutz-Scan des Registry-Werkzeugs, Grenzen und Form des Store-Materials). `PLAN.md`, `session-kontext.md`. **Geprüft:** 211 Tests grün (einer übersprungen: der Fall ohne Homebrew). Der neue Doku-Test fand beim ersten Lauf zwei Befehle (`beschreibung`, `testvektor`), die in der Anleitung fehlten (ergänzt). Drei Regeln ausgebaut (Konstante, privater Pfad in der Anleitung, abweichender Änderungstext): die Tests wurden rot. `publish-plugins.sh --dry-run` mit Store und Anleitung: „1 würden veröffentlicht, 0 fehlgeschlagen“ (mit temporärer `.include`, danach entfernt; der Datenschutz-Scan läuft darin). **Das gebaute Paket** in einen Temp-Ordner entpackt und damit einen Durchlauf gemacht: Aufnahme, `doctor`, Entpacken mit echtem `unblob` (ZIP, tar.gz mit tar darin, SquashFS über den Ersatz aus dem Paket, 85,5 % als bekanntes Format erkannt), Befund mit `datei:`-Fundstelle, Kontextpaket in einen Vault-Ordner. **Nicht geprüft:** Installation über die Mac-GUI und Aufruf aus Hermes (Auto-Auswahl „Recherche“ gegen „Ghidra“, Skill-Text im echten Gespräch); Hook auf einem frischen Mac ohne die Formeln; `unblob` an echter, großer Firmware; ob das Modell Testvektoren wirklich aus dem Ziel zieht; ob eine neue Session aus dem Kontextpaket tatsächlich nicht bei Null anfängt. **Offen:** Veröffentlichung (nur auf das Wort „Veröffentliche“). Folgeaufgaben: Linux-Parität, Port von `sasquatch` (Big-Endian-SquashFS), optional ein Hinweis in `iris-plugin-dev`.
Author
Owner

PR #366 gemergt: chore(iris-rea-recherche): Freigabe für die Registry (.include), 0.1.0 veröffentlicht (#357)
http://docker:3000/iris/iris-plugins/pulls/366

Commits:

  • chore(iris-rea-recherche): Freigabe für die Registry (.include), 0.1.0 veröffentlicht (#357)

iris-rea-recherche 0.1.0 ist veröffentlicht.

Draußen (nach git pull im Registry-Repo geprüft): Paket iris-rea-recherche-0.1.0.irisplugin (39,6 KB) mit Kategorie development, nur Mac, requires: iris-ghidra (steht ebenfalls in der Registry, die Abhängigkeit ist auflösbar), Store-Material (Icon, Langtext, Changelog) und Anleitung „Erste Schritte“. Der Datenschutz-Scan des Veröffentlichungsskripts hat nichts gefunden (sonst wäre das Veröffentlichen abgelehnt worden).

Was Nutzer bekommen: Recherche an Firmware und Programmen in sechs Phasen: Aufnahme mit schreibgeschützter Kopie und SHA-256, Entpacken mit unblob, Befunde nur mit Fundstelle, Nachbau einzelner Aspekte in Python mit Prüfung gegen Testvektoren (verifiziert erst nach bestandenem Nachbau), Kontextpaket für eine neue Session (höchstens 12000 Zeichen, auf Wunsch als Vault-Notiz). Beim Installieren holt der Hook per Homebrew die Entpacker und richtet unblob in einem eigenen venv ein.

Nicht geprüft: Installation über die Mac-GUI und Aufruf aus Hermes (Auto-Auswahl „Recherche“ gegen „Ghidra“, Skill-Text im echten Gespräch); der Hook auf einem frischen Mac ohne die Homebrew-Formeln; unblob an echter, großer Firmware; ob das Modell Testvektoren wirklich aus dem Ziel zieht; ob eine neue Session aus dem Kontextpaket tatsächlich nicht bei Null anfängt.

Grenzen: Nur Mac. Big-Endian-SquashFS, herstellereigene SquashFS-Varianten und Clonezilla-Abbilder (partclone) werden nicht entpackt.

Offen: Ein echter Durchlauf an echter Firmware nach der Installation. Folgeaufgaben: Linux-Parität (iris-ghidra und unblob laufen dort noch nicht), Port von sasquatch für Big-Endian-SquashFS, optional ein Hinweis in iris-plugin-dev auf dieses Plugin.

PR #366 gemergt: chore(iris-rea-recherche): Freigabe für die Registry (.include), 0.1.0 veröffentlicht (#357) http://docker:3000/iris/iris-plugins/pulls/366 Commits: - chore(iris-rea-recherche): Freigabe für die Registry (.include), 0.1.0 veröffentlicht (#357) --- **`iris-rea-recherche` 0.1.0 ist veröffentlicht.** **Draußen (nach `git pull` im Registry-Repo geprüft):** Paket `iris-rea-recherche-0.1.0.irisplugin` (39,6 KB) mit Kategorie `development`, nur Mac, `requires: iris-ghidra` (steht ebenfalls in der Registry, die Abhängigkeit ist auflösbar), Store-Material (Icon, Langtext, Changelog) und Anleitung „Erste Schritte“. Der Datenschutz-Scan des Veröffentlichungsskripts hat nichts gefunden (sonst wäre das Veröffentlichen abgelehnt worden). **Was Nutzer bekommen:** Recherche an Firmware und Programmen in sechs Phasen: Aufnahme mit schreibgeschützter Kopie und SHA-256, Entpacken mit `unblob`, Befunde nur mit Fundstelle, Nachbau einzelner Aspekte in Python mit Prüfung gegen Testvektoren (verifiziert erst nach bestandenem Nachbau), Kontextpaket für eine neue Session (höchstens 12000 Zeichen, auf Wunsch als Vault-Notiz). Beim Installieren holt der Hook per Homebrew die Entpacker und richtet `unblob` in einem eigenen venv ein. **Nicht geprüft:** Installation über die Mac-GUI und Aufruf aus Hermes (Auto-Auswahl „Recherche“ gegen „Ghidra“, Skill-Text im echten Gespräch); der Hook auf einem frischen Mac ohne die Homebrew-Formeln; `unblob` an echter, großer Firmware; ob das Modell Testvektoren wirklich aus dem Ziel zieht; ob eine neue Session aus dem Kontextpaket tatsächlich nicht bei Null anfängt. **Grenzen:** Nur Mac. Big-Endian-SquashFS, herstellereigene SquashFS-Varianten und Clonezilla-Abbilder (`partclone`) werden nicht entpackt. **Offen:** Ein echter Durchlauf an echter Firmware nach der Installation. Folgeaufgaben: Linux-Parität (`iris-ghidra` und `unblob` laufen dort noch nicht), Port von `sasquatch` für Big-Endian-SquashFS, optional ein Hinweis in `iris-plugin-dev` auf dieses Plugin.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/iris-plugins#357
No description provided.