SylixOS下 tcpdump的使用方法

SylixOS下 tcpdump的使用方法

一、安装部署

SylixOS下提供对网络包的抓取及分析工具tcpdump,在编译base时,需要选中libpcap、openssl 和 tcpdump 3个组件。

编译后,将Base工程上传,/bin/目录下应有tcpdump,/lib/目录下应包含libpcap.so和openssl 生成的相关动态库文件。

二、命令语法

tcpdump采用命令行方式,命令行支持的用法与参数如下:

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]

[ -c count ]

[ -C file_size ] [ -G rotate_seconds ] [ -F file ]

[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]

[ --number ] [ -Q in|out|inout ]

[ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]

[ -W filecount ]

[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]

[ --immediate-mode ]

[ expression ]

参数含义:

-A

ASCII格式打印出所有分组,通常用来抓取www的网页数据包数据。

-c

在收到指定的数量的分组后,tcpdump就会停止。

-C

在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。

-d

将匹配信息包的代码以人们能够理解的汇编格式给出。

-dd

将匹配信息包的代码以c语言程序段的格式给出。

-ddd

将匹配信息包的代码以十进制的形式给出。

-D

打印出系统中所有可以用tcpdump截包的网络接口。

-e

在输出行打印出数据链路层的头部信息,也就是使用数据链路层的MAC数据包数据来显示.

-f

将外部的Internet地址以数字的形式打印出来。

-F

从指定的文件中读取表达式,忽略命令行中给出的表达式。

-i

指定监听的网络接口。

-l

使标准输出变为缓冲行形式,可以把数据导出到文件。

-L

列出网络接口的已知数据链路。

-b

在数据-链路层上选择协议,包括iparprarpipx都是这一层的。

-n

不把网络地址转换成名字。

-nn

不进行端口名称的转换。

-N

不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘

-t

在输出的每一行不打印时间戳。

-O

不运行分组分组匹配(packet-matching)代码优化程序。

-P

不将网络接口设置成混杂模式。

-q

快速输出。只输出较少的协议信息。

-r

从指定的文件中读取包(这些包一般通过-w选项产生)

-S

tcp的序列号以绝对值形式输出,而不是相对值。

-s

从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。

-T

将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议)

-t

不在每一行中输出时间戳。

-tt

在每一行中输出非格式化的时间戳

-ttt

输出本行和前面一行之间的时间差。

-tttt

在每一行中输出由date处理的默认格式的时间戳。

-v

输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。

-vv

输出详细的报文信息。

-w

直接将分组写入文件中,而不是不分析并打印出来。

-X

可以列出16进制以及ASCII的数据包内容,对于监听数据包内容很有用。


三、使用方法


(1) 监视指定网络接口的数据包

tcpdump -i en1

如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是en0,下面的例子都没有指定网络接口。

(2) 监视指定主机和端口的数据包

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 123 端口进行监视 123 为ntp的服务端口

tcpdump udp port 123

(3) 监视指定网络的数据包

打印本地主机与Berkeley网络上的主机之间的所有通信数据包(nt: ucb-ether, 此处可理解为'Berkeley网络'的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的所有数据包)

tcpdump net ucb-ether

打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)

tcpdump 'gateway snup and (port ftp or ftp-data)'

打印所有源地址或目标地址是本地主机的IP数据包

(如果本地网络通过网关连到了另一网络, 则另一网络并不能算作本地网络.(nt: 此句翻译曲折,需补充).localnet 实际使用时要真正替换成本地网络的名字)

tcpdump ip and not net localnet

(4) 监视指定协议的数据包

打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机.(nt: localnet, 实际使用时要真正替换成本地网络的名字))

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'


    • Related Articles

    • SylixOS 下的 curl 使用

      Q:如何在 SylixOS 下使用 curl 进行文件传输(PS: 快速上手)? A:使用 curl 进行文件传输步骤如下: 1. 使用前的准备工作 ① base 勾选 openssl 组件进行编译,将生成的 libcrypto.so 和 libssl.so 二进制上传至 SylixOS /lib 下; ② clone curl 代码,将编译生成的 libcurl.so 与 curl 分别上传至 /lib 与 /bin 下; 此时 curl 在 SylixOS 下已处于可用状态,shell 输入 ...
    • SylixOS 下好用的小工具集

      问:SylixOS 下有哪些好用的小工具? (1)本工具集目前包SylixOS下小工具集含三个功能:读寄存器、写寄存器、hexdump文件。 (2)本工具集是一个ko模块,包含三个命令:md、mw、hexdump。 由于是在内核空间操作,所以操作者必须保证操作的正确性,否则可能引起系统崩溃。 (3)md、mw移植自uboot,使用方式和uboot一样。 只是原来在uboot下的md.b xxx这些操作在SylixOS下要换成md -b xxx操作。 (4)hexdump用法为hexdump ...
    • SylixOS 下如何测量中断服务耗时

      功能概要 SylixOS 下可以测量中断服务耗时,分析各中断服务耗时对分析系统实时性和驱动故障等有很大帮助。 操作步骤 1、该功能通过中断中执行钩子函数来实现,会略微增加中断执行时间,所以默认是关闭的。需要使用时,编译前需修改base文件,主要修改为将 /libsylixos/SylixOS/config/ kernel/kernel_cfg.h 中 LW_CFG_INTER_MEASURE_HOOK_EN 宏使能(即置为1) ...
    • SylixOS 下读写寄存器小工具集

      在驱动开发的过程中,经常需要的一个调试手段就是读出寄存器的值来验证某个功能是否配置正确,一般的做法是在驱动中添加一条打印,将寄存器值打印出来。这样就得重新更改源码,然后编译,最后运行观察结果。这样的方法很繁琐也浪费时间,用下面的工具就可以很方便的在命令行读写某个寄存器,从而达到快速验证功能的目的。 编译方法: 1.ker_rw.zip 是驱动模块,regeditor.zip 是应用程序 2.将这两个工程源码导入到 IDE 中 3.更改这两个工程的base为具体平台的 base ...
    • SylixOS下的GIC中断实现(基于T3)

      GIC常用寄存器介绍 GICD_CTLR GICv2控制器将中断分为两组。配置对应寄存器可以控制这两组中断的使能与禁能。 GICD_ISENABLERn 中断向量使能寄存器,写入1使能对应的中断向量号,写0没有影响。读取数据表示对应中断向量号的使能状态。每32个中断向量使用一个寄存器位,后续中断向量放在接下来的寄存器地址上。 GICD_ICENABLERn ...