2016-06-05 11 views
0

요청 헤더 :http 스트림에서 Application/x-thrift를 디코딩하는 방법은 무엇입니까?

POST https://gfp.line.naver.jp/P3 HTTP/1.1
Host: gfp.line.naver.jp
Connection: keep-alive
Content-Length: 180
Origin: null
X-LAL: en
X-LCS: xxx==
X-LHM: POST
Content-Type: application/x-thrift
X-LST: 260000
Accept: application/x-thrift
X-Line-Application: CHROMEOS 1.4.1 Chrome_OS 1
User-Agent: x
X-LE: 2
DNT: 1
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

응답 헤더 :

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Line-HTTP,X-LS
Connection: keep-alive
Content-Length: 292
Content-Type: application/x-thrift;charset=UTF-8
X-LE: 2
X-Line-HTTP: P,HC,LP
X-LS: xxx

내가 피들러에서 그 헤더 윈도우 10 홈에서 실행 얻을
내가 지금까지 연구 된 적이 무엇,이 약 가장 가까운 thrift 파일, https://github.com/cslinmiso/LINE-instant-messenger-protocol/blob/master/line.thrift 및 공식 컴파일러는 https://thrift.apache.org/download 및 일부 빌드 정보를 찾을 수 있습니다.

내 질문, 절약 모드를 디코딩하는 방법 우리는 기나귀 파일과 스트림 헤더 + 본문이 있다면?

P.S. 위의 중고품 파일을 가지고 있기 때문에 나의 경우는 How can you reverse engineer a binary thrift file?과 다르다.

+0

먼저 헤더 정보 만 있으면이 작업을 수행 할 수 없으며 전체 메시지 내용을 사용할 수 있다면 재미있는 작업이 될 것입니다. 다음으로 IDL 파일 (이미 말한대로)을 가지고 있다면 다른 IDL 파일이 필요한 이유는 무엇입니까? 마지막으로, 공식적인 API 문서를보고/요청 했습니까? – JensG

+0

@ JensG 요청 및 응답 내용의 전체 원시 데이터가 있지만 중요한 데이터를 보내고 있기 때문에 헤더 만 복사합니다. 그것은 거의 내가 내용을 볼 때 메모장을 사용하여 이진 .exe 파일을 보는 것처럼 인코딩 된, 난 그냥 읽고 – Newbie123

+0

을 이해할 수 디코딩 된 스트림의 내용이 무엇인지 알고 싶어 여기에 그냥 발견 된 일부 링크입니다. [API 설명서 (https://media.readthedocs.org/pdf/line/latest/line.pdf) 및 [이 SO 질문] (http://stackoverflow.com/questions/14494444/is-there-an -api-for-line-by-naver). 그리고 [이 웹 페이지] (http://carpedm20.github.io/line/tutorial.html). BTW, 당신은 전에 파란색으로, 어떤 요청을 보내지 않고 "피들러에서 뭔가를"얻지 않습니다. 그래서 무엇을 보내셨습니까? 어떻게 작성하셨습니까? 나는 이것에 대해 더 이상 생각할수록 당신이 절대적으로 잘못된 방법으로 뭔가하려고 노력하고 있다는 인상을 받게됩니다. pip.exceptions.InstallationError'유효하지 syntax'을 : – JensG

답변

1

IDL 파일이 있다면 프로그래밍 방식으로 데이터로 작업하려는 경우 컴파일러를 사용하여 클라이언트를 생성 할 수있다.

당신은 단지 데이터를 읽으려면,이 유틸리티를 사용할 수 있습니다 https://github.com/pinterest/thrift-tools

"수동"응답 메시지를 읽고, 귀하의 의사 코드는 다음과 같을 수 있다면

(I를 이 메시지를 주석에 넣으십시오. 그러나 끔찍한 형식입니다.)

readMessageBegin() // this is the message wrapper 
readStructBegin() // this is the 'response' struct 
readFieldBegin() // this will have field id '0' if successful, something else if it was an exception 
// next you read the response value 
readFieldEnd()  // end of response field 
readStructEnd() // end of response struct 
readMessageEnd() // end of message 
+0

내가 문제 **, 그것은'라고 구문 에러 ** 창에 중고품-도구를 설치를 명령 "파이썬 setup.py egg_info"오류 코드로 실패 1' ** HTTP ://pastebin.com/tsbYqeDi** 및 클라이언트 생성 방법은 무엇입니까? 나는'실행하려고 한 중고품-0.9.3 --gen HTML line.thrift'하지만 그것이 말하는'[ERROR : X/PortableGit/LINE-인스턴트 메신저 프로토콜/line.thrift : 1002] (마지막 토큰에서 '이었다 ') 예약어 키워드를 사용할 수 없습니다 : "from"' – Newbie123

+0

아, 그 '다시'물건. 이 문제를 해결하려면 IDL을 수정 해보십시오. 토큰'from'은 최근에 예약어로 추가되었으므로 IDL 파일은 아마도 오래되었습니다. 이름을 예 :로 변경해야합니다. 'from_'는'from'이 서비스 함수 이름이 아닌 한. – JensG

+0

@JensG, 알았습니다. 이제 x-thrift 메시지를 디코딩하기 위해 컴파일 된 파일을 사용하는 방법에 대해 감사드립니다. 미안, 난 그냥 중고품을 배우기 시작했다, 그래서 내가 아주 조금 알고 그것에 대해 – Newbie123