.tox 文件以什么格式存储?

问题描述 投票:0回答:1

具体来说,我正在寻找一种方法来开始处理一些 Python 3 或 Elixir 代码,打开并访问 Tox 网络客户端的

tox_save.tox
文件
μTox

一旦我弄清楚如何在我的虚拟环境中运行

pip install pysqlite
,我就会尝试用它来探索它。但与此同时,我希望有人能在这里或在 Github 上做出回应。

我的另一个猜测是它是一个以二进制格式存储的普通旧 C 数组。

看起来 tox_save.tox 可能是一个加密的 sqlite 文件。

在我使用十六进制编辑器之前,有人知道格式吗?

public-key-encryption file-format
1个回答
2
投票

它是二进制格式。基本上将 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)
© www.soinside.com 2019 - 2024. All rights reserved.