Programmation  » Effacer une clé usb dès insertion (linux)
Catégorie :  
     
Effacer une clé usb dès insertion (linux)
Publié le 01/06/2010 @ 16:08:41,
Par Coyote
Bonjour à tous,

Nous allons recevoir pour un de nos clients, +/- 10.000 clés usb dont certaines sont contaminées par un virus (made in china).

opération :
insertion de la clé
effacer le contenu
retirer la clé

Je cherche donc, pour automatiser un peu la chose, une petite application qui, dès insertion de cette clé, efface le contenu physiquement (pas dans la corbeille).

environnement : Linux Ubuntu

Merci d'avance.
Autant que possible, la gravité doit être le pire ennemi du Coyote.
     
Effacer une clé usb dès insertion (linux)
Publié le 01/06/2010 @ 16:19:32,
Par Jean-Christophe
ah, flute, je viens de lire que c'était en linux :ohwell:
Sorry, je sais pas aider alors :sad:
     
Effacer une clé usb dès insertion (linux)
Publié le 01/06/2010 @ 17:29:45,
Par philfr
DBUS est ton ami, c'est via ce mécanisme que les desktops font un automount de la clé.

Tu dois faire pareil, ou remplacer l'automount par un mkfs.vfat de la partition 1 de la clé.
     
Effacer une clé usb dès insertion (linux)
Publié le 01/06/2010 @ 18:37:40,
Par Coyote
merci pour vos réponses.

Philfr> je ne maitrise pas vraiment DBUS, une piste ou un lien ?
Autant que possible, la gravité doit être le pire ennemi du Coyote.
     
Effacer une clé usb dès insertion (linux)
Publié le 01/06/2010 @ 21:36:43,
Par philfr
Udev est une couche un peu plus bas niveau peut-être plus appropriée finalement.
Un peu de lecture:
http://www.reactivated.net/writing_udev_rules.html

En particulier le paragraphe "Running external programs upon certain events" devrait te donner la solution à ton problème.
     
Effacer une clé usb dès insertion (linux)
Publié le 04/06/2010 @ 19:04:12,
Par philfr
Bon, j'ai fait un truc pour toi en python qui utilise dbus:

#!/usr/bin/python
import gtk
import dbus
import os

from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
dbus_loop = DBusGMainLoop()


def device_added1(truc):
pos=truc.find("storage_serial_")
if pos>=0:
print "Added "+truc[pos+15:]
os.system("ls -l /dev/disk/by-path/")
#print 'Device %s was added'%truc

def device_removed1(truc):
pos=truc.find("storage_serial_")
if pos>=0:
print "Removed "+truc[pos+15:]

bus = dbus.SystemBus(mainloop=dbus_loop)
hal_manager_obj = bus.get_object ( 'org.freedesktop.Hal', '/org/freedesktop/Hal/Manager')
hal_manager_iface = dbus.Interface(hal_manager_obj, "org.freedesktop.Hal.Manager")

devices = hal_manager_iface.GetAllDevices ()

#for d in devices:
# print 'Found device %s'%d

bus.add_signal_receiver (device_added1, 'DeviceAdded',
'org.freedesktop.Hal.Manager',
'org.freedesktop.Hal',
'/org/freedesktop/Hal/Manager')

bus.add_signal_receiver (device_removed1, 'DeviceRemoved',
'org.freedesktop.Hal.Manager',
'org.freedesktop.Hal',
'/org/freedesktop/Hal/Manager')

gtk.main()


Sauve ce contenu dans un fichier monitordbus.py et lance-le avec "python monitordbus.py".
Tu dois avoir installé sur ta bécane (sans doute par défaut sous ubuntu) python-dbus et python-gtk2.

Quand tu insères ou retires un stick ou un disque externe, tu auras un message qui affiche une info, ici j'insère/retire un stick puis un disque:

phil@shuttle:/mnt/bigdisk/home/phil$ python testdbus.py
Added Memorex_TD_Classic_003B_07710C1702FF_0_0
Removed Memorex_TD_Classic_003B_07710C1702FF_0_0
Added HITACHI__DK23BA_10________________________________0_0
Removed HITACHI__DK23BA_10________________________________0_0
^CTraceback (most recent call last):
File "testdbus.py", line 40, in <module>
gtk.main()
KeyboardInterrupt
phil@shuttle:/mnt/bigdisk/home/phil$


