Skip to content

About

Facial recognition sign-in for Windows 11 using regular RGB webcams (OpenCV YuNet + SFace)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

HomeFaceLogon

English | ๆ—ฅๆœฌ่ชž


English

A Windows 11 x64 Credential Provider and background host system that enables facial recognition sign-in and unlock using a standard RGB webcam (built with OpenCV YuNet + SFace).

Warning

CRITICAL SECURITY DISCLAIMER / TECHNICAL LIMITATIONS This software is NOT a secure biometric authentication solution. It is designed solely as a "casual home prank/snooping prevention tool" for single-user home PCs.

  • Vulnerable to Photo/Video Spoofing: Since it works with a standard 2D RGB camera (no IR or depth sensor support), it can easily be bypassed by holding up a printed photo or video of your face.
  • WANT REAL SECURITY? BUY A WINDOWS HELLO COMPATIBLE IR CAMERA.
  • Credentials Wrapper: This tool is not a low-level authentication replacement. It is a convenience helper that decrypts and submits your local account password (secured via DPAPI) when a face match is detected.
  • No Hiding of Defaults: It does not disable or hide standard Windows sign-in options (PIN/Password).
  • NO WARRANTY OF ANY KIND: This software is provided "as-is" without warranty of any kind, either expressed or implied. Use at your own risk.

๐Ÿ‘๏ธ Features

  1. Facial Recognition Sign-In
    Automatically starts the camera when the lock screen appears, and signs you in once the face matches the registered template (OpenCV SFace 128-dimensional vector).
  2. PIN Fallback
    Provides a fallback PIN (4โ€“16 alphanumeric/symbolic characters) login UI when facial recognition fails (e.g., in low-light rooms).
  3. Security & Brute-Force Protection
    • Passwords are encrypted and stored locally using the Windows Data Protection API (DPAPI).
    • PINs are hashed using PBKDF2-SHA256 and verified using constant-time comparison to prevent timing attacks.
    • Failsafe lockout: 5 consecutive incorrect PIN attempts will lock out PIN authentication for 30 seconds.
    • Basic liveness detection using frame-to-frame pixel difference (optional) and a sliding-window consensus verification (e.g., matching 3 out of 5 consecutive frames).
  4. Tauri v2 Management GUI
    A modern dashboard for configuring credentials, registering PINs, enrolling face templates with live previews, diagnostics, and log viewing.
  5. One-Click Installer
    Built with Inno Setup to automate DLL registration and setup runtime directories.

๐Ÿ—๏ธ Architecture

For stability and security, the application is split into a lightweight DLL running inside LogonUI.exe and an isolated helper process doing the heavy CV lifting.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Windows LogonUI.exe                                         โ”‚
โ”‚                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ FaceLogonProvider.dll (Credential Provider DLL)       โ”‚  โ”‚
โ”‚  โ”‚ - Renders UI tiles on the lock screen                 โ”‚  โ”‚
โ”‚  โ”‚ - Performs secure local PIN validation                โ”‚  โ”‚
โ”‚  โ”‚ - Decrypts and serializes password credentials        โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                  Bidirectional Named Pipe Connection
       (\\.\pipe\HomeFaceLogonPipe_[ProcessId]_[SessionNonce])
                              โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ FaceLogonHost.exe (Helper Process running as SYSTEM)        โ”‚
โ”‚ - OpenCV YuNet face detection & SFace feature extraction    โ”‚
โ”‚ - Motion-based liveness check, sliding-window consensus     โ”‚
โ”‚ - Sends scan results back to DLL and terminates on complete โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš™๏ธ Configuration Options (config.json)

Adjust parameters in %ProgramData%\HomeFaceLogon\config.json:

Key Type Default Description
enabled boolean false Enables/Disables the Credential Provider.
targetSid string "" Target user's Security Identifier (SID) for auto-login.
cameraIndex int 0 Camera device index.
matchThreshold double 0.363 SFace cosine similarity threshold. Higher values are stricter.
requiredMatches int 3 Required match count inside the sliding window.
windowSize int 5 Sliding window size (number of recent frames tracked).
scanTimeoutMs int 10000 Scan timeout in milliseconds before auto-canceling.
livenessEnabled boolean false Enables frame-difference motion check.

๐Ÿš€ Installation & Setup

