{"_id":"@emdzej/nfsx-ms45","name":"@emdzej/nfsx-ms45","dist-tags":{"latest":"0.4.0"},"versions":{"0.4.0":{"name":"@emdzej/nfsx-ms45","version":"0.4.0","description":"MS45 DME flashing helpers — offline CRC-32/MPEG-2 checksum verify/rewrite, RSA-1024 firmware signing, security-access payload builder, and (Stage 2+) SGBD-driven flash session for BMW MS45.0 / MS45.1 engine control units.","main":"dist/index.js","types":"dist/index.d.ts","type":"module","dependencies":{"@emdzej/ediabasx-core":"^0.8.0"},"devDependencies":{"@types/node":"^22.13.1","vitest":"^2.1.8"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/emdzej/nfsx.git","directory":"packages/nfsx-ms45"},"scripts":{"build":"tsc -p tsconfig.json","test":"vitest run --passWithNoTests","test:watch":"vitest","typecheck":"tsc --noEmit","clean":"rm -rf dist .turbo *.tsbuildinfo"},"_id":"@emdzej/nfsx-ms45@0.4.0","bugs":{"url":"https://github.com/emdzej/nfsx/issues"},"homepage":"https://github.com/emdzej/nfsx#readme","_integrity":"sha512-ry4QCCZ4jiYuGbk83WFDzD8zkSEMb6wBYxtG6b0Yo7Td6jg8alA57B0vxyR5MnYIhkmy4KCKzj1I9QD7ldQkHw==","_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/592999a80f03224e214644134d2047a1/emdzej-nfsx-ms45-0.4.0.tgz","_from":"file:emdzej-nfsx-ms45-0.4.0.tgz","_nodeVersion":"22.22.1","_npmVersion":"11.16.0","dist":{"integrity":"sha512-ry4QCCZ4jiYuGbk83WFDzD8zkSEMb6wBYxtG6b0Yo7Td6jg8alA57B0vxyR5MnYIhkmy4KCKzj1I9QD7ldQkHw==","shasum":"beb38ef43331b4b77cbbeed7ea5fb17527bf9701","tarball":"https://registry.npmjs.org/@emdzej/nfsx-ms45/-/nfsx-ms45-0.4.0.tgz","fileCount":63,"unpackedSize":230228,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD6HeGNL2hHY27MlI8KXCuXoyAg/zdqL1JTxQ29mLoJ5gIhAOvbEzwWThB8HQJ5cEsWNlQKxiddy77HfHPivG04abKg"}]},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"directories":{},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nfsx-ms45_0.4.0_1783345229398_0.042383675121183684"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-06T13:40:29.278Z","0.4.0":"2026-07-06T13:40:29.542Z","modified":"2026-07-06T13:40:29.774Z"},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"description":"MS45 DME flashing helpers — offline CRC-32/MPEG-2 checksum verify/rewrite, RSA-1024 firmware signing, security-access payload builder, and (Stage 2+) SGBD-driven flash session for BMW MS45.0 / MS45.1 engine control units.","homepage":"https://github.com/emdzej/nfsx#readme","repository":{"type":"git","url":"git+https://github.com/emdzej/nfsx.git","directory":"packages/nfsx-ms45"},"bugs":{"url":"https://github.com/emdzej/nfsx/issues"},"readme":"# @emdzej/nfsx-ms45\n\nMS45 DME flashing helpers for BMW E46 (MS45.0) and E60/E65 (MS45.1)\nengine control units.\n\n**Stage 1 (this release)** — offline BIN helpers:\n\n- CRC-32/MPEG-2 verification + recompute for the parameter blob and\n  the dual program checksums that span external flash + MPC flash.\n- RSA-1024 firmware signing for the parameter and program blobs,\n  with MD5 hashing over the segments named in each blob's header.\n- Security-access payload builder (MD5-then-RSA over\n  `userID + serialNumber + seed`) — the wire-side blob EDIABAS's\n  `authentisierung_start` job expects.\n- Region tables + segment-header parsers.\n\n**Stage 2 (next)** — `Ms45Session`: SGBD-driven identify / read / erase\n/ write / verify orchestration over `EmbeddedEdiabas`.\n\n## Attribution\n\nThis package is a clean-room reimplementation of the wire-level\nbehavior and firmware layout documented by:\n\n- **[terraphantm/MS45-Flasher](https://github.com/terraphantm/MS45-Flasher)** — the\n  original open-source MS45 flasher (GPL-3.0). The RSA moduli and\n  private exponents shipped in this package were first published in\n  that project's `Checksums_Signatures.cs`.\n- **hassmaschine** — DME disassembly and protocol reverse-engineering.\n- **[bimmerlabs](https://bimmerlabs.com)** — ongoing MS45 tuning work.\n\nNo source code was copied. Everything here was written from scratch\nagainst the wire-level facts (job names, byte layouts, CRC polynomial,\naddress maps, RSA constants) that the referenced projects made public.\n\n## License\n\nPolyForm Noncommercial 1.0.0 — inherited from the parent monorepo.\nSee the repository root LICENSE for terms.\n\n## Safety\n\nEvery write path in this package can brick an MS45 DME. Read the\ntop-level `docs/first-flash-runbook.md` before running anything that\ntouches an ECU.\n","readmeFilename":"README.md","_rev":"1-f1c0d399b60bd9ffc22b497929762f23"}