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>
61 lines
3.2 KiB
Plaintext
61 lines
3.2 KiB
Plaintext
process=x64:True
|
|
endpoint=net.tcp://desktop-6jl3kko/ASBService/Default_ZB_MxDataProvider/IDataV2
|
|
tag=TestChildObject.TestInt
|
|
asb.stage=read-passphrase
|
|
asb.stage=registry-solution
|
|
asb.stage=registry-open-solution
|
|
asb.stage=registry-unprotect
|
|
asb.stage=registry-passphrase-ready
|
|
asb.stage=create-authenticator
|
|
asb.stage=authenticator-passphrase-bytes
|
|
asb.stage=authenticator-create-private
|
|
asb.stage=authenticator-private-ready
|
|
asb.stage=authenticator-modpow
|
|
asb.stage=authenticator-public-ready
|
|
asb.stage=authenticator-ready
|
|
asb.serializer.behaviors-replaced=4
|
|
asb.stage=open-factory
|
|
asb.stage=open-channel
|
|
asb.stage=connect
|
|
asb.stage=authenticate-me
|
|
asb.stage=connected
|
|
connect=True
|
|
asb.serializer.start=MxAsbClient.ItemIdentity[]
|
|
asb.serializer.content=MxAsbClient.ItemIdentity[]
|
|
asb.serializer.bytes=MxAsbClient.ItemIdentity[]:71:AQAAAAAAAQAuAAAAVABlAHMAdABDAGgAaQBsAGQATwBiAGoAZQBjAHQALgBUAGUAcwB0AEkAbgB0AAAAAAAAAAAAAAAAAAA=
|
|
asb.register.request=<?xml version="1.0" encoding="utf-16"?>
|
|
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
|
|
<s:Header>
|
|
<a:Action s:mustUnderstand="1">http://ASB.IDataV2:registerItemsIn</a:Action>
|
|
<h:ConnectionValidator xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:h="http://asb.contracts.headers/20111111">
|
|
<connectionIdField xmlns="http://schemas.datacontract.org/2004/07/ArchestrAServices.ASBContract">40d57fbb-d765-4724-a957-3e2a1b43466b</connectionIdField>
|
|
<messageAuthenticationCodeField xmlns="http://schemas.datacontract.org/2004/07/ArchestrAServices.ASBContract" />
|
|
<messageNumberField xmlns="http://schemas.datacontract.org/2004/07/ArchestrAServices.ASBContract">2</messageNumberField>
|
|
<signatureInitializationVectorField xmlns="http://schemas.datacontract.org/2004/07/ArchestrAServices.ASBContract" />
|
|
</h:ConnectionValidator>
|
|
<a:MessageID>urn:uuid:a2a09131-90a2-4aee-ae17-7b430a562809</a:MessageID>
|
|
<a:ReplyTo>
|
|
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
|
|
</a:ReplyTo>
|
|
</s:Header>
|
|
<s:Body>
|
|
<RegisterItemsRequest xmlns="urn:msg.data.asb.iom:2">
|
|
<ASBIData>AQAAAAAAAQAuAAAAVABlAHMAdABDAGgAaQBsAGQATwBiAGoAZQBjAHQALgBUAGUAcwB0AEkAbgB0AAAAAAAAAAAAAAAAAAA=</ASBIData>
|
|
<RequireId>true</RequireId>
|
|
<RegisterOnly>true</RegisterOnly>
|
|
</RegisterItemsRequest>
|
|
</s:Body>
|
|
</s:Envelope>
|
|
asb.serializer.start=MxAsbClient.ItemIdentity[]
|
|
asb.serializer.content=MxAsbClient.ItemIdentity[]
|
|
asb.serializer.bytes=MxAsbClient.ItemIdentity[]:71:AQAAAAAAAQAuAAAAVABlAHMAdABDAGgAaQBsAGQATwBiAGoAZQBjAHQALgBUAGUAcwB0AEkAbgB0AAAAAAAAAAAAAAAAAAA=
|
|
register_error=0x00000000 status=0x00000000 specific=0x00000000
|
|
asb.serializer.start=MxAsbClient.ItemIdentity[]
|
|
asb.serializer.content=MxAsbClient.ItemIdentity[]
|
|
asb.serializer.bytes=MxAsbClient.ItemIdentity[]:71:AQAAAAAAAQAuAAAAVABlAHMAdABDAGgAaQBsAGQATwBiAGoAZQBjAHQALgBUAGUAcwB0AEkAbgB0AAAAAAAAAAAAAAAAAAA=
|
|
read_error=0x00000000 status=0x00000000 specific=0x00000000
|
|
read_status[0]=item: id:0 id_specified:False error:0x00000000 error_specified:True status_count:0 status_payload_len:0
|
|
read_value[0]=type:0 length:0 payload_len:0 preview:
|
|
read_value[0].timestamp=2026-04-26T01:10:07.2500000-04:00 timestamp_specified=True
|
|
read_value[0].status_count=0 status_payload_len=0
|