众所周知,在Windows下开发运行环境下,在调试网络环境时,可以可以很方便的借助wireshark等软件进行抓包分析;并且在linux或者Ubuntu等桌面版里也可以进行安装抓包工具进行抓包分析,但总有一些情况,无法直接运用工具(比如一些没有界面的linux环境系统中),则此时我们就需要使用到最简单的tcpdump命令进行网络抓包.
一般的,linux下抓包时,抓取特定的网络数据包到当前文件夹下的文件中,再把文件拷贝出来利用Windows下的wireshark软件进行分析.
tcpdump命令详解:(简单举例)
①.、抓取到的文件为filename.cap,然后将此文件拷贝到Windows下,使用wireshar打开后,即可对此文件进行分析.
使用tcpdump可以.
tcpdump是一个功能强大的命令行数据包分析器,它是通过监听服务器的网卡来获取数据包,所有通过网络访问的数据包都能获取到.
它也提供了过滤器的功能,可以获取指定的网络、端口或协议的数据包程序员日常排查问题,最常用的是使用过滤器功能获取指定端口的数据包,用来分析服务器是否收到请求、请求数据是否完整.
用tcpdum命令可以抓指定IP的包,具体命令为:
参数解析:
tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型.
-i eth1 : 只抓经过接口eth1的包
-t : 不显示时间戳
-c 100 : 只抓取100个数据包
-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
扩展资料
tcpdump语法格式:
tcpdump [-adeflnNOpqStvx][-c数据包数目][-dd][-ddd][-F表达文件][-i网络界面][-r数据包文件][-s数据包大小][-tt][-T数据包类型][-vv][-w数据包文件][输出数据栏位]
tcpdump主要参数说明:
①.、-a 尝试将网络和广播地址转换成名称.
①.0、-l 使用标准输出列的缓冲区.
①.1、-n 不把主机的网络地址转换成名字.
NMAP扫描
一款强大的网络探测利器工具
支持多种探测技术
--ping扫描
--多端口扫描
-- TCP/IP指纹校验
为什么需要扫描?
以获取一些公开/非公开信息为目的
--检测潜在风险
--查找可攻击目标
--收集设备/主机/系统/软件信息
--发现可利用的安全漏洞
基本用法
nmap [扫描类型] [选项] 扫描目标...
常用的扫描类型
常用选项
-sT TCP 连接扫描(全开)
-sU UDP扫描
-sP ICMP扫描
-sV 探测打开的端口对应的服务版本信息
-A 目标系统全面分析 (可能会比较慢)
-p 扫描指定端口
①. ) 检查目标主机是否能ping通
tcpdump
命令行抓取数据包工具
tcpdump [选项] [过滤条件]
常见监控选项
-i,指定监控的网络接口(默认监听第一个网卡)
-A,转换为 ACSII 码,以方便阅读
-w,将数据包信息保存到指定文件
-r,从指定文件读取数据包信息
常用的过滤条件:
类型:host、net、port、portrange
方向:src、dst
协议:tcp、udp、ip、wlan、arp、......
多个条件组合:and、or、not
案例1
①. ) 安装部署vsftpd服务
tcpdump 是一款强大的网络抓包工具,运行在 linux 平台上.熟悉 tcpdump 的使用能够帮助你分析、调试网络数据.
要想使用很好地掌握 tcpdump, 必须对网络报文( TCP/IP 协议)有一定的了解.不过对于简单的使用来说,只要有网络基础概念就行了.
tcpdump 是一个很复杂的命令,想了解它的方方面面非常不易,也不值得推荐,能够使用它解决日常工作中的问题才是关键.
tcpdump 的选项也很多,要想知道所有选项的话,请参考 man tcpdump ,下面只记录 tcpdump 最常用的选项.
完整的英文文档:
Frame = Ethernet Header + IP Header + TCP Header + TCP Segment Data
这样,数据经过本地TCP层分段后,交给本地IP层,在本地IP层就不需要分片了.但是在下一跳路由(Next Hop)的邻居路由器上可能发生IP分片!因为路由器的网卡的MTU可能小于需要转发的IP数据报的大小.
这时候,在路由器上可能发生两种情况:
(1)如果源发送端设置了这个IP数据包可以分片(May Fragment,DF=0),路由器将IP数据报分片后转发.
默认启动,普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包
监听所有端口,直接显示 ip 地址.
显示更详细的数据报文,包括 tos, ttl, checksum 等.
显示数据报的全部数据信息,用 hex 和 ascii 两列对比输出.
下面是抓取 ping 命令的请求和返回的两个报文,可以看到全部的数据.
机器上的网络报文数量异常的多,很多时候我们只关系和具体问题有关的数据报(比如访问某个网站的数据,或者 icmp 超时的报文等等),而这些数据只占到很小的一部分.把所有的数据截取下来,从里面找到想要的信息无疑是一件很费时费力的工作.而 tcpdump 提供了灵活的语法可以精确地截取关心的数据报,简化分析的工作量.这些选择数据包的语句就是过滤器(filter)!
过滤器也可以简单地分为三类: type , dir 和 proto .
Type 让你区分报文的类型,主要由 host (主机), net (网络) 和 port (端口) 组成. src 和 dst 也可以用来过滤报文的源地址和目的地址.
此外还有指定端口和数据报文范围的过滤器:
过于过滤器的更多详细信息,请访问 tcpdump 官方 map page 的 PCAP-FILTER 部分
使用 tcpdump 截取数据报文的时候,默认会打印到屏幕的默认输出,你会看到按照顺序和格式,很多的数据一行行快速闪过,根本来不及看清楚所有的内容.不过,tcpdump 提供了把截取的数据保存到文件的功能,以便后面使用其他图形工具(比如 wireshark,Snort)来分析.
-r 可以读取文件里的数据报文,显示到屏幕上.
NOTE:保存到文件的数据不是屏幕上看到的文件信息,而是包含了额外信息的固定格式 pcap,需要特殊的软件(如: Wireshark )来查看,使用 vim 或者 cat 命令会出现乱码.
过滤的真正强大之处在于你可以随意组合它们,而连接它们的逻辑就是常用的 与/AND/ 、 或/OR/|| 和 非/not/! .
从上面的例子就可以看出,你可以随意地组合之前的过滤器来截取自己期望的数据报,最重要的就是知道自己要精确匹配的数据室怎样的!
对于比较复杂的过滤器表达式,为了逻辑的清晰,可以使用括号.不过默认情况下,tcpdump 把 () 当做特殊的字符,所以必须使用单引号 ' 来消除歧义:
截取数据只是第一步,第二步就是理解这些数据,下面就解释一下 tcpdump 命令输出各部分的意义.
此外,上面的三条数据还是 tcp 协议的三次握手过程,第一条就是 SYN 报文,这个可以通过 Flags [S] 看出.下面是常见的 TCP 报文的 Flags:
而第二条数据的 [S.] 表示 SYN-ACK ,就是 SYN 报文的应答报文.
-c 参数对于运维人员来说也比较常用,因为流量比较大的服务器,靠人工CTRL+C还是抓的太多,甚至导致服务器宕机,于是可以用 -c 参数指定抓多少个包.
上面的命令计算抓10000个SYN包花费多少时间,可以判断访问量大概是多少.
Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具.但在Linux下很难找到一个好用的图形化抓包工具.
还好有Tcpdump.我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包.
tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的.显然这不利于分析网络故障,通常的解决办法是先使用带 -w 参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序(如 Wireshark )进行解码分析.当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘.
以上就是土嘎嘎小编为大家整理的linux的抓包命令相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!