如何从http流中解码Application / x-thrift?

时间:2016-06-05 16:55:28

标签: decode thrift thrift-protocol

请求标题:

  

POST https://gfp.line.naver.jp/P3 HTTP / 1.1
  主持人:gfp.line.naver.jp
  连接:保持活力
  内容长度:180
  来源:null
  X-LAL:en
  X-LCS:xxx ==
  X-LHM:POST
  内容类型:application / x-thrift
  X-LST:260000
  接受:申请/ x-thrift
  X-Line-Application:CHROMEOS 1.4.1 Chrome_OS 1
  用户代理: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:*
  访问控制 - 暴露 - 标题:X-Line-HTTP,X-LS
  连接:保持活力
  内容长度:292
  Content-Type:application / x-thrift; charset = UTF-8
  X-LE:2
  X-Line-HTTP:P,HC,LP
  X-LS:xxx

我从Fiddler那里得到了那些在Windows 10 Home上运行的标题 到目前为止我一直在研究,这是近似最近的节俭文件, https://github.com/cslinmiso/LINE-instant-messenger-protocol/blob/master/line.thrift我只能找到官方编译器https://thrift.apache.org/download和一些构建信息

我的问题,如果我们有节俭文件和流标题+正文,如何解码节俭流?

附:我的情况与How can you reverse engineer a binary thrift file?不同,因为我上面有节俭文件,

1 个答案:

答案 0 :(得分:1)

如果您有IDL文件,如果您想以编程方式处理数据,则可以使用编译器为其生成客户端。

如果您只想阅读数据,则可以使用此实用程序:

https://github.com/pinterest/thrift-tools

如果阅读响应消息"手动",您的伪代码可能看起来像这样(我把它放在评论中但格式非常糟糕)

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