Quand le stick est inséré et reconnu, va voir dans /dev/disk/by-path le nom que porte ton device quand il est inséré dans ce slot USB en particulier.

shuttle:/mnt/bigdisk/home/phil# ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 4 jun 17:24 pci-0000:00:1a.7-usb-0:2:1.0-scsi-0:0:0:0 -> ../../sdc
lrwxrwxrwx 1 root root 9 4 jun 17:24 pci-0000:00:1a.7-usb-0:2:1.0-scsi-0:0:0:1 -> ../../sdd
lrwxrwxrwx 1 root root 9 4 jun 18:47 pci-0000:00:1a.7-usb-0:3:1.0-scsi-0:0:0:0 -> ../../sdf
lrwxrwxrwx 1 root root 10 4 jun 18:47 pci-0000:00:1a.7-usb-0:3:1.0-scsi-0:0:0:0-part1 -> ../../sdf1
lrwxrwxrwx 1 root root 9 4 jun 18:12 pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0 -> ../../sdb
lrwxrwxrwx 1 root root 9 4 jun 18:12 pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:1 -> ../../sde
lrwxrwxrwx 1 root root 9 4 jun 17:24 pci-0000:00:1f.2-scsi-1:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 4 jun 17:24 pci-0000:00:1f.2-scsi-1:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 4 jun 17:24 pci-0000:00:1f.2-scsi-1:0:0:0-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 4 jun 17:24 pci-0000:00:1f.2-scsi-1:0:0:0-part3 -> ../../sda3
lrwxrwxrwx 1 root root 9 4 jun 17:24 pci-0000:00:1f.5-scsi-1:0:0:0 -> ../../sr0
shuttle:/mnt/bigdisk/home/phil#


Chez moi, c'est /dev/disk/by-path/pci-0000:00:1a.7-usb-0:3:1.0-scsi-0:0:0:0 le disque, et /dev/disk/by-path/pci-0000:00:1a.7-usb-0:3:1.0-scsi-0:0:0:0-part1 la partition sur ce disque. Ça c'est pour que ton programme ne formatte que la clé qui est insérée dans ce slot là et pas un autre.
Attention, le *-part1 n'arrive que plusieurs secondes après la détection du device (recherche des partitions).

Alors:
- soit tu veux juste reformater la partition existante sur le stick, alors dans le code, tu remplaces le os.system("ls -l ...") par os.system("mkfs.vfat /dev/...-part1")
- soit tu veux écraser la table de partition aussi (on ne sait jamais que quelqu'un boote avec sa clé insérée et qu'il y a un virus de secteur boot), alors tu fais le repartitionnement d'un clé à la main, et tu utilises la commande sfdisk dans ton os.system() pour toutes les repartitionner pareil avant de reformater.

Tu peux aussi rajouter un effacement "dur" avec un dd /dev/zero avant toute autre manip.

J'espère que cela te fait avancer... :wink:
     
Effacer une clé usb dès insertion (linux)
Publié le 07/06/2010 @ 11:26:09,
Par Coyote
Philfr, un grand merci, le nettoyage a commencer ce matin et ton script marche nickel.
Autant que possible, la gravité doit être le pire ennemi du Coyote.
     
Effacer une clé usb dès insertion (linux)
Publié le 07/06/2010 @ 13:18:16,
Par Symon
Clap Clap Clap Clap moi je dis!
Ronald un jour, Ronald toujours!
Le tabac c'est tabou, en viendrais-je à bout ?
Twitter:  Waiting for... http://t.co/HEb9svij
     
Effacer une clé usb dès insertion (linux)
Publié le 07/06/2010 @ 15:40:05,
Par philfr
Philfr, un grand merci, le nettoyage a commencer ce matin et ton script marche nickel.



Et tu écrases le mbr ou tu fais juste un reformat de la partition ?
     
Effacer une clé usb dès insertion (linux)
Publié le 08/06/2010 @ 09:21:08,
Par Coyote
je fait un reformat pour supprimer Conficker.X
Nous en sommes déjà à 4000 clés traitées.
l'opération prend +/- 30sec par clé.
Autant que possible, la gravité doit être le pire ennemi du Coyote.
Répondre  - Catégorie :  
Informaticien.be  - © 2002-2020 Akretio SPRL  - Generated via Kelare
The Akretio Network: Akretio  - Freedelity  - KelCommerce  - Votre publicité sur informaticien.be ?