在使用的过程中注意到某些情况下Mirai会明文发送密码(当然也有可能是我分析错数据包了),同时也为了防备意外的攻击,如果真的发生了,那真的是遇见神佬了,准备跑路吧。

因此尝试了一下Autologin.yml中使用MD5类型的密码,虽然防护效果不明,但至少可以降低明文密码被盗取后遭到撞库攻击的概率,毕竟能做到每个账号单独设置不同密码的人还是少数。

Autologin.yml配置文件与密码相关的配置如下

password: # 密码种类, 可选 PLAIN 或 MD5 kind: PLAIN # 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制 value: 123

由提示可知密码类型kind为MD5时在value中需填入由密码明文转换而来的16位MD5。但是在测试过程中,使用16位MD5会登录失败

2024-08-03 20:06:49 V/Bot.**********: Event: AutoLoginEvent.Failure(bot=**********, protocol=ANDROID_PAD, cause=net.mamoe.mirai.network.BotAuthorizationException: BotAuthorization(BotAuthorization.byPassword(<ERASED>)) threw an exception during authorization process. See cause below.) 2024-08-03 20:06:49 I/Bot.********: Bot cancelled: Bot closed

思考一阵子之后我想起曾经在某已经忘了名子的论坛里见过这样的技术贴,QQ2021是使用的32位MD5,并且是经过Base64加密的,但是配置提示里已经说了是使用MD5的,所以在此处直接使用32位MD5。不出意外登录成功。

下面是修改过的Autologin.yml,供大家参考

accounts: - # 账号, 现只支持 QQ 数字账号 account: 123456 password: # 密码种类, 可选 PLAIN 或 MD5 kind: MD5 # 密码内容, PLAIN 时为密码文本, MD5 时为 32 位 16 进制 value: 202CB962AC59075B964B07152D234B70 # 账号配置. 可用配置列表 (注意大小写): # protocol: ANDROID_PHONE / ANDROID_PAD / ANDROID_WATCH / MACOS / IPAD # device: device.json # enable: true # heartbeatStrategy: STAT_HB / REGISTER / NONE configuration: protocol: ANDROID_PHONE device: device.json enable: false heartbeatStrategy: STAT_HB

56efc36e-5324-45e3-87c7-14a0d850fa7b-image.png
配置时还要注意选择的protocol。至于MD5生成工具,网上一搜一大把,这里就不贴了。