具体来说,我正在寻找一种方法来开始处理一些Python 3或Elixir代码打开并访问Tox网络客户端tox_save.tox
的{{1}}文件。
一旦我弄明白如何让μTox
进入我的虚拟环境,我就会尝试用它来探索它。不过,与此同时,我希望有人会在这里或Github回复。
我的另一个猜测是,它是以二进制格式存储的普通旧C数组。
看起来tox_save.tox可能是加密的sqlite文件。
在我淘汰ol'之前十六进制编辑器,有谁知道格式肯定?
答案 0 :(得分:1)
它的二进制格式。基本上将C结构存储到文件中。
这是python2示例如何使用它:
import struct
#messenger.c
MESSENGER_STATE_TYPE_NOSPAMKEYS = 1
MESSENGER_STATE_TYPE_NAME = 4
MESSENGER_STATE_TYPE_STATUSMESSAGE = 5
def process_chunk(index, state):
if index + 8 >= len(state):
return
length = struct.unpack_from("<H", state, index)[0]
new_index = index + length + 8
data_type = struct.unpack_from("<H", state, index + 4)[0]
if data_type == MESSENGER_STATE_TYPE_NOSPAMKEYS:
result = str(state[index + 8:index + 8 + length]).encode('hex')
print("nospam = {}, public_key = {}, private_key = {}".format(result[0:4],
result[4:36],
result[36:68]))
if data_type == MESSENGER_STATE_TYPE_NAME:
print("User name = {}".format(str(state[index + 8:index + 8 + length])))
if data_type == MESSENGER_STATE_TYPE_STATUSMESSAGE:
print("Status = {}".format(str(state[index + 8:index + 8 + length])))
# ... there's much more data
process_chunk(new_index, state)
tox_save = open('/tmp/tox_save.tox', 'rb').read()
process_chunk(8, tox_save)