Poster une réponse à un sujet: Effacer une clé usb dès insertion (linux)
Attention, ce sujet est un sujet ancien (5310 jours sans réponse)
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é.
Nous en sommes déjà à 4000 clés traitées.
l'opération prend +/- 30sec par clé.
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 ?
Symon
Clap Clap Clap Clap moi je dis!
Coyote
Philfr, un grand merci, le nettoyage a commencer ce matin et ton script marche nickel.
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...
#!/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...
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.
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.
Coyote
merci pour vos réponses.
Philfr> je ne maitrise pas vraiment DBUS, une piste ou un lien ?
Philfr> je ne maitrise pas vraiment DBUS, une piste ou un lien ?
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é.
Tu dois faire pareil, ou remplacer l'automount par un mkfs.vfat de la partition 1 de la clé.
Jean-Christophe
ah, flute, je viens de lire que c'était en linux
Sorry, je sais pas aider alors
Sorry, je sais pas aider alors
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.
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.