Commit graph

2 commits

Author SHA1 Message Date
RustyProgrammerCmd 5d6812d379 Port HWID/KMS38 activation and start libtsforge SPP-store codec
Continues the Rust port with the two tractable remaining slices plus the
foundation for the deepest one. Analyzed the deleted scripts from git
history (f34d025) to keep data and mechanics faithful.

HWID (src/activation/hwid.rs):
- Region decision (30-country skip list -> GeoId 244) and the two-method
  apply retry (ClipSVC restart, then `clipup -v -o`, success = tokens.dat)
  as portable, unit-tested orchestration. ClipSVC ops added behind the Spp
  trait; the Windows backend drives them via std::process/std::fs.
- Corrected: GenuineTicket.xml is an in-process RSA-signed XML build (not
  gatherosstate/clipup) — generation is portable once the shared RSA layer
  lands; documented accordingly.

KMS38 (src/activation/kms38.rs):
- Corrected mechanism: not a ClipUp flow but a detect-and-preserve variant
  of Online KMS. Ported the load-bearing pure logic (eligibility gate
  build>=14393 excl. EnterpriseG/GN, >180-day lease detection, ceil grace
  days) with tests; loopback 127.0.0.2 pin via a new Spp op (reg add).

libtsforge (new workspace crate, dependency-free, 17 tests):
- The deleted TSforge script embeds the full LibTSforge C# reference; this
  ports it in layers. CRC-32/BZIP2 (fixes a wrong reflected-IEEE CRC) and
  SHA-256, both test-vector verified; PsVersion detection, Align, UTF-16;
  the Vista/Win7 physical-store dialects and both VariableBag CRC dialects
  (incl. the CRCBlockModern unaligned-CRC-input quirk), all round-trip
  tested. RSA/AES/HMAC deferred behind a crypto-trait seam.
- tsforge activator wired to libtsforge (store-version selection); still
  returns a typed Unsupported until TokenStore + RSA land.

48 tests pass (31 mas + 17 libtsforge), clippy clean, offline. The Windows
backend additions compile only on Windows and are unverified on this host.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 01:09:01 -05:00
RustyProgrammerCmd 7fbe6fdf21 Port MAS to Rust
Re-architect the Microsoft Activation Scripts from ~46k lines of Windows
batch into an idiomatic Rust crate (MAS/). Not a line-by-line translation:
typed enums + Result flow replace goto/errorlevel/global-set, and a single
`Spp` trait is the only seam between portable logic and Windows internals.

- Portable core (compiles + 20 tests pass, zero deps): model (real SPP
  GUIDs / WMI class names / LicenseStatus codes), typed errors, CLI menu,
  Check_Activation_Status read path, Online KMS orchestration with host
  fallback, stub backend.
- Windows backend (cfg(windows) + `winapi` feature): WMI/COM via the
  `windows` crate, all unsafe/VARIANT handling encapsulated behind `Spp`.
  Written from the documented SPP contract; not compiled on the Linux port
  host.
- HWID/KMS38/Ohook/TSforge scaffolded against analyzed specs (in module
  docs) — unported paths return a typed Unsupported error rather than
  falsely reporting activation. Roadmap in MAS/README.md.

The original .cmd scripts remain recoverable in history (f34d025, MAS 3.12).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 00:25:26 -05:00