答案提交: 请按照以下格式填写:域名:IP地址:访问次数。例如,若发送的目标IP地址为 1.1.1.1,对应的域名为 example.com,且总访问次数为 9999,则提交的答案应为:example.com:1.1.1.1:9999
使用wireshark把流量包导出为CSV格式
用WPS打开,然后按照Destination进行筛选 按数量排序即可
数量最多的IP 146.71.124.39
没有在敏感名单里面,而且第二多的就在敏感名单中。
flag{chrome.com:57.195.144.48:20498}
也叫AI写一个脚本帮你进行筛选
import json
from scapy.all import rdpcap, IP, TCP, UDP
from datetime import datetime
def load_ip_to_domain_map(json_filepath):
"""
从JSON文件中加载IP地址到域名的映射。
如果一个IP对应多个域名,则取第一个遇到的域名。
""" ip_to_domain = {}
try:
with open(json_filepath, 'r', encoding='utf-8') as f:
data = json.load(f)
if 'categories' in data:
for category_name, category_data in data['categories'].items():
if 'domains' in category_data and isinstance(category_data['domains'], dict):
for domain, ip_address in category_data['domains'].items():
if ip_address: # 确保IP地址存在
if ip_address not in ip_to_domain: # 只添加第一个域名映射对于给定的IP
ip_to_domain[ip_address] = domain
if not ip_to_domain:
print(f"警告: 未从 {json_filepath} 中加载到任何IP到域名的映射。请检查文件内容和结构。")
else:
print(f"成功从 {json_filepath} 加载 {len(ip_to_domain)} 个唯一的IP到域名映射。")
# print(f"部分加载的IP->域名示例: {list(ip_to_domain.items())[:3]}") # 可选:打印少量IP以供调试
except FileNotFoundError:
print(f"错误: JSON文件 {json_filepath} 未找到。")
except json.JSONDecodeError:
print(f"错误: JSON文件 {json_filepath} 格式无效。")
except Exception as e:
print(f"加载IP到域名映射时发生未知错误: {e}")
return ip_to_domain
def analyze_pcap_file(pcap_filepath, ip_to_domain_map):
"""
分析PCAP文件,统计访问敏感IP的次数,并按指定格式输出。
""" if not ip_to_domain_map:
print("错误: IP到域名映射为空,无法进行分析。")
return
sensitive_ips_set = set(ip_to_domain_map.keys())
access_counts = {} # {ip: count}
packet_count = 0
try:
print(f"开始分析PCAP文件: {pcap_filepath}...")
packets = rdpcap(pcap_filepath)
for packet in packets:
packet_count += 1
if IP in packet:
# src_ip = packet[IP].src # 源IP暂时不用于最终输出,但保留以备将来扩展
dst_ip = packet[IP].dst
if dst_ip in sensitive_ips_set:
access_counts[dst_ip] = access_counts.get(dst_ip, 0) + 1
if packet_count % 10000 == 0: # 调整打印频率,避免过于频繁
print(f"已处理 {packet_count} 个数据包...")
print(f"PCAP文件分析完成。总共处理 {packet_count} 个数据包。")
if access_counts:
print("\n--- 答案提交 ---")
total_sensitive_accesses = 0
for ip, count in access_counts.items():
domain = ip_to_domain_map.get(ip, "未知域名") # 如果IP存在但映射中没有,则标记为未知
print(f"{domain}:{ip}:{count}")
total_sensitive_accesses += count
print("--- 答案提交结束 ---")
print(f"总共发现 {len(access_counts)} 个不同的敏感IP被访问,总访问次数为 {total_sensitive_accesses} 次。")
else:
print("未发现访问清单中IP地址的流量。")
except FileNotFoundError:
print(f"错误: PCAP文件 {pcap_filepath} 未找到。")
except Exception as e:
print(f"分析PCAP文件时发生错误: {e}")
print("请确保已安装scapy库 (pip install scapy) 并且pcap文件有效。")
if __name__ == "__main__":
json_file = '国外敏感域名清单.json' # 假设JSON文件在同一目录下
ip_domain_mapping = load_ip_to_domain_map(json_file)
if ip_domain_mapping:
pcap_file_path = input("请输入PCAP文件的路径: ")
analyze_pcap_file(pcap_file_path, ip_domain_mapping)
else:
print("无法继续分析,因为未能成功加载IP到域名映射。")
题目描述: 幸运的是,每个⽂件都带有⽂件⽔印,可以通过⽔印信息确定泄漏源的ID 和时间。请分析导出的流量数据,提取⽂件的⽔印信息,并将⽔印字符串作为答案提交
wireshark导出分组功能,题干有提到文件传输,所以优先看FTP分组。发现有很多txt文件,挨个看一下就可以发现有不可见的unicode字符。这个应该就是水印了
答案提交: 本题的答案由⼩写的26个英⽂字母组成。
网络通话一般使用RTP协议(媒体传输协议)
使用wireshark进行RTP流
对于通话而言,着重关注以下字段
字段 | 含义 | 可疑值示例 |
---|---|---|
最大Delta (ms) |
包与包之间最大时间间隔(延迟) | 越大越可疑,代表可能有网络抖动或丢包 |
丢弃 (Discard) |
接收端主动丢弃的包数 | 为负数通常是异常统计(不正常) |
Lost percentage |
丢包率 | 正常应接近 0%,-100.00 是严重异常 |
状态 (Status) |
通话质量评估 | Problem 表示通话有问题 |
可以发现 最大Delta (ms)
有两个比其他高特别多,优先听这两个的音频
点击下面的
然后就可以听了,然后可以听到以下内容
你会弹吉他吗?
会一点,不过不是很熟练。
那已经很厉害了。我一直想学吉他。
其实不难,只要多练习就好了。
欢迎参加本次数字中国的预赛。
你这话题变得好突兀。好吧?有没有什么内部消息?
给你的答案要不要?
必须要,快给个答案。
听好了,本题的答案就是江苏工匠学院君立华域的拼音。
本题答案就是江苏工匠学院君立华域的拼音。
对的。全部小写哦。 好的好的。
flag{jiangsugongjiangxueyuanjunlihuayu}