À propos du projet

hwid est une bibliothèque Python légère et un outil en ligne de commande conçu pour extraire l'identifiant matériel (hwid) d'un ordinateur sous Windows, Linux et macOS. Il utilise la détection native du système pour récupérer l'identifiant matériel sans nécessiter de dépendances externes à l'exécution. Le projet a été créé par l'auteur pour résoudre un problème pratique : licencier des applications de bureau sans les distribuer à des utilisateurs non autorisés. En utilisant l'identifiant matériel de l'ordinateur comme identifiant unique, les développeurs peuvent mettre en œuvre des systèmes de licence qui lient les logiciels à des machines spécifiques. L'installation est simple via pip (`pip install hwid`), Homebrew sur macOS/Linux, ou Scoop sur Windows. Une fois installée, la bibliothèque peut être utilisée comme module Python en important `hwid` et en appelant `hwid.get_hwid()`, ou comme outil CLI en exécutant `hwid` pour afficher l'identifiant matériel, `hwid version` pour vérifier la version du paquet, ou `hwid info` pour afficher les informations de version, Python et plateforme. Les fonctionnalités clés incluent le support multiplateforme avec détection native du système, zéro dépendance externe à l'exécution, et une double utilisation comme module et outil CLI. Le projet met l'accent sur la qualité d'ingénierie avec des annotations de type complètes vérifiées par plusieurs outils (mypy, basedpyright, ty, pyrefly, zuban), un linting et un formatage complets avec ruff, le respect des contraintes d'architecture avec import-linter, des tests pytest avec rapport de couverture, une documentation Sphinx avec déploiement GitHub Pages, et une CI/CD automatisée pour tester, construire et publier sur plusieurs plateformes. Les mesures de sécurité incluent CodeQL, OpenSSF Scorecard, la revue des dépendances, la détection de secrets avec gitleaks, l'audit des dépendances avec pip-audit, l'analyse statique des actions GitHub avec zizmor, et un SBOM CycloneDX attaché à chaque version. Le projet utilise également uv pour la gestion des dépendances et hatch pour la construction. L'auteur inclut un avertissement important : hwid ne doit pas être utilisé comme seul composant d'un système de licence. Pour les architectures client-serveur, le hwid chiffré peut être envoyé à un serveur pour validation, bien que les requêtes HTTP puissent être interceptées avec des outils comme mitmproxy. Pour la licence locale, le hwid peut être chiffré et stocké dans un fichier, avec des outils d'obfuscation de code comme pyarmor recommandés pour rendre la rétro-ingénierie plus difficile. Le projet est distribué sous licence MIT et n'est pas destiné à des fins malveillantes.