- 博客(15)
- 资源 (5)
- 收藏
- 关注
原创 Nsave 一个抓取并保存数据包的工具
nsave是一款基于Rust开发的网络数据包捕获工具,支持通过pcap或af_xdp方式抓包,采用流式索引机制节省存储空间。该工具目前处于开发阶段,需配置专用抓包网卡,要求Linux环境和Rust工具链。主要功能包括:1)持续抓包并本地存储;2)支持按时间、五元组或BPF过滤器查询流量;3)可将查询结果导出为pcap文件。使用前需安装bpf-linker等依赖,并通过cargo命令构建运行。注意:生产环境慎用,管理网卡不可用于抓包以避免连接中断。
2025-07-17 14:08:23
418
原创 网络流量处理中的协议解析七: Protolens
你可以通过回调函数得到协议字段,比如smtp的user,邮件内容,http的头字段,请求行,body等。比如对数据包的解码(ip地址,tcp,udp,端口等),库内部不应该重复做。[Protolens](https://github.com/chunhuitrue/protolens)用于处理数据包,tcp流重组,协议解析,协议还原的场景。比如你只需要处理url后面的数据,那么你可以根据url的seq,从buff中删除前面的数据。这样,你就可以在一个连续的buff空间中处理url后面的数据。
2025-05-23 16:40:51
932
原创 网络流量处理中的协议解析六: 执行器
它有“传染性”,如果一个函数是异步的,那么它的所有调用者都必须是异步的。因为我们不需要复杂的异步运行时,所以这里的执行器只需要控制好future的返回值即可。如果当前的数据包并没有完整的数据,解码器中也不需要对此进行判断,和退出。从最开始的c语言中的大循环中记录状态,到c语言中用状态机驱动,再到rust的future机制,再到现在的解码器,过程越来越简单,最终我们以同步的流水账式的代码来实现了异步的解码过程。但这种异步调用的复杂性都被rust的future机制封装起来了,解码器的实现关注解码器的实现即可。
2025-04-20 19:40:21
279
原创 网络流量处理中的协议解析:async/await
前面的解析状态机可以看到,驱动状态机执行的过程并不需要很复杂,因为基于的流量处理模型仅仅需要对解析过程异步操作即可。一个async函数就是一个可以被poll的状态机,其中的await的函数也是可以被poll的状态机,每个await都被转换为一个状态。和前面的解析状态机一样,它也需要一个驱动状态机的轮转的驱动函数,这就是执行器,执行器在不停地调用这个状态机的poll方法。可以执行其他的工作。它在每一个流表模块提供的flow_t node也就是链接上执行,当执行不下去的时候就跳出来,出让执行权限给其他的链接。
2025-04-18 15:09:29
446
原创 网络流量处理中的协议解析:状态机
因为在前面提到的流量处理模型中可以知道,数据包的处理,重组的处理和其他模块的处理,都是在数据包处理过程中的。也就是说协议解析的状态机也在这个处理路径上,如果不返回SM_BREAK,一直等待的话,那整条路径都会被阻塞。所以get_line读不到数据,状态函数没有数据可处理,进行不下去的时候,它需要从状态机中跳出来,继续流量处理模型中的其他后续过程。至此,协议解析过程通过流式重组和状态机已经被切分为不同的状态处理函数,并且可以在数据包处理路径上中断跳出把执行机会让给路径后的其他功能,下次重新进入。
2025-04-18 15:08:42
982
原创 网络流量处理中的协议解析:解析
其中的state用例记录解析的状态,但邮件头还未处理完的时候state始终保持为HEAD。这样下次包到来的时候进入解析函数后会继续解析邮件头。当处理完头部的时候把state改为头部的后续阶段BODY,就进入邮件正文的解析。比如,判断一个状态的结束和开始,比如需要重复进入同样的状态。能从链接中拿到一行一行的数据,就可以开始解析SMTP了。title: "网络流量处理中的协议解析:解析"// 处理head的过程。// 处理body的过程。解析的过程其实就是状态转换的过程...#### 解析的问题。
2025-04-18 15:07:36
332
原创 网络流量处理中的协议解析:流重组
总之,并不需要缓存完整的流才能开始解析,只需要缓存最小的不完整的一个单位(一行,或者一个结构体大小)就可以开始协议解析了。line是完整一行的数据,len是这一行的长度。- 一是必须等待链接结束才可以开始解析,因为如果只有部分不完整的数据解析器无法工作,buffer的结束边界可能正好在mailfrom这个命令的中间,解析器会中途失败或者需要重复扫描。如果可以不缓存所有数据等到链接结束,边收数据包,边重组,边解码,边释放数据包,把收到的数据及时消耗掉,那就可以避免上面的缓存完整链接占用太多内存的问题。
2025-04-18 15:06:08
863
原创 网络流量处理中的协议解析:流量处理模型
IDS,IPS等流量处理引擎各有不同的侧重点,所以对协议解析的要求也各不相同,但大概来说,完整,准确,详细地提取出协议中的字段,比如邮件的标题,收件人,发件人是更好的。解析提取的实现方式也各有各的办法,但解析部分的实现方式会受到流量处理模型的影响。这里所说的网络流量处理,包括常说的IDS,IPS,NTA, NDR,XDR,DPI,网络行为审计,防火墙之类需要在数据包层面对流量进行判断审计之类的操作。但它只提供了一个简单的视角:一个个的数据包,随机的,混乱的,毫无顺序的,甚至是被破坏了的和错误的数据包。
2025-04-18 15:03:07
788
原创 T/TCP
T/TCP目前,好象很少有os使用了,bsd默认把他关闭,还考虑要去掉这部分代码。 说来也是的,他的速度比TCP快不了多少,还比较复杂了一点。但是他的优化不在于速度,而在于握手和传输分组是的次数和速度不是一回事,不知道在什么其他方面能有什么用?!!
2005-04-13 09:14:00
1873
原创 俺写不出来 先贴一个别人的《如何成为一名黑客》
Eric S. Raymond五部曲之How To Become A Hacker 如何成为一名黑客Copyright © 2001 by Eric S. Raymond翻译:Barret翻译水平有限,欢迎来信指教,我的Email是barret(a)ynmail.com,但请勿问电脑技术问题(反正也不懂)。允许未经作者及译者的同意进行非商业目的的转载,但必须保持原文的完整性。内容一览 为什么会有这
2005-04-11 09:52:00
1512
原创 走进冬天的树
走进冬天的树 浓密的草丛深处 是等待吻的敏感神经 泪和阳光混合的露水 滋润生长的根 寒冷的冬天从欲望的高空落下 根不在倔强 未曾繁茂的树 挂满了恨的冰凌
2004-09-30 14:03:00
1164
原创 简单的美
简单的美 “small is beautifull",按说这句适合范围很广的话非常适合口琴,但开始我却不这么认为。 起初对音乐根本没感觉的我,到了初中竟朦胧中感到需要学习一下音乐。并对吉他着了迷。父母从来都不管我。从来不督促我学习,做事。。。甚至考试升学也不问什么专业什么学校。正因为如此,我却对自己要求更严了。当我说要买吉他时,见老妈面有难色,也就
2004-09-30 13:59:00
734
原创 吃吃之死
吃吃之死 哼哼是猪场的一只男猪,因为春天里总是嚎叫,主人把吃吃和他放在了一起。随后两位就组建了一个幸福的家庭。哼哼对吃吃关怀倍至,吃泔水时,让她捞干的,睡觉时让她睡暖和的,甚至绕着围栏散步时,也让她走里圈,怕她累着。每到一五,他们还依偎在一起,看着月亮谈烧饼。她觉得他既体贴又浪漫还有品位。而自己再幸福不过了。 但身体易被安逸的生活所累,吃吃渐渐的胖了。而哼哼
2004-09-30 13:57:00
712
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