6
votes

Mot de passe de dossier Windows

J'ai envisagé de mettre en œuvre le programme suivant, juste par curiosité et expérience d'apprentissage. Je souhaite écrire un programme de mot de passe protégeant un dossier, vous ne pouvez donc ouvrir le dossier qu'après avoir entré le mot de passe correct. Je sais que cela est spécifique au système d'exploitation, alors laissez-le être Windows . Je suppose que cela n'est possible que dans c ++ , mais si cela est aussi possible dans un fichier clair c # ou java (que je doute), alors s'il vous plaît moi.

Quelqu'un pourrait-il me diriger dans la bonne direction? Merci d'avance!

Cordialement, Petar


6 commentaires

Voulez-vous dire que votre programme sera un service et que toutes les actions utilisateur concernant les dossiers doivent faire via votre service? Cela semble difficile ...


@Armen Tsirunyan - Oui, on peut le dire. Certains dossiers seront protégés par un mot de passe, certains non.


Voici une question délicate (et je pense que la solution est un pilote de cryptage): Alice et Bob connectés à une machine avec un dossier crypté F. Alice connaît le mot de passe de F et Bob ne connaît pas le mot de passe pour F. Bob tente d'entrer dans Le dossier de «bizarre» (cmd.exe ou sa propre application) et trouve des fichiers cryptés, comme ils le devraient l'être. Alice insère le mot de passe pour F, de sorte que vous déchiffrez les fichiers. Maintenant, comment déchiffrez-vous les fichiers et assurez-vous que Bob ne sera pas capable de les toucher? D'une manière ou d'une autre, devons s'assurer que les utilisateurs qui n'ont pas accès à F ne pourront pas y accéder!


sonne comme un pilote de système de fichiers. OSR.com/fddk.html


@Petar Minchev: Jetez un coup d'œil à ceci: Stackoverflow.com/questions/ 1109564 / Intercept-Windows-Open-F Île La réponse acceptée s'applique également aux dossiers.


Je pense que le lien de Aoi Karasu fournit le meilleur concept pour réaliser votre programme.


3 Réponses :


0
votes

Une idée du sommet de ma tête pour une mise en œuvre "simple".

L'idée est d'utiliser l'authentification Windows pour créer de tels dossiers protégés.

Votre application peut générer un utilisateur pour chaque dossier crypté F. Donc, pour le dossier, vous générerez UI utilisateur avec le mot de passe PI.

En outre, pour chaque application, votre application devra s'assurer que seule l'interface utilisateur y a accès et que personne ne peut y accéder. En outre, chiffrer les fichiers à l'aide du cryptage de la fenêtre dans NTFS.SYS (il doit y avoir une fonction simple pour chiffrer les fichiers dans Windows API, vous ne vous souvenez pas de son nom).

Maintenant, si quelqu'un veut accéder à fi, vous contemplerez une MessageBox demandant le mot de passe, si elles sont correctes (vous pouvez utiliser Accesscheck ()), vous pouvez ouvrir l'explorateur avec des informations d'identification de l'interface utilisateur à l'utilisateur. (Dans ce cas, vous devrez les supprimer à un moment donné, il pourrait donc être délicat).


0 commentaires

3
votes

Si vous souhaitez une protection anti-balles de vos fichiers, la protection de l'accès au dossier n'est pas suffisante, vous devez les chiffrer et il y a des conteneurs sécurisés et des encrences de système de fichiers sur le marché.

si elle N'a pas besoin d'être haute sécurité, vous pouvez vous connecter à Windows, je suppose. Vous aurez particulièrement besoin de connecter particulièrement les fonctions de liste des répertoires, telles que FindFirstFile, FindNextFile et OpenFile également (et dans leurs dérivés comme FindFirstFilew) et peut-être d'autres.

Vous faites cela en redirige des appels à Kernel32. DLL à vos fonctions personnalisées, voir un exemple de code ci-dessous sur lequel j'ai trouvé sur Internet: xxx

Ce que vous voulez faire peut également être fait avec Java (JNI) ou C # (Pinvoke), mais ce serait un vrai détour. J'utiliserais quelque chose qui peut être compilé au code natif.

EDIT: Aoi Karasu a fourni un lien vers un message qui suggère d'utiliser un FileSystemFilterdriver , qui est probablement le meilleur concept pour réaliser l'application en question.


7 commentaires

Quel est-ce que Kinda Hook utiliseriez-vous pour cela? Je veux dire quel crochet vous permet de surveiller des appels d'API spécifiques?


Vous ne les surveillez pas, vous "pliez" les appels via la manipulation de la mémoire.


Êtes-vous sûr que FindNextFile et FindFirstFile sont utilisés par Explorer? Et même si, que se passe-t-il une fois que vous avez déchiffré? Comment empêchez-vous les autres utilisateurs du système d'accéder aux fichiers déchiffrés?


@Falcon: Je ne comprendrais peut-être pas cela bien, alors corrigez-moi si je me trompe, je ne serais-je pas "pliant" les appels de mon espace de processus seulement? Je veux dire pourquoi cela aurait-il un effet sur les appels provenant d'autres processus où l'adresse de la fonction de noyau est intacte.


@Adham Vous avez raison, mais vous accrochez habituellement ce code dans tout processus de course à pied. Ce n'est pas un problème si vous exécutez un programme avec des privilèges élevés sur la machine cible.


@ T.c. Lisez mon message à fond. Si vous voulez une bonne protection, utilisez un conteneur crypto ou un système de fichiers crypté. Quelqu'un avec accès aux données brutes peut toujours accéder à des données non protégées. Sur un système multi-utilisateurs, une personne qui peut lire votre mémoire sera toujours en mesure de lire le contenu de vos fichiers déchiffrés de toute façon.


Pour clarifier la manière dont le second cas est non-balles, c'est: J'ai écrit une application sérieuse qui présente des modifications. (Raison: les gens qui écrivent un tel code de sécurité ne sont pas très bons codeurs. Leur code s'est écrasé, mais bien sûr, c'était dans notre processus.)



0
votes

Windows (NTFS) prend en charge "points de jonction". Ce sont des entrées dans le système de fichiers qui indiquent Windows d'exécuter un peu de code. Un type commun de point de jonction est la liste dure dans un autre fichier ou dossier. Cependant, vous pouvez ajouter d'autres types avec des pilotes correspondants.

Dans votre cas, vos dossiers cryptés pourraient vraiment être des points de jonction qui fonctionnent comme des hardlinks sécurisés. YO ne résolvez que le HardLink pour les utilisateurs autorisés. Comme cela fonctionne au niveau du noyau NTFS, vous n'avez pas besoin de vous inquiéter des millions de fonctions de fichier différentes existant dans les différentes couches de Windows.


0 commentaires