2012-04-24 24 views
1

나는 안드로이드 애플 리케이션에서 리버스 엔지니어링을하고있다. android com.db4o 클래스에서 serialize 된 sqllite3 blob 데이터를 deserialize해야합니다.순수 파이썬에서 파이썬 - javaobj로 자바 역 직렬화를 구현 하시겠습니까?

코드 google 사이트에 python-javaobj 프로젝트가 있습니다. http://code.google.com/p/python-javaobj/

그러나 구현은 약간 까다 롭습니다.

방법 1. 파이썬에서 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을 사용하고 싶습니다. 하지만 제 제작 환경은 자바를 지원하지 않습니다. 나는 후자의 sugeestion을 시도 할 것이다. 감사. – nikescar

답변

1

당신이 당신의 질문의 맥락 언급하지 않는 상황에서 간단한 방법 :

  • 스크립트는 직렬화 된 객체를 읽어

    • 자바에서 도우미 스크립트를 작성을 (참고 당신은

    JSON

    같은 일반적인 형식을 사용하여이 자바 클래스 코드)

  • 데이터 내보내기가 필요합니다

  • +0

    답장을 보내 주셔서 감사합니다. 하지만 python-javaovj 패키지에 대한 사용 예가 좀 더 필요하고 잘못된 점을 찾아야합니다. – nikescar