For Users

  1. Run Installer
    Run HomeFaceLogonSetup.exe as Administrator to install.
  2. Setup Wizard
    The management GUI will launch automatically.
    • Step 1: Select target user, fetch SID, and input your Windows password.
    • Step 2: Choose a secure PIN (4-16 chars) for lock screen fallback.
    • Step 3: Face camera to register your face template (takes a few seconds).
    • Step 4: Toggle "Enable Facial Recognition Sign-In" to ON.
  3. Verify
    Lock screen (Win + L) to test.

๐Ÿ› ๏ธ Developer Build Instructions

Prerequisites

  • Visual Studio 2022 (with "Desktop development with C++" workload)
  • Node.js (v18+) & npm
  • Rust toolchain (for Tauri)
  • Inno Setup 6 (for packaging)

1. Download Dependencies & Models

Run these scripts in PowerShell to download OpenCV and ONNX models:

# Fetch OpenCV binaries
pwsh tools/fetch-opencv.ps1

# Fetch YuNet & SFace models
pwsh tools/fetch-models.ps1

2. Build C++ Solution

& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe" HomeFaceLogon.sln /p:Configuration=Release /p:Platform=x64

3. Build Tauri GUI App

cd src/gui
npm install
npm run tauri build

4. Build Installer Package

pwsh tools/build-installer.ps1

The output setup file will be generated in installer_output/.


๐Ÿšจ Emergency Disable & Recovery

If the login screen freezes or behaves incorrectly, you can bypass the provider:

Option A: Safe Mode (Recommended)

  1. Hold Shift while clicking "Restart" on the lock screen.
  2. Go to: Troubleshoot > Advanced options > Startup Settings > Restart.
  3. Press 4 or F4 to enter Safe Mode.
  4. Sign in normally and run this in an Administrator command prompt:
    reg add HKLM\SOFTWARE\HomeFaceLogon /v Enabled /t REG_DWORD /d 0 /f

Option B: WinRE Command Prompt

  1. Boot into Windows Recovery Environment (WinRE) and open a Command Prompt.
  2. Load the registry hive:
    reg load HKLM\TempSoftware C:\Windows\System32\config\SOFTWARE
  3. Disable the provider:
    reg add HKLM\TempSoftware\HomeFaceLogon /v Enabled /t REG_DWORD /d 0 /f
  4. Unload and reboot:
    reg unload HKLM\TempSoftware


ๆ—ฅๆœฌ่ชž

ไธ€่ˆฌ็š„ใช RGB Web ใ‚ซใƒกใƒฉใ‚’ไฝฟ็”จใ—ใ€OpenCV YuNet + SFace ใง้ก”่ช่จผใซใ‚ˆใ‚‹ Windows ใ‚ตใ‚คใƒณใ‚คใƒณใŠใ‚ˆใณใƒญใƒƒใ‚ฏ่งฃ้™คๆฉŸ่ƒฝใ‚’ๅฎŸ็พใ™ใ‚‹ Credential Provider ใจใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใƒ›ใ‚นใƒˆใฎใ‚ทใ‚นใƒ†ใƒ ใงใ™ใ€‚

Warning

ใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใซ้–ขใ™ใ‚‹้‡่ฆไบ‹้ …ใƒปๆŠ€่ก“็š„้™็•Œใ€‘ ๆœฌใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใฏใ€**ๅ€‹ไบบๆ‰€ๆœ‰ใฎ่‡ชๅฎ…PC๏ผˆๅ˜ไธ€ใƒฆใƒผใ‚ถใƒผ็’ฐๅขƒ๏ผ‰ใซใŠใ‘ใ‚‹ใ€Œ็ฐกๆ˜“็š„ใชใ‚คใ‚ฟใ‚บใƒฉใƒป่ฆ—ใ่ฆ‹้˜ฒๆญขใ€**ใ‚’ๅ‰ๆใจใ—ใŸใ‚ธใƒงใƒผใ‚ฏใƒปใƒ›ใƒ“ใƒผๅ‘ใ‘ใƒ„ใƒผใƒซใงใ‚ใ‚Šใ€ๅ …็‰ขใชใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅฏพ็ญ–ใจใ—ใฆใฏๆฉŸ่ƒฝใ—ใพใ›ใ‚“ใ€‚

  • ๅ†™็œŸใ‚„ๅ‹•็”ปใซใ‚ˆใ‚‹ใชใ‚Šใ™ใพใ—ๅฏพ็ญ–ใฏใ‚ใ‚Šใพใ›ใ‚“: ไธ€่ˆฌ็š„ใช2D RGBใ‚ซใƒกใƒฉใ‚’ไฝฟ็”จใ™ใ‚‹ใŸใ‚ใ€้ก”ๅ†™็œŸใ‚„ๅ‹•็”ปใ‚’ใ‚ซใƒกใƒฉใซใ‹ใ–ใ™ใ ใ‘ใง็ช็ ดใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™๏ผˆ่ตคๅค–็ทšใƒปๆทฑๅบฆๆคœ็Ÿฅ็ญ‰ใซใฏ้žๅฏพๅฟœ๏ผ‰ใ€‚
  • ็œŸ้ข็›ฎใชใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใŒๆฌฒใ—ใ‘ใ‚Œใฐใ€Windows HelloๅฏพๅฟœใฎIRใ‚ซใƒกใƒฉใ‚’ใ”่ณผๅ…ฅใใ ใ•ใ„ใ€‚
  • ่ณ‡ๆ ผๆƒ…ๅ ฑใฎใƒฉใƒƒใƒ‘ใƒผ: ๆœฌใƒ„ใƒผใƒซใฏWindows Helloใฎใ‚ˆใ†ใชไฝŽใƒฌใƒ™ใƒซใฎ่ช่จผๆฉŸๆง‹่‡ชไฝ“ใ‚’็ฝฎใๆ›ใˆใ‚‹ใ‚‚ใฎใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚้ก”ไธ€่‡ดใ‚’ๆคœ็Ÿฅใ—ใŸ้š›ใซใ€ๅฎ‰ๅ…จใซไฟ็ฎกใ•ใ‚ŒใŸใƒ‘ใ‚นใƒฏใƒผใƒ‰๏ผˆDPAPIไฟ่ญท๏ผ‰ใ‚’่‡ชๅ‹•็š„ใซๅพฉๅทใ—ใฆใ‚ตใ‚คใƒณใ‚คใƒณใ‚’ไปฃ่กŒใ™ใ‚‹ๆ”ฏๆดใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃใงใ™ใ€‚
  • ๆจ™ๆบ–ๆฉŸ่ƒฝใฎ็ถญๆŒ: Windows ๆจ™ๆบ–ใฎใ‚ตใ‚คใƒณใ‚คใƒณใ‚ชใƒ—ใ‚ทใƒงใƒณ๏ผˆใƒ‘ใ‚นใƒฏใƒผใƒ‰/PIN๏ผ‰ใ‚’็„กๅŠนๅŒ–ใ—ใŸใ‚Š้š ใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚
  • ๅ“่ณชใŠใ‚ˆใณ็„กไฟ่จผใซใคใ„ใฆ: ๆœฌใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใฏ็„กไฟ่จผ๏ผˆๅ“่ณชไฟ่จผใชใ—ใ€ๅฎŒๅ…จ่‡ชๅทฑ่ฒฌไปป๏ผ‰ใงๆไพ›ใ•ใ‚Œใพใ™ใ€‚ๆœฌใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใ‚’ไฝฟ็”จใ—ใŸใ“ใจใซใ‚ˆใ‚‹ไธๅ…ทๅˆใ€ใƒ‡ใƒผใ‚ฟๆๅคฑใ€ใใฎไป–ใ„ใ‹ใชใ‚‹็›ดๆŽฅ็š„ใƒป้–“ๆŽฅ็š„ไธๅˆฉ็›Šใซๅฏพใ—ใฆใ‚‚ใ€ไฝœ่€…ใฏไธ€ๅˆ‡ใฎ่ฒฌไปปใ‚’่ฒ ใ„ใพใ›ใ‚“ใ€‚

