私はアンドロイドアプリでリバースエンジニアリングを行っています。 android com.db4oクラスで直列化されたsqllite3ブロブデータを逆直列化する必要があります。python-javaobjで純粋なpythonでjavaの逆シリアル化を実装していますか?
コードgoogleサイトのpython-javaobjプロジェクトが見つかりました。 http://code.google.com/p/python-javaobj/
しかし実装は少しトリッキーです。
方法1. Pythonでsqlliteでアクセスします。私は疑問に思って
import sqlite3
conn=sqlite3.connect('sqlite3.db')
c = conn.cursor()
c.execute('select binaryfield from sqltable')
blob=c.fetchone()
blobstring=blob[0]
import javaobj
marshaller = javaobj.loads(blobstring)
エラーメッセージ
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/site-packages/javaobj-0.1.0-py2.6.egg/javaobj.py", line 44, in loads
File "/usr/lib/python2.6/site-packages/javaobj-0.1.0-py2.6.egg/javaobj.py", line 155, in __init__
File "/usr/lib/python2.6/site-packages/javaobj-0.1.0-py2.6.egg/javaobj.py", line 178, in _readStreamHeader
IOError: The stream is not java serialized object. Invalid stream header: 00000005
は、他のアプローチがあります。
一般的にジャイソンではそれほど簡単ではないでしょうか?とにかく、オブジェクトが本当に標準シリアル化プロトコルでシリアル化されているかどうかをチェックします。プロトコルはオープンで複雑ではありませんが、Javaプログラムを書くだけで簡単です。 – Voo
はい、私はjythonを使いたいです。私の制作環境はjavaをサポートしていません。私は後者の努力を試みるだろう。ありがとう。 – nikescar