共有PCの実際の使用者を記録する

会社で個々人のPCのセキュリティをガチガチに固めたりしていると、何かと融通がきかない。 そのため、セキュリティ設定緩めの共有PCを1台と共有アカウントを1個用意し、やむを得ない時には利用してもらっている。

そのため、SKYSEAでログは取っているものの、実際に誰が操作しているのか分からない、という問題があった。

それを解決するため、PCに付属のカメラで、ログイン時に正面にいる人の顔を記録することにした。

前準備

  • ffmpegをダウンロードする
  • ffmpegにPATHを通す
  • ffmpegでウェブカメラのデバイスや対応する解像度、フレームレートを調べておく

VBScript

以下のVBScriptファイルを適当なところに配置。 内容はスクリプト起動後、5秒間、ウェブカメラの映像を記録して、管理者用メールアドレスに送信する。

Option Explicit

On Error Resume Next

Dim objShell
Dim objFS
Dim strDate
Dim strFilePath
Dim objNetwork
Dim objMsg

Set objShell = CreateObject("WScript.Shell")
Set objFS = CreateObject("Scripting.FileSystemObject")

strDate = Year(Now())
strDate = strDate & Right("0" + Month(Now()), 2)
strDate = strDate & Right("0" + Day(Now()), 2)
strDate = strDate & Right("0" + Hour(Now()), 2)
strDate = strDate & Right("0" + Minute(Now()), 2)
strDate = strDate & Right("0" + Second(Now()), 2)

strFilePath = objFS.getSpecialFolder(2).Path & "\" + strDate + ".mp4"

objShell.Run "ffmpeg -f dshow -t 5 -video_size 1280x720 -framerate 7.5 -pixel_format yuyv422 -i video=""USB HD Webcam"" -r 30 -c:v libx264 -y """ & strFilePath & """", 0, True

Set objNetwork = CreateObject("WScript.Network")
Set objMsg = CreateObject("CDO.Message")

objMsg.From = "(送信元メールアドレス)"
objMsg.ReplyTo = "(返信先メールアドレス(任意))"
objMsg.To = "(宛先メールアドレス)"
objMsg.Subject = "Message from " + objNetwork.UserName + " " + objNetwork.ComputerName
objMsg.TextBody = "Recorded Video"
objMsg.TextBodyPart.Charset = "ISO-2022-JP"
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp-relay.gmail.com"
objMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
objMsg.Configuration.Fields.Update

If objFS.FileExists(strFilePath) Then
  objMsg.AddAttachment strFilePath
  objFS.DeleteFile strFilePath
End If

objMsg.Send

タスクスケジューラ

タスクスケジューラからタスクを作成し、トリガーに「ワークステーションのロック解除」に上のVBScriptが起動するように設定する。

これでロック解除した時、自動で管理者アカウントに動画付きメールが飛んでくるので、 SKYSEAログと照合すれば、誰が操作したのか追跡できる。