๐Ÿ‘๏ธ ไธปใชๆฉŸ่ƒฝ

  1. ้ก”่ช่จผใ‚ตใ‚คใƒณใ‚คใƒณ
    ใƒญใƒƒใ‚ฏ็”ป้ขใŒ่กจ็คบใ•ใ‚Œใ‚‹ใจใ‚ซใƒกใƒฉใŒ่‡ชๅ‹•ใง่ตทๅ‹•ใ—ใ€็™ป้Œฒใ•ใ‚ŒใŸ้ก”็‰นๅพด้‡๏ผˆOpenCV SFace 128ๆฌกๅ…ƒใƒ™ใ‚ฏใƒˆใƒซ๏ผ‰ใจไธ€่‡ดใ—ใŸๅ ดๅˆใซ่‡ชๅ‹•ใƒญใ‚ฐใ‚คใƒณใ—ใพใ™ใ€‚
  2. PIN ใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏๆฉŸ่ƒฝ
    ๆš—ใ„้ƒจๅฑ‹ใชใฉใง้ก”่ช่จผใŒๅคฑๆ•—ใ—ใŸๆ™‚ใฎใŸใ‚ใซใ€็”ป้ขไธŠใฎๅ…ฅๅŠ›ๆฌ„ใ‹ใ‚‰ใƒญใ‚ฐใ‚คใƒณใงใใ‚‹็‹ฌ่‡ชใฎPINใ‚ณใƒผใƒ‰๏ผˆ4ใ€œ16ๆ–‡ๅญ—ใฎๅŠ่ง’่‹ฑๆ•ฐๅญ—ใƒป่จ˜ๅท๏ผ‰ใ‚’่จญๅฎšใงใใพใ™ใ€‚
  3. ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไฟ่ญทใจใƒ–ใƒซใƒผใƒˆใƒ•ใ‚ฉใƒผใ‚นๅฏพ็ญ–
    • ใƒ‘ใ‚นใƒฏใƒผใƒ‰ใฏใƒญใƒผใ‚ซใƒซใƒžใ‚ทใƒณใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅขƒ็•Œใงใ‚ใ‚‹ DPAPI (Data Protection API) ใงๆš—ๅทๅŒ–ใ•ใ‚Œใ€ๅฎ‰ๅ…จใซไฟ็ฎกใ•ใ‚Œใพใ™ใ€‚
    • PIN ใฏ PBKDF2-SHA256 ใงใƒใƒƒใ‚ทใƒฅๅŒ–ใ•ใ‚Œใ€ใ‚ฟใ‚คใƒŸใƒณใ‚ฐๆ”ปๆ’ƒๅฏพ็ญ–ใ‚’ๆ–ฝใ—ใŸๅฎšๆ•ฐๆ™‚้–“ๆฏ”่ผƒใง็…งๅˆใ•ใ‚Œใพใ™ใ€‚
    • ้–“้•ใฃใŸ PIN ใ‚’5ๅ›ž้€ฃ็ถšใงๅ…ฅๅŠ›ใ™ใ‚‹ใจใ€30็ง’้–“ PIN ่ช่จผใŒใƒญใƒƒใ‚ฏใ‚ขใ‚ฆใƒˆใ•ใ‚Œใพใ™ใ€‚
    • ใ‚นใ‚ญใƒฃใƒณๆ™‚ใฎใชใ‚Šใ™ใพใ—ใ‚’่ปฝๆธ›ใ™ใ‚‹ใŸใ‚ใ€ใƒ•ใƒฌใƒผใƒ ๅทฎๅˆ†ใ‚’็”จใ„ใŸๅ‹•ไฝ“ๆคœ็Ÿฅ๏ผˆLivenessๆคœ็Ÿฅ๏ผ‰ใ€ใŠใ‚ˆใณ ใ‚นใƒฉใ‚คใƒ‡ใ‚ฃใƒณใ‚ฐ็ช“๏ผˆ5ใƒ•ใƒฌใƒผใƒ ไธญ3ใƒ•ใƒฌใƒผใƒ ไธ€่‡ด๏ผ‰ใซใ‚ˆใ‚‹้€ฃ็ถšไธ€่‡ดๅˆคๅฎšใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใพใ™ใ€‚
  4. Tauri v2 ็ฎก็† GUI ใƒ„ใƒผใƒซ
    ่ณ‡ๆ ผๆƒ…ๅ ฑใฎ่จญๅฎšใ€PIN ็™ป้Œฒใ€ใ‚ซใƒกใƒฉใƒ—ใƒฌใƒ“ใƒฅใƒผใ‚’ไผดใ†้ก”ๆƒ…ๅ ฑใฎ็™ป้Œฒใ€่จบๆ–ญใƒ†ใ‚นใƒˆใ€ใƒญใ‚ฐ้–ฒ่ฆงใ‚’่กŒใˆใ‚‹็ฎก็†่€…็”จใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใ‚’ๅŒๆขฑใ—ใฆใ„ใพใ™ใ€‚
  5. ใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏใ‚คใƒณใ‚นใƒˆใƒผใƒฉใƒผ
    Inno Setup ใ‚’็”จใ„ใŸใƒ‘ใƒƒใ‚ฑใƒผใ‚ธไฝœๆˆใซๅฏพๅฟœใ—ใฆใŠใ‚Šใ€DLL ใฎ็™ป้Œฒใ‚„ ProgramData ใƒ•ใ‚ฉใƒซใƒ€ใฎไฝœๆˆใ‚’่‡ชๅ‹•ๅŒ–ใ—ใพใ™ใ€‚

