还原规则
2016-11-21 17:00:27 0 举报
AI智能生成
还原规则是指在进行某些操作或处理时,将数据、对象或系统恢复到之前的状态。这种规则通常用于撤销之前的操作或处理,以消除可能产生的影响或错误。在计算机科学中,还原规则可以应用于数据库事务管理、软件版本控制和系统恢复等方面。通过使用还原规则,可以确保数据的完整性和一致性,并提供灵活的操作和处理能力。
作者其他创作
大纲/内容
GET
上行流量
根据url 生成filename
下行流量
tcpdata段数据重组
判断还原成功
trunk模式
还原buf以,\r\n0\r\n\r\n 结尾
非trunk模式
还原包头存在Content-Length:
当前存储的还原buf长度 == content_length
POST
上行流量
tcpdata段数据重组
判断还原成功
trunk模式
还原buf以,\r\n0\r\n\r\n 结尾
非trunk模式
还原包头存在Content-Length:
当前存储的还原buf长度 == content_length
下行流量
无用
FTP
fr_type
FR_TYPE_FTP_CTRL
上行
接收命令
tcpdata
PASV
pextrainfo->ftp_cmd = FTP_CMD_PASV
RETR
pextrainfo->ftp_cmd = FTP_CMD_RETR;
pextrainfo->file_name
根据RETR 之后的字符串填充
pextrainfo->ftp_d_dir = PACKET_IN
__update_ctrl_buf
STOR
pextrainfo->ftp_cmd = FTP_CMD_STOR;
pextrainfo->file_name
根据STOR 之后的字符串填充
pextrainfo->ftp_d_dir = PACKET_OUT;
__update_ctrl_buf
SIZE
pextrainfo->ftp_cmd = FTP_CMD_SIZE;
其他
pextrainfo->ftp_cmd = FTP_CMD_UNKNOWN;
下行
接收命令
tcpdata
227且pextrainfo->ftp_cmd == FTP_CMD_PASV
pextrainfo->ftp_d_port
根据 227 后的参数,移位可得
(value[5] << 8) + value[4];
pextrainfo->ftp_d_ipdw
value[3] << 24) +(value[2] << 16) +(value[1] << 8) + value[0]
150 且pextrainfo->ftp_cmd == FTP_CMD_RETR
pextrainfo->ftp_d_size = value
value 的值为150后括号内的数字
__update_ctrl_buf
213且pextrainfo->ftp_cmd == FTP_CMD_SIZE
pextrainfo->ftp_d_size = value
value 的值为213后中括号内的数字
226
无处理
FR_TYPE_FTP_DATA
已还原退出
__find_ctrl_buf
获取FTP控制缓存
ipdw
port
fsize
dir =pextrainfo->ftp_d_dir
finished
inout == ctrl_buf->dir
__rebuild_ftp
与get重组不同
不存在乱序包
第一个包就是首包
文件大小大于配置会退出
文件名,由控制buf的filename决定
AddAssembledFlowtoBuf(pextrainfo)
POP3
退出
datalen <=0
reserved == 1 且为上行
上行提取tcpdata中 RETR 后的email_id
并根据
__rebuild_pop3
上行
获得 tcpdata 后 RETR 后的 email_id
通过email_id 网口 线程号 生成文件名
pextrainfo->file_name
POP3_%d_%d_%d_%lu.eml
pinfobehindflow->reserved == 1
表示此流 只取第一个上行包
下行
特殊字符串
+OK message follows
baseseq
下一个包的序列号
还原过程
判断还原是否成功
还原buf最后以字符串\r\n.\r\n结尾
SMTP
退出
dlen <=0
上行
pextrainfo->abort_rebuild != 0
__rebuild_smtp
tcpdata
MAIL
DATA\r\n
fr_common_proc
还原成功标志
pextrainfo->expectedlen存在
pextrainfo->storagelen >= pextrainfo->expectedlen
pextrainfo->expectedlen不存在
还原buf最后以字符串\r\n.\r\n结尾
IMAP4
退出
dlen <= 0
__rebuild_imap4
下行
如果是下行第一个来的包
tcpdata
FETCH|fetch
生成文件名如下
IMAP4_filename_eth0_1_32323%lu.eml
pextrainfo->baseseq = seq + dlen
pextrainfo->expectedlen = size
初始化
创建还原内存,先分配一个
退出 false
如果tcpdata段不含FETCH|fetch
AddPkttoOOOList
退出 false
如果不是下行第一个来的包
退出
pextrainfo->baseseq == 0
pextrainfo->presinfo == NULL
包还原过程
还原结束标记
expectedlen != 0
pextrainfo->storagelen == pextrainfo->expectedlen
上行
退出
0 条评论
下一页