Kome trebaju drajveri!?

Svakih godinu dana dođe to neko vrijeme kada se kupuju pokloni. Pa pošto sam ja nekakav geek obično ljudi misle da ne mogu puno pogriješiti ako mi poklone kakav gadget. Tako sam neki dan dobio na poklon ovu kerefeku:

U pitanju je neko kino koje bi trebalo da zaključa ekran kada se udaljim od računara i opet ga otključa kada se približim. Sastoji se od minijaturnog USB uređaja (prijemnik) i privjeska za ključeve (odašiljač). Na pratećem CDu naravno dođe samo jedan .exe fajl.

Prva stvar koja mi je pala na pamet je naravno da utaknem taj USB komadić, i pošto se naravno ništa nije desilo, otkucao sam dmesg | tail:

usb 2-2: USB disconnect, address 9 usb 1-2: new full speed USB device using uhci_hcd and address 7 usb 1-2: New USB device found, idVendor=1915, idProduct=001f usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-2: Product: screen keeper 1.0A usb 1-2: Manufacturer: SEMI-LINK usb 1-2: SerialNumber: (cenzurisano) generic-usb 0003:1915:001F.0009: hiddev0,hidraw3: USB HID v1.11 Device [SEMI-LINK screen keeper 1.0A] on usb-0000:00:1d.0-2/input0
Ovo “USB HID v1.11 Device” su loše vijesti! USB Human Interface Device (HID) standard specificira više klasa uređaja koje budu označene sa Keyboard, Mouse, Joystick, Keypad itd. a ako kernel ne prepozna da uređaj pripada nekoj od tih klasa onda stavi samo Device.

Ništa zato. Vidim da se spominje hiddev0 pa ću zatim otkucati:

cat /dev/usb/hiddev0

Hmm… kada je privjesak uključen i u dometu, svakih par sekundi se na ekranu ispiše neko smeće (i to uvijek isto smeće… nadao sam se da će mi dati preciznu udaljenost u centimetrima hehe) a kada je van dometa ne ispisuje se ništa. Edit: kada sam malo pažljivije pogledao to smeće je onaj serijski broj iznad! (SerialNumber)

Preostaje da otkucamo malo perla :slight_smile:

[code]#!/usr/bin/perl

$timeoutsecs = 5;
$debug = 0;

use IO::Select;

start:

while (!(-e “/dev/usb/hiddev0”)) {
print “Device not found. Waiting.\n” if ($debug);
sleep 10;
}

print “Opening device\n” if ($debug);
sysopen (HID, “/dev/usb/hiddev0”, O_RDONLY | O_NONBLOCK) or die “Opening device failed”;
binmode HID;
$locked = 0;

$sel = IO::Select->new(fileno(HID));

while (-e “/dev/usb/hiddev0”) {

if (!($sel->can_read(5))) {
	if ($locked == 0) {
		print "Device out of range, locking screen.\n" if ($debug);
		`xscreensaver-command -activate`;
		$locked = 1;
	}
	
} else {
	$cnt = sysread HID, $evt, 8*24;
	if (defined($cnt)) {
		if ($locked == 1) {
			print "Device in range, unlocking screen.\n" if ($debug);
			`xscreensaver-command -deactivate`;
			$locked = 0;
		}
		
		print "DEBUG: " if ($debug);
		for ($i=0; $i<length($evt); $i++) {
			print ord(substr($evt, $i, 1)).", " if ($debug);
		}
		print "\n" if ($debug);
	}
}

}
close HID;

goto start;[/code]
Sljedeći korak bi bio da se poigramo sa udev-om kako bih bio siguran da dobijam pravi /dev/* fajl. Dalje ova skriptica ne vrši nikakvu kontrolu tog heksadecimalnog smeća odnosno serijskog broja uređaja. Dao bi se napraviti neki GUI da se registruje serijski broj. Takođe nema načina da se logiram (ukucam šifru u screensaver), za to bi trebalo vjerovatno napisati PAM modul. Ali ovo mi je za sada dovoljno :slight_smile:

[quote=vedran]
[…] Dao bi se napraviti neki GUI da se registruje serijski broj […] [/quote]

Creating a GUI using Visual Basic to… register serial number? :smiley: A jes’ se neko osevapio s tim poklonom :smiley:

to hakeru :slight_smile:
objavi negdje … :slight_smile:

Mislim da se na KDE moglo nesto slicno uraditi sa Bluetooth-om i sa telefonom, znam da sam to ja koristio, kada sam u blizini laptopa sa telefonom otkljuca se, a kada odem, zakljuca se ekran! :slight_smile:

EDIT:
Ima :slight_smile: http://extragear.kde.org/apps/kdebluetooth/
KBlueLock, to lock your screen, when your mobile phone is out of scope and to unlock when it’s back again

[quote=nedim.bfo]Mislim da se na KDE moglo nesto slicno uraditi sa Bluetooth-om i sa telefonom, znam da sam to ja koristio, kada sam u blizini laptopa sa telefonom otkljuca se, a kada odem, zakljuca se ekran! :slight_smile:

EDIT:
Ima :slight_smile: http://extragear.kde.org/apps/kdebluetooth/
KBlueLock, to lock your screen, when your mobile phone is out of scope and to unlock when it’s back again[/quote]

Tacno. Koristio sam i ja.

Probao sam to ali 1) troši se baterija 2) onda me bilo ko može pratiti (bilo je i nekih virusa, exploita i sl.)