流量相关 ================================ TCPDump -------------------------------- TCPDump是一款数据包的抓取分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供逻辑语句来过滤包。 命令行常用选项 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-B `` 抓取流量的缓冲区大小,若过小则可能丢包,单位为KB - ``-c `` 抓取n个包后退出 - ``-C `` 当前记录的包超过一定大小后,另起一个文件记录,单位为MB - ``-i `` 指定抓取网卡经过的流量 - ``-n`` 不转换地址 - ``-r `` 读取保存的pcap文件 - ``-s `` 从每个报文中截取snaplen字节的数据,0为所有数据 - ``-q`` 输出简略的协议相关信息,输出行都比较简短。 - ``-W `` 写满cnt个文件后就不再写入 - ``-w `` 保存流量至文件 - 按时间分包时,可使用strftime的格式命名,例如 ``%Y_%m_%d_%H_%M_%S.pcap`` - ``-G `` 按时间分包 - ``-v`` 产生详细的输出,``-vv`` ``-vvv`` 会产生更详细的输出 - ``-X`` 输出报文头和包的内容 - ``-Z `` 在写文件之前,转换用户 Bro -------------------------------- Bro是一个开源的网络流量分析工具,支持多种协议,可实时或者离线分析流量。 命令行 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 实时监控 ``bro -i `` - 分析本地流量 ``bro -r `` - 分割解析流量后的日志 ``bro-cut`` 脚本 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 为了能够扩展和定制Bro的功能,Bro提供了一个事件驱动的脚本语言。 tcpflow -------------------------------- tcpflow也是一个抓包工具,它的特点是以流为单位显示数据内容,在分析HTTP等协议的数据时候,用tcpflow会更便捷。 命令行常用选项 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-b max_bytes`` 定义最大抓取流量 - ``-e name`` 指定解析的scanner - ``-i interface`` 指定抓取接口 - ``-o outputdir`` 指定输出文件夹 - ``-r file`` 读取文件 - ``-R file`` 读取文件,但是只读取完整的文件 tshark -------------------------------- WireShark的命令行工具,可以通过命令提取自己想要的数据,可以重定向到文件,也可以结合上层语言来调用命令行,实现对数据的处理。 输入接口 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-i `` 指定捕获接口,默认是第一个非本地循环接口 - ``-f `` 设置抓包过滤表达式,遵循libpcap过滤语法,这个选项在抓包的过程中过滤,如果是分析本地文件则用不到 - ``-s `` 设置快照长度,用来读取完整的数据包,因为网络中传输有65535的限制,值0代表快照长度65535,默认为65535 - ``-p`` 以非混合模式工作,即只关心和本机有关的流量 - ``-B `` 设置缓冲区的大小,只对windows生效,默认是2M - ``-y `` 设置抓包的数据链路层协议,不设置则默认为 ``-L`` 找到的第一个协议 - ``-D`` 打印接口的列表并退出 - ``-L`` 列出本机支持的数据链路层协议,供-y参数使用。 - ``-r `` 设置读取本地文件 捕获停止选项 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-c `` 捕获n个包之后结束,默认捕获无限个 - ``-a `` - ``duration:NUM`` 在num秒之后停止捕获 - ``filesize:NUM`` 在numKB之后停止捕获 - ``files:NUM`` 在捕获num个文件之后停止捕获 处理选项 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-Y `` 使用读取过滤器的语法,在单次分析中可以代替 ``-R`` 选项 - ``-n`` 禁止所有地址名字解析(默认为允许所有) - ``-N`` 启用某一层的地址名字解析。 ``m`` 代表MAC层, ``n`` 代表网络层, ``t`` 代表传输层, ``C`` 代表当前异步DNS查找。如果 ``-n`` 和 ``-N`` 参数同时存在, ``-n`` 将被忽略。如果 ``-n`` 和 ``-N`` 参数都不写,则默认打开所有地址名字解析。 - ``-d`` 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为 ``-d tcp.port==8888,http`` 。可用 ``tshark -d`` 列出所有支持的有效选择器。    输出选项 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-w `` 设置raw数据的输出文件。不设置时为stdout - ``-F `` 设置输出的文件格式,默认是 ``.pcapng``,使用 ``tshark -F`` 可列出所有支持的输出文件类型 - ``-V`` 增加细节输出 - ``-O `` 只显示此选项指定的协议的详细信息 - ``-P`` 即使将解码结果写入文件中,也打印包的概要信息 - ``-S `` 行分割符 - ``-x`` 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据 - ``-T pdml|ps|text|fields|psml`` 设置解码结果输出的格式,默认为text - ``-e`` 如果 ``-T`` 选项指定, ``-e`` 用来指定输出哪些字段 - ``-t a|ad|d|dd|e|r|u|ud`` 设置解码结果的时间格式 - ``-u s|hms`` 格式化输出秒 - ``-l`` 在输出每个包之后flush标准输出 - ``-q`` 结合 ``-z`` 选项进行使用,来进行统计分析 - ``-X :`` 扩展项,lua_script、read_format - ``-z`` 统计选项,具体的参考文档    其他选项 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``-h`` 显示命令行帮助 - ``-v`` 显示tshark的版本信息