在很多情况下我们需要在设备接口抓包,可是Wireshark无法实现!!这时候我们就可以使用登入设备后台用tcpdump命令进行抓包!! 常用初级命令组合 Tcpdump -i + 网口 抓通过指定网口的数据包(建议不要直接这样抓!) Tcpdump -i + 网口 -c + 数量 抓通过指定网口指定数量的数据包(建议这样抓包!) Tcpdump -i + 网口 host + 主机IP -c + 数量 抓指定主机通过指定端口的指定数量的包 Tcpdump -i + 网口 host + 主机IP 协议 -c + 数量 数量没有到达目标,不会将抓到的显示出来! Tcpdump -i + 网口 host + 主机IP 协议 port + 端口号 -c + 数量 Tcpdump -i + 网口 host + 主机IP 协议 port + 端口号 -s0 -c + 数量 抓完整数据包 Tcpdump -i + 网口 host + 主机IP 协议 port + 端口号 -c + 数量 -s0 -nne 抓指定主机,指定协议,指定端口,指定数量的完整数据,在输出时不把端口和网络地址转换成名称,且能看到头部MAC Tcpdump -i + 网口 协议 port + 端口号 -c + 数量 -s0 -nne -w + 路径+文件名(文件格式为 *.pcap) -x 将截取的数据包内容以十六进制打印出来; -X 将截取的数据包内容以ASCII文本形式打印出来; -a 将网络地址和广播地址转变成名字; -t 在输出的每一行不打印时间戳; -v 输出一个稍微详细的信息,如在ip包中包括ttl和服务类型的信息; -vv 输出详细的报文信息; -F 从指定的文件中读取表达式,忽略其它的表达式; -r 从指定的文件中读取包(这些包一般通过-w选项产生); “与” “或” “非”的应用 非: ! or "not" 且: && or "and" 或: || or "or" Tcpdump -i + 网口 src + 源IP des + 目标IP Tcpdump -i eth1 tcp port 80 and dst host 192.168.1.254 抓取所有经过eth1,目的地址是192.168.1.254 或192.168.1.200 端口是80 的TCP 数据 Tcpdump -i eth1 tcp and dst net 192.168 and not dst host 192.168.1.200 抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200 的TCP 数据 TCP 标记值: tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg 这样上面按照TCP 标记位抓包的就可以写直观的表达式了: - 只抓SYN 包 # tcpdump -i eth1 tcp[tcpflags] = tcp-syn - 抓SYN, ACK # tcpdump -i eth1 tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0 Rst 复位 异常关闭 Urg 紧急指针 指明紧急数据之后正常数据的起始位置 |