Scallion
Scallion可以帮助我们使用OpenCL来创建GPG密钥以及针对Tor隐藏服务的.onion地址。Scallion基于Mono软件平台开发和运行,并已在Arch linux平台上成功测试,工具的运行依赖.NET 3.5+(已在Windows 7和Windows Server 2008平台上测试)。
Scallion当前仍处于测试阶段,正在积极开发中,但是它目前已经可以正常使用了。我们的开发当前主要集中在性能、用户界面和安装难度方面的改进上,而不是在生成密钥以及相关算法方面。
工具依赖
1、安装并配置好OpenCL以及相关驱动器。
2、OpenSSL,在Windows环境下,已包含有预内置的x64 DLL。
3、尽在Windows平台下,需要VC++ Redistributable 2008。
工具下载
最新版本源码压缩包:【点我下载】
linux环境下构建
依赖组件
针对自己的Linux发行版,获取最新版本的Mono:【传送门】
使用下列命令安装常用依赖组件:
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
AMD/OpenSource构建命令:
sudo apt-get install ocl-icd-opencl-dev
Nvidia构建命令:
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
最后,运行下列命令:
msbuild scallion.sln
Docker Linux配置(Nvidia GPU)
1、获取nvidia-docker容器运行时环境:【点我获取】。
2、运行下列命令构建容器:
docker build -t scallion -f Dockerfile.nvidia
3、运行下列命令:
docker run --runtime=nvidia -ti --rm scallion -l
Windows环境下构建
1、在VS中打开“scallion.sln”
2、构建解决方案
工具使用
枚举设备:
$ mono scallion/bin/Debug/scallion.exe -l
生成哈希:
$ mono scallion/bin/Debug/scallion.exe -d 0 prefix Cooking up some delicious scallions... Using kernel optimized from file kernel.cl (Optimized4) Using work group size 128 Compiling kernel... done. Testing SHA1 hash... CPU SHA-1: d3486ae9136e7856bc42212385ea797094475802 GPU SHA-1: d3486ae9136e7856bc42212385ea797094475802 Looks good! LoopIteration:40 HashCount:671.09MH Speed:9.5MH/s Runtime:00:01:10 Predicted:00:00:56 Found new key! Found 1 unique keys. <XmlMatchOutput> <GeneratedDate>2014-08-05T07:14:50.329955Z</GeneratedDate> <Hash>prefix64kxpwmzdz.onion</Hash> <PrivateKey>-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCmYmTnwGOCpsPOqvs5mZQbIM1TTqOHK1r6zGvpk61ZaT7z2BCE FPvdTdkZ4tQ3/95ufjhPx7EVDjeJ/JUbT0QAW/YflzUfFJuBli0J2eUJzhhiHpC/ 1d3rb6Uhnwvv3xSnfG8m7LeI/Ao3FLtyZFgGZPwsw3BZYyJn3sD1mJIJrQIEB/ZP ZwKBgCTUQTR4zcz65zSOfo95l3YetVhfmApYcQQd8HTxgTqEsjr00XzW799ioIWt vaKMCtJlkWLz4N1EqflOH3WnXsEkNA5AVFe1FTirijuaH7e46fuaPJWhaSq1qERT eQT1jY2jytnsJT0VR7e2F83FKINjLeccnkkiVknsjrOPrzkXAkEA0Ky+vQdEj64e iP4Rxc1NreB7oKor40+w7XSA0hyLA3JQjaHcseg/bqYxPZ5J4JkCNmjavGdM1v6E OsVVaMWQ7QJBAMweWSWtLp6rVOvTcjZg+l5+D2NH+KbhHbNLBcSDIvHNmD9RzGM1 Xvt+rR0FA0wUDelcdJt0R29v2t19k2IBA8ECQFMDRoOQ+GBSoDUs7PUWdcXtM7Nt QW350QEJ1hBJkG2SqyNJuepH4PIktjfytgcwQi9w7iFafyxcAAEYgj4HZw8CQAUI 3xXEA2yZf9/wYax6/Gm67cpKc3sgKVczFxsHhzEml6hi5u0FG7aNs7jQTRMW0aVF P8Ecx3l7iZ6TeakqGhcCQGdhCaEb7bybAmwQ520omqfHWSte2Wyh+sWZXNy49EBg d1mBig/w54sOBCUHjfkO9gyiANP/uBbR6k/bnmF4dMc= -----END RSA PRIVATE KEY----- </PrivateKey> <PublicModulusBytes>pmJk58BjgqbDzqr7OZmUGyDNU06jhyta+sxr6ZOtWWk+89gQhBT73U3ZGeLUN//ebn44T8exFQ43ifyVG09EAFv2H5c1HxSbgZYtCdnlCc4YYh6Qv9Xd62+lIZ8L798Up3xvJuy3iPwKNxS7cmRYBmT8LMNwWWMiZ97A9ZiSCa0=</PublicModulusBytes> <PublicExponentBytes>B/ZPZw==</PublicExponentBytes> </XmlMatchOutput> init: 491ms / 1 (491ms, 2.04/s) generate key: 1193ms / 6 (198.83ms, 5.03/s) cpu precompute: 10ms / 6 (1.67ms, 600/s) total without init: 70640ms / 1 (70640ms, 0.01/s) set buffers: 0ms / 40 (0ms, 0/s) write buffers: 3ms / 40 (0.08ms, 13333.33/s) read results: 67442ms / 40 (1686.05ms, 0.59/s) check results: 185ms / 40 (4.63ms, 216.22/s) 9.50 million hashes per second Stopping the GPU and shutting down...
多模式哈希
Scallion支持通过原语正则表达式语句来搜索单一或多模式哈希,目前仅支持字符类型(例如[absd])。“.”字符代表任意字符,Onion地址长度固定为16个字符,GPG指纹为40个字符。你可以通过“$”来寻找前缀或后缀匹配,例如DEAD$。除此之外,你还可以使用pipe语句(例如pattern1|pattern2)来寻找多模式哈希,当然了,这种搜索模式下运行速度肯定不乐观。
查询样例
mono scallion.exe prefix[234567] mono scallion.exe -c prefix scallion hashes mono scallion.exe -c "prefix|scallion|hashes" mono scallion.exe .........badbeef mono scallion.exe --gpg badbeef$ # 生成GPG密钥 mono scallion.exe "suffixa$|suffixb$|prefixa|prefixb|a.suffix$|a.test.$"
Scallion工作机制
1、使用OpenSSL以及CPU生成RSA密钥
2、向GPU发送密钥
3、增加密钥的公共指数
4、对密钥进行哈希计算
5、如果生成的哈希非部分冲突,则返回第三步
6、如果生成的密钥未通过PKCS #1 v2.1的及健全性检查,则返回第三步
7、生成全新的密钥
速度/性能
初始的RSA密钥生成是在CPU上完成的,SHA1哈希计算则是在GPU上完成的。下面给出的是常见GPU的计算速度表:
| GPU型号 | 速度 |
|---|---|
| Intel i7-2620M | 9.9 MH/s |
| Intel i5-5200U | 118 MH/s |
| NVIDIA GT 520 | 38.7 MH/s |
| NVIDIA Quadro K2000M | 90 MH/s |
| NVIDIA GTS 250 | 128 MH/s |
| NVIDIA GTS 450 | 144 MH/s |
| NVIDIA GTX 670 | 480 MH/s |
| NVIDIA GTX 970 | 2350 MH/s |
| NVIDIA GTX 980 | 3260 MH/s |
| NVIDIA GTX 1050 (M) | 1400 MH/s |
| NVIDIA GTX 1070 | 4140 MH/s |
| NVIDIA GTX 1070 TI | 5100 MH/s |
| NVIDIA GTX TITAN X | 4412 MH/s |
| NVIDIA GTX 1080 | 5760 MH/s |
| NVIDIA Tesla V100 | 11646 MH/s |
| AMD A8-7600 APU | 120 MH/s |
| AMD Radeon HD5770 | 520 MH/s |
| AMD Radeon HD6850 | 600 MH/s |
| AMD Radeon RX 460 | 840 MH/s |
| AMD Radeon RX 470 | 957 MH/s |
| AMD Radeon R9 380X | 2058 MH/s |
| AMD FirePro W9100 | 2566 MH/s |
| AMD Radeon RX 480 | 2700 MH/s |
| AMD Radeon RX 580 | 3180 MH/s |
| AMD Radeon R9 Nano | 3325 MH/s |
| AMD Vega Frontier Edition | 7119 MH/s |
MH/s = 百万哈希/秒
工具运行截图

