@siteit_solutions/pc-fingerprinter
v1.0.6
Published
Generate and verify signed hardware fingerprints for custom PC builds.
Maintainers
Readme
✨ Features
- 🔑 Cryptographic Signatures — fingerprints are signed with your private key, verified using your public key.
- 🖥 Hardware Snapshot — Captures stable machine info: CPU, motherboard, BIOS, disk serials, MAC addresses, RAM size, OS.
- 📑 Warranty Metadata — Includes buyer name, purchase date, warranty period & expiry.
- 🧩 Parts List Support — Include
parts.jsonwith component serials, if available. - 🗂 Persistent Storage — Defaults to system paths (
%PROGRAMDATA%,/Library/Application Support,/var/lib). - ⚡ Simple CLI — Commands:
create,show,verify. - 🌍 Cross Platform — Works on Windows, macOS, Linux.
🚀 Quick Start
1) Install globally
npm i -g @siteit_solutions/pc-fingerprinter
pc-fingerprinter --help2) Generate keys
# Private key (keep safe, OFFLINE)
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:4096
# Public key (for verification)
openssl rsa -pubout -in private.pem -out public.pem3) Create a fingerprint (on client system)
pc-fingerprinter create --buyer "Jane Doe" --purchase 2025-09-18 --warrantyDays 90 --partsFile ./parts.example.json --privKey /secure/offline/private.pem4) Show / Verify
pc-fingerprinter show
pc-fingerprinter verify --pubKey /path/to/public.pemUse --json with show or verify for machine-readable output.
🧰 CLI Usage (help)
Usage:
pc-fingerprinter <command> [options]
Commands:
create Create and sign a fingerprint
show Show fingerprint file contents (no signature verification)
verify Verify signature and compare current hardware
Global Options:
--help Show help
--version Show version
--json Print machine‑readable JSON output (show/verify)
create options:
--buyer <string> Buyer full name (required)
--purchase <YYYY-MM-DD> Purchase date (required)
--warrantyDays <number> Warranty length in days (default: 90)
--partsFile <path> Optional JSON file with parts list/serials
--privKey <path> Path to RSA private key PEM (required)
--out <path> Output path (default: system fingerprint path)
show options:
--path <path> Path to fingerprint file (default: system fingerprint path)
--json Print JSON‑only
verify options:
--path <path> Path to fingerprint file (default: system fingerprint path)
--pubKey <path> Public key PEM to use (default: bundled or via $PC_FP_PUBLIC_KEY)
--json Print JSON summary instead of human output📂 Default Paths
| OS | Fingerprint File Location |
| ------- | ------------------------------------------------------------- |
| Windows | C:\ProgramData\pcfingerprint\fingerprint.json |
| macOS | /Library/Application Support/pcfingerprint/fingerprint.json |
| Linux | /var/lib/pcfingerprint/fingerprint.json |
Default public key location (if --pubKey not provided):
<package_root>/assets/public.pem
or override via environment variable: PC_FP_PUBLIC_KEY=/path/to/public.pem🔒 Security & Best Practices
- The fingerprint file is tamper-evident, not undeletable. Users with admin/root can still remove it.
- Always keep your private key offline. Distribute only your public key.
- Make sure parts.json (if used) has accurate serials.
- Use
--jsonmode for scripts or remote verification.
🤝 Contributing
- Open an issue describing an idea or bug.
- Fork the repo & create a feature branch.
- Make changes, run tests/lint, open a pull request.
📜 License
@siteit_solutions/pc-fingerprinter is MIT licensed.
