当前位置: 首页 > news >正文

网络抓包介绍

抓包到底是什么

想象一下邮局:

  • 网络数据 = 邮件包裹
  • 网卡 = 邮局分拣中心
  • 抓包 = 在分拣中心拍照记录每个包裹的信息
你的电脑 ←→ 网卡(eth0) ←→ 网络↑抓包工具在这里"偷听"

当你执行 tcpdump -i eth0 -w http.pcap 时:

  1. tcpdump 告诉网卡:“把经过你的所有数据都复制一份给我”
  2. 网卡说:“好的,我把数据包的完整副本都给你”
  3. tcpdump 把这些副本保存到文件里

包文件到底存在哪里

# 你刚才的命令
sudo tcpdump -i eth0 -c 100 -w http.pcap port 9090# 文件就在当前目录!
[admin@host-11-61-243-97 ~]$ ls -la *.pcap
-rw-r--r-- 1 root root 12345 Dec 13 10:30 http.pcap

文件位置:就在你执行命令的目录下,文件名就是 http.pcap

实际演示:一步步看包里有什么

第1步:确认文件存在

ls -lh http.pcap
# 输出类似:-rw-r--r-- 1 root root 8.5K Dec 13 10:30 http.pcap

第2步:看包的"目录" - 每个包的基本信息

sudo tcpdump -r http.pcap -nn

输出会像这样:

10:30:15.123456 IP 192.168.1.100.45678 > 192.168.1.200.9090: Flags [S], seq 123456, win 65535
10:30:15.124567 IP 192.168.1.200.9090 > 192.168.1.100.45678: Flags [S.], seq 789012, ack 123457, win 65535
10:30:15.125678 IP 192.168.1.100.45678 > 192.168.1.200.9090: Flags [.], ack 789013, win 65535

这告诉你:

  • 10:30:15.123456 = 时间戳
  • 192.168.1.100.45678 > 192.168.1.200.9090 = 从哪里到哪里
  • Flags [S] = TCP握手开始

第3步:看包的"内容" - 实际传输的数据

sudo tcpdump -r http.pcap -nn -A

现在你会看到真正的数据:

10:30:15.126789 IP 192.168.1.100.45678 > 192.168.1.200.9090: Flags [P.], seq 1:100, ack 1, win 65535, length 99
E..c..@.@.............#.P...........
GET /api/status HTTP/1.1
Host: 192.168.1.200:9090
User-Agent: curl/7.68.0
Accept: */*

这里你看到了:

  • 真实的HTTP请求GET /api/status HTTP/1.1
  • 请求头Host: 192.168.1.200:9090

更直观的查看方式

方法1:一个包一个包地看

# 只看第1个包的详细内容
sudo tcpdump -r http.pcap -nn -A -c 1# 看第2-5个包
sudo tcpdump -r http.pcap -nn -A | sed -n '2,5p'

方法2:搜索特定内容

# 找HTTP请求
sudo tcpdump -r http.pcap -A | grep -i "GET\|POST"# 找HTTP响应
sudo tcpdump -r http.pcap -A | grep -i "HTTP/1"# 找包含特定词的包
sudo tcpdump -r http.pcap -A | grep -i "error\|success"

方法3:用十六进制查看(看二进制数据)

sudo tcpdump -r http.pcap -nn -X

输出像这样:

0x0000:  4500 0054 1234 4000 4006 abcd c0a8 0164  E..T.4@.@......d
0x0010:  c0a8 01c8 b26e 238e 1234 5678 9abc def0  .....n#..4Vx....
0x0020:  8018 ffff 1234 0000 0101 080a 1234 5678  .....4.......4Vx
0x0030:  4745 5420 2f61 7069 2f73 7461 7475 7320  GET /api/status 

右边的ASCII部分显示:GET /api/status

实际例子:分析你的9090端口包

# 1. 看有多少个包
echo "总包数: $(sudo tcpdump -r http.pcap | wc -l)"# 2. 看都是哪些IP在通信
echo "通信的IP地址:"
sudo tcpdump -r http.pcap -nn | awk '{print $3 " -> " $5}' | sort | uniq -c# 3. 看HTTP请求(如果有的话)
echo "HTTP请求:"
sudo tcpdump -r http.pcap -A | grep -i "GET\|POST\|PUT\|DELETE"# 4. 看HTTP响应
echo "HTTP响应:"
sudo tcpdump -r http.pcap -A | grep -i "HTTP/1"# 5. 看第一个包的完整内容
echo "第一个包的详细内容:"
sudo tcpdump -r http.pcap -nn -A -c 1

包文件的本质

http.pcap 文件就像一个"录像":

  • 记录了 网络上传输的每个数据包
  • 包含了 完整的网络通信内容
  • 可以重放 当时发生的网络活动
# 文件信息
file http.pcap
# 输出:http.pcap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 262144)

简单总结

  1. 抓包 = 复制网络数据包到文件
  2. 包文件 = 当前目录下的 .pcap 文件
  3. 查看包 = 用 tcpdump -r 文件名 读取
  4. 看内容 = 加上 -A 参数看文本数据

最实用的命令

sudo tcpdump -r http.pcap -nn -A | less

然后用空格键翻页,q 退出,/关键词 搜索。

这样你就能看到网络上到底传输了什么数据!

http://www.dtcms.com/a/344396.html

相关文章:

  • Conmi的正确答案——Ubuntu24.04禁用任何休眠
  • CTF-RSA-openssl-pem格式的key
  • C++中不加{}导致的BUG
  • 笔记本怎么才能更快散热?
  • vsCode或Cursor 使用remote-ssh插件链接远程终端
  • Flask数据库迁移实战指南
  • Flask电影投票系统全解析
  • 近期https接口的联调小记
  • STM32——SPI通信+W25Q64
  • 一体化伺服电机在特种机器人(炉管爬行器)中的应用案例
  • ShimetaPi M4-R1 :OpenHarmony 开发板解析
  • Mysql事务特性及原理
  • 网络安全基础知识
  • 异步开发的三种实现方式
  • 香港券商櫃台系統跨境金融研究
  • CTFshow系列——命令执行web45-48
  • 优选算法1:双指针
  • 如何在Vscode中配置MCP服务?(包含实例:使用Github Copilot + 高德MCP查询旅游攻略)
  • 聚焦AI与绿色双碳 金士顿亮相2025深圳国际电子展
  • 【链表 - LeetCode】2. 两数相加
  • 深度学习——神经网络
  • 深度学习赋能光纤非线性光学:Nature Comms揭示噪声驱动系统的智能预测框架
  • 【openGLES】着色器语言(GLSL)
  • CAM可视化卷积神经网络
  • 开源 python 应用 开发(十一)短语音转文本
  • 安卓手机格式转换,支持PDF转Word、PDF转Excel、PDF转PPT、PDT转图片
  • 基于ERNIE 4.5的多智能体协作的自动化视频舆情分析报告生成器
  • UE5基本打光(新手向)
  • vue2整合uniapp、uviewUi小程序开发
  • Yapi中通过MongoDB修改管理员密码与新增管理员