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.2 KiB
7.2 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 | 0 | 103 | 1 | 104 | a_to_b | control | 12 | 0 | different | 4131 | 4315 | 0.171459675 | 0.069395065 | ff ff ff ff 37 38 0b 00 00 00 00 00 | ff ff ff ff 41 38 0b 00 00 00 00 00 | 1 | 4 | 4:37->41 | 4:735287->735297 | ....78...... | ....A8...... |
| 3 | 0 | 103 | 1 | 104 | a_to_b | control | 12 | 1 | different | 4162 | 4317 | 0.182622433 | 0.069546223 | ff ff ff ff 38 38 0b 00 00 00 00 00 | ff ff ff ff 42 38 0b 00 00 00 00 00 | 1 | 4 | 4:38->42 | 4:735288->735298 | ....88...... | ....B8...... |
| 4 | 0 | 103 | 1 | 104 | a_to_b | control | 12 | 2 | different | 4174 | 4327 | 0.184747696 | 0.071476698 | ff ff ff ff 39 38 0b 00 00 00 00 00 | ff ff ff ff 43 38 0b 00 00 00 00 00 | 1 | 4 | 4:39->43 | 4:735289->735299 | ....98...... | ....C8...... |
| 5 | 0 | 103 | 1 | 104 | a_to_b | control | 12 | 3 | different | 4188 | 4340 | 0.274049759 | 0.172099590 | ff ff ff ff 3a 38 0b 00 00 00 00 00 | ff ff ff ff 44 38 0b 00 00 00 00 00 | 1 | 4 | 4:3a->44 | 4:735290->735300 | ....:8...... | ....D8...... |
| 6 | 1 | 104 | a_to_b | control | 12 | 4 | missing_a | 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_a | 4367 | 0.275054216 | ff ff ff ff 45 38 0b 00 00 00 00 00 | ....E8...... | ||||||||||
| 8 | 0 | 103 | 1 | 104 | a_to_b | control_announce | 12 | 0 | different | 4119 | 4293 | 0.170109034 | 0.067553520 | 1a 00 00 00 d8 62 0b 00 00 00 00 00 | 1a 00 00 00 e2 62 0b 00 00 00 00 00 | 1 | 4 | 4:d8->e2 | 4:746200->746210 | .....b...... | .....b...... |
| 9 | 0 | 103 | 1 | 104 | a_to_b | control_announce | 12 | 1 | different | 4152 | 4297 | 0.180431604 | 0.067930222 | 65 00 00 00 d9 62 0b 00 00 00 00 00 | 22 00 00 00 e3 62 0b 00 00 00 00 00 | 2 | 0 4 | 0:65->22 4:d9->e3 | 0:101->34 4:746201->746211 | e....b...... | "....b...... |
| 10 | 0 | 103 | 1 | 104 | a_to_b | control_announce | 12 | 2 | different | 4164 | 4301 | 0.183470011 | 0.068131447 | 1e 00 00 00 da 62 0b 00 00 00 00 00 | 43 00 00 00 e4 62 0b 00 00 00 00 00 | 2 | 0 4 | 0:1e->43 4:da->e4 | 0:30->67 4:746202->746212 | .....b...... | C....b...... |
| 11 | 0 | 103 | 1 | 104 | a_to_b | control_announce | 12 | 3 | different | 4178 | 4318 | 0.272670269 | 0.070311069 | 1a 00 00 00 db 62 0b 00 00 00 00 00 | 1e 00 00 00 e5 62 0b 00 00 00 00 00 | 2 | 0 4 | 0:1a->1e 4:db->e5 | 0:26->30 4:746203->746213 | .....b...... | .....b...... |
| 12 | 1 | 104 | a_to_b | control_announce | 12 | 4 | missing_a | 4330 | 0.170464754 | 1a 00 00 00 e6 62 0b 00 00 00 00 00 | .....b...... | ||||||||||
| 13 | 1 | 104 | a_to_b | control_announce | 12 | 5 | missing_a | 4357 | 0.273474693 | 1a 00 00 00 e7 62 0b 00 00 00 00 00 | .....b...... | ||||||||||
| 14 | 0 | 103 | 1 | 104 | a_to_b | data | 26 | 0 | different | 4121 | 4295 | 0.170266628 | 0.067722797 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 43 f5 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 53 f5 | 1 | 14 | 14:43->53 | 12:-180158464->-179109888 | T.c@.^1@......C....... | T.c@.^1@......S....... |
| 15 | 0 | 103 | 1 | 104 | a_to_b | data | 26 | 1 | different | 4180 | 4332 | 0.272846460 | 0.170684099 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 47 f5 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 57 f5 | 1 | 14 | 14:47->57 | 12:-179896320->-178847744 | T.c@.^1@......G....... | T.c@.^1@......W....... |
| 16 | 1 | 104 | a_to_b | data | 26 | 2 | missing_a | 4359 | 0.273638964 | 54 8f 63 40 e2 5e 31 40 01 00 03 00 00 00 59 f5 | T.c@.^1@......Y....... | ||||||||||
| 17 | 0 | 103 | 1 | 104 | a_to_b | data | 30 | 0 | different | 4166 | 4320 | 0.183623314 | 0.070454121 | 55 ce ff 62 b2 1b 3a 50 01 00 03 00 00 00 45 f5 | 55 ce ff 62 b2 1b 3a 50 01 00 03 00 00 00 55 f5 | 1 | 14 | 14:45->55 | 12:-180027392->-178978816 | U..b..:P......E........... | U..b..:P......U........... |
| 18 | 0 | 103 | 1 | 104 | a_to_b | data | 34 | 0 | different | 4154 | 4299 | 0.180605412 | 0.068046808 | 1c 21 18 d0 c4 6f 33 bb 01 00 03 00 00 00 68 1e | 1c 21 18 d0 c4 6f 33 bb 01 00 03 00 00 00 6a 1e | 3 | 14 22 23 | 14:68->6a 22:51->b3 23:ea->ec | 12:510132224->510263296 20:-363790336->-323813376 | .!...o3.......h.......Q.2..... | .!...o3.......j.........2..... |
| 19 | 0 | 103 | 1 | 104 | a_to_b | data | 67 | 0 | different | 4154 | 4302 | 0.180605412 | 0.068237782 | 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 | 5 | 19 55 56 57 58 | 19:68->6a 55:20->88 56:af->60 57:f1->40 58:a7->cc | 16:1744830464->1778384896 52:545259519->-2004877313 56:-1079512657->-1077133216 | ..3...|8...........h.......=B.....&............. | ..3...|8...........j.......=B.....&............. |
| 20 | 0 | 103 | 1 | 104 | b_to_a | control | 12 | 0 | different | 4124 | 4300 | 0.170543909 | 0.068119526 | ff ff ff ff d8 62 0b 00 00 00 00 00 | ff ff ff ff e2 62 0b 00 00 00 00 00 | 1 | 4 | 4:d8->e2 | 4:746200->746210 | .....b...... | .....b...... |
| 21 | 0 | 103 | 1 | 104 | b_to_a | control | 12 | 1 | different | 4156 | 4304 | 0.181063652 | 0.068414927 | ff ff ff ff d9 62 0b 00 00 00 00 00 | ff ff ff ff e3 62 0b 00 00 00 00 00 | 1 | 4 | 4:d9->e3 | 4:746201->746211 | .....b...... | .....b...... |
| 22 | 0 | 103 | 1 | 104 | b_to_a | control | 12 | 2 | different | 4168 | 4306 | 0.184028149 | 0.068648338 | ff ff ff ff da 62 0b 00 00 00 00 00 | ff ff ff ff e4 62 0b 00 00 00 00 00 | 1 | 4 | 4:da->e4 | 4:746202->746212 | .....b...... | .....b...... |
| 23 | 0 | 103 | 1 | 104 | b_to_a | control | 12 | 3 | different | 4182 | 4322 | 0.273196936 | 0.070734024 | ff ff ff ff db 62 0b 00 00 00 00 00 | ff ff ff ff e5 62 0b 00 00 00 00 00 | 1 | 4 | 4:db->e5 | 4:746203->746213 | .....b...... | .....b...... |
| 24 | 1 | 104 | b_to_a | control | 12 | 4 | missing_a | 4334 | 0.171112061 | ff ff ff ff e6 62 0b 00 00 00 00 00 | .....b...... | ||||||||||
| 25 | 1 | 104 | b_to_a | control | 12 | 5 | missing_a | 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_a | 4361 | 0.274013996 | ff ff ff ff e7 62 0b 00 00 00 00 00 | .....b...... | ||||||||||
| 27 | 0 | 103 | 1 | 104 | b_to_a | control_announce | 12 | 0 | different | 4127 | 4308 | 0.171019316 | 0.068941116 | 16 00 00 00 37 38 0b 00 00 00 00 00 | 16 00 00 00 41 38 0b 00 00 00 00 00 | 1 | 4 | 4:37->41 | 4:735287->735297 | ....78...... | ....A8...... |
| 28 | 0 | 103 | 1 | 104 | b_to_a | control_announce | 12 | 1 | different | 4158 | 4312 | 0.182176113 | 0.069282770 | 34 00 00 00 38 38 0b 00 00 00 00 00 | 34 00 00 00 42 38 0b 00 00 00 00 00 | 1 | 4 | 4:38->42 | 4:735288->735298 | 4...88...... | 4...B8...... |
| 29 | 0 | 103 | 1 | 104 | b_to_a | control_announce | 12 | 2 | different | 4170 | 4323 | 0.184352398 | 0.071092606 | 1a 00 00 00 39 38 0b 00 00 00 00 00 | 1a 00 00 00 43 38 0b 00 00 00 00 00 | 1 | 4 | 4:39->43 | 4:735289->735299 | ....98...... | ....C8...... |
| 30 | 0 | 103 | 1 | 104 | b_to_a | control_announce | 12 | 3 | different | 4184 | 4336 | 0.273631096 | 0.171579123 | 16 00 00 00 3a 38 0b 00 00 00 00 00 | 16 00 00 00 44 38 0b 00 00 00 00 00 | 1 | 4 | 4:3a->44 | 4:735290->735300 | ....:8...... | ....D8...... |
| 31 | 1 | 104 | b_to_a | control_announce | 12 | 4 | missing_a | 4363 | 0.274546623 | 16 00 00 00 45 38 0b 00 00 00 00 00 | ....E8...... | ||||||||||
| 32 | 0 | 103 | 1 | 104 | b_to_a | data | 22 | 0 | different | 4129 | 4310 | 0.171171427 | 0.069132090 | 43 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 53 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 1 | 0 | 0:43->53 | 0:2094403->2094419 | C................. | S................. |
| 33 | 0 | 103 | 1 | 104 | b_to_a | data | 22 | 1 | different | 4186 | 4338 | 0.273787260 | 0.171810150 | 47 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 57 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 1 | 0 | 0:47->57 | 0:2094407->2094423 | G................. | W................. |
| 34 | 1 | 104 | b_to_a | data | 22 | 2 | missing_a | 4365 | 0.274724960 | 59 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | Y................. | ||||||||||
| 35 | 0 | 103 | 1 | 104 | b_to_a | data | 26 | 0 | different | 4172 | 4325 | 0.184497833 | 0.071244001 | 45 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 55 f5 1f 00 00 00 00 00 01 00 03 00 00 00 00 00 | 1 | 0 | 0:45->55 | 0:2094405->2094421 | E..................... | U..................... |
| 36 | 0 | 103 | 1 | 104 | b_to_a | data | 52 | 0 | different | 4160 | 4314 | 0.182363510 | 0.069372416 | 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 | 4 | 30 40 41 42 | 30:68->6a 40:0b->e5 41:b3->96 42:74->d1 | 28:510132224->510263296 40:-395005173->-388917531 | Dk.................L.".([.....h...........t.O... | Dk.................L.".([.....j.............O... |