mac下tcpdum安装及使用

您所在的位置:网站首页 tcpdump查看端口的出入数据的情况 mac下tcpdum安装及使用

mac下tcpdum安装及使用

2023-12-21 19:39| 来源: 网络整理| 查看: 265

安装:        

        在 macOS 上,可以通过 Homebrew 安装 tcpdump 工具。下面是安装和使用 tcpdump 的步骤:

打开终端应用程序,输入以下命令安装 Homebrew(如果你已经安装了 Homebrew,可以跳过这一步):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装 tcpdump:

brew install tcpdump

确认安装是否成功:

tcpdump --version

使用 tcpdump 抓取网络数据包:

sudo tcpdump -i en0 # 这将抓取 en0 网络接口的数据包,并在终端中显示它们的内容。 # 注意:需要使用 sudo 命令运行 tcpdump,因为它需要 root 权限才能访问网络接口。

 使用tcpdump抓取指定ip的命令:

sudo tcpdump host # 将 替换为您要抓取的IP地址。此命令需要使用管理员权限,因为它需要访问网络设备。 使用: 命令功能

tcpdump:在网络上抓取并转储流量报文。

命令格式

tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。

不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。

Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]         [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]         [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]         [ -Q in|out|inout ]         [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]         [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]         [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]         [ -Z user ] [ expression ]    注意:     tcpdump只能抓取流经本机的数据包!! 命令参数: tcpdump -a    |--将网络地址和广播地址转变成名字;         -A          -B         -c    |--指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。         -C    |--在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。         -d    |--将匹配信息包的代码以人们能够理解的汇编格式给出;         -dd   |--将匹配信息包的代码以c语言程序段的格式给出;         -ddd  |--将匹配信息包的代码以十进制的形式给出;         -D    |--列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。         -e    |--输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。         -G         -f    |--将外部的Internet地址以数字的形式打印出来;         -F    |--从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。         -i    |--指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口         -I    |--使标准输出变为缓冲行形式;         -j         -m         -M         -n    |--对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。         -nn   |--指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示         -N    |--不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。         -p    |--将网卡设置为非混杂模式,不能与host或broadcast一起使用;         -P    |--指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。         -q    |--快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。         -r    |--从指定的文件中读取包(这些包一般通过-w选项产生);         -S    |--将tcp的序列号以绝对值形式输出,而不是相对值。         -s    |--从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。          -v    |--输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;         -vv   |--输出详细的报文信息;         -V         -s    |--设置tcpdump的数据包抓取长度为len,如果不设置默认将会是68字节。         -t    |--在输出的每一行不打印时间戳;         -T    |--将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)         -v    |--当分析和打印的时候,产生详细的输出。         -vv   |--产生比-v更详细的输出。         -vvv  |--产生比-vv更详细的输出。         -w    |--将抓包数据输出到文件中而不是标准输出。         -W         -X    |--输出包的头部数据,会以16进制和ASCII两种方式同时输出。         -XX   |--输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。         -E         -y         -z         -Z  常用的tcpdump表达式:

表达式用于筛选输出哪些类型的数据包,如果没有给定表达式,所有的数据包都将输出,否则只输出表达式为true的包。在表达式中出现的shell元字符建议使用单引号包围。

tcpdump的表达式由一个或多个"单元"组成,每个单元一般包含ID的修饰符和一个ID(数字或名称)。有三种修饰符:

(1).type:指定ID的类型。

可以给定的值有host/net/port/portrange。例如"host foo","net 128.3","port 20","portrange 6000-6008"。默认的type为host。

(2).dir:指定ID的方向。

可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,"src or dst port 22"表示源或目的端口为22的数据包。

(3).proto:通过给定协议限定匹配的数据包类型。

常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如"tcp port 21","udp portrange 7000-7009"。

所以,一个基本的表达式单元格式为"proto dir type ID"

常用命令示例: 指定网口 tcpdump -i eth1 -n     //监视指定网口eth1上的数据包(如果不用-i参数,默认tcpdump只会监视第一个网络接口,如eth0。-n是以数字方式显示地址) 指定监听协议类型 tcpdump -i eth1 -n tcp tcpdump -i eth1 -n udp tcpdump -i eth1 -n arp tcpdump -i eth1 -n ip tcpdump -i eth1 -n ether tcpdump -i eth1 -n icmp     //监视 eth1 上的 icmp 数据包(也可以是其他类型的包 如tcp/udp/arp/ip/ether/icmp等) 指定监听IP tcpdump -i eth1 -n host 172.16.81.25 tcpdump -i eth1 -n src host 172.16.81.25 tcpdump -i eth1 -n dst host 172.16.81.25     //监视 eth1 上的 IP 为 xxx.xxx.xxx.xxx 的数据包(不区分源IP和目的IP)     //监视 eth1 上的 IP 为 xxx.xxx.xxx.xxx 的数据包(src 就是过滤源地址)     //监视 eth1 上的 IP 为 xxx.xxx.xxx.xxx 的数据包(dst 就是过滤目的地址) 指定监听端口 tcpdump -i eth1 -n port 22223  tcpdump -i eth1 -n src port 22223  tcpdump -i eth1 -n dst port 22223      //监视指定网口 eth1 上 端口 为 22223 的数据包(不区分源端口和目的端口)     //监视指定网口 eth1 上 端口 为 22223 的数据包(src 过滤源端口)     //监视指定网口 eth1 上 端口 为 22223 的数据包(dst 过滤目的端口) 指定监听网段 tcpdump -i eth1 -n net 172.16 tcpdump -i eth1 -n src net 172.16 tcpdump -i eth1 -n dst net 172.16     //监视指定网口 eth1 上 网段 为 xxx.xxx 的数据包(不区分源地址和目的地址)     //监视指定网口 eth1 上 网段 为 xxx.xxx 的数据包(src 过滤源地址)     //监视指定网口 eth1 上 网段 为 xxx.xxx 的数据包(dst 过滤目的地址) 指定监听mac地址 tcpdump -i eth1 -n ether src 00:a0:c9:01:01:01 tcpdump -i eth1 -n ether dst 00:a0:c9:01:01:01     //监视指定网口 eth1 上 mac 地址为 xx:xx:xx:xx:xx:xx 的数据包(源mac地址)     //监视指定网口 eth1 上 mac 地址为 xx:xx:xx:xx:xx:xx 的数据包(目的mac地址) 将上面的规则整合到一起. tcpdump -i eth1 -n host 172.16.81.25 and port 22223 and net 172.16 and ether src 00:a0:c9:01:01:01 and icmp -w dump.pcap     //将上面的规则整合在一起 解析监听内容 tcpdump -r dump.pcap     //读取 dump.pcap 中的内容



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3