Rust libfprint?

Share
Rust libfprint?

指紋認証は便利で快適です。

iPhoneはFaceIDを使うので別次元の快適さですが、PCでは指紋認証が現役です。

Windows/Macはいざ知らずいざ知らず、Linuxで指紋認証デバイスを使おうと思ってもPlug-and-Playというわけにはいきません。

それどころか、Linuxでの指紋認証サポートは限定的です。

Linuxではfprint projectが主体となって(事実上のデファクトとして)指紋認証デバイスのサポートを行っていますが、指紋認証デバイスの仕様をメーカーが公開していない以上、指紋認証デバイスAを持つユーザーが自分でドライバAを書くほかありません。

メンテナーによる骨の折れる作業と血のにじむ努力によって多数のデバイスがLinuxでサクッと動くようになり、Linux Mintなどの一部ディストロではGUIから気楽に使えるようになったので、対応デバイスをお持ちの方にとってはとてもいい時代になりました。

しかし、まあ、内部実装が歴史的につらい事情などなど、現代的に作り直すことで歴史から解き放ちつつも、共存の道を模索するプロジェクトとしてfprintdというプロジェクトを私が立ち上げました。

GitHub - P4suta/fprintd: A GObject-free, pure-Rust fingerprint stack that speaks fprintd’s D-Bus contract (net.reactivated.Fprint): daemon, NBIS MINDTCT/BOZORTH3 ports, and an embeddable core.
A GObject-free, pure-Rust fingerprint stack that speaks fprintd’s D-Bus contract (net.reactivated.Fprint): daemon, NBIS MINDTCT/BOZORTH3 ports, and an embeddable core. - P4suta/fprintd

小難しくいっていますが、要するにRustで実装したよ、ということです。

MINDTCT

指紋画像から特徴量を抽出するのに用いられるアルゴリズムの一つにNISTが開発したMINDTCTが用いられます。

本プロジェクトではMINDTCTをRustで実装し、公開しています

Bozorth3

指紋照合に広く用いられるアルゴリズムのひとつにNISTが開発したBozorth3が用いられます。

本プロジェクトではBozorth3をRustで実装し、公開しています

プロジェクトの今後

結局のところ、メーカーが仕様を公開しない限り、我々はいつまでもリバースエンジニアリングの沼のままです。

私自身このプロジェクトのためにこの世のすべての指紋認証デバイスを入手し、対応するドライバを書き上げ……といったことはできませんが、逆に皆さんが「私の指紋認証デバイスが動いたらうれしいな。」ということでしたら、各種準備は整えておりますのでお手元のAI Agentを使って私のプロジェクトの中にドライバを書けばいいかと思います。もし、ほかに世界の誰か同じデバイスを使っている人のためになるかも、と思ってくださる方はPull Requestなどで協力していただけると幸いです。

Read more

Find My Files

Find My Files

Windowsにおける爆速ファイル検索アプリの定番といえば、Everythingです。 voidtoolswebhost2 その高速さの理由は、NTFSの仕組みをうまく活用していることにあります。Windowsで一般的に使われているNTFSには、ファイル情報を管理するマスターファイルテーブル(MFT)と、ファイルシステムの変更履歴を記録するUSN Journalがあります。Everythingはこれらを利用することで、初回に高速にファイル一覧を構築し、その後はUSN Journalを監視してリアルタイムにインデックスを更新しています。そのため、数百万ファイル規模の環境でも非常に高速な検索を実現しています。 もちろん、単純にファイル名やパスを保持するだけでは、大量のメモリを消費してしまいます。また、数百万件ものファイルから一瞬で目的のものを見つけるためには、メモリ効率の高いデータ構造や高速な検索アルゴリズムなど、さまざまな工夫が必要になります。 このように、Everythingは見た目こそシンプルですが、中身はかなり高度なことをやっているソフトウェアです。 なお、Everyth

By Sakashita Yasunobu
Claude Code: API Error: Unable to connect to API (ConnectionRefused)

Claude Code: API Error: Unable to connect to API (ConnectionRefused)

先日Claude Codeを維持維持していたら、前触れもなくAPI Error: Unable to connect to API (ConnectionRefused)とかいう謎のエラーをはいてうんともすんとも言わなくなった。 イヤー困った。 Unable to connect to API (ConnectionRefused) by u/Pristine_Ad9316 in ClaudeCode curlでAnthropicのAPIエンドポイントをたたくと確かにDNS周りでなんだか不穏な様子。 /etc/resolv.confを書き換えろと言われるが、なんとも強引すぎやしないかと思い、そっ閉じ。 ダメもとでsudo shutdown -h nowでお茶を濁したところなんと解決しましたとさ。

By Sakashita Yasunobu
Pure Rust Webp Implementation

Pure Rust Webp Implementation

webpをPure Rustで実装しました。 GitHub - P4suta/webpkit: Pure-Rust WebP codec (VP8L lossless + VP8, encoder & decoder, no_std, forbid-unsafe)Pure-Rust WebP codec (VP8L lossless + VP8, encoder & decoder, no_std, forbid-unsafe) - P4suta/webpkitGitHubP4suta https://crates.io/crates/webpkit libwebpよりも使いやすく、モダンな作りになっています。 no_stdなど、汎用的に使えると思います。 Rustで実装をする以上、unsafeがあると意味が薄れてしまいますので、本実装ではunsafeはありません。 また、ちょっとしたことですし、

By Sakashita Yasunobu

1Passwordを閉じるボタンが……ねえ!

1Passwordを使っていたら、いつの間にかウィンドウの 閉じる/最小化/最大化ボタンが消えていた。Ctrl+Wでウィンドウ自体は閉じられるので長らく放置していたけれど、調べてみたら原因がしょうもなかったので共有しておく。 💡結論 F11を押してみよう 症状 * ウィンドウ右上の最小化・最大化・閉じるボタンが表示されない * タイトルバーも消えている * Ctrl+W では普通に閉じられる * PC再起動、1Passwordの終了・再起動、アンインストール → 再インストール、いずれも変化なし 原因 ただフルスクリーンモードに入っていただけ。 1Passwordコミュニティの投稿「Lost window minimize buttons top rhc.」で全く同じ症状が報告されていて、コミュニティマネージャーの回答が「F11でフルスクリーンを切り替えてみて」だった。 解決手順 1. 1Passwordのウィンドウをクリックしてフォーカスを当てる 2. F11 を押す これでタイトルバーとボタン類が戻ってくる。ダメな場合は Win + ↓(ウィン

By Sakashita Yasunobu