ModMdo
模组属性评比

距离显示结果还剩4票~

路过的这位少侠,你觉得这款Mod怎么样,可否愿意来评一评它呢?登录并评比
更新日志
  • 暂无日志..

历史编辑记录更多
    管理组

      暂无管理组..

    编辑组

      暂无编辑组..

    开发组申请
    活跃
    开源

    ModMdo

    --

    初出茅庐

    昨日指数: -
    昨日平均指数: 67.753

    1.37万

    总浏览

    --

    资料填充率


    如何下载?
    • ModMdo

      一个服务端多功能 Mod。

      一些功能需要客户端安装才能使用。


      目前的主要用途在白名单,但是不止这一个功能。

      因为使用方式已修改,所以以下介绍适用于ModMdo v1.0.27以后的版本。


      ModMdo v1.0.27后

      原版的白名单由于使用用户名,不判断UUID导致离线服务器很不安全。

      因此ModMdo提供了一个独立于原版的白名单。


      ModMdo白名单需要在客户端安装,在客户端只需要安装,无需其他任何操作。


      在游戏内使用以下命令开启:

      /modmdo useModMdoWhitelist enable


      在此之前可能先需要使用

      /temporary whitelist add <玩家名>

      来为自己添加白名单,否则则需要在控制台添加。


      使用

      /modmdo whitelist remove <玩家名>

      删除玩家的白名单。


      正版兼容

      如果不希望在客户端安装ModMdo,但是希望能够在服务器使用ModMdo白名单的话,

      那么需要在服务端配置文件中将online-mode设为true,也就是需要玩家必须有正版minecraft账号。


      然后使用命令:

      /modmdo compatibleOnlineMode enable

      来开启在线模式与ModMdo白名单的兼容模式(此选项默认开启)。

      后续的白名单添加操作与先前介绍的无差别,直接添加临时白名单然后连接服务器即可。


      同理,将以上命令的enable改为disable将在线模式兼容关闭。

      关闭后需要玩家必须安装ModMdo才可以进服。


      实现

      服务端见:

      登录实现 - ServerLoginNetworkHandlerMixin.java

      校验实现 - ServerPlayNetworkHandlerMixin.java

      客户端见:

      登录实现 - ClientPlayNetworkHandlerMixin.java


      ModMdo修改了服务端的加入游戏方法,

      将在加入游戏时向客户端发送标记数据,让客户端发送登录信息给服务器,

      而且ModMdo在开启白名单时要求必须经过登录检查才允许加入服务器。


      在开启白名单时,玩家有一段时间将信息发送登录给服务器。

      如果超过指定时间后服务端仍未收到客户端的信息,就会断开玩家的连接,

      而如果是收到了错误的信息,则不会等待这么长时间,会直接断开连接,

      如果信息没有问题,才会给予玩家放行,此时才会开始发送游戏交互数据(区块、玩家、实体等)。


      1.0.27版本以前

      ModMdo v1.0.27以前的版本在此称为旧版本。


      旧版本所使用的检查方式是登陆时发送一个token,

      由服务器生成token,再由服务器管理将此分发给玩家,

      玩家需要将它填入游戏的"添加服务器"页面的“Token”选项,

      或是手动写入配置文件(于config/modmdo/configs/specified_token.mhf中)。


      新版本已经不再兼容此方式。

      使用旧版本ModMdo登录到使用新版本ModMdo服务器时,

      会提示“obsolete login type”并断开连接。


      管理功能

      封禁玩家 

      此命令从v1.0.35版本起可以使用。

      封禁玩家需要启用ModMod白名单才可以使用,否则请使用原版的 /ban 命令。


      使用

      /temporary ban add <玩家名> <时间(分钟)>

      在一段时间内封禁玩家,将add换为reduce可以减少玩家封禁的时间。


      使用

      /temporary ban add <玩家名> -1

      进行无期限封禁玩家。


      使用

      /temporary ban remove <玩家名>

      对玩家进行解封。


      当一名玩家已经在一段时间内被封禁,此时再运行封禁命令会自动对该玩家进行加时封禁,

      但是此命令对无期限封禁的玩家没有意义。


      邀请

      使用

      /temporary invite add <玩家名> <时间(分钟)>

      来添加一个邀请,将add换为reduce可以减少邀请有效时间。


      使用

      /temporary invite remove <玩家名>

      来取消邀请。


      当一名玩家已经被邀请,此时再运行邀请命令会自动对该玩家进行加时邀请。


      注意:邀请不能当做白名单使用,在服务器关闭时所有的邀请都会一律失效。


      安全性功能

      独立ID

      (此功能适用情景:在A服务器泄露ID,在B服务器不能被使用)

      自v1.0.37版本起,支持独立ID或者使用不共享的本地密钥加密ID,此功能不需要服务端支持。

      修改配置文件 config/modmdo/secure_level.modmdo 来设置需要的方法。


      支持 UNEQUAL_ID 、 UNEQUAL_KEY 、 NO_SECURE。

      分别为独立ID、本地密钥加密、使用原始ID。


      独立ID理论上来说是最安全的,但是也是占用硬盘最大的。

      本地密钥匙只有16位(自v1.0.39起为32位),使用AES256加密原ID,注意此加密是可逆的,所以当你的id泄露后,可以在解密16^91(或32^91)次计算并检查后一定成功破解出你的原始ID,相对于独立ID更容易破解,但是也近乎不可能。


      ID真实性

      (此功能适用情景:在某服务器的ID泄露,但不能被使用)

      自v1.0.39版本起,支持使用不保存的密钥来校验ID真实性,此功能需要服务端和客户端同时支持。


      在登录时,玩家会发送在此服务器的ID,以及一个加密后的数据,

      此数据原为可序列化的数据,且数据内可以通过某些特定算法提取出原始ID,

      这时玩家还会附带一个密钥,服务器将会使用它来解密这个数据,但不会保存它。


      只有当解密成功且提取出来的ID与原始ID相同,才会认可玩家。

      因此,无法在获取某玩家ID的情况下直接加入服务器,此功能相当于逼迫使用暴力破解这种极低效方式来攻击账号。


      散列存储

      自v1.0.42起,服务端存储的标识符是被SHA3-512散列处理过的。


      在登录时服务端会处理原始标识符再去与存储的比对,这导致即使将数据库和玩家的密钥全部泄露出去也没有用。

      鉴于SHA3-512的碰撞难度,可以说目前几乎已经彻底实现了无法暴破。


      计划中

      中间人攻击

      正在计划对中间人攻击做出措施。


      中间人攻击原理为让客户端连接到假的服务端,通过虚假数据包骗取玩家发送信息,

      目前暂时没有测试这个攻击方式,但是理论上来说目前的ModMdo是可以被此方法攻击的。


      仅登录

      ModMdo提供了一个将登录功能分离出来的jar,

      此jar为客户端mod,仅有登录功能,服务端安装无效。


      仓库: cao-awa/ModMdo at auth (github.com)


      已发布的:ModMdoAuth · Releases · cao-awa/ModMdo (github.com)


      其他

      不要用修改fabric.mod.json版本的方式在更低版本运行,

      由于版本差异过大,这将是一定不会成功的。


      但可以尝试修改源代码内的那些mixin来将ModMdo放到更低版本运行。


      以及,此模组暂时已经停止更新,以下情况例外:

      1. 出现了漏洞

      2. 游戏版本更新

      3. 想到了更好的方式

      要那么安全有什么用呢(

    短评加载中..