๐Ÿ—๏ธ ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ

ๆœฌใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใฏๅฎ‰ๅฎšๆ€งใจใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใฎใŸใ‚ใซใ€LogonUI ใงๅ‹•ไฝœใ™ใ‚‹่ปฝ้‡ DLL ใจใ€ใ‚ซใƒกใƒฉ/AI ๅ‡ฆ็†ใ‚’ๅฎŸ่กŒใ™ใ‚‹ใƒ›ใ‚นใƒˆใƒ—ใƒญใ‚ปใ‚นใฎ2ใคใฎใ‚ณใƒณใƒใƒผใƒใƒณใƒˆใซๅˆ†้›ขใ•ใ‚Œใฆใ„ใพใ™ใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Windows LogonUI.exe                                         โ”‚
โ”‚                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ FaceLogonProvider.dll (Credential Provider DLL)       โ”‚  โ”‚
โ”‚  โ”‚ - Windows ใƒญใƒƒใ‚ฏ็”ป้ขใงใฎ่ช่จผใ‚ฟใ‚คใƒซ่กจ็คบ                โ”‚  โ”‚
โ”‚  โ”‚ - ็‹ฌ่‡ชใฎๅฎ‰ๅ…จใชใƒญใƒผใ‚ซใƒซ PIN ๆคœ่จผ                       โ”‚  โ”‚
โ”‚  โ”‚ - ๆš—ๅทๅŒ–ใƒ‘ใ‚นใƒฏใƒผใƒ‰(secret.bin)ใฎๅพฉๅทใจใ‚ทใƒชใ‚ขใƒฉใ‚คใ‚บ    โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                    ๅŒๆ–นๅ‘ Named Pipe ๆŽฅ็ถš
      (\\.\pipe\HomeFaceLogonPipe_[ProcessId]_[SessionNonce])
                              โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ FaceLogonHost.exe (้ก”่ช่จผใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใƒ—ใƒญใ‚ปใ‚น)            โ”‚
โ”‚ - OpenCV YuNet ใซใ‚ˆใ‚‹้ก”ๆคœๅ‡บ & SFace ใซใ‚ˆใ‚‹็‰นๅพดๆŠฝๅ‡บ          โ”‚
โ”‚ - ๅ‹•ไฝ“ๆคœ็Ÿฅ (Liveness), ใ‚นใƒฉใ‚คใƒ‡ใ‚ฃใƒณใ‚ฐ็ช“ๅˆคๅฎš                 โ”‚
โ”‚ - ใ‚นใ‚ญใƒฃใƒณๅฎŒไบ†/ใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆๆ™‚ใซ็ตๆžœใ‚’ DLL ใซ่ฟ”ๅดใ—ใฆ่‡ชๅ‹•็ต‚ไบ†โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš™๏ธ ่จญๅฎšใ‚ชใƒ—ใ‚ทใƒงใƒณ (config.json)

%ProgramData%\HomeFaceLogon\config.json ใซใฆใ€ๅ‹•ไฝœใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’่ฉณ็ดฐใซ่ชฟๆ•ดใงใใพใ™ใ€‚

