Tcpdump介绍及使用

一、核心功能

tcpdump 是 Linux/Unix 下基于 libpcap 的网络抓包与分析工具,支持以下核心功能 :

  1. 实时抓取网络流量:捕获 TCP/UDP/ICMP 等协议数据包。
  2. 精准过滤:按 IP、端口、协议、报文内容等条件筛选数据包。
  3. 数据保存与解析:生成 .pcap 文件供 Wireshark 等工具分析。
  4. 网络诊断:检测丢包、延迟、路由异常等网络问题。

二、参数解析与常用命令

基础参数
参数说明示例
-i <接口>指定抓包网卡(any 表示所有接口)tcpdump -i eth0
-n禁用域名解析(显示 IP 地址)tcpdump -n
-nn禁用域名和端口解析(提升速度)tcpdump -nn
-s <字节>设置抓包长度(-s0 抓取完整报文)tcpdump -s0
-w <文件>保存为 .pcap 文件tcpdump -w traffic.pcap
-c <数量>抓取指定数量包后自动退出tcpdump -c 10
-v/-vv/-vvv显示详细输出(协议细节逐级增加)tcpdump -vv
-A以 ASCII 格式显示报文内容(便于阅读)tcpdump -A
高级参数
参数说明示例
-e显示数据链路层信息(MAC 地址、VLAN Tag)tcpdump -e
-p关闭混杂模式(仅抓目标为本机的包)tcpdump -p
-X同时显示十六进制和 ASCII 内容tcpdump -X
-l行缓冲模式(适合管道输出)`tcpdump -l

三、过滤器语法

1. 基础过滤
  • 按 IP/端口过滤

    tcpdump host 192.168.1.100 # 抓取与指定 IP 相关的流量 tcpdump port 80 # 抓取 80 端口流量 tcpdump src 10.0.0.1 and dst port 443 # 源 IP + 目标端口组合过滤

  • 按协议过滤

    tcpdump icmp # 仅抓 ICMP 包 tcpdump tcp # 仅抓 TCP 包

2. 逻辑运算符

支持 and(与)、or(或)、not(非)组合条件:

tcpdump 'src 192.168.1.100 and (port 80 or port 443)' # 复合条件

tcpdump 'icmp and not src 10.0.0.1'             # 排除特定源 IP

3. 高级内容过滤
  • 按报文内容匹配(十六进制或字符串):

    tcpdump 'tcp[20:4] = 0x47455420' # 匹配 TCP 载荷中的 "GET "(HTTP 请求) tcpdump -A 'udp and udp[8:2] = 0x1337'  # 匹配 UDP 特定字段


四、实用场景案例

1. 基础抓包与保存

# 抓取 eth0 网卡的前 100 个完整包,保存为文件

tcpdump -i eth0 -s0 -c 100 -w traffic.pcap

2. 诊断 HTTP 请求

# 抓取 80 端口的 HTTP GET 请求

tcpdump -A -s0 'tcp port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)'

3. 分析 TCP 握手过程

# 抓取 SYN 或 ACK 包,观察三次握手

tcpdump -nn 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

输出示例

21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [S], seq 992042666 # SYN 包 21:27:07.030487 IP 124.192.132.54.80 > 172.20.20.1.15605: Flags [S.], seq 2147006684, ack 992042667 # SYN-ACK 包

4. 检测 TLS 握手(HTTPS)

# 抓取 Client Hello 报文(TLS 握手起始包)

tcpdump -nnX 'tcp[20]==22 && tcp[25]==1'

5. 排查网络延迟

# 抓取 ICMP 包分析丢包与延迟

tcpdump -i eth0 icmp -vv


五、输出解析与技巧

  • 时间戳21:26:49.013621 表示时分秒.微秒。
  • SEQ/ACK 号:数据包序列号和确认号。
  • Win 窗口:接收窗口大小,反映网络拥塞情况。

六、注意事项

  1. 权限要求:需 root 权限或 sudo 执行。
  2. 性能影响:高频抓包可能占用 CPU/内存,建议限制抓包数量(-c)或长度(-s)。
  3. 安全风险:避免在公网暴露敏感数据,推荐使用 -w 保存后离线分析。

通过灵活组合参数与过滤器,tcpdump 可高效完成网络监控、协议调试及安全审计。

<think>好的,我现在需要帮助用户了解或实现得物签名的相关技术,特别是签名算法的实现方式。首先,我需要收集已有的信息。根据用户提供的引用,特别是引用[4]和[5],得物的签名算法可能涉及逆向工程分析使用了JavaScript中的XMLHttpRequest重写来拦截请求,并在请求中包含特定的sign参数。这可能意味着签名生成是在客户端进行的,通常在前端JavaScript代码中完成。 接下来,我应该考虑常见的签名生成方法。常见的Web应用签名算法通常使用HMAC、AES、RSA或自定义的哈希组合。引用[1]提到了RSA算法,但得物的签名可能更倾向于使用HMAC-SHA256之类的哈希算法,结合时间戳、随机数和请求参数进行签名,以防止篡改和重放攻击。 用户可能需要具体的步骤,比如逆向分析得物的JavaScript代码,找到生成sign的函数,提取关键参数和加密逻辑。引用[5]中的代码片段展示了如何重写XMLHttpRequest的open方法来拦截请求,这可能用于调试和定位签名生成的代码位置。 此外,引用[4]提到使用Python进行算法还原,所以可能需要在Python中复现JavaScript的签名生成逻辑。这通常涉及分析请求参数如何排序、拼接,以及如何与密钥结合进行哈希或加密。需要注意反爬机制,如obfuscation(代码混淆)或动态密钥,这可能需要使用AST(抽象语法树)解析或动态执行来还原算法。 用户可能还需要了解如何应对反调试措施,比如在Chrome开发者工具中使用断点调试,或者使用工具如Frida进行Hook。同时,引用[3]和[4]强调了法律和合规问题,确保研究仅用于学习目的,不用于非法用途。 最后,应该提醒用户注意法律风险,遵循网站的使用条款,避免侵犯知识产权或违反计算机安全法律。总结起来,实现得物签名需要逆向工程分析前端代码,提取关键算法,处理可能的混淆和反调试,最后用目标语言如Python复现算法。</think>### 得物签名算法实现方式分析 得物签名算法主要用于接口请求的身份验证和防篡改保护,常见实现方式涉及以下技术点: #### 1. **签名参数组成** 签名通常由以下参数动态生成: - 请求参数(经排序、过滤空值后拼接) - 时间戳(如:$timestamp=1620000000$) - 随机数(如:$nonce=5a8s3d$) - 设备指纹(如:$device\_id=abcdef$) - 应用密钥(加密盐值,可能动态获取)[^4] 示例参数拼接逻辑: $$ \text{sign\_str} = \text{path} + \text{sorted\_params} + \text{timestamp} + \text{nonce} $$ #### 2. **加密算法类型** 根据逆向分析,得物可能采用以下组合: - **HMAC-SHA256**:对拼接字符串进行哈希运算 - **AES/Base64编码**:对结果二次处理 - **自定义位移/异或操作**:增加逆向难度[^5] #### 3. **JavaScript代码混淆** 关键函数可能被混淆,例如: ```javascript function _0x12ab5(a, b) { return a ^ b << 3; } // 需要AST解析还原控制流 ``` #### 4. **Python算法还原示例** ```python import hmac import hashlib def generate_sign(params, secret_key): # 1. 参数排序并拼接 sorted_str = '&'.join([f"{k}={v}" for k,v in sorted(params.items())]) # 2. HMAC-SHA256加密 sign = hmac.new(secret_key.encode(), sorted_str.encode(), hashlib.sha256).hexdigest() # 3. 自定义处理(示例) return sign.upper() + str(int(time.time())) ``` #### 5. **反爬对抗措施** - 动态密钥:通过接口定期更新加密盐值 - 环境检测:验证是否在真机环境运行 - 请求频率限制:异常高频触发验证码[^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值