记录自己用到的tcpdump命令

本文通过实例演示如何使用tcpdump工具进行网络数据包捕获与分析。重点介绍tcpdump命令行参数及其作用,并展示了捕获UDP协议下3333端口数据的具体操作过程及输出结果。


sudo tcpdump udp and port 3333 -en -nn -s 0 -i lo -XX


参数说明:

udp   侦听UDP协议

port 3333   3333端口上的内容

-e    所截取的每个包都显示链路层报头:源MAC地址>目的MAC地址,以太类型 IPV4 (0X0800), 包数据长度。

-n    别把地址转换成名字:显示ip地址,而非主机名称

-nn 别把协议和端口号转换为服务名:譬如显示80端口而非HTTP

-s     重定义截取报文大小,默认为96(或68),如果定义为0,则表示获取完整报文。该参数应尽量小,尤其在繁忙网络环境中。

-i 指定监听的网络接口。lo 为loopback 。

-XX   以16 进制数形式显示每一个报文(包含链路层报头),同时显示ASCII码。


得到的结果如下:


tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
15:32:44.779845 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 57: 127.0.0.1.42893 > 127.0.0.1.3333: UDP, length 15
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  002b 2222 4000 4011 1a9e 7f00 0001 7f00  .+""@.@.........
    0x0020:  0001 a78d 0d05 0017 fe2a 4865 6c6c 6f2c  .........*Hello,
    0x0030:  2049 2061 6d20 5544 50                   .I.am.UDP
15:32:44.780169 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 57: 127.0.0.1.3333 > 127.0.0.1.42893: UDP, length 15
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  002b 0000 4000 4011 3cc0 7f00 0001 7f00  .+..@.@.<.......
    0x0020:  0001 0d05 a78d 0017 fe2a 4865 6c6c 6f2c  .........*Hello,
    0x0030:  2049 2061 6d20 5544 50                   .I.am.UDP



### 如何使用 `tcpdump` 在 Linux 中抓包并将结果保存为文件 在 Linux 系统中,`tcpdump` 是一种强大的网络数据包分析工具。通过 `-w` 参数可以将捕获的数据包保存到文件中以便后续分析。 以下是关于如何使用 `tcpdump` 将抓取的数据包保存至文件的具体说明: #### 基本语法 `tcpdump` 的基本命令结构如下: ```bash sudo tcpdump -i <interface> [filter_options] -w <output_file> ``` - **`<interface>`**: 指定要监听的网络接口名称(例如 `eth0`, `lo` 或其他可用网卡)。可以通过运行 `ifconfig` 或 `ip a` 查看当前系统的网络接口列表[^1]。 - **`[filter_options]`**: 可选参数用于过滤特定类型的流量,比如基于端口、IP 地址或协议类型设置条件。常见的过滤器包括 `port`(指定端口号)、`host`(指定主机地址)以及 `proto`(指定协议类型如 TCP/UDP/IP/FDDI 等)[^4]。 - **`<output_file>`**: 输出目标文件路径及名称,通常建议扩展名为 `.pcap` 表示这是一个标准的封包记录档案格式[^2]。 #### 实际案例演示 假设需要监控本地机器上所有经过 HTTP 协议(默认端口80)通信的信息,并把它们存储在一个叫做 `http_traffic.pcap` 文件里,则执行以下指令即可完成操作过程: ```bash sudo tcpdump -i eth0 'tcp port 80' -w http_traffic.pcap ``` 此条目中的各个部分含义分别为: - `-i eth0`: 设定了正在使用的物理连接设备为目标——即 Ethernet Adapter 0- `'tcp port 80'`: 定义了一个筛选规则来仅获取那些涉及到了传输控制层服务号等于或者接近于Web服务器所采用的标准数值范围内的活动情况报告; - `-w http_traffic.pcap`: 明确指出最终成果应该被写入哪个具体位置下的二进制形式文档之中去加以保留下来供以后查阅之需[^3]. 当按上述方式启动程序之后,在终端窗口里面会显示出实时更新的相关统计数据直到手动终止进程为止(`Ctrl+C`);与此同时也会自动创建相应名目的PCAP档桉存放在工作目录底下等待进一步处理利用. #### 注意事项 为了确保能够顺利地实施整个流程需要注意几个要点: 1. 需要有足够的权限来进行这些动作,默认情况下可能需要用到超级用户的身份认证才能访问底层硬件资源; 2. 如果打算跨平台分享此类资料的话最好保持一致性的命名约定便于识别理解其用途所在; 3. 对于大型项目而言单独依靠单一手段未必足够全面可靠因此往往还需要配合wireshark之类的图形界面应用程序共同协作达成更佳效果. ```python import os os.system('sudo tcpdump -i eth0 port 80 -w output.pcap') print("Data has been successfully written to the file.") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值