間違ったパスワードが入力されたときにウェブカメラで写真を撮ることはできますか?


72

私はラップトップを使用しています。Ubuntuマシンでサポートすることを考えていました。間違ったパスワードを入力すると、後でアクセスしようとしている人を明らかにする写真が撮られます。

私はあちこち検索しましたが、私が見つけた唯一のことは、Macでこれを行うためのものです。Ubuntuが同じことをするためのスクリプトを書くことは可能ですか?

可能であれば、これを実現するスクリプトまたはソフトウェアは何ですか。


lightdmログイン画面の画像またはパスワードで保護されたスクリーンセーバーのようなもの(基本的にログイン前またはログイン後)
ルイスアルバラード

ユーザーが間違ったパスワードを入力すると、lightdmログイン画面に画像が表示されます。
twister_void

3
Ubuntuforumsの PAM 介した「適切な」ソリューション。答えとしてこれを投稿します。:)
gertvdijk

または、Preyなどのサードパーティアプリケーションをインストールします。あなたが求めているとおりには動作しませんが、盗難の場合にコンピュータを保護および回復することに特化しています。
水田ランダウ

あなたが敏感な/保護された環境にいる場合に写真を撮るウェブカメラの使用に言及することを忘れないでください。
pl1nk

回答:


59

BkkBonanzaによるUbuntuforumsに関するこの投稿に基づいています。

これはPAMを使用するアプローチであり、失敗したすべてのログイン試行に対して機能します。SSH、仮想端末、または通常のログイン画面を使用して、すべてが最終的にPAMによって処理されるため、問題はありません。

  1. ffmpegffmpegをインストールするをインストールします。これをウェブカメラの画像を取得するコマンドラインの方法として使用します。更新:Ubuntu 14.04にアップグレードすると、ffmpegは削除されます。以下のスクリプトでは、ffmpegの代わりにavconvを使用できます。個別に何かをインストールする必要はありません。

  2. /usr/local/bin/grabpicture次のコンテンツなどを使用して、どこかに小さなスクリプトを作成します。

    #!/bin/bash
    ts=`date +%s`
    ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /tmp/vid-$ts.%01d.jpg
    exit 0  #important - has to exit with status 0
    

    /dev/video0あなたのウェブカメラの実際のビデオデバイスで変更し、写真が保存されているパスを選択します-私は選択します/tmp。Ubuntuの新しいバージョンでavconvは、ffmpegsudo apt-get install libav-tools)の代わりに使用します。

  3. 実行可能にしchmod +x /usr/local/bin/grabpictureます。

  4. 呼び出すだけでテストします/usr/local/bin/grabpicture。にファイルが表示されるかどうかを確認します/tmp/vid....jpg

  5. 失敗するたびにこれを呼び出すようにPAMを構成します。

    注:これは慎重に行ってください-これが失敗した場合、通常の方法でシステムに再度アクセスすることはできません。

    1. ルートアクセス(sudo -i)でターミナルウィンドウを開き、開いたままにします-次の手順で失敗した場合に備えて。
    2. を実行するなど/etc/pam.d/common-authして、お気に入りのエディターで開きますgksudo gedit /etc/pam.d/common-auth。このファイルの行の順序が重要である以下の手順に留意してください。
    3. 以下の行を見つけます。デフォルトでは、行の前に 1行がありますpam_deny.so。12.04システムでは、次のようになります。

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
    4. この行でsuccess=1to success=2を変更して、成功時にスクリプトをスキップします。これは重要なステップです。

    5. すぐ下に、新しいスクリプトを追加して実際のスクリプトを呼び出します。

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
    6. ファイルを保存して閉じます。何も再起動する必要はありません。

  6. 試して。

    1. 新しいターミナルウィンドウで、通常のユーザーsu -l usernameとして、ユーザー名を使用して別のユーザーとしてログインしますusername(もちろん実際のユーザーで変更します)。故意に間違ったパスワードを入力してください。この結果が新しい写真になるかどうかを確認してください。
    2. 上記と同じですが、正しいパスワードを入力してください。ログインしていて、写真が撮られていないかどうかを確認してください。
  7. テストが成功した場合、DE(Unity / KDE / ...)からログアウトできます。ログイン画面から間違ったパスワードを入力すると、同じように表示されます。


9
それは賢いです。2つの質問:(1)を再起動するたびにクリアされる/tmpため、以外のフォルダーを使用するべきではありません/tmpか?(2)実際のビデオデバイスをどのように見分けますか?
水田ランダウ

6
これは機能しますが、3つのことを追加したかったのです。(1)再起動時にクリアされない/ var / tmpを使用できます。(2)私がそうであったように、「低グラフィックスモード」や「バッテリー状態のチェック」の無限ループに陥る可能性があるため、このソリューションを慎重に踏んでください。(3)動けなくなる場合は、再起動して回復モードに入ります(左シフトを押します)。「フェイルセーフグラフィックモード」を選択し、RWがマウントされているかどうかを確認します。ルートシェルにドロップします。/etc/pam.dにcd; RWに対するchmodcommon-auth。nanoを使用して編集し、grabpictureスクリプトを呼び出すために追加された行を削除します。セーブ; 出口; リブート。
スリ

5
私のPCが動かなくなった理由を見つけました。回答のステップ5.3から5.5は、common-authファイルの行に応じて調整する必要があります。私のcommon-authには、pam_unix.soとpam_deny.soを持つ行の間にpam_winbind.soの別の行もありました。基本的に、「成功」のauth行は、キャプチャスクリプトとpam_deny.so行をスキップする必要があります。
スリ

私も同じ概念を試みていますが、上記の答えが機能しないと、グラフィックスエラーが少なくなります。間違った試みのために画像もエラーメッセージも受け取りません。.. 次はどうする。(gertvdijk)
-SachiN

1
廃止されたffmpegとは対照的に、avconvまたは
opencv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.