昨天做一道密码学题目,需要比较大的计算资源才能爆破出几个参数。虽然在本机上跑出了结果,但是毕竟一台笔记本电脑的计算很慢,在遇到其他问题的时候可能就 GG 了。因此今天租用了一台 x86 云服务器来重新做一遍这个计算任务。
0x00 租用服务器
由于比较熟悉阿里云,就在阿里云上面租了。入口是“超级计算集群”。
按照自己的计算任务,选择对应的配置。我们这一次任务不需要多少内存,但需要很强的 CPU 主频,故选择计算型。
另外,这里选择了抢占式实例。也就是竞价使用服务器,当自己的出价够高时成交;不够高时服务器实例被释放。竞价成功后实例会保留至少 1h. 我们的任务在 1h 之内可以跑出来,因此可以选择抢占式实例(比按量计价优惠很多)。
系统镜像随便选,我选了基于 CentOS 的 Aliyun Linux.
网络设置这边,由于我们不会搞出多大的流量,选择按流量计费。
用自己的 RSA 密钥对登录服务器,此时密码登录将会被关闭,提升安全性。确认订单之后,等待几十秒钟,我们的实例就启动好了。
0x01 爆破
由于 Python 过于慢,这一次的代码是 C++ 写的。安装 g++
和 lrzsz
:
yum install lrzsz
yum install gcc-c++ # yum 里面的 g++ 叫做 gcc-c++
然后改写代码,支持在命令行参数里面指定参数范围,以便之后多进程计算:
编译的时候注意加 -O3
优化。然后开很多个进程跑就行了。每一个终端的指令如下:
./boom 1234 5678 > crack.log &
我们一共开了 12 个进程来跑计算,比我的笔记本电脑快了很多。最后 CPU 监控情况如下:
我们榨干了服务器 CPU 的性能。几分钟之后,爆破出了正确结果。
0x02 释放实例
实例用完了不释放会继续收费。做完了计算之后,记得及时释放~
这一次由于任务比较简单,需要的计算资源不算太高。以后任务需要更多资源的时候,选择更高配置的实例就可以了。