suricata smtp协议解析源码注释七-完结篇

这篇博客深入解析了Suricata SMTP协议解析的源码,重点介绍了ProcessBodyLine函数,该函数处理邮件body数据,并依据头部字段解码base64或quote-printable编码。当数据未编码时,直接存储;若存储空间不足,则通过ProcessDecodedDataChunk处理数据,包括提取URL并调用自定义的DataChunkProcessorFunc进行进一步操作。这是系列文章的完结篇。
摘要由CSDN通过智能技术生成

一。ProcessBodyLine

SMTPParse-> SMTPProcessRequest-> SMTPProcessCommandDATA-> MimeDecParseLine-> ProcessMimeEntity-> ProcessMimeBody->ProcessBodyLine

该函数处理body数据, 根据头部字段设置编码标志对数据进行解码,base64,quote-prntable。 
如果数据未编码则不需要解码,解码后将数据存储到mime_state->data_chunk中,如果没有存储空间则调用ProcessDecodedDataChunk函数对数据进行处理,其中主要是获取每行数据从中提取url并保存,之后并调用函数指针state->DataChunkProcessorFunc,该函数指针是在函数SMTPProcessRequest中创建(MimeDecParseState)mime_state时进行的初始化,提供自定义处理功能。
 

static int ProcessBodyLine(const uint8_t *buf, uint32_t len, 
        MimeDecParseState *state)
{
    int ret = MIME_DEC_OK;
    uint32_t remaining, offset, avail, tobuf;

    //获取当前信件体的指针
    MimeDecEntity *entity = (MimeDecEntity *) state->stack->top->data;

    SCLogDebug("Processing body line");

    /* Track length */
    entity->body_len += len + 2; /* With CRLF */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种菜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值