从 python 读取 BerkleyDB 文件:`\x01\x0b\x88\x0c\x01`?
这个问题简而言之:\x04++HLMh7EjP3ILSfF\x00
和 是什么
'\x01\x0b\x88\x0c\x01-\x10\x02\x06!\x05"\x05#\n$\x0c\'\x0e%\x0b\x01&\x02\'\x06(\n\x00\x00'
意思?
大家好,
我正在尝试阅读 palm pre 2个数据库文件。 文档中提供了一些信息,但还不够让我清楚地理解格式。
使用file
命令,我得知格式为objects.db:Berkeley DB(Btree,版本9,本机字节顺序)
。
尝试使用bsddb.open()
直接打开数据库没有成功;我必须使用
>>> env = bsddb.db.DBEnv()
>>> env.open(None, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
>>> internal_db = bsddb.db.DB(env)
>>> internal_db.open('C:\objects.db', 'objects.db', bsddb.db.DB_BTREE, bsddb.db.DB_RDONLY)
现在我打开数据库,但键和值以我不理解的格式编码:例如,这里有一些键: '\x04++HMvu4v2GZbo1Ox\x00', '\x04++HMwBSPR8Zvwkt5\x00','\x04++HMwF4OJ0R+WeSS\x00'
,和一个值:
'\x01\x0b\xb7\r\x00\x05\xee\x89\x10\x029\x060\x04\x00/\x03\x04++HQqD0wWr_hZP75\x00\x00 \x02"\x06\x00$\x04inbox\x001\x02+\x04+33626320868\x00\x00%\x0e\x00\x00\x01.0\x19\xb3\x10&\x04Ok\x00-\rM\\/\x892\n:\r\x00\x05\xee\x89\'\x04sms\x003\n(\x04successful\x00.\rM\\/\x89\x00'
我尝试从utf8解码它,但没有得到任何令人信服的结果。您知道正在使用哪种编码吗?我不明白 file
命令输出的本机字节顺序
部分,它可能与此有关吗?
谢谢!
This question in a nutshell: what do \x04++HLMh7EjP3ILSfF\x00
and
'\x01\x0b\x88\x0c\x01-\x10\x02\x06!\x05"\x05#\n$\x0c\'\x0e%\x0b\x01&\x02\'\x06(\n\x00\x00'
mean?
Hi all,
I'm trying to read palm pre 2 database files. Some information is available in the documentation, but not enough for me to clearly understand the format.
Using the file
command, I learnt that the format was objects.db: Berkeley DB (Btree, version 9, native byte-order)
.
Trying to open the database directly using bsddb.open()
didn't work; I had to use
>>> env = bsddb.db.DBEnv()
>>> env.open(None, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
>>> internal_db = bsddb.db.DB(env)
>>> internal_db.open('C:\objects.db', 'objects.db', bsddb.db.DB_BTREE, bsddb.db.DB_RDONLY)
Now I've open the database, but the keys and values are encoded in a format which I don't understand: for example, here are some keys: '\x04++HMvu4v2GZbo1Ox\x00', '\x04++HMwBSPR8Zvwkt5\x00', '\x04++HMwF4OJ0R+WeSS\x00'
, and a value:
'\x01\x0b\xb7\r\x00\x05\xee\x89\x10\x029\x060\x04\x00/\x03\x04++HQqD0wWr_hZP75\x00\x00 \x02"\x06\x00$\x04inbox\x001\x02+\x04+33626320868\x00\x00%\x0e\x00\x00\x01.0\x19\xb3\x10&\x04Ok\x00-\rM\\/\x892\n:\r\x00\x05\xee\x89\'\x04sms\x003\n(\x04successful\x00.\rM\\/\x89\x00'
I tried to decode it from utf8, but I didn't get any convincing results. Do you recognize which encoding is being used? I don't understand the native byte-order
part of the output of the file
command, could it be related to this?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有根据的猜测
从简单的检查来看,该消息可能是“短信成功”,并带有电话号码:
我认为其他字符是二进制数据。
编码
解码它没有帮助 - chardet 和 BeautifulSoup 都将其检测为
windows-1252
:但是,1252解码没有任何意义:
Educated guess
From simple inspection, The message is probably "sms successful", with a phone number:
I think the other characters are binary data.
Encodings
Decoding it did not help - Both chardet and BeautifulSoup detects this as
windows-1252
:However, the 1252 decoding gives nothing meaningful:
尝试使用 PalmDB 或 dbsql 而不是
bsddb
。Try using PalmDB or dbsql instead of
bsddb
.