6
votes

Comment puis-je créer un programme qui ne fonctionne que lorsque j'insère le lecteur USB?

Permettez-moi d'expliquer ce que c'est comme. Je souhaite un programme installé sur un PC, mais vous ne pouvez pas l'exécuter à moins que vous insériez un lecteur USB où une partie du programme est stockée. Donc, le point est que le programme est inutile si vous n'avez pas à la fois PC et clé USB. Depuis que je veux qu'il soit dirigé dans Windows, quel genre de langage dois-je utiliser à distance de .NET et C #?

Puis-je faire avec python?


3 commentaires

fsf.org/bulletin/2007/fall/antatifatures


Dans quelle mesure êtes-vous inquiet du code supplémentaire sur une clé USB? Parce qu'il n'ya presque aucun moyen de dire la différence entre le code étant sur un lecteur USB et le code étant sur un endroit spécifique sur un disque dur interne. Ou sur une part de réseau. C'est tout simplement des fichiers.


C'est tout simplement tout le fichier mais ce que je veux, c'est que le programme ne doit pas être accessible s'il n'ya pas de correspondance USB et PC.


5 Réponses :


2
votes

Vous pouvez utiliser l'ensemble du programme sur un ordinateur et lui permettre de ne démarrer que lorsqu'un lecteur USB spécifique est inséré.

Par exemple, vous pouvez lire la clé série du lecteur (chaque clé USB est unique).

Pour plus d'informations sur la façon de faire, j'ai un look ici .


4 commentaires

C'est assez facile pour simuler sur des machines virtualisées et pas trop difficile pour simplement pirater de tout ce que vous laissez installé de toute façon.


Toute solution va être assez facile à fausse une fois que vous entrez dans la terre des machines virtuelles.


Peut-être que la clé USB va être physiquement détenue par quelqu'un afin que le programme ne fonctionne que lorsque cette personne de confiance est présente? Nous ne savons pas !! Est-ce que l'OP s'il vous plaît nous éclairer? Quelle est la vraie question ici ??? (D'accord, je vais me calmer maintenant)


Ceci est légèrement plus difficile à simuler que la solution de simplement conserver une partie du programme sur une USB. Une combinaison de deux irait bien, mais comme Jonathan disait, les noeuds vont vraiment être difficiles à faux. Pour obtenir une solution sécurisée, vous auriez besoin d'un matériel spécialisé sur la clé USB que j'imagine.



1
votes

Si vous pouvez vivre avec le démarrage du programme après avoir inséré le lecteur USB, c'est assez facile. Vous pouvez mettre le code qui fait en réalité ce que le programme est censé faire dans un module séparé, ce que la partie de votre programme exécutée sur les importations de PC (par exemple avec le module IMP ) puis commence la partie principale (qui a été importée à partir du lecteur USB).


3 commentaires

Qu'est-ce qu'il faut cesser de copier le contenu du bâton USB? Vous pouvez conserver le chemin de la même manière trivialement (E.G. Carte Network Drive, ajoutez une partition de disque supplémentaire pour le faire garder la lettre de lecteur)


Le problème ne fait pas copier le contenu. Il peut être copié mais ne sera pas en mesure d'exécuter ou d'obtenir les données du programme s'ils ne disposent que d'un lecteur USB ou d'un PC.


Le programme peut être exécuté après l'inséré de lecteur USB. Cela sera-t-il aussi possible avec Java?



4
votes

Si vous essayez de faire cela pour la protection de la copie ou la gestion des licences, il existe des solutions commerciales pour cela très difficiles (mais toujours pas impossibles) à battre. Pour que vous puissiez développer quelque chose qui est robuste finira de vous coûter plus que cela ne coûterait que la licence de PACE ou de Aladdin ou de l'un de leurs concurrents.


0 commentaires

4
votes

Les solutions commerciales ont souvent des dispositifs (USB) avec une microchip pouvant effectuer une cryptographie clés en public. Cette règle ne fait pas semblant du périphérique.

exemple: Le programme génère un code de défi, le chiffre avec clé publique -> le dispositif décrypte avec sa clé secrète (stockée dans la micropuce) et donne le code de défi pour la vérification.

Un attaquant ne peut attaquer que la communication entre programme et appareil ou directement au programme. Cela a été l'obfuscation de code, le déchiffrement de code à la demande, ... entre en jeu. Très compliqué :) et aucun système n'est sûr à 100%.


0 commentaires

2
votes

Pour revenir à la question de l'OP, vous voudrez certainement une dongle de nous ( Wibu-Systems ), aladdin (maintenant une partie de SafeNet), Keylok ou un produit similaire. Chacun a des avantages et des inconvénients. Notre système, par exemple, n'a jamais été fissuré et a des protections contre les violations de la licence sur VMS.

Les prix varient.

Je connais notre produit et que SafeNet vous permettra d'écrire votre application en C ++, C # et probablement Python, car ils cryptent votre binaire final (principalement ils ne se soucient pas de la création). Certaines recherches sont nécessaires; Tous les fournisseurs que j'ai énuméré ont des SDK gratuits qui vous fournissent un périphérique matériel actuel et des outils dont vous avez besoin pour tester votre application.

Pour rouler le vôtre, ou pour vérifier le SN d'un lecteur flash USB, sera presque certainement problématique. Les SNS sont faciles à craquer et à faux. De bons appareils de protection logicielle pèvent beaucoup de réflexion, de temps de développement et de technologie dans un gadget simple apparaissant. Vous pouvez également écrire votre propre bios ou construire votre propre carte mère aussi, mais pourquoi déranger?


0 commentaires