SpenserCai
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

严正声明
本文所涉及的技术,仅供学习交流使用,不得用于非法用途!!!!
DRat简介
DRat全称:Decentralized Remote Administration Tool,译为去中心化远程管理工具。通过区块连技术和某报(当然也可以用别的端到端,支持机器人且够自由就行)实现的无中心化控制服务器、无中心化配置分发服务器的Rat。
DRat是作者提出(反正我是没有百度到,也没有google到类似的)的一种去中心化远程控制技术,其中所涉及的组件是可以等价替换的哟。
预备知识
Web3.0
大家都知道Web1.0通常意义上是只读的,个人网站、大英百科全书等就是在Web1.0时期出现的产物。Web2.0是中心化机构提供了平台,用户可以在平台上通过读写的方式进行各种沟通以及提供服务,但是使用者的账号本质上还是有平台管控。
而Web3.0则是通过区块链的技术,使得每个人都能掌控自己的账号,据个简单的例子:在Web2.0上的游戏装备由游戏公司管理,哪天游戏公司跑路了,你的装备也就没了。而在Web3.0上你的装备存储在区块链上,就算游戏公司跑路了,你的装备依然在,游戏依然可以运行(只是没人维护了而以),当另一接盘侠跳出来说,我愿意继续维护的时候,一切就能继续下去。
当然我这里说的有点通俗,具体的细节大家可以查阅相关资料。
ENS域名
了解了什么是Web3.0我们在来说一下ENS域名吧。
ENS全称Ethereum Name Service(以太坊名称服务)是一个基于以太坊区块链的分布式、开放、可扩展的命名系统。
我们都知道DNS是域名解析服务,通过DNS我们可以将123.55.78.90解析到abc.com这样就通过易于记忆的域名替代了复杂的ip。同样,ENS的功能是将如0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045的以太坊地址解析为vitalik.eth这样有意义的ENS域名。不同的是DNS服务器是中心化的,如果顶级服务商跑路,或者停用域名,那么使用者将会失去所有权,而ENS则是去中心化的,上面的信息是保存在全球的以太坊节点上,只有拥有者才能对其进行更改,并且由于区块连的特性域名的通常来说所有者是无法被溯源的。
DRat的实现原理
控制端去中心化
众所周知,某报是一个端到端的聊天工具,同时有着较好的机器人支持,所以使用某报群组作为主控是一个不错的去中心化的方案。
搭载C猫
由于大家都懂得原因,想使用某报,搭载C猫是必不可少的。
ENS获取配置信息
当我门注册玩ENS域名(注册的方法下文会给出)后,我们会发现有很多字段可以自由编辑,个人认为最合适的当属description字段,将DRat的配置加密后存储在此即可实现配置分发的去中心化,相对于常规的Rat,DRat所使用的方法将不再需要专门的服务器用来存储分发配置文件。
Merge DRat
通过上述的组件我们不难发现整个流程都是去中心化的而程序DRat本身也是相当灵活的,可以通过ENS域名的description字段对主控的群组、bot进行随时变动,同时也不会应为配置分发服务器被端导致失去对DRat的控制。
如何使用
项目地址:https://github.com/SpenserCai/DRat
上面说了这么多的背景故事,接下来就是实践了
获取项目
git clone https://github.com/SpenserCai/DRat.git
环境依赖
DRat使用golang开发,同时使用了python开发了编译脚本和配置文件编译脚本。
Golang>=1.19
Python3
Windows/Linux
Python库:Crypto
ENS域名注册
安装MetaMask插件并创建一个账户
切换到Goerli测试网络
获取Goerli的测试币(这个大家自行百度哈)
访问ENS官网,并连接MetaMask注册ENS域名
编译配置文件
由于配置文件需要上传到ENS,我们对配置文件的内容进行加密
首先从项目的根目录复制build_config.json到任意目录修改该内容,如下(根据自己的实际情况填写):
执行编译命令:
python encode_coding.py build_config/YOU_CONFIG.json <ens域名的前缀(不包含.eth)>
提交到ENS域名
将加密完的字符串(不包含下面的json)复制粘贴到ENS域名中的description中(可以通过访问https://app.ens.domains/name/你的域名/details进入设置页面),修改该完成后拉到最下面Confirm。
编译DRat
由于DRat中需要搭载ENS的域名所以需要手动编译,运行如下命令
python build.py build_config/ENS.json <cli|spy> <windows|linux>
其中ENS.json的内容如下
{
"TELBOT_TOKEN":"",
"TELBOT_CHAT_ID":0,
"CLASH_CONN_STR":"",
"LOCAL_PROXY_PORT":7890,
"ENS_DOMAIN":"你的ENS域名"
}
cli为调试模式,spy为后台模式
运行测试
在windows上运行DRat.exe
在Linux上运行DRat
如果你不幸在linux上运行了ping没有关系,可以通过/rce stop @机器人 来退出当前命令,然后重新通过/rce <command> @机器人来执行,如果你在ENS域名上修改了配置可以通过/reboot_drat来重启并重新加载配置。
后记
就像我再开头所说的DRat是一种技术你可以用其他模块来做等价替换,比如你可以把ENS域名换成别的区块链域名或者是IPFS等等。DRat的核心理念就是区中心化的远程控制,只要能够区中心化都能够被称为是DRat技术。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)