wireshark过滤tcp包
时间: 2025-05-31 22:47:14 浏览: 20
### 如何在Wireshark中设置过滤器来捕获和分析TCP数据包
#### 设置捕获过滤器
为了仅捕获特定类型的网络流量,在启动Wireshark之前可以配置捕获过滤器。对于TCP数据包,可以在捕获选项窗口中的“Capture Filter”字段输入`tcp`作为关键字[^1]。这会告诉Wireshark只记录基于TCP协议的数据流。
#### 使用显示过滤器进一步筛选已捕获的TCP数据包
尽管可以通过捕获过滤器减少不必要的数据量,但有时仍需更精细地查看某些特性或行为模式下的TCP通信细节。此时便需要用到更为灵活强大的显示过滤器功能。例如,如果想观察目标端口为80的所有TCP连接,则可在界面顶部栏位键入表达式 `tcp.dstport == 80` 来实现这一目的[^1]。
以下是几个常用的TCP显示过滤条件及其作用说明:
- **按源/目的地IP地址过滤**:
- 过滤来自某个特定主机的所有TCP分组:`ip.src==<source_ip> && tcp`
- 查找去往某台机器上的所有TCP请求:`ip.dst==<destination_ip> && tcp`
- **依据端口号区分服务类型**:
- 显示访问HTTP服务器(通常监听于80号端口)的相关活动:`tcp.port eq 80`
- **追踪单一会话全过程** (当发现异常报文时非常有用):
- 假设当前选中了一个可疑的SYN包,那么执行命令`follow tcp stream`即可自动高亮该链接全程交换的所有帧.
下面给出一段Python脚本用于演示如何利用tshark命令行工具批量导出满足自定义规则集内的PCAP文件片段:
```python
import os
def filter_tcp_streams(input_file,output_dir):
streams=os.popen(f"tshark -r {input_file} -T fields -e tcp.stream").read().splitlines()
unique_streams=set(streams)
for s in unique_streams:
output_path=f"{output_dir}/stream_{s}.pcap"
os.system(f"editcap -F libpcap -c 99999 '{input_file}' '{output_path}' 'tcp.stream eq {s}'")
if __name__=="__main__":
input_pcap="example_traffic.pcapng"
out_folder="./filtered_sessions/"
if not os.path.exists(out_folder):
os.makedirs(out_folder)
filter_tcp_streams(input_pcap,out_folder)
```
此代码首先提取原始抓包文档里所有的独立TCP对话编号列表;接着针对每一个唯一ID创建对应的子文件夹并保存关联部分至新生成的小型 pcap 文件当中以便后续深入研究.
阅读全文
相关推荐



















