首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从TCP数据包中获取有效载荷?

如何从TCP数据包中获取有效载荷?
EN

Stack Overflow用户
提问于 2021-08-24 13:28:54
回答 2查看 143关注 0票数 1

我想使用pcapplusplus库或其他类似的库从tcp数据包中提取tcp有效负载数据。我搜索了文档,但没有找到如何获得tcp有效负载,但我可以通过使用各种api获得tcp报头中的几乎任何内容。我如何获得有效负载?

代码语言:javascript
运行
复制
Public Member Functions
    TcpLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
    TcpLayer ()
 
    TcpLayer (uint16_t portSrc, uint16_t portDst)
 
    TcpLayer (const TcpLayer &other)
 
TcpLayer &  operator= (const TcpLayer &other)
 
tcphdr *    getTcpHeader () const
 
uint16_t    getSrcPort () const
 
uint16_t    getDstPort () const
 
TcpOption   getTcpOption (TcpOptionType option) const
 
TcpOption   getFirstTcpOption () const
 
TcpOption   getNextTcpOption (TcpOption &tcpOption) const
 
size_t  getTcpOptionCount () const
 
TcpOption   addTcpOption (const TcpOptionBuilder &optionBuilder)
 
TcpOption   addTcpOptionAfter (const TcpOptionBuilder &optionBuilder, TcpOptionType prevOptionType=TCPOPT_Unknown)
 
bool    removeTcpOption (TcpOptionType optionType)
 
bool    removeAllTcpOptions ()
 
uint16_t    calculateChecksum (bool writeResultToPacket)
 
void    parseNextLayer ()
 
size_t  getHeaderLen () const
 
void    computeCalculateFields ()
 
std::string     toString () const
 
OsiModelLayer   getOsiModelLayer () const

THese是用来获取TCP头数据的接口。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-25 08:30:58

为了获得(任何)层有效负载,您应该使用getLayerPayload()应用编程接口,例如:

代码语言:javascript
运行
复制
pcpp::TcpLayer* tcpLayer = myPacket.getLayerOfType<pcpp::TcpLayer>();
uint8_t* payload = tcpLayer->getLayerPayload();
size_t payloadSize = tcpLayer->getLayerPayloadSize();
票数 2
EN

Stack Overflow用户

发布于 2021-08-24 14:57:19

经过广泛的搜索,我找到了答案。它是TcpStreamData::getData()方法。您可以查看API文档的this链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68908515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档