enigme137
Messages postés1Date d'inscriptionlundi 18 janvier 2010StatutMembreDernière intervention18 janvier 2011
-
18 janv. 2011 à 09:31
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 2022
-
19 janv. 2011 à 16:08
Salut, je suis sur le point de développer une application de contrôle USB dont le but est de vérifier le numéro de série d'un flash disque, et effectuer l'éjection du périphérique si le flash disque n'est pas inscrit dans la base de données. La majeur partie est déjà faite, cependant au moment de l'éjection ça prend dans les environs de 8 à 10 secondes, ce qui permet à l'intrus de pouvoir utiliser le périphérique pendant ce temps là. Ma solution est de bloquer le clavier et la souris pendant ce temps là, mais j'aimerai bien avoir une autre solution pour éliminer ce temps. une partie de mon code est la suivante :
if Msg.wParam = $8000 then
if DEV_BROADCAST_HDR(Msg.LParam)^.dbch_devicetype=2 then
if DEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_flags=0 then
begin
//Ajout du nouveau volume dans la liste
Str(Ln(DEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask)/Ln(2)+Ord('A'):2:0,LettreVolume);
LettreVolume:=Char(StrToInt(LettreVolume));
...............//partie du vérification du numéro de série
eject(LettreVolume);
merci d'avance.
Veuillez accepter mes chaleureuses salutations
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 19 janv. 2011 à 10:42
Ben en même temps, c'est normal, lorsque tu éjectes le périphérique Windows va envoyer un message à toutes les applications les notifiant qu'un périphérique va être enlevé sous peu, et les applications doivent y répondre (si une application ne répond pas, Windows va attendre puis considérer que c'est bon, et si une application dit non Windows va te dire "ce périphérique ne peut pas être enlevé maintenant"). Une fois que ça c'est fait, Windows va compléter toutes les écritures décalées pour ce périphérique (en gros, c'est des opérations disque dur sur le périphérique qui sont reportées à plus tard pour diminuer la charge sur le système), et plein d'autres trucs. Même pour une petite clef USB de rien du tout. Donc oui, ça prend du temps d'éjecter un périphérique USB, et on ne peut pas y faire grand chose. On peut probablement s'arranger pour se débarrasser de tout ça mais à mon avis ça risque de devenir une vraie usine à gaz, donc peut-être faut-il réfléchir à ton problème et te demander si il n'y a pas quelque chose de mieux à faire pour empêcher un intrus de faire ce qu'il veut sans avoir à trifouiller dans le système.
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 202214 19 janv. 2011 à 16:08
Salut bacterius c'est bien là que la detection est le plus longue.
Après il y a d'autres solutions :
- interdire l'installation de nouveaux périphériques
- désactiver le port usb et l'activer au besoin dans la base de registre par programme
- mettre des droits utilisateur, administrateur
- bloquer les fichiers Usbstor.inf et Usbstor.pnf
Mais dans tous les cas si un fichier a été ouvert avant la demande d'éjection... echec ejection...
@+yanb