Start spycam on xscreensaver lock
Par Mathieu le samedi 12 octobre 2013, 19:24 - Hacks - Lien permanent
Ever annoyed by those silly people trying to crack by hand your laptop password while your are away ? Never wanted to know who is acting in such kiddy behavior ?
Here is how to set up Motion to start when Xscreensaver is on, and to stop when it is off.
Requirements
Motion (from repositories) (to capture from webcam while the screen is locked)
Xscreensaver (from repositories) (not gnome-screensaver, the original xscreensaver)
build-essentials (from repositories) (to compile the watchdog)
Install the requirements according to your distribution (Debian way : sudo apt-get install build-essentials motion xscreensaver
).
How it works ?
Xscreensaver has a very handy utility : xscreensaver-command
. You can lock and unlock the screen thanks to this tool, but you can also “watch” for status changes !
All we have to do is to write a daemon that will fork to start xscreesaver-command
, and wait for its stdout
result from a pipe. If it locks, we will fork to start Motion, and kill that child as soon as the screen is unlocked.
The environment
Create a directory named “motion
” in /home
to store the captured pictures from webcam.
All-in-one command line : mkdir /home/motion
The daemon
Compile the attached code (at the end of this article), and place the result in /usr/local/bin/xscreensaver_watchdog
, and make it executable.
All-in-one command line : gcc -O3 xscreensaver_watchdog.c -o xscreensaver_watchdog && mv xcreensaver_watchdog /usr/local/bin && chmod +x /usr/local/bin/xscreensaver_watchdog
The init script
As our daemon needs a graphic TTY to run (xscreensaver-command
is tty-dependant), we can’t create a startup script for this daemon.
You have to set it at the session startup, every decent Destkop environment (KDE, Gnome, Xfce, LXDE) has a way to do it.
Addendum
Well, I had a lot of fun writing this tiny program, and it is giving me new ideas.
Why not recording the microphone input while the screensaver is locked ? It may be useful to know what your colleagues are saying when your are way.
I won’t write that program, but you still can. ;)