Files view: change details with before/after images (v2.4.0)
- the timeline's Δ glyph became a **Details** button, and it now appears on Update rows too (not just card-side changes); EN "Changed (card)" -> "Changed on card", RU "Изменено (картой)" -> "Изменено картой" - the details modal shows the affected unit — the whole file, or the single record that changed — **before and after** the change as hex views (16 bytes per row, ASCII column, never-observed bytes as `--`), with the bytes that changed and the bytes the operation *first observed* highlighted in two different colours, plus the changed/new byte counts and the APDU reference; the old before/after byte table is gone - `GET /api/sessions/<id>/files/image?key=…&change=…` returns those two views (segments with offsets) plus the change's metadata; the images are reconstructed from the current image by undoing the later changes (`FileTracker.change_images`), so nothing is duplicated per event — every value change is an event, hence the values are exact (a byte only first observed later can appear as known in both views) - tracker: change events carry `observed_ranges` (bytes that were unknown before the operation) next to `ranges`; an update that only observes new bytes now records an event (so it can be inspected); record-file ranges are in-record byte offsets (the record number stays in its own field), which the previous "record number as position" could not express for a hex highlight - tests: change-images reconstruction (before/after per event, later changes undone, records isolated, observation-only events, unknown gaps), the image endpoint (200/404/400), and Node tests for the hex-image helper (highlight classes, unknown gaps, ASCII, row limit) and the modal rendering - v2.4.0; SW cache simtrace-analyser-v65
This commit is contained in:
1 parent
87b6811adf
commit
cad3999307
12 files changed
+617
-120
No files matched your search
+15
-3
@@ -196,9 +196,21 @@ Application Layer* — два отдельных поля выбора, имен
|
||||
В боковой панели вкладки «Трассировка» появился выбор вида (*Map* / *Stats* /
|
||||
**Files** — выпадающий список, три подписи-вкладки уже не помещались). Вид
|
||||
Files — это таймлайн файловых операций по всей трассе: строки **Read**,
|
||||
**Update** и **Changed (card)** показывают те же имена файлов, что и вид Map,
|
||||
а щелчок по строке переходит к APDU в трассе. У строки *Changed (card)* есть
|
||||
кнопка Δ, открывающая изменённые диапазоны с прежними и новыми байтами.
|
||||
**Update** и **Changed on card** показывают те же имена файлов, что и вид Map,
|
||||
а щелчок по строке переходит к APDU в трассе. У строк с записанным изменением
|
||||
(изменение со стороны карты либо запись, изменившая или впервые показавшая
|
||||
байты) есть кнопка **Details**: окно показывает затронутую единицу — файл
|
||||
целиком или изменившуюся запись — **до и после** изменения в виде hex-вида
|
||||
(16 байт в строке со столбцом ASCII, никогда не наблюдавшиеся байты — `--`),
|
||||
причём изменённые байты подсвечены одним цветом, а впервые наблюдаемые —
|
||||
другим; ниже — счётчики изменённых/новых байт и ссылка на APDU.
|
||||
|
||||
Изображения отдаёт `GET /api/sessions/<id>/files/image?key=…&change=…`; они
|
||||
восстанавливаются из текущего образа отменой более поздних изменений
|
||||
(`filetrack.FileTracker.change_images`) — поэтому ничего не дублируется по
|
||||
событиям. Каждое изменение значения записывается, так что значения точны;
|
||||
байт, который был лишь *впервые показан* после выбранного изменения, может
|
||||
отображаться известным в обоих видах.
|
||||
|
||||
Данные даёт `simtrace_analyser/filetrack.py` (`GET /api/sessions/<id>/files`) —
|
||||
однопроходный анализатор сессии, который ведёт по ключу (DF, FID) и **через
|
||||
|
||||
Reference in new issue
Block a user