#filter #password #false-positives #download #bloom-filter #command-line #hibp

app haveibeenpwned

haveibeenpwned 是一个命令行应用程序,使用 HaveIBeenPwned 服务,并可以创建和使用二进制 Fuse 过滤器(比 Bloom 过滤器或 Cuckoo 过滤器小,但错误正率相同)以牺牲错误正率为代价进行高效查询。

7 个版本 (1 个稳定版)

1.0.0 2022 年 6 月 18 日
0.5.1 2022 年 6 月 10 日
0.4.0-alpha2022 年 6 月 4 日
0.3.0-alpha2022 年 6 月 4 日
0.1.0-alpha2022 年 6 月 2 日

#2707命令行工具

每月 21 次下载

AGPL-3.0-only

37KB
748

FOSSA Status Crates.io link

haveibeenpwned

haveibeenpwned 是一个命令行应用程序,使用 HaveIBeenPwned 服务,并可以创建和使用二进制 Fuse 过滤器(比 Bloom 过滤器或 Cuckoo 过滤器小,但错误正率相同)以牺牲错误正率为代价进行高效查询。

特性

  • 使用 haveibeenpwed interactive-online 与 HIBP API 交互式检查受侵害的密码(需要互联网)。
  • 使用 HaveIBeenPwned 查询下载密码文件。这可能比直接从 HaveIBeenPwned 网站下载密码更新。根据 Troy Hunt 的说法,自密码版本发布以来,摄入的密码不包括在内。然而,查询密码确实包含摄入的密码。实际上,截至 6 月 16 日,这比版本 8 多 4 个密码(847,223,406 比版本 8 的 847,223,402)。您可以使用 haveibeenpwned downloader [输出文件路径] 下载。
  • 可以使用 haveibeenpwned resume-download 继续下载。
  • 可以使用 haveibeenpwned interactive-file [过滤器文件路径] 交互式检查受侵害的密码(注意:如果您使用的是包含过滤器或之前已使用过滤器文件路径运行过任何命令的 haveibeenpwned 版本,则无需输入过滤器文件路径)。
  • 可以创建一个(3种大小)的过滤器,允许您在不消耗太多空间的情况下离线查询。需要现有已下载的密码文件(无论是从网站还是使用此工具下载)来创建。可以使用以下命令创建过滤器:haveibeenpwned create-filter [密码文件路径] [输出路径for过滤器文件]请注意,创建过滤器需要大量的RAM。仅对下载的密码文件(约34 GB)进行测试以创建小型过滤器,在Windows上就使用了11 GB。小型过滤器的误报率为<0.4%,而中型过滤器的误报率为0.0016%,大型过滤器的误报率小于每4亿分之一。
  • 使用过滤器检查文件中的密码列表,以查看有多少密码已被泄露:haveibeenpwned file-check [要测试的密码文件路径] [过滤器路径](使用可选的-p [安全/泄露]命令,可以打印文件中的安全或泄露密码)(如果您使用包含过滤器的haveibeenpwned版本或手动加载了过滤器,则无需再次输入过滤器文件的路径)

预构建过滤器

预构建过滤器可供使用(小型中型大型)。Windows安装程序、haveibeenpwned的.deb版本以及winget上的haveibeenpwned都包含小型过滤器。小型过滤器的大小为909 MiB(误报率为~0.4%)。中型过滤器的大小为1.77 GiB(误报率为0.0016%),大型过滤器的大小为3.55 GiB(误报率小于每4亿分之一)。

兼容性

由于haveibeenpwned处于alpha阶段,因此当时过滤器的设计尚未最终确定。因此,直到现在,过滤器文件之间的兼容性都没有得到维护。0.4.0-alpha版本创建的过滤器与0.5.0版本不兼容(0.5.0版本的过滤器比0.4.0版本的小)。然而,从v0.5.0版本开始,兼容性得到了维护。

安装

可以从发布页面下载haveibeenpwned,以获取适用于Ubuntu 18.04及更高版本的.deb包、适用于64位Intel系统的通用Linux可执行文件(您可能需要运行chmod +x <二进制文件路径>),以及Windows发布版本。对于Windows,还可以使用winget install haveibeenpwned安装haveibeenpwned。如果您已安装rustup(请参阅构建指南),则可以运行以下命令进行安装:

cargo intall haveibeenpwned

目前,由于我没有Mac,因此不提供macOS构建版本。但是,使用构建指南并使用cargo install haveibeenpwned安装应该可以工作。我还会努力创建haveibeenpwned的flatpak版本

升级说明

如果您在Ubuntu上使用deb文件,请使用以下命令卸载deb包:

sudo apt remove haveibeenpwned

最后,使用较新的deb文件安装。

对于Windows,只需用较新版本的haveibeenpwned.exe替换旧版本的即可。如果您使用winget安装,可以使用winget upgrade haveibeenpwned进行更新。如果您使用cargo install安装haveibeenpwned,则运行cargo install haveibeenpwned将更新它。

如果您使用了haveibeenpwned的Linux二进制文件,只需将其替换为较新的版本(您可能需要再次运行chmod +x <path to haveibeenpwned>

构建指南

我们可以使用cargo来构建haveibeenpwned。首先需要安装rustup和构建工具(有关说明,请参阅此处)。然后,我们可以使用以下命令进行构建:

git clone https://github.com/CKingX/haveibeenpwned.git
cd ./haveibeenpwned
cargo install --path ./

现在您可以在终端中输入haveibeenpwned来运行。升级可以通过再次运行cargo install命令来完成。如果您只想构建二进制文件,可以使用以下命令构建调试二进制文件:

cargo build

可以使用以下命令构建发布版二进制文件:

cargo build --release

构建命令的输出将位于./target/{debug/release}/haveibeenpwned

许可证

haveibeenpwned遵循AGPL 3.0许可证。然而,最终将有一个可以使用过滤器检查其他程序密码的MPL库。

FOSSA Status

依赖项

~12–26MB
~363K SLoC