ใ‚ญใƒผๅ ๅž‹ ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๅ€ค ่ชฌๆ˜Ž
enabled boolean false ๆœฌใƒ—ใƒญใƒใ‚คใƒ€ใƒผใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใ‹ใ€‚
targetSid string "" ่‡ชๅ‹•ใ‚ตใ‚คใƒณใ‚คใƒณๅฏพ่ฑกใจใชใ‚‹ Windows ใƒฆใƒผใ‚ถใƒผใฎ SIDใ€‚
cameraIndex int 0 ไฝฟ็”จใ™ใ‚‹ใ‚ซใƒกใƒฉใƒ‡ใƒใ‚คใ‚นใฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใ€‚
matchThreshold double 0.363 SFace ใฎใ‚ณใ‚ตใ‚คใƒณ้กžไผผๅบฆใ—ใใ„ๅ€คใ€‚้ซ˜ใ„ใปใฉๅŽณๆ ผใซใชใ‚Šใพใ™ใ€‚
requiredMatches int 3 ไธ€่‡ดใจๅˆคๅฎšใ™ใ‚‹ใŸใ‚ใซใ€ใ‚นใƒฉใ‚คใƒ‡ใ‚ฃใƒณใ‚ฐ็ช“ๅ†…ใงๅฟ…่ฆใชไธ€่‡ดใƒ•ใƒฌใƒผใƒ ๆ•ฐใ€‚
windowSize int 5 ไธ€่‡ดๅˆคๅฎšใซไฝฟ็”จใ™ใ‚‹ใ‚นใƒฉใ‚คใƒ‡ใ‚ฃใƒณใ‚ฐ็ช“ใฎใ‚ตใ‚คใ‚บ๏ผˆ้ŽๅŽปใƒ•ใƒฌใƒผใƒ ๆ•ฐ๏ผ‰ใ€‚
scanTimeoutMs int 10000 ใ‚นใ‚ญใƒฃใƒณ้–‹ๅง‹ใ‹ใ‚‰่‡ชๅ‹•็ต‚ไบ†ใ™ใ‚‹ใพใงใฎๆ™‚้–“๏ผˆใƒŸใƒช็ง’๏ผ‰ใ€‚
livenessEnabled boolean false ใƒ•ใƒฌใƒผใƒ ๅทฎๅˆ†ใซใ‚ˆใ‚‹ๅ‹•ไฝ“ๆคœ็Ÿฅใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใ‹ใ€‚

๐Ÿš€ ใ‚คใƒณใ‚นใƒˆใƒผใƒซ & ใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—

ใƒฆใƒผใ‚ถใƒผๅ‘ใ‘ๆ‰‹้ †

  1. ใ‚คใƒณใ‚นใƒˆใƒผใƒฉใƒผใฎๅฎŸ่กŒ
    ็ฎก็†่€…ๆจฉ้™ใงใ‚คใƒณใ‚นใƒˆใƒผใƒฉใƒผ๏ผˆHomeFaceLogonSetup.exe๏ผ‰ใ‚’ๅฎŸ่กŒใ—ใ€ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ‚’่กŒใ„ใพใ™ใ€‚
  2. ็ฎก็†ใƒ„ใƒผใƒซใฎ่ตทๅ‹•
    ใ‚คใƒณใ‚นใƒˆใƒผใƒซๅฎŒไบ†ๅพŒใซ่ตทๅ‹•ใ™ใ‚‹ใ€ŒHomeFaceLogon ็ฎก็†ใƒ„ใƒผใƒซใ€ใงใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—ใ‚ฆใ‚ฃใ‚ถใƒผใƒ‰ใ‚’้€ฒใ‚ใพใ™ใ€‚
    • ใ‚นใƒ†ใƒƒใƒ— 1: ๅฏพ่ฑกใƒฆใƒผใ‚ถใƒผใฎ SID ใ‚’่‡ชๅ‹•ๅ–ๅพ—ใ—ใ€Microsoft ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใฎใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚
    • ใ‚นใƒ†ใƒƒใƒ— 2: ใƒญใƒƒใ‚ฏ็”ป้ข็”จใฎ PIN๏ผˆ4ใ€œ16ๆ–‡ๅญ—ใฎๅŠ่ง’่‹ฑๆ•ฐๅญ—ใƒป่จ˜ๅท๏ผ‰ใ‚’่จญๅฎšใ—ใพใ™ใ€‚
    • ใ‚นใƒ†ใƒƒใƒ— 3: ใ‚ซใƒกใƒฉใ‚’้ธๆŠžใ—ใฆ้ก”็™ป้Œฒใ‚’้–‹ๅง‹ใ—ใพใ™ใ€‚ใ‚ซใƒกใƒฉใ‚’ใพใฃใ™ใ่ฆ‹ใคใ‚ใ‚‹ใจใ€ๆ•ฐ็ง’ใง็‰นๅพด้‡ใฎๆŠฝๅ‡บใŒๅฎŒไบ†ใ—ใพใ™ใ€‚
    • ใ‚นใƒ†ใƒƒใƒ— 4: ใ€Œ้ก”่ช่จผใ‚ตใ‚คใƒณใ‚คใƒณใ‚’ๆœ‰ๅŠนๅŒ–ใ€ใ‚’ใ‚ชใƒณใซใ—ใฆใ‚ฆใ‚ฃใ‚ถใƒผใƒ‰ใ‚’้–‰ใ˜ใพใ™ใ€‚
  3. ็ขบ่ช
    Win + L ใงใƒญใƒƒใ‚ฏ็”ป้ขใ‚’่กจ็คบใ—ใ€ใ‚ซใƒกใƒฉใŒ่ตทๅ‹•ใ—ใฆ่‡ชๅ‹•ใ‚ตใ‚คใƒณใ‚คใƒณใพใŸใฏ PIN ใง่งฃ้™คใงใใ‚‹ใ‹็ขบ่ชใ—ใพใ™ใ€‚

