Get picture of the user who try to access to your computer (MS-WIndows)

Avez-vous jamais essaye de savoir qui a tente d’utiliser votre ordinateur durant votre absence ? Il existe des logiciels (payant) pour cela tel que Keylemon (www.keylemon.com), mais aucun gratuit a ma connaissance. Avec un peu de travail, vous pouvez tout a fait realiser un petit programme qui fera cela pour vous. Attention, ce n’est pas une fonction pour retrouver un ordinateur, il ne s’agit que de prendre la photo d’une personne tapant le mauvais code d’acces sur votre ordinateur.

Ces scripts ont été trouve sur des forums et particulierement sur le site superuser.com (http://superuser.com/questions/553301/taking-a-picture-after-entering-wrong-password). Je ne porte aucun responsabilite sur les actions qui pourraient endommager votre système ou materiel.

Un minimum de connaissance de MS-Windows est tout de meme requis…… Vous devez voir les acces administrateur sur votre ordinateur. Vous devez disposer d’un ordinateur avec une camera fonctionnant avec votre système MS-Windows,

1)      Recuperer un programme permettant de prendre une photo

L’outil le plus courant et gratuit sur Internet est FFmpeg (http://ffmpeg.org/). Vous n’en avez peut-etre jamais entendu parle car il
est utilise plus par les programmeurs que par les utilisateurs finaux. Telecharger la version qui correspond a votre machine (MS-Windows): http://ffmpeg.zeranoe.com/builds/  Si vous ne savez pas quelle choisir, prenez celle-ci : http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-latest-win32-static.7z

Il vous faudra l’outil de (de-)compression 7ZIP (http://7-zip.org/) ou un outil compatible avec le format 7Z.

Decompresser le contenu de FFMPEG sous un repertoire de votre choix, par exemple : C:\SNAPSHOT

2)      Créer le script pour prendre une photo

Aller dans le repertoire ou vous avez decompresse FFMPEG (« C:\SNAPSHOP » dans notre exemple) et créer le fichier de commande (par exemple « snapshot_login_failure.cmd ») avec le contenu suivant (attention, l’extension du fichier est importante (« .cmd »), le nom du fichier ne l’est pas):

=======CONTENU DU FICHIER DE COMMANDE (Ne pas integrer cette ligne)=========

@echo off
:: Get date and time independent of regional settings.
:: Source: http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-us
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime/VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set datetime=%ldt:~0,4%_%ldt:~4,2%_%ldt:~6,2%_%ldt:~8,2%_%ldt:~10,2%_%ldt:~12,2%
:: Capture snapshot through DirectShow using FFmpeg and save to disk. Change name of video adapter and save path.
C:\snapshot\bin\ffmpeg.exe -f dshow -i video="1.3M HD WebCam" -vframes 1
 C:\snapshot\snapshot_%datetime%.jpg

=======FIN DU CONTENU DU FICHIER (ne pas integrer cette ligne)===================

Vous devez changer le nom du repertoire en fonction de celui ou vous avez decompresse FFMPEG. Dans notre exemple, nous avons defini « C:\SNAPSHOT », les photos seront stockees dans « C:\snapshot\ » avec le nom « snapshot_%datetime%.jpg » ou %datetime% est la date et l’heure de la prise de la photo.

Vous devez aussi specifier au programme FFMPEG le nom de votre camera frontale (« 1.3M HD WebCam » dans notre exemple). Pour connaitre le nom de votre camera, vous devez faire une autre petite manipulation.

2 options au choix

a)      Par une commande FFMPEG dans une fenetre MS-DOS

Ouvrir une fenetre MS-DOS (taper « CMD » dans votre option <Run…>)

image002

Aller dans le repertoire ou se trouve le programme FFMPEG : « CD C:\SNAPSHOP\BIN » (si besoin, remplacer « SNAPSHOT » par votre repertoire)

Taper la commande suivante : « ffmpeg -list_devices true -f dshow -i dummy » cid:image004.png@01CF9AC1.5C726440

image004

Le nom de la camera est « 1.3M HD WebCam » dans cet exemple.

b)      Chercher votre camera dans la liste des equipements

Dans le « Control Panel », aller dans « Hardware and Sound » puis « Device Manager » :

image007

3)      Créer un fichier XML pour la configuration de la tache, par exemple « snapshot_login_failure.xml »

Le nom du fichier n’a pas d’importance, l’extension (.XML) est importante. Copier le contenu suivant :

============= CONTENU (Ne pas integrer cette ligne) ===============

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="<http://schemas.microsoft.com/windows/2004/02/mit/task>http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2013-07-06T23:32:34.0732602</Date>
<Author>YOUR NAME</Author>
</RegistrationInfo>
<Triggers>
<EventTrigger>
<Enabled>true</Enabled>
<Subscription>&lt;QueryList&gt;&lt;Query Id="0"
 Path="Security"&gt;&lt;Select
 Path="Security"&gt;*[System[Provider[@Name='Microsoft-Windows-Security-Audit
 ing'] and
 EventID=4625]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
</EventTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-19</UserId>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>c:\ snapshot\snapshot_login_failure.cmd</Command>
<WorkingDirectory>c:\snapshot\</WorkingDirectory>
</Exec>
</Actions>
</Task>

======FIN DU CONTENU (Ne pas integrer cette ligne) =========================

Ecrivez votre nom en tant qu’auteur (<Author>YOUR NAME</Author>), verifier que le repertoire (<WorkingDirectory>c:\snapshot\</WorkingDirectory>) et le nom de votre fichier de commande (<Command>c:\snapshot\snapshot_login_failure.cmd</Command>) sont corrects.

4)      Integrer la tache dans votre système MS-Windows

Demarrer le « Task scheduler » (commande « taskschd.msc » dans la partie <Run…>, ou alors dans le « Control Panel » (« System and Security »/ « Schedule tasks »).

Importer votre fichier de tache (« snapshot_login_failure.xml » dans notre exemple) par le menu « Action>Import Task… ». Vous devez avoir la tache « snapshot_login_failure » dans la liste des taches (si vous avez utilise « snapshot_login_failure.xml » comme nom de fichier)

5)      Changer la valeur de l’audit des acces a votre ordinateur (« Local Security Policies »)

Demarrer l’application de gestion des regles de votre machine (« Local Security Policy ») : soit par la commande « secpol.msc » a travers le <run…>, soit par le « Control Panel » (« Administrative Tools »/ « Local Security Policy »)

Cocher l’option « Failure » dans la partie : « Security Settings>Local Policies>Audit Policy>Audit logon events »

image009

C’est fini !!!! Essayez de vous connecter avec le mauvais mot de passe, puis regarder (apres vous etre reconnecte avec le bon code) dans le repertoire que vous avez defini (« C:\SNAPSHOT » dans notre exemple)

image011

image012