2012-04-24 13 views
1

私はアンドロイドアプリでリバースエンジニアリングを行っています。 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 

は、他のアプローチがあります。

+0

一般的にジャイソンではそれほど簡単ではないでしょうか?とにかく、オブジェクトが本当に標準シリアル化プロトコルでシリアル化されているかどうかをチェックします。プロトコルはオープンで複雑ではありませんが、Javaプログラムを書くだけで簡単です。 – Voo

+0

はい、私はjythonを使いたいです。私の制作環境はjavaをサポートしていません。私は後者の努力を試みるだろう。ありがとう。 – nikescar

答えて

1

あなたがあなたの質問の文脈言及していない状況では、最も単純なアプローチ、:

  • スクリプトがシリアライズされたオブジェクトを読み込む

    • は、Javaでのヘルパースクリプトを作成する(ことに注意してくださいあなたは

    JSON

    のような共通のフォーマットを使用して、このためのJavaクラス・コード)

  • エクスポートデータを必要とします

  • +0

    お返事ありがとうございます。そのpython-javaovjパッケージの使用例をいくつか見て、何が間違っているか調べてみましょう。 – nikescar

    関連する問題