๐Ÿ› ๏ธ ้–‹็™บ่€…ๅ‘ใ‘ใƒ“ใƒซใƒ‰ๆ‰‹้ †

ๅ‰ๆๆกไปถ

  • Visual Studio 2022 (C++ ใซใ‚ˆใ‚‹ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—้–‹็™บใƒฏใƒผใ‚ฏใƒญใƒผใƒ‰)
  • Node.js (v18ไปฅไธŠ) & npm
  • Rust ใƒ„ใƒผใƒซใƒใ‚งใƒผใƒณ (Tauriใƒ“ใƒซใƒ‰็”จ)
  • Inno Setup 6 (ใ‚คใƒณใ‚นใƒˆใƒผใƒฉใƒผไฝœๆˆๆ™‚)

1. ไพๅญ˜ใƒฉใ‚คใƒ–ใƒฉใƒชใจใƒขใƒ‡ใƒซใฎๅ–ๅพ—

ไปฅไธ‹ใฎใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ๅฎŸ่กŒใ—ใฆใ€OpenCV ใฎใƒใ‚คใƒŠใƒชใŠใ‚ˆใณ ONNX ใƒขใƒ‡ใƒซใƒ•ใ‚กใ‚คใƒซใ‚’ๅ–ๅพ—ใ—ใพใ™ใ€‚

# OpenCV ใฎใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใจๅฑ•้–‹
pwsh tools/fetch-opencv.ps1

# YuNet & SFace ONNX ใƒขใƒ‡ใƒซใฎๅ–ๅพ—
pwsh tools/fetch-models.ps1

2. C++ ใ‚ฝใƒชใƒฅใƒผใ‚ทใƒงใƒณใฎใƒ“ใƒซใƒ‰

& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe" HomeFaceLogon.sln /p:Configuration=Release /p:Platform=x64

3. Tauri GUI ใ‚ขใƒ—ใƒชใฎใƒ“ใƒซใƒ‰

cd src/gui
npm install
npm run tauri build

4. ใ‚คใƒณใ‚นใƒˆใƒผใƒฉใƒผใฎใƒ“ใƒซใƒ‰

pwsh tools/build-installer.ps1

ใƒ“ใƒซใƒ‰ใ•ใ‚ŒใŸใ‚คใƒณใ‚นใƒˆใƒผใƒฉใƒผใฏ installer_output/ ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซ็”Ÿๆˆใ•ใ‚Œใพใ™ใ€‚


๐Ÿšจ ็ทŠๆ€ฅ็„กๅŠนๅŒ–ใƒปใƒชใ‚ซใƒใƒชๆ‰‹้ †

้ก”่ช่จผใ‚„ใƒ—ใƒญใƒใ‚คใƒ€ใƒผใฎ่ชคๅ‹•ไฝœใซใ‚ˆใ‚Š Windows ใ‚ตใ‚คใƒณใ‚คใƒณ็”ป้ขใŒๆ“ไฝœไธ่ƒฝใซใชใฃใŸๅ ดๅˆใฏใ€ไปฅไธ‹ใฎๆ‰‹้ †ใง็„กๅŠนๅŒ–ใงใใพใ™ใ€‚

