一个反向工程包加密和解密例程,以模拟NosTale客户端或服务器
noscrypto的Python项目详细描述
无加密
一个反向工程包加密-加密和解密例程,以模拟NosTale客户端或服务器。在
摘要
这个项目的目标是重新创建一个算法,用于加密/解密NosTale客户端和服务器之间交换的网络包。我见过许多公开密码,但我认为它们都没有产生与真正的客户机或服务器完全相同的输出(尤其是当涉及特殊字符,如ąśżź
等)时。其中大多数库的问题是错误的掩码生成算法。如果您遇到此库产生的输出与游戏客户端或服务器产生的原始输出不同,请立即报告。在
安装
请使用pypi安装此库:
pip install noscrypto
测试
单元测试在noscrypto/tests
下可用
使用
所有函数都接受bytes
作为输入,并返回{
客户
函数可以像
fromnoscryptoimportClient
在客户端.LoginEncrypt
加密您的数据包,以便登录服务器可以读取它。如果不存在\n
字符,则自动在数据包末尾添加\n
字符。在
在客户端.LoginDecrypt
解密登录结果包,以便您可以读取它
>>>Client.LoginDecrypt(b'\x75\x70\x78\x7B\x72\x2F\x44\x19').decode("ascii")'failc 5\n'
在Client.world加密
加密您的软件包,以便世界服务器可以读取它。除了packet
之外,您还需要提供您的session
(您从登录服务器收到的)。最后一个参数is_first_packet
(默认值False
)必须设置为True
,前提是要将第一个数据包发送到world server(会话数据包)
>>>Client.WorldEncrypt("hey!".encode("ascii"),1337,False)b'}\x10\x13\xffWx'
在Client.world解密
解密服务器发送的world包,以便您可以读取它
>>>Client.WorldDecrypt(b'\x04\x8C\x8B\x9E\x8B\x96\x16\x65\x16\x65\x1A\x41\xA4\x14\x15\x46\x8E\xFF')b'stat 221 221 60 60 0 1024\n'
服务器
函数可以像
fromnoscryptoimportServer
在服务器.loginecrypt
加密您的数据包,以便客户端可以读取它。如果不存在\n
字符,则自动在数据包末尾添加\n
字符。在
>>>Server.LoginEncrypt("hello world".encode("ascii"))b'wt{{~/\x86~\x81{s\x19'
在Server.LoginDecrypt
从客户端解密登录数据包,以便您可以读取它
>>>Server.LoginDecrypt(b'\xba\xb5\xc9\xd8').decode("ascii")'hey\n'
在服务器.WorldEncrypt
加密世界数据包,以便客户端可以读取它
>>>Server.WorldEncrypt("stat 221 221 60 60 0 1024\n".encode("ascii"))b'\x04\x8c\x8b\x9e\x8b\x96\x16e\x16e\x1aA\xa4\x14\x15F\x8e\xff'
在Server.world解密
解密客户端软件包,以便world server可以读取它。除了packet
之外,还需要提供客户机session
。最后一个参数is_first_packet
(默认值False
)必须设置为True
,前提是你还没有从客户端接收到第一个包(会话包)。在
>>>Server.WorldDecrypt(b'}\x10\x13\xffWx',1337,False).decode("ascii")'hey!'
- 项目
标签: