#密钥对 #字符串 #Wireguard #VPN #查找 #生成 #前缀

bin+lib wireguard-vanity-address

查找具有特定可读字符串的 Wireguard VPN 密钥对

4 个版本 (2 个破坏性更改)

0.4.0 2019 年 9 月 22 日
0.3.1 2019 年 7 月 18 日
0.3.0 2019 年 3 月 5 日
0.2.0 2018 年 11 月 28 日

#1122 in 密码学

MIT 许可证

15KB
171

wireguard-vanity-address

生成具有给定前缀字符串的 Wireguard 密钥对。

Build Status Deps Is-It-Maintained-Resolution-Time Is-It-Maintained-Open-Issues Crates.io Docs.rs License

Wireguard VPN 使用 Curve25519 密钥对,并在状态显示中显示 Base64 编码的公钥。我发现很难记住哪个密钥对应哪个目标,配置文件实际上不支持注释或给这些密钥附加人类可记忆的名称。

因此,这个工具允许您生成几百万个密钥对,并仅打印出前几个(10个)字母包含给定字符串的密钥对,使用不区分大小写的搜索来提高您的成功率。

用法

$ cargo install wireguard-vanity-address
$ wireguard-vanity-address dave

searching for 'dave' in pubkey[0..10], one of every 149796 keys should match
one trial takes 17.9 us, CPU cores available: 4
est yield: 671.4 ms per key, 1.49 keys/s
hit Ctrl-C to stop
private cG8SfQGIK4dKZcjtFaVZT3ws7rFfwaaicborQz0IBWA=  public E6cRdAve5NmLpoH1nXjJqcVJRz9sM7cbeK4xaxYsH3o=
private OEkbz37Ztn3Y8R1cfPRHiB9wTA6av/NRzGUuO4hxAnE=  public 0Vr/JZDAve8q+kmNVmiw4KdKiXc//M0EGOY6K9C11nw=
private 8GBLlDECKxTk7VeZ4Mn9zQxUR+lyBzsijczQr6RjE2Y=  public QU8cNLDaVeoqLsyzKx9pFnSN4GNQMkG16TnS4e0XwFU=
private +KmScBxM3iAfIGkqwNYmngRqDq7I1T/P7tH4SNcnqXY=  public 0VvjqadaVeruKrpTc67tuqs2fi3qcP800u5RF3G9fz8=
private gHM5OIUCcecxJg/LIvCGTiMz6UzvZ0Q3V0QW7ngj3FI=  public gjEILdAvEfvG9Ncr14NqeRQrmT5ZJBIrbS+6FsOBiEM=
private QGeuFWwFsCsVrVd39Yp1ItnUicyjwgkjZpvY9npE5F4=  public 6IxmSDave735au9+saEYiB+azvSBIHWfnqCWa9tI5CU=
private OHIZd5auDHQzMFC+r3fp2pF4sstg5SQJjd9bG+QldUo=  public DAVemWOQZBonokPo7H1jiM61STpRUNYv0N0q27Uztgg=
private UDXTYKg2yL/fjc/ces3QVorAKZnHCJm2NBTP6h9bU2Q=  public UBWDAvEwBARXYvkwsUwFVwgFoV230/0Eir+xFWR6kGU=
private EJN1n9o3ilXW7yBPt49vNJe00NK2w6TABETX0z/o124=  public SSDAvEjMO/FpizG3/8rYqDYKFfX7no8ydi+tRrHM9ls=
private KBnvZZ/2T+NkWzI/FODyU5P6DpA7vC/kO9d0ZiMODlE=  public 5OWaDAVEf1xzoiUomAdyCe4MI0x/XjXciqcm7rinhnQ=
private SKE/SnG41wDgDBlEuqRpYd2UnXDph1+6cvENDd/W00o=  public XU0daveTtUZAxFpfPSrfZqp+Yv/EqXGuoSOS15iUUh8=
private eHa22XAJYBj6PxhSkeI5BO71j3/CC9yLeM8zKyzdUV0=  public XDaVEaxYDwPmcAMGlP8CzMEnGC7oSGW3AURF5anC5gA=
private 6Ojic3AYJFgCBIAwExBY74kOKLciJWRkXB17jTfvuWk=  public LdaVewaFPZFHV+5SGNwNdAUJjyVVyprVQs/fDuE5SR8=
private +Hw5k1ABvrYJRoRwGizFhwP5sJcowv4pTii/V7dJ4lA=  public HVyDAvEia/j/pBMx/1mxdsCDprAjZf1U3K0Fn9zEfVk=
private wNVk0Y2LDEmpcNyBIOtmco87v+9hdquSKFnOYyyfY2Y=  public kdavEA7x1CduyJ9+WpfDF5QG1ZSOI4NiduVBTAniB0Y=
private kPCNY3QiCsOLakmh8CPsu6QPMW3MtkFwKP+HKDsOpnA=  public daVE11aF7bx40NqwQqV14hxydDwiv4rC0JPhEVxAKnM=
...

此工具将运行很长时间,随着进程的进行会打印出越来越多的候选者,因此当您看到喜欢的东西时,只需使用 Control-C 或 SIGINT 中断进程。没有保存的状态或配置文件,生成过程完全无记忆性,因此中断它不会丢失任何进度。

一旦找到喜欢的密钥,将私钥部分(在左侧)复制到您的 wg0.conf 配置文件中的 [Interface] PrivateKey= 字段,并在该 VPN 连接的另一侧使用公钥部分(在右侧)在 [Peer] PublicKey= 条目中。

性能

在我的 2017 年笔记本电脑(四核 2.8GHz)上,此工具每个核心每秒检查大约 60,000 个密钥。它使用 rayon 在所有可用核心上并行化,达到每秒 240k 个密钥。

其中只有一小部分试验密钥会匹配搜索字符串。目标字符串的每个字符将这个分数减少约 32 倍(大小写折叠 Base64 编码)。通过允许匹配从第一个十个字母的任何位置开始,我们将命中率提高了约 10 倍。

类似于 dave 的四个字符字符串意味着每(大约)150k 个密钥中只有一个会匹配,而类似于 carol 的五个字符字符串将这个数字减少到 5.6 百万分之一。更长的字符串将导致给定运行时间内候选密钥对数量减少。

您可以在多台机器上运行此程序,但当然,您会面临将这些机器中的任何一台暴露您的私人VPN密钥的风险。该工具不支持管理集群或其他类似功能:只需在每个工作机上安装此工具,并使用相同的参数运行即可。

由于Wireguard VPN密钥并不是真正的公开标识符(您不会像Tor的“洋葱地址”或比特币地址那样在网页上发布它们),我的建议是坚持使用四到五个字符的搜索字符串,并且不要过于努力地寻找完美的公钥。您只需要足够独特的东西,以便在状态显示中区分几个VPN目标。

许可证

本软件采用MIT许可证发布,详细信息请参阅LICENSE

依赖项

约5MB
约88K SLoC