博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端必会计算机基础之TCP抓包的工具tcpdump的安装和使用
阅读量:5746 次
发布时间:2019-06-18

本文共 2708 字,大约阅读时间需要 9 分钟。

前言

tcpdump是一个最基本重要的网络分析工具, 掌握好这个工具, 对于学习tcp/ip协议也是很有帮助的. 理解了tcp/ip协议栈的知识, 分析调优网络的能力才会更高. 所以使用tcpdump相比其它的工具, 更能帮我们理解协议.

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获 下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

了解如何使用Tcpdump来捕获感兴趣的数据包是一项必须掌控的基本功。

tcpdump 安装

可到“”下载最新的Tcpdump源码包。

注意⚠️:

tcpdump的运行需要pcap的支持,所以最好先行安装pcap软件包,另外还要注意软件的版本问题,建议按照网站上匹配的软件包tcpdumppcap一同下载。

我们以最新版本tcpdump-4.9.2,libpcap-1.9.0为例:

在编译Tcpdump之前,应先确定pcap库(libpcap)已安装完毕。这个库是编译Tcpdump时所必需的。

安装过程非常简单:

tar -zxvf libpcap-1.9.0.tar.gz  cd libpcap-1.9.0./configuremake make install复制代码

该库已安装完毕,下面执行下面的命令来编译并安装Tcpdump:

tar -zxvf tcpdump-4.9.2.tar.gz cd tcpdump-4.9.2 ./configuremakemake install复制代码

Tcpdump的命令行选项

Tcpdump是个命令行方式的网络嗅探器。他通过使用命令选项来过滤网卡截获的数据包,假如不进行过滤,过多数量的包会使网络管理员很难理清头绪。Tcpdump的命令格式如下:

tcpdump [ -adeflnNOpqRStuvxX ] [ -c 数量 ] [ -C 文档尺寸 ] [ -F 文档名 ] [ -i 网络接口 ] [ -m 文档名 ] [ -r 文档名 ] [ -s 长度 ] [ -T 类型 ] [ -w 文档名 ] [ -E algo:secret ] [ 表达式 ]

表1 Tcpdump常用命令行选项

命令行 描述
-a 将网络地址和广播地址转变成容易识别的名字
-d 将已截获的数据包的代码以人容易理解的格式输出;
-dd 将已截获的数据包的代码以C程式的格式输出;
-ddd 将已截获的数据包的代码以十进制格式输出;
-e 输出数据链路层的头部信息;
-f 将internet地址以数字形式输出;
-l 将标准输出变为行缓冲方式;
-n 不将网络地址转换成易识别的主机名,只以数字形式列出主机地址(如IP地址),这样能够避免DNS查询;
-t 不输出时间戳;
-v 输出较周详的信息,例如IP包中的TTL和服务类型信息;
-vv 输出详尽的报文信息;
-c 在捕获指定个数的数据包后退出;
-F 从指定的文档中读取过滤规则,忽略命令行中指定的其他过滤规则;
-i 指定监听的网络接口;
-r 从指定的文档中读取数据包(该文档一般通过-w选项产生);
-w 将截获的数据包直接写入指定的文档中,不对其进行分析和输出;
-T 将截获的数据包直接解释为指定类型的报文,现在支持的类型有cnfp、rpc、rtp、snmp、vat和wb。

表1给出了一些常用的Tcpdump命令行选项,使用这些选项能够过滤出真正感兴趣的数据包。

默认启动

sudo tcpdump复制代码

普通情况下,直接启动 tcpdump将监视第一个网络接口上所有流过的数据包。

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

查看网卡名称:

tcpdump -i lo0 复制代码

指定ip

例如截获所有192.168.131.131 的主机收到的和发出的所有的数据包

tcpdump host 192.168.131.131 -i lo0 (必须加上网卡名称)复制代码

抓取数据,保存为pcap文件(可用wireshark软件打开)

tcpdump tcp -i lo0  -t -s 0 -c 100  -w /tmp/target.pcap复制代码

监听指定的主机

tcpdump -i eth0 -nn 'host 192.168.168.2'复制代码

这样的话,192.168.168.2这台主机接收到的包和发送的包都会被抓取.

tcpdump -i eth0 -nn 'src host 192.168.168.2'复制代码

这样只有192.168.168.2这台主机发送的包才会被抓取。

tcpdump -i eth0 -nn 'dst host 192.168.168.2'复制代码

这样只有192.168.168.2这台主机接收到的包才会被抓取。

监听指定端口

tcpdump -i eth0 -nnA 'port 80'复制代码

上例是用来监听主机的80端口收到和发送的所有数据包,结合-A参数,在web开发中,真是非常有用。

监听指定主机和端口

tcpdump -i eth0 -nnA 'port 80 and src host 192.168.168.2'复制代码

多个条件可以用and,or连接。上例表示监听192.168.168.2主机通过80端口发送的数据包。

抓取特定目标ip和端口的包

tcpdump host 192.168.168.2 and tcp port 8000复制代码

使用tcpdump抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854复制代码

0x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"。

tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序(如Wireshark)进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

Wireshark

下载地址:

使用

使用方法:

打开我们之前保存的文件。

一些常用的使用方法:

参考:

然后我们就可以愉快的抓包了。

转载地址:http://biazx.baihongyu.com/

你可能感兴趣的文章
写shell的事情
查看>>
负载均衡之Haproxy配置详解(及httpd配置)
查看>>
linux虚拟机拷贝之后联网出错
查看>>
Linux文件系统探索
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
查找恶意的TOR中继节点
查看>>
MAVEN 属性定义与使用
查看>>
hadoop2.7.2 HA搭建
查看>>
shell高级视频答学生while循环问题
查看>>
无法SSH到Ubuntu
查看>>
使用@media实现IE hack的方法
查看>>
《11招玩转网络安全》之第一招:Docker For Docker
查看>>
hive_0.11中文用户手册
查看>>
hiveserver2修改线程数
查看>>
XML教程
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
开启“无线网络”,提示:请启动windows零配置wzc服务
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>