弈秋弈秋
弈秋
弈秋
  • Network Traffic Analysis

Network Traffic Analysis

拿到流量包后,第一件事就是可以先 strings | grep flag{ 一下,说不定 flag 就直接出了

当然也可以使用@凤二西师傅的 破空_flag查找工具3.5.exe 来搜索 flag

wireshark 基础

常见过滤

http.request.method == "POST"
http.request.full_uri == “XXX”

# 包含什么内容的帧
frame contains "XXX"

tshark使用教程

导出流量包中所有POST数据包的data数据

tshark -r 1.pcapng -Y "http.request.method == POST" -T fields -e data.data > data.txt
# -r:指定了需要读取的文件
# -Y:使用过滤器
# -T:表示仅仅输出所选字段
# -e:指定提取的字段

# uinq:去除重复行
# sed '/^\s*$/d':在sed中使用正则表达式过滤掉所有空行(其中 ^\s*$ 匹配空行,d 表示删除)

python 处理

import json
import subprocess

output = ""
file_path = "" # 流量包的路径
command = [
	"tshark",  # tshark的路径,如果在环境变量里这里就不用改
	'-r', file_path,  # 读取指定的 pcapng 文件
	'-Y', 'http',  # 过滤出 HTTP 数据包
	'-T', 'json',  # 输出为 JSON 格式
	'-e', 'http.request.method',  # 请求方法
	'-e', 'http.host',  # 请求主机
	'-e', 'http.request.uri',  # 请求 URI
	'-e', 'http.user_agent',  # 用户代理
	'-e', 'http.file_data',  # 请求中的文件数据(POST 请求的内容)
	'-e', 'http.response.code',  # 响应代码
	'-e', 'http.response.phrase',  # 响应短语
	'-e', 'http.content_type'  # 响应内容类型
]
result = subprocess.run(
    command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
json_output = json.loads(result.stdout)
# print(json.dumps(json_output, indent=4))  # 这个输出是用来调试的,可以移除

# 遍历 JSON 数据并提取字段
for packet in json_output:
    layers = packet.get('_source', {}).get('layers', {})
    request_method = layers.get('http.request.method', ['None'])[0]
    request_host = layers.get('http.host', ['None'])[0]
    request_uri = layers.get('http.request.uri', ['None'])[0]
    user_agent = layers.get('http.user_agent', ['None'])[0]
    file_data = layers.get('http.file_data', ['None'])[0]
    response_code = layers.get('http.response.code', ['None'])[0]
    response_phrase = layers.get('http.response.phrase', ['None'])[0]
    content_type = layers.get('http.content_type', ['None'])[0]

流量分析基础考点

1. 直接用wireshark导出为pcap文件然后用networkminer分析
2. 拉入kali用tcpxtract提取文件:tcpxtract -f +文件名.pcap
3. 直接追踪流提取16进制,根据文件头尾提取出文件

USB 流量分析

流量包中数据存储的字段有两种:usb.capdata 和 usbhid.data

tshark -r example.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > data.txt
tshark -r example.pcapng -T fields -e usbhid.data | sed '/^\s*$/d' > data.txt

tshark -r example.pcapng -Y 'usb.src == "2.3.1"' -T fields -e usbhid.data | sed '/^\s*$/d' > data.txt
# -r:指定了需要读取的文件
# -Y:使用过滤器
# -T:表示仅仅输出所选字段
# -e:指定提取的字段
# sed '/^\s*$/d':在sed中使用正则表达式过滤掉所有空行(其中 ^\s*$ 匹配空行,d 表示删除)

最近更新:: 2025/9/16 19:30
Contributors: yiqiu