ๆ–นๆณ• 1: ใ‚ปใƒผใƒ•ใƒขใƒผใƒ‰ใซใ‚ˆใ‚‹็„กๅŠนๅŒ–๏ผˆๆŽจๅฅจ๏ผ‰

  1. ใ‚ตใ‚คใƒณใ‚คใƒณ็”ป้ขๅณไธ‹ใฎ้›ปๆบใ‚ขใ‚คใ‚ณใƒณใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใ€Shift ใ‚ญใƒผใ‚’ๆŠผใ—ใชใŒใ‚‰ใ€Œๅ†่ตทๅ‹•ใ€ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚
  2. ๅ†่ตทๅ‹•ๅพŒใ€ใ€Œใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ€ ๏ผž ใ€Œ่ฉณ็ดฐใ‚ชใƒ—ใ‚ทใƒงใƒณใ€ ๏ผž ใ€Œใ‚นใ‚ฟใƒผใƒˆใ‚ขใƒƒใƒ—่จญๅฎšใ€ ๏ผž ใ€Œๅ†่ตทๅ‹•ใ€ใ‚’้ธๆŠžใ—ใพใ™ใ€‚
  3. ๅ†่ตทๅ‹•ๅพŒใ€ใ‚ญใƒผใƒœใƒผใƒ‰ใฎ 4 ใพใŸใฏ F4 ใ‚’ๆŠผใ—ใ€Œใ‚ปใƒผใƒ•ใƒขใƒผใƒ‰ใ€ใง่ตทๅ‹•ใ—ใพใ™ใ€‚
  4. ใ‚ปใƒผใƒ•ใƒขใƒผใƒ‰ใง้€šๅธธ้€šใ‚Šใ‚ตใ‚คใƒณใ‚คใƒณใ—ใ€็ฎก็†่€…ๆจฉ้™ใงใ‚ณใƒžใƒณใƒ‰ใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’้–‹ใใ€ไปฅไธ‹ใ‚’ๅฎŸ่กŒใ—ใฆ็„กๅŠนๅŒ–ใ—ใพใ™ใ€‚
    reg add HKLM\SOFTWARE\HomeFaceLogon /v Enabled /t REG_DWORD /d 0 /f

ๆ–นๆณ• 2: ๅ›žๅพฉ็’ฐๅขƒ (WinRE) ใ‚ณใƒžใƒณใƒ‰ใƒ—ใƒญใƒณใƒ—ใƒˆใ‹ใ‚‰ใฎ็„กๅŠนๅŒ–

  1. Windows ใŒ่ตทๅ‹•ใ—ใชใ„ๅ ดๅˆใ€่‡ชๅ‹•ไฟฎๅพฉ็”ป้ขใ‹ใ‚‰ใ€Œ่ฉณ็ดฐใ‚ชใƒ—ใ‚ทใƒงใƒณใ€ ๏ผž ใ€Œใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ€ ๏ผž ใ€Œ่ฉณ็ดฐใ‚ชใƒ—ใ‚ทใƒงใƒณใ€ ๏ผž ใ€Œใ‚ณใƒžใƒณใƒ‰ ใƒ—ใƒญใƒณใƒ—ใƒˆใ€ใ‚’้–‹ใใพใ™ใ€‚
  2. ใƒฌใ‚ธใ‚นใƒˆใƒช SOFTWARE ใƒใ‚คใƒ–ใ‚’ไธ€ๆ™‚ใ‚ญใƒผใซใƒญใƒผใƒ‰ใ—ใพใ™ใ€‚
    reg load HKLM\TempSoftware C:\Windows\System32\config\SOFTWARE
  3. ๆœ‰ๅŠนๅŒ–ใƒ•ใƒฉใ‚ฐใ‚’ 0 ใซๅค‰ๆ›ดใ—ใพใ™ใ€‚
    reg add HKLM\TempSoftware\HomeFaceLogon /v Enabled /t REG_DWORD /d 0 /f
  4. ใƒใ‚คใƒ–ใ‚’ใ‚ขใƒณใƒญใƒผใƒ‰ใ—ใฆ PC ใ‚’ๅ†่ตทๅ‹•ใ—ใพใ™ใ€‚
    reg unload HKLM\TempSoftware

About

Facial recognition sign-in for Windows 11 using regular RGB webcams (OpenCV YuNet + SFace)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages