python使用RCON,连接游戏服务器求生之路2、我的世界等

简介:rcon库可以适用Source(起源引擎)、BattlEye(BE交互系统)、MINECRAFT(我的世界java1.9pre4后加入Source RCON协议)的交互

        一、安装rcon库

pip3 install rcon

        二、使用代码

例如,我们要连接的服务器ip是127.0.0.1:25565,设置的RCON密码是114514,要输入指令status:

HOST = '127.0.0.1'
PORT = 25565
PASSWD = '114514'
COMMAND = 'status'

        1、Source(适用游戏:我的世界、求生之路2、CS、GMOD等等)

from rcon.source import Client

with Client(HOST, PORT, PASSWD) as client:
    response = client.run(COMMAND)

print(response)

        2、BattlEye(适用游戏:绝地求生、彩虹六号、Unturned、方舟生存进化、H1Z1等)

from rcon.battleye import Client

with Client(HOST, PORT, PASSWD) as client:
    response = client.run(COMMAND)

print(response)

        三、进阶

        1、使用协程程序:使用rcon()即可

from rcon.source import rcon

response = await rcon(HOST, PORT, PASSWD)

print(response)

        2、处理服务器信息

from rcon.battleye import Client
from rcon.battleye.proto import ServerMessage

def my_message_handler(server_message: ServerMessage) -> None:
    """Print server messages."""
    
    print('Server message:', server_message)

with Client(HOST, 
    PORT, 
    PASSWD
    message_handler=my_message_handler
) as client:
    response = client.run(COMMAND)

print('输出:', response)

参考:rcon · PyPI

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个基于Python的AES密钥扩展实现示例代码: ```python from Crypto.Cipher import AES # 定义原始密钥 key = b'Sixteen byte key' # 定义密钥扩展算法 def key_expansion(key): # 定义轮常量 rcon = [ [1, 0, 0, 0], [2, 0, 0, 0], [4, 0, 0, 0], [8, 0, 0, 0], [16, 0, 0, 0], [32, 0, 0, 0], [64, 0, 0, 0], [128, 0, 0, 0], [27, 0, 0, 0], [54, 0, 0, 0] ] # 获取密钥长度 key_len = len(key) # 计算轮密钥的数量 if key_len == 16: rounds = 10 nk = 4 elif key_len == 24: rounds = 12 nk = 6 elif key_len == 32: rounds = 14 nk = 8 else: raise ValueError("Invalid key length") # 初始化轮密钥数组 round_keys = [key[i:i+4] for i in range(0, key_len, 4)] # 计算并拓展轮密钥 for i in range(nk, 4*(rounds+1)): temp = round_keys[i-1] if i % nk == 0: temp = [temp[1], temp[2], temp[3], temp[0]] temp = [sbox[x] for x in temp] temp[0] ^= rcon[i//nk-1][0] elif nk > 6 and i % nk == 4: temp = [sbox[x] for x in temp] temp = [(round_keys[i-nk][j] ^ temp[j]) for j in range(4)] round_keys.append(temp) return round_keys # 创建AES对象 cipher = AES.new(key, AES.MODE_ECB) # 获取S盒 sbox = list(cipher._cipher.get_sbox()) # 获取所有轮密钥 round_keys = key_expansion(key) # 打印所有轮密钥 for i, rk in enumerate(round_keys): print(f"Round key {i}: {rk}") ``` 在这个示例代码中,我们定义了一个`key_expansion`函数来进行密钥扩展,该函数接受原始密钥作为输入,返回所有轮密钥。在密钥扩展算法中,我们使用了AES的S盒和轮常量来计算并拓展轮密钥。请注意,这里我们使用Python中Crypto库中的AES对象来获取S盒。 在主程序中,我们首先创建了一个AES对象,然后使用`key_expansion`函数获取所有轮密钥,并打印了每个轮密钥。请注意,这里我们使用的是128位密钥,所以只需要生成10个轮密钥。如果您使用的是192位或256位密钥,则需要生成更多的轮密钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱丽数码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值