Initial project state: .NET reference, design, Rust port (M0+M1), evidence
rust / build / test / clippy / fmt (push) Has been cancelled
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:
@@ -0,0 +1 @@
|
||||
exit_code=0
|
||||
@@ -0,0 +1,15 @@
|
||||
2026-04-25T04:52:43.6089717+00:00 harness.start {"Scenario":"subscribe","ClientName":"MxProtoTraceHarness-011-pktmon-subscribe-scalar-loopback-probe","Tags":["TestChildObject.TestInt"],"WriteType":"string","WriteValue":"","UserId":0,"WriteDelayMilliseconds":750,"DurationSeconds":5,"ProcessBitness":"x86","Runtime":"4.0.30319.42000"}
|
||||
2026-04-25T04:52:50.5231684+00:00 mx.register.begin {"ClientName":"MxProtoTraceHarness-011-pktmon-subscribe-scalar-loopback-probe"}
|
||||
2026-04-25T04:52:50.8988361+00:00 mx.register.end {"SessionHandle":1}
|
||||
2026-04-25T04:52:50.8998366+00:00 mx.additem.begin {"Tag":"TestChildObject.TestInt"}
|
||||
2026-04-25T04:52:50.9008423+00:00 mx.additem.end {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:50.9018348+00:00 mx.advise-supervisory.begin {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:50.9027407+00:00 mx.advise-supervisory.end {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:51.1436639+00:00 mx.event.data-change {"SessionHandle":1,"ItemHandle":1,"Value":{"Type":"System.Int32","Value":"99"},"Quality":192,"Timestamp":{"Type":"System.String","Value":"3/26/2026 1:38:22.907 PM"},"Status":[{"Success":-1,"Category":"MxCategoryOk","Source":"MxSourceRequestingLmx","Detail":0}]}
|
||||
2026-04-25T04:52:55.9571578+00:00 mx.unadvise.begin {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:55.9582880+00:00 mx.unadvise.end {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:55.9593250+00:00 mx.removeitem.begin {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:55.9593250+00:00 mx.removeitem.end {"Tag":"TestChildObject.TestInt","ItemHandle":1}
|
||||
2026-04-25T04:52:55.9593250+00:00 mx.unregister.begin {"SessionHandle":1}
|
||||
2026-04-25T04:52:59.7295114+00:00 mx.unregister.end {"SessionHandle":1}
|
||||
2026-04-25T04:52:59.7355070+00:00 harness.stop {}
|
||||
Binary file not shown.
@@ -0,0 +1,60 @@
|
||||
capture captures\011-pktmon-subscribe-scalar-loopback-probe\network-pktmon.pcapng
|
||||
packets 23938
|
||||
ip_tcp_udp_packets 23371
|
||||
packets_with_payload 11951
|
||||
|
||||
top_ports
|
||||
proto port packet_refs
|
||||
TCP 443 10375
|
||||
TCP 54893 6794
|
||||
TCP 3389 6794
|
||||
TCP 50100 5422
|
||||
TCP 56605 5256
|
||||
TCP 55426 4749
|
||||
TCP 58018 1862
|
||||
TCP 58013 1830
|
||||
TCP 58019 1730
|
||||
UDP 1900 480
|
||||
UDP 443 180
|
||||
UDP 60560 180
|
||||
TCP 52147 110
|
||||
UDP 5645 96
|
||||
TCP 56659 96
|
||||
UDP 57788 72
|
||||
UDP 48123 72
|
||||
UDP 60592 72
|
||||
UDP 43712 72
|
||||
TCP 61921 38
|
||||
|
||||
top_endpoints
|
||||
proto src sport dst dport packets payload_packets payload_bytes
|
||||
TCP 10.100.0.199 54893 10.100.0.48 3389 5772 2964 168948
|
||||
TCP 160.79.104.10 443 10.100.0.48 56605 3828 2472 508644
|
||||
TCP 160.79.104.10 443 10.100.0.48 55426 3252 1980 144912
|
||||
TCP 10.100.0.48 55426 160.79.104.10 443 1497 377 6060672
|
||||
TCP 10.100.0.48 56605 160.79.104.10 443 1428 0 0
|
||||
TCP 10.100.0.199 58019 10.100.0.48 50100 1128 132 7572
|
||||
TCP 10.100.0.199 58013 10.100.0.48 50100 1116 132 7464
|
||||
TCP 10.100.0.199 58018 10.100.0.48 50100 1092 108 3036
|
||||
TCP 10.100.0.48 3389 10.100.0.199 54893 1022 798 65618
|
||||
TCP 10.100.0.48 50100 10.100.0.199 58018 770 770 56532
|
||||
TCP 10.100.0.48 50100 10.100.0.199 58013 714 700 50400
|
||||
TCP 10.100.0.48 50100 10.100.0.199 58019 602 602 43722
|
||||
UDP 172.64.155.209 443 10.100.0.48 60560 180 180 90492
|
||||
UDP 10.100.0.99 5645 239.255.255.250 1900 96 96 30732
|
||||
TCP 104.18.37.228 443 10.100.0.48 52147 96 48 6528
|
||||
TCP 34.149.66.137 443 10.100.0.48 56659 96 12 4188
|
||||
UDP 10.100.0.24 44455 10.100.0.255 32412 36 36 756
|
||||
UDP 10.100.0.24 54131 10.100.0.255 32414 36 36 756
|
||||
UDP 10.100.0.67 57788 255.255.255.255 1900 36 36 26952
|
||||
UDP 10.100.0.67 57788 239.255.255.250 1900 36 36 26952
|
||||
UDP 10.100.0.231 48123 239.255.255.250 1900 36 36 26916
|
||||
UDP 10.100.0.231 48123 255.255.255.255 1900 36 36 26916
|
||||
UDP 10.100.0.176 60592 239.255.255.250 1900 36 36 26916
|
||||
UDP 10.100.0.176 60592 255.255.255.255 1900 36 36 26916
|
||||
UDP 10.100.0.218 43712 239.255.255.250 1900 36 36 26916
|
||||
UDP 10.100.0.218 43712 255.255.255.255 1900 36 36 26916
|
||||
TCP 172.64.155.209 443 10.100.0.48 61921 24 12 336
|
||||
TCP 172.64.155.209 443 10.100.0.48 61850 24 24 2232
|
||||
TCP 172.64.155.209 443 10.100.0.48 59909 24 12 336
|
||||
TCP 10.100.0.48 61921 172.64.155.209 443 14 14 448
|
||||
@@ -0,0 +1,6 @@
|
||||
Processing...
|
||||
|
||||
Packets total: 23938
|
||||
Packet drop count: 0
|
||||
Packets formatted: 23938
|
||||
Formatted file: C:\Users\dohertj2\Desktop\mxaccess\captures\011-pktmon-subscribe-scalar-loopback-probe\network-pktmon.pcapng
|
||||
@@ -0,0 +1 @@
|
||||
Removed all filters.
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
Logger Parameters:
|
||||
Logger name: PktMon
|
||||
Logging mode: Circular
|
||||
Log file: C:\Users\dohertj2\Desktop\mxaccess\captures\011-pktmon-subscribe-scalar-loopback-probe\pktmon.etl
|
||||
Max file size: 128 MB
|
||||
Memory used: 1152 MB
|
||||
|
||||
Collected Data:
|
||||
Packet counters, packet capture
|
||||
|
||||
Capture Type:
|
||||
All packets
|
||||
|
||||
Monitored Components:
|
||||
All
|
||||
|
||||
Packet Filters:
|
||||
None
|
||||
@@ -0,0 +1,3 @@
|
||||
Flushing logs...
|
||||
Merging metadata...
|
||||
Log file: C:\Users\dohertj2\Desktop\mxaccess\captures\011-pktmon-subscribe-scalar-loopback-probe\pktmon.etl (No events lost)
|
||||
Binary file not shown.
Reference in New Issue
Block a user