Initial project state: .NET reference, design, Rust port (M0+M1), evidence
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>
This commit is contained in:
Joseph Doherty
2026-05-05 06:21:00 -04:00
parent 43733699b0
commit fe2a6db786
3849 changed files with 352975 additions and 0 deletions
@@ -0,0 +1,74 @@
conversation_a conversation_b payload_packets payload_bytes first_relative last_relative
127.0.0.1:57415 127.0.0.1:57433 2255 42974 0.000000000 21.340679169
::1:49704 ::1:55733 400 32726 1.832593203 9.255686045
fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55765 2 14170 17.548981428 17.635439873
fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55737 2 13997 4.097445011 4.170214653
fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55730 2 13978 1.155901194 1.225602388
fe80::3608:256c:365:cc73:443 fe80::3608:256c:365:cc73:61633 21 8281 4.405579090 9.246757746
fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:59621 32 3878 5.114329576 20.233385324
fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55743 3 2703 5.757624626 8.402371168
::1:443 ::1:55741 6 2674 5.381500483 5.391688108
::1:135 ::1:55732 20 2600 1.829795361 9.127695799
::1:808 ::1:55780 16 2430 20.852892637 20.864961386
::1:808 ::1:55779 16 2429 20.700253487 20.711337566
::1:808 ::1:55781 16 2423 21.001731157 21.013002872
::1:808 ::1:55772 16 2418 19.182828903 19.196656227
::1:808 ::1:55771 16 2417 19.016695023 19.028407097
::1:808 ::1:55773 16 2411 19.357580423 19.372150660
::1:808 ::1:55778 16 2398 20.531247139 20.542258978
::1:808 ::1:55782 16 2390 21.168329000 21.179226637
::1:808 ::1:55766 16 2386 18.850528717 18.871563196
::1:808 ::1:55774 16 2378 19.519992828 19.534571409
::1:32571 ::1:55731 4 2196 1.646872044 1.653651714
::1:443 ::1:55742 6 2054 5.395654678 5.418964148
::1:808 ::1:55759 16 1990 14.250601530 14.261695147
::1:808 ::1:55755 16 1985 13.797497511 13.809185505
::1:808 ::1:55763 16 1980 14.546708107 14.557421446
::1:808 ::1:55758 16 1975 14.109889984 14.121822596
::1:808 ::1:55760 16 1969 14.399791479 14.410859585
::1:808 ::1:55756 16 1964 13.953680038 13.966232777
::1:808 ::1:55764 16 1941 16.667018175 16.678532600
fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55767 3 1941 18.886050463 21.261529922
::1:80 ::1:55749 6 1821 9.451477528 9.456928253
::1:80 ::1:55735 6 1820 2.423077583 2.430312634
::1:80 ::1:55729 6 1793 0.652855873 0.660725117
::1:80 ::1:55745 6 1793 8.998769283 9.005503654
::1:80 ::1:55751 6 1793 9.635711193 9.644751072
::1:80 ::1:55770 6 1793 19.008836508 19.015785694
::1:80 ::1:55776 6 1793 19.622668505 19.629147053
fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55757 2 1789 15.623139620 15.623636484
::1:80 ::1:55740 6 1788 4.307850599 4.314217806
::1:80 ::1:55762 6 1788 14.487950802 14.494089127
::1:80 ::1:55754 6 1784 11.488726139 11.495169163
127.0.0.1:57470 127.0.0.1:57477 104 1368 0.000338316 21.241163731
127.0.0.1:57608 127.0.0.1:57631 104 1368 0.004238367 21.429375648
fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55738 2 1202 4.178703547 4.183607340
::1:808 ::1:55800 2 1150 9.151192188 9.151685238
127.0.0.1:57684 127.0.0.1:57745 86 1032 0.000694990 21.227253914
127.0.0.1:57484 127.0.0.1:57746 86 1032 0.056278229 21.115084410
127.0.0.1:57485 127.0.0.1:57747 86 1032 0.078865290 21.136882544
10.100.0.48:1433 10.100.0.48:49792 8 1028 4.773212194 14.780783653
10.100.0.48:1433 10.100.0.48:49805 12 1002 7.388131142 17.391541719
fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55747 6 913 9.223340034 9.248510838
fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55746 6 900 9.198767900 9.220492601
::1:808 ::1:49859 1 499 4.962490320 4.962490320
::1:80 ::1:55728 2 332 0.643666029 0.648313046
::1:80 ::1:55734 2 332 2.414712429 2.419148922
::1:80 ::1:55739 2 332 4.300340891 4.304387808
::1:80 ::1:55744 2 332 8.991049290 8.995112658
::1:80 ::1:55748 2 332 9.445918083 9.448917389
::1:80 ::1:55750 2 332 9.614324570 9.618070602
::1:80 ::1:55753 2 332 11.481531858 11.484639168
::1:80 ::1:55761 2 332 14.480429888 14.484385252
::1:80 ::1:55768 2 332 18.999534369 19.004453421
::1:80 ::1:55775 2 332 19.615015984 19.618843794
::1:49704 ::1:49829 2 270 17.351123333 17.351426363
fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55752 1 52 9.645806313 9.645806313
fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55777 1 52 19.646137953 19.646137953
127.0.0.1:61590 127.0.0.1:63342 5 30 1.230719090 21.234056473
127.0.0.1:49787 127.0.0.1:49788 24 24 1.156192303 21.261269331
10.100.0.48:1433 10.100.0.48:50767 2 2 4.375846624 4.544163704
10.100.0.48:1433 10.100.0.48:49936 2 2 15.951886177 17.087412834
10.100.0.48:1433 10.100.0.48:49934 2 2 16.490732908 17.267374754
10.100.0.48:1433 10.100.0.48:49935 2 2 16.493808746 17.436368942
10.100.0.48:1433 10.100.0.48:49933 2 2 16.544374228 18.229245186
1 conversation_a conversation_b payload_packets payload_bytes first_relative last_relative
2 127.0.0.1:57415 127.0.0.1:57433 2255 42974 0.000000000 21.340679169
3 ::1:49704 ::1:55733 400 32726 1.832593203 9.255686045
4 fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55765 2 14170 17.548981428 17.635439873
5 fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55737 2 13997 4.097445011 4.170214653
6 fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55730 2 13978 1.155901194 1.225602388
7 fe80::3608:256c:365:cc73:443 fe80::3608:256c:365:cc73:61633 21 8281 4.405579090 9.246757746
8 fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:59621 32 3878 5.114329576 20.233385324
9 fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55743 3 2703 5.757624626 8.402371168
10 ::1:443 ::1:55741 6 2674 5.381500483 5.391688108
11 ::1:135 ::1:55732 20 2600 1.829795361 9.127695799
12 ::1:808 ::1:55780 16 2430 20.852892637 20.864961386
13 ::1:808 ::1:55779 16 2429 20.700253487 20.711337566
14 ::1:808 ::1:55781 16 2423 21.001731157 21.013002872
15 ::1:808 ::1:55772 16 2418 19.182828903 19.196656227
16 ::1:808 ::1:55771 16 2417 19.016695023 19.028407097
17 ::1:808 ::1:55773 16 2411 19.357580423 19.372150660
18 ::1:808 ::1:55778 16 2398 20.531247139 20.542258978
19 ::1:808 ::1:55782 16 2390 21.168329000 21.179226637
20 ::1:808 ::1:55766 16 2386 18.850528717 18.871563196
21 ::1:808 ::1:55774 16 2378 19.519992828 19.534571409
22 ::1:32571 ::1:55731 4 2196 1.646872044 1.653651714
23 ::1:443 ::1:55742 6 2054 5.395654678 5.418964148
24 ::1:808 ::1:55759 16 1990 14.250601530 14.261695147
25 ::1:808 ::1:55755 16 1985 13.797497511 13.809185505
26 ::1:808 ::1:55763 16 1980 14.546708107 14.557421446
27 ::1:808 ::1:55758 16 1975 14.109889984 14.121822596
28 ::1:808 ::1:55760 16 1969 14.399791479 14.410859585
29 ::1:808 ::1:55756 16 1964 13.953680038 13.966232777
30 ::1:808 ::1:55764 16 1941 16.667018175 16.678532600
31 fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55767 3 1941 18.886050463 21.261529922
32 ::1:80 ::1:55749 6 1821 9.451477528 9.456928253
33 ::1:80 ::1:55735 6 1820 2.423077583 2.430312634
34 ::1:80 ::1:55729 6 1793 0.652855873 0.660725117
35 ::1:80 ::1:55745 6 1793 8.998769283 9.005503654
36 ::1:80 ::1:55751 6 1793 9.635711193 9.644751072
37 ::1:80 ::1:55770 6 1793 19.008836508 19.015785694
38 ::1:80 ::1:55776 6 1793 19.622668505 19.629147053
39 fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55757 2 1789 15.623139620 15.623636484
40 ::1:80 ::1:55740 6 1788 4.307850599 4.314217806
41 ::1:80 ::1:55762 6 1788 14.487950802 14.494089127
42 ::1:80 ::1:55754 6 1784 11.488726139 11.495169163
43 127.0.0.1:57470 127.0.0.1:57477 104 1368 0.000338316 21.241163731
44 127.0.0.1:57608 127.0.0.1:57631 104 1368 0.004238367 21.429375648
45 fe80::3608:256c:365:cc73:55555 fe80::3608:256c:365:cc73:55738 2 1202 4.178703547 4.183607340
46 ::1:808 ::1:55800 2 1150 9.151192188 9.151685238
47 127.0.0.1:57684 127.0.0.1:57745 86 1032 0.000694990 21.227253914
48 127.0.0.1:57484 127.0.0.1:57746 86 1032 0.056278229 21.115084410
49 127.0.0.1:57485 127.0.0.1:57747 86 1032 0.078865290 21.136882544
50 10.100.0.48:1433 10.100.0.48:49792 8 1028 4.773212194 14.780783653
51 10.100.0.48:1433 10.100.0.48:49805 12 1002 7.388131142 17.391541719
52 fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55747 6 913 9.223340034 9.248510838
53 fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55746 6 900 9.198767900 9.220492601
54 ::1:808 ::1:49859 1 499 4.962490320 4.962490320
55 ::1:80 ::1:55728 2 332 0.643666029 0.648313046
56 ::1:80 ::1:55734 2 332 2.414712429 2.419148922
57 ::1:80 ::1:55739 2 332 4.300340891 4.304387808
58 ::1:80 ::1:55744 2 332 8.991049290 8.995112658
59 ::1:80 ::1:55748 2 332 9.445918083 9.448917389
60 ::1:80 ::1:55750 2 332 9.614324570 9.618070602
61 ::1:80 ::1:55753 2 332 11.481531858 11.484639168
62 ::1:80 ::1:55761 2 332 14.480429888 14.484385252
63 ::1:80 ::1:55768 2 332 18.999534369 19.004453421
64 ::1:80 ::1:55775 2 332 19.615015984 19.618843794
65 ::1:49704 ::1:49829 2 270 17.351123333 17.351426363
66 fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55752 1 52 9.645806313 9.645806313
67 fe80::3608:256c:365:cc73:808 fe80::3608:256c:365:cc73:55777 1 52 19.646137953 19.646137953
68 127.0.0.1:61590 127.0.0.1:63342 5 30 1.230719090 21.234056473
69 127.0.0.1:49787 127.0.0.1:49788 24 24 1.156192303 21.261269331
70 10.100.0.48:1433 10.100.0.48:50767 2 2 4.375846624 4.544163704
71 10.100.0.48:1433 10.100.0.48:49936 2 2 15.951886177 17.087412834
72 10.100.0.48:1433 10.100.0.48:49934 2 2 16.490732908 17.267374754
73 10.100.0.48:1433 10.100.0.48:49935 2 2 16.493808746 17.436368942
74 10.100.0.48:1433 10.100.0.48:49933 2 2 16.544374228 18.229245186