项目地址
Scallion:【GitHub传送门】

日本 1F
在Windows上装OpenCL驱动麻烦不?
湖南省长沙市 2F
这工具名字取得挺有意思,葱和洋葱hhh
日本 3F
GTX1070居然能跑到4100MH/s,有点厉害啊
上海市 B1
@ 糖糖仔 这速度真是惊人,显卡还能再挖掘点潜力。
澳大利亚 B1
@ 糖糖仔 4100MH/s这数据看着是真猛,我这老显卡泪目了
湖南省衡阳市 4F
之前搞过类似的东西,显卡差点烧了
巴基斯坦 5F
为啥只支持.NET 3.5+?现在都4.8了
福建省泉州市 6F
生成.onion地址要多久?
北京市 B1
@ 群聊窥屏怪 用1070ti试了下,确实能到5000MH/s左右
山东省济南市 7F
AMD显卡支持怎么样?
日本 B1
@ 魂灯摇 AMD的卡稍慢点,但还能跑到几百MH,够玩了👍
韩国 B1
@ 魂灯摇 A卡用开源驱动还行,闭源驱动各种坑
北京市 8F
看不懂,但感觉很厉害的样子
广东省 B1
@ 奈何桥畔 说实话,我也一头雾水,不过跑得快我还是乐呵。
澳大利亚 9F
这个能用来干啥?
浙江省温州市 B1
@ 阴阳童 主要用来建tor隐藏服务,你懂的
澳大利亚 10F
Docker配置那块没太看明白
北京市 11F
装OpenCL驱动折腾死我了,AMD显卡驱动总报错
河南省郑州市 12F
用GTX1060跑这个速度怎么样?
新西兰 13F
这玩意儿搞出来的地址真能直接用?
马来西亚 14F
之前试过类似工具,linux下编译一堆依赖要装
江苏省苏州市 15F
为啥非要mono啊,直接native不好吗
甘肃省兰州市 16F
看到GPU速度表惊了,现在显卡都这么猛了?
湖北省武汉市 17F
Docker那段完全没看懂,有更简单的教程没
福建省厦门市 18F
生成密钥的时候CPU会不会成为瓶颈?
日本 19F
这种工具会不会被滥用啊🤔
印度 B1
@ 忧郁的黄瓜 这玩意儿安全性靠谱吗?
上海市 20F
葱和洋葱…这命名脑洞可以
内蒙古呼伦贝尔市 21F
AMD显卡支持咋样?有谁试过没?
湖北省武汉市 22F
这配置在M1芯片上能跑吗?
北京市 B1
@ 懒猫晒太阳 M1芯片跑不了,ARM架构+OpenCL支持太差,别折腾了
河南省郑州市 23F
折腾OpenCL驱动真费劲,上次搞了一下午
韩国 24F
看到葱的图片饿了…
韩国 25F
为啥非要用mono,直接写C++不行吗?
陕西省西安市 26F
生成.onion要等多久啊?
河南省驻马店市 27F
GTX1060跑这个速度咋样?
韩国 B1
@ 落日刀锋 GTX1060实测大概1800MH/s,还行吧
山东省 28F
之前玩过类似工具,显卡风扇狂转
辽宁省 29F
Docker那段确实写得不太清楚
广东省广州市白云区 30F
命名玩双关倒是挺逗,但能不能别总拿菜名起项目名😂
上海市 31F
这东西生成的.onion地址真能稳定上线用?怕不是秒被封
香港 32F
Docker配置那段看得迷糊,有没有完整示例啊
日本 33F
AMD显卡跑这玩意儿发热严重不?R9 380X的老卡还能抢救下不
中国 34F
看到图片里的葱,我第一反应是下锅炒蛋,hhh
重庆市 35F
之前搞过一次,跑了三天才出个匹配前缀的密钥,太煎熬
江苏省南京市 36F
linux下编译依赖是真的烦,openssl版本不对直接GG
北京市 37F
这工具名字比功能还出圈,葱和洋葱也算扯上亲戚了
黑龙江省齐齐哈尔市 38F
GPU跑这速度表挺有参考价值,我的老卡该退休了
江苏省泰州市 B1
@ RedBrick 老卡还能用就不错啦
湖北省武汉市 39F
看不懂技术细节,但感觉这玩意儿能被用来干坏事啊🤔