1
ripperdev 2020-09-22 16:17:05 +08:00
实时抓取网卡数据包再解析的,C 语言有 libpcap 库,C++有 libtins 库。
可以用 C/C++解析数据包,生成图表数据再提供给 PHP 展示用。 |
2
Chenamy2017 2020-09-22 16:59:14 +08:00
抓包处理用 C ( libpcap ),php 只是后台而已。
|
3
sylar1015 2020-09-22 17:00:40 +08:00
巧了,现有源码一套,实时 C 抓包、IP 组包,解析上层各种协议
|
4
LANB0 2020-09-22 17:07:29 +08:00
原始套接字也算一个选择
|
5
reus 2020-09-22 17:17:48 +08:00
PHP 的 web 服务器就直接用 socket api 啊,抓什么流量?
|
6
w2exzz 2020-09-22 18:40:24 +08:00
tcpdump 和 wireshark 也是 C 写的啊……
所以 C 语言也能抓到流量…… 自己照着网上的教程写个 demo 就明白了 |
7
mXw 2020-09-22 18:45:51 +08:00 1
自己用 raw socket 摸一遍流程就懂了
|
8
nomansky 2020-09-22 18:59:28 +08:00
1. 使用 DPI 深度包检测技术
2. 底层一般都是调用 C 库 3. 可以保存成文件,流量大的情况但一般都是用缓存做临时保存 4. 根据协议特征分析,比如协议头、字段,握手等特征然后和特征库进行匹配 |
9
janxin 2020-09-22 20:55:03 +08:00
libpcap 抓取流量
|
10
kangsheng9527 2020-09-22 21:21:14 +08:00
netfilter 需要商业服务找我!
|
11
no1xsyzy 2020-09-23 03:57:11 +08:00
wireshark 的终端版本 tshark 看 --help,里面直接指明了 -f 选项用的是 libpcap 的语法。
所以 libpcap 就成。 |
12
chanchancl 2020-09-23 09:54:52 +08:00 1
3: 内核在初始化和启动网卡的时候,从驱动层取得 skb 之后,向上层 tcp/ip 转移的时候,会有 dump 点,将收到的信息传给外部函数,而 tcpdump 用了相关的系统调用,就可以收到这些包。
wireshark 用 libcap 去抓包,而 libcap 内的实现是建立 socket 时,指定一些参数,让数据包转发到自己的队列 |
13
hasdream 2020-09-23 14:48:04 +08:00
c 库 libpcap pfring 解析后发到 MQ 或者 IPC php 接收处理
|
14
hasdream 2020-09-23 16:21:53 +08:00
1. c 端一般做抓取 过滤协议
2.然后就把 packet 发给下层处理 (如果逻辑耗时太长就出现 kernel drop 问题) 3.下层 根据收到的 packet 根据需要 进行解析(比如 ip header 中的协议信息是在那个位置 rfc 中有说明) 4.入库展示. |
15
mikywei OP @reus 我的意识是经过服务器的流量,而不是访问 web 后台服务的 http 流量,这 php 应该无法直接获取吧。
|