fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
Layout:
- src/ .NET 10 x64 reference: MxNativeCodec, MxNativeClient,
MxAsbClient, probes, tests, harnesses. Executable spec.
- design/ Architectural plan for the Rust port (M0–M6), error
model, protocol invariants, risks (R1–R16), adversarial
review log (review.md).
- rust/ Rust workspace. M0 skeleton + M1 codec parity.
mxaccess-codec: 215 unit tests + 2 cross-implementation
parity tests (byte-identical against .NET reference).
Other crates are M0 stubs awaiting M2+.
- captures/ Frida + netsh + pcap evidence per CLAUDE.md
("captures are evidence, not throwaway logs").
- analysis/ Decompiled C# (frida/proxy/decompiled-*),
Ghidra exports for native DLLs (`exports/` only —
working state at `projects/` and AVEVA's input
binaries at `input/` are gitignored).
- docs/ Reverse-engineering reference docs.
- tools/ Setup-LiveProbeEnv.ps1 (Infisical credential fetcher),
Compute-Crc.ps1 (.NET parity helper).
- .github/workflows/ Rust CI: fmt + build + test + clippy on Windows.
- LICENSE MIT (Joseph Doherty, 2026).
Verified:
- cargo test --workspace → 217 passed (215 unit + 2 .NET parity), 0 failed
- cargo clippy --workspace -- -D warnings → clean
- cargo fmt --all -- --check → clean
- cargo publish --dry-run -p mxaccess-codec → packages cleanly
Excluded from history (see .gitignore):
- **/bin, **/obj, **/target — build artifacts
- analysis/ghidra/projects/ — Ghidra working state (regenerable)
- analysis/ghidra/input/ — AVEVA proprietary DLLs (vendor IP)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.4 KiB
7.4 KiB
| 1 | write_a | write_value_a | write_b | write_value_b | direction | record_type | record_size | ordinal | status | frame_a | frame_b | time_a | time_b | signature16_a | signature16_b | bytes_differ | diff_offsets | byte_pairs | i32_diffs | ascii_a | ascii_b |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 1 | 104 | 2 | 105 | a_to_b | control | 12 | 0 | different | 4315 | 4521 | 0.069395065 | 0.174252987 | ff ff ff ff 41 38 0b 00 00 00 00 00 | ff ff ff ff 4f 38 0b 00 00 00 00 00 | 1 | 4 | 4:41->4f | 4:735297->735311 | ....A8...... | ....O8...... |
| 3 | 1 | 104 | 2 | 105 | a_to_b | control | 12 | 1 | different | 4317 | 4547 | 0.069546223 | 0.263551235 | ff ff ff ff 42 38 0b 00 00 00 00 00 | ff ff ff ff 50 38 0b 00 00 00 00 00 | 1 | 4 | 4:42->50 | 4:735298->735312 | ....B8...... | ....P8...... |
| 4 | 1 | 104 | 2 | 105 | a_to_b | control | 12 | 2 | different | 4327 | 4559 | 0.071476698 | 0.265630722 | ff ff ff ff 43 38 0b 00 00 00 00 00 | ff ff ff ff 51 38 0b 00 00 00 00 00 | 1 | 4 | 4:43->51 | 4:735299->735313 | ....C8...... | ....Q8...... |
| 5 | 1 | 104 | 2 | 105 | a_to_b | control | 12 | 3 | different | 4340 | 4571 | 0.172099590 | 0.277673721 | ff ff ff ff 44 38 0b 00 00 00 00 00 | ff ff ff ff 52 38 0b 00 00 00 00 00 | 1 | 4 | 4:44->52 | 4:735300->735314 | ....D8...... | ....R8...... |
| 6 | 1 | 104 | a_to_b | control | 12 | 4 | missing_b | 4351 | 0.260247707 | fe ff ff ff d8 4a 01 00 c7 4a 01 00 | .....J...J.. | ||||||||||
| 7 | 1 | 104 | a_to_b | control | 12 | 5 | missing_b | 4367 | 0.275054216 | ff ff ff ff 45 38 0b 00 00 00 00 00 | ....E8...... | ||||||||||
| 8 | 1 | 104 | 2 | 105 | a_to_b | control_announce | 12 | 0 | different | 4293 | 4511 | 0.067553520 | 0.172880173 | 1a 00 00 00 e2 62 0b 00 00 00 00 00 | 1a 00 00 00 f2 62 0b 00 00 00 00 00 | 1 | 4 | 4:e2->f2 | 4:746210->746226 | .....b...... | .....b...... |
| 9 | 1 | 104 | 2 | 105 | a_to_b | control_announce | 12 | 1 | different | 4297 | 4531 | 0.067930222 | 0.261359215 | 22 00 00 00 e3 62 0b 00 00 00 00 00 | 22 00 00 00 f3 62 0b 00 00 00 00 00 | 1 | 4 | 4:e3->f3 | 4:746211->746227 | "....b...... | "....b...... |
| 10 | 1 | 104 | 2 | 105 | a_to_b | control_announce | 12 | 2 | different | 4301 | 4535 | 0.068131447 | 0.261646271 | 43 00 00 00 e4 62 0b 00 00 00 00 00 | 43 00 00 00 f4 62 0b 00 00 00 00 00 | 1 | 4 | 4:e4->f4 | 4:746212->746228 | C....b...... | C....b...... |
| 11 | 1 | 104 | 2 | 105 | a_to_b | control_announce | 12 | 3 | different | 4318 | 4549 | 0.070311069 | 0.264326334 | 1e 00 00 00 e5 62 0b 00 00 00 00 00 | 1e 00 00 00 f5 62 0b 00 00 00 00 00 | 1 | 4 | 4:e5->f5 | 4:746213->746229 | .....b...... | .....b...... |
| 12 | 1 | 104 | 2 | 105 | a_to_b | control_announce | 12 | 4 | different | 4330 | 4561 | 0.170464754 | 0.276273012 | 1a 00 00 00 e6 62 0b 00 00 00 00 00 | 1a 00 00 00 f6 62 0b 00 00 00 00 00 | 1 | 4 | 4:e6->f6 | 4:746214->746230 | .....b...... | .....b...... |
| 13 | 1 | 104 | a_to_b | control_announce | 12 | 5 | missing_b | 4357 | 0.273474693 | 1a 00 00 00 e7 62 0b 00 00 00 00 00 | .....b...... | ||||||||||
| 14 | 1 | 104 | 2 | 105 | a_to_b | data | 26 | 0 | different | 4295 | 4513 | 0.067722797 | 0.173079252 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 53 f5 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 69 f5 | 1 | 14 | 14:53->69 | 12:-179109888->-177668096 | T.c@.^1@......S....... | T.c@.^1@......i....... |
| 15 | 1 | 104 | 2 | 105 | a_to_b | data | 26 | 1 | different | 4332 | 4563 | 0.170684099 | 0.276415348 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 57 f5 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 6d f5 | 1 | 14 | 14:57->6d | 12:-178847744->-177405952 | T.c@.^1@......W....... | T.c@.^1@......m....... |
| 16 | 1 | 104 | a_to_b | data | 26 | 2 | missing_b | 4359 | 0.273638964 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 59 f5 | T.c@.^1@......Y....... | ||||||||||
| 17 | 1 | 104 | 2 | 105 | a_to_b | data | 30 | 0 | different | 4320 | 4551 | 0.070454121 | 0.264478683 | 55 ce ff 62 b2 1b 3a 50 01 00 03 00 00 00 55 f5 | 55 ce ff 62 b2 1b 3a 50 01 00 03 00 00 00 6b f5 | 1 | 14 | 14:55->6b | 12:-178978816->-177537024 | U..b..:P......U........... | U..b..:P......k........... |
| 18 | 1 | 104 | 2 | 105 | a_to_b | data | 34 | 0 | different | 4299 | 4533 | 0.068046808 | 0.261560202 | 1c 21 18 d0 c4 6f 33 bb 01 00 03 00 00 00 6a 1e | 1c 21 18 d0 c4 6f 33 bb 01 00 03 00 00 00 6d 1e | 3 | 14 22 23 | 14:6a->6d 22:b3->46 23:ec->f0 | 12:510263296->510459904 20:-323813376->-263847936 | .!...o3.......j.........2..... | .!...o3.......m.......F.2..... |
| 19 | 1 | 104 | 2 | 105 | a_to_b | data | 67 | 0 | different | 4302 | 4537 | 0.068237782 | 0.261728048 | 98 04 33 cb 0c b4 7c 38 01 00 03 00 00 00 01 00 | 98 04 33 cb 0c b4 7c 38 01 00 03 00 00 00 01 00 | 6 | 19 55 56 57 58 59 | 19:6a->6d 55:88->80 56:60->c1 57:40->ce 58:cc->02 59:bf->c0 | 16:1778384896->1828716544 52:-2004877313->-2139095041 56:-1077133216->-1073557823 | ..3...|8...........j.......=B.....&............. | ..3...|8...........m.......=B.....&............. |
| 20 | 1 | 104 | 2 | 105 | b_to_a | control | 12 | 0 | different | 4300 | 4515 | 0.068119526 | 0.173507929 | ff ff ff ff e2 62 0b 00 00 00 00 00 | ff ff ff ff f2 62 0b 00 00 00 00 00 | 1 | 4 | 4:e2->f2 | 4:746210->746226 | .....b...... | .....b...... |
| 21 | 1 | 104 | 2 | 105 | b_to_a | control | 12 | 1 | different | 4304 | 4539 | 0.068414927 | 0.261993885 | ff ff ff ff e3 62 0b 00 00 00 00 00 | ff ff ff ff f3 62 0b 00 00 00 00 00 | 1 | 4 | 4:e3->f3 | 4:746211->746227 | .....b...... | .....b...... |
| 22 | 1 | 104 | 2 | 105 | b_to_a | control | 12 | 2 | different | 4306 | 4541 | 0.068648338 | 0.262209177 | ff ff ff ff e4 62 0b 00 00 00 00 00 | ff ff ff ff f4 62 0b 00 00 00 00 00 | 1 | 4 | 4:e4->f4 | 4:746212->746228 | .....b...... | .....b...... |
| 23 | 1 | 104 | 2 | 105 | b_to_a | control | 12 | 3 | different | 4322 | 4553 | 0.070734024 | 0.264806271 | ff ff ff ff e5 62 0b 00 00 00 00 00 | ff ff ff ff f5 62 0b 00 00 00 00 00 | 1 | 4 | 4:e5->f5 | 4:746213->746229 | .....b...... | .....b...... |
| 24 | 1 | 104 | 2 | 105 | b_to_a | control | 12 | 4 | different | 4334 | 4565 | 0.171112061 | 0.276723146 | ff ff ff ff e6 62 0b 00 00 00 00 00 | ff ff ff ff f6 62 0b 00 00 00 00 00 | 1 | 4 | 4:e6->f6 | 4:746214->746230 | .....b...... | .....b...... |
| 25 | 1 | 104 | b_to_a | control | 12 | 5 | missing_b | 4342 | 0.189489126 | fe ff ff ff c7 4a 01 00 d7 4a 01 00 | .....J...J.. | ||||||||||
| 26 | 1 | 104 | b_to_a | control | 12 | 6 | missing_b | 4361 | 0.274013996 | ff ff ff ff e7 62 0b 00 00 00 00 00 | .....b...... | ||||||||||
| 27 | 1 | 104 | 2 | 105 | b_to_a | control_announce | 12 | 0 | different | 4308 | 4517 | 0.068941116 | 0.173794508 | 16 00 00 00 41 38 0b 00 00 00 00 00 | 16 00 00 00 4f 38 0b 00 00 00 00 00 | 1 | 4 | 4:41->4f | 4:735297->735311 | ....A8...... | ....O8...... |
| 28 | 1 | 104 | 2 | 105 | b_to_a | control_announce | 12 | 1 | different | 4312 | 4543 | 0.069282770 | 0.263011217 | 34 00 00 00 42 38 0b 00 00 00 00 00 | 34 00 00 00 50 38 0b 00 00 00 00 00 | 1 | 4 | 4:42->50 | 4:735298->735312 | 4...B8...... | 4...P8...... |
| 29 | 1 | 104 | 2 | 105 | b_to_a | control_announce | 12 | 2 | different | 4323 | 4555 | 0.071092606 | 0.265175104 | 1a 00 00 00 43 38 0b 00 00 00 00 00 | 1a 00 00 00 51 38 0b 00 00 00 00 00 | 1 | 4 | 4:43->51 | 4:735299->735313 | ....C8...... | ....Q8...... |
| 30 | 1 | 104 | 2 | 105 | b_to_a | control_announce | 12 | 3 | different | 4336 | 4567 | 0.171579123 | 0.277314425 | 16 00 00 00 44 38 0b 00 00 00 00 00 | 16 00 00 00 52 38 0b 00 00 00 00 00 | 1 | 4 | 4:44->52 | 4:735300->735314 | ....D8...... | ....R8...... |
| 31 | 1 | 104 | b_to_a | control_announce | 12 | 4 | missing_b | 4363 | 0.274546623 | 16 00 00 00 45 38 0b 00 00 00 00 00 | ....E8...... | ||||||||||
| 32 | 1 | 104 | 2 | 105 | b_to_a | data | 22 | 0 | different | 4310 | 4519 | 0.069132090 | 0.173957586 | 53 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 69 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 1 | 0 | 0:53->69 | 0:2094419->2094441 | S................. | i................. |
| 33 | 1 | 104 | 2 | 105 | b_to_a | data | 22 | 1 | different | 4338 | 4569 | 0.171810150 | 0.277461529 | 57 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 6d f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 1 | 0 | 0:57->6d | 0:2094423->2094445 | W................. | m................. |
| 34 | 1 | 104 | b_to_a | data | 22 | 2 | missing_b | 4365 | 0.274724960 | 59 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | Y................. | ||||||||||
| 35 | 1 | 104 | 2 | 105 | b_to_a | data | 26 | 0 | different | 4325 | 4557 | 0.071244001 | 0.265325308 | 55 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 6b f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 1 | 0 | 0:55->6b | 0:2094421->2094443 | U..................... | k..................... |
| 36 | 1 | 104 | 2 | 105 | b_to_a | data | 52 | 0 | different | 4314 | 4545 | 0.069372416 | 0.263190746 | 44 6b 99 d8 ec 1b bd b5 01 00 03 00 00 00 01 00 | 44 6b 99 d8 ec 1b bd b5 01 00 03 00 00 00 01 00 | 5 | 30 40 41 42 43 | 30:6a->6d 40:e5->ec 41:96->45 42:d1->5d 43:e8->e9 | 28:510263296->510459904 40:-388917531->-379763220 | Dk.................L.".([.....j.............O... | Dk.................L.".([.....m..........E].O... |