使用USTC-TK2016工具对USTC-TFC2016数据集进行处理——报错解决记录

本文记录了解决USTC-TK2016数据处理工具中遇到的两个问题:脚本找不到匹配文件和SplitCap版本问题。作者分享了修正脚本路径和更新SplitCap.exe的解决方法,以确保工具顺利运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USTC-TK2016数据处理工具:https://github.com/yungshenglu/USTC-TK2016
USTC-TFC2016数据集:https://github.com/yungshenglu/USTC-TFC2016
流量分类项目-DeepTraffic:https://github.com/echowei/DeepTraffic

关于如何运行以及下载USTC-TK2016数据处理工具,在项目的github中已经说得很详细了,本帖主要是记录一下运行过程中的报错及解决方案。

错误一:

打开 PowerShell,运行第一步 1_Pcap2Session.ps1,报错:

Error: No files matched '2_Session\AllLayers'
No files to process
Error: No files matched '2_Session\L7'
No files to process

如图:
在这里插入图片描述
这我就纳闷了,脚本运行所在路径既没问题,2_Session 下的文件夹也应该是自动生成的,怎么会提示没有匹配的文件呢。看了一下程序,找到原因了。按照github上的要求把USTC-TFC2016数据集下载下来并放到 1_Pcap 文件夹下,结构如下图:

1_Pcap
   └─USTC-TFC2016
    ├─Benign
    │      BitTorrent.pcap
    │      Facetime.pcap
    │      FTP.pcap
    │      Gmail.pcap
    │      MySQL.pcap
    │      Outlook.pcap
    │      Skype.pcap
    │      SMB.7z
    │      Weibo.7z
    │      WorldOfWarcraft.pcap
    │
    └─Malware
            Cridex.7z
            Geodo.7z
            Htbot.7z
            Miuref.pcap
            Neris.7z
            Nsis-ay.7z
            Shifu.7z
            Tinba.pcap
            Virut.7z
            Zeus.pcap

但是代码中却是这样写的
1_Pcap2Session.ps1
在这里插入图片描述
问题就出在第一行,这样肯定找不到文件啊,1_Pcap 文件夹下哪有 pcap 文件,应修改为:

#foreach($f in gci 1_Pcap *.pcap) 
#更改为:
foreach($f in gci 1_Pcap\USTC-TFC2016\Benign *.pcap) #这里路径按照自己的修改,不一定和我完全一样
foreach($f in gci 1_Pcap\USTC-TFC2016\Malware *.pcap)
#分别处理恶意流量和正常流量

再次运行就不会报这个错误了

错误二:

确定脚本程序没问题后接着运行,又报错了

未处理的异常:  System.TypeInitializationException: “SplitCap.Program”的类型初始值设定项引发异常。 ---> System.IO.FileNotFoundException: 未能加载文件或程序集“PacketParser, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null ”或它的某一个依赖项。系统找不到指定的文件。
文件名:“PacketParser, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null”
   在 SplitCap.Program..cctor()

警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

   --- 内部异常堆栈跟踪的结尾 ---
   在 SplitCap.Program.Main(String[] args)

如图:
在这里插入图片描述
在看了另一位博主的文章 USTC-TK2016工具集和USTC-TFC2016数据集的使用 的下方评论区,找到了答案,原来是需要最新版本的 SliptCap。SliptCap 下载链接:https://www.netresec.com/?page=SplitCap,下下来后替换掉原来的 SplitCap.exe,SplitCap.exe 在如下位置存放

USTC-TK2016
    ├─0_Tool
    │    finddupe.exe
    └─SplitCap_2-1
         ChangeLog.txt
         LICENSE-SplitCap.txt
         SplitCap.exe

再次运行就不会报错了,注意:运行 1_Pcap2Session.ps1 脚本花费的时间会比较长

### USTC-TFC2016 数据集处理方法 对于USTC-TFC2016数据集的预处理,可以遵循一系列特定的操作来确保数据能够被有效地用于后续分析或机器学习模型训练。以下是详细的预处理流程: #### 1. 下载并解压原始PCAP文件 首先需要从指定位置获取该数据集,并将其下载至本地环境。由于这些文件通常是以压缩格式存储(如`.gz`),因此需先对其进行解压缩操作。 ```bash wget https://github.com/yungshenglu/USTC-TK2016/archive/master.zip unzip master.zip gunzip *.pcap.gz ``` 上述命令会依次完成下载、解压ZIP档案以及解除GZ压缩的过程[^1]。 #### 2. 使用 ustc-tk 工具转换PCAP为图像形式 接下来利用ustc-tk工具将捕获到的网络通信记录转化为类似于MNIST手写数字数据库那样的灰度图片表示法。这一步骤有助于简化特征提取过程,并使得不同种类的数据更容易比较和分类。 安装依赖库之后执行如下Python脚本即可实现此功能: ```python from ustctk import PcapToImageConverter converter = PcapToImageConverter(input_dir='path/to/input_pcap_files', output_dir='path/to/output_images') converter.convert_all() ``` 这段代码创建了一个PcapToImageConverter实例,指定了输入目录(存放待处理.pcap文件)与输出路径(保存生成后的图像)。调用`convert_all()`函数则会对整个文件夹内的所有符合条件的项目实施批量转化工作。 #### 3. 解决命名一致性问题 当遇到因测试数据名称不符而导致无法识别的情况时,应仔细核对实际存在的文件名与其预期匹配模式之间的差异。如果发现确实存在不兼容之处,则可以通过重命名的方式修正这一状况;或者调整读取逻辑使之更加灵活通用,从而避免误判现象的发生[^3]。 例如,在加载数据之前添加一段简单的校验机制: ```python import os def check_and_rename(directory, expected_names): existing_files = set(os.listdir(directory)) for name in expected_names: if name not in existing_files: # 尝试寻找相似的名字并改名为期望的形式 similar_name = find_similar_file(existing_files, name) if similar_name is None: raise FileNotFoundError(f"Could not locate {name}") os.rename(os.path.join(directory, similar_name), os.path.join(directory, name)) check_and_rename('data/test', ['test_set_1.png']) ``` 通过这种方式可以在一定程度上预防因为细微差别而引起的错误提示信息。 #### 4. 准备适合模型使用的最终形态 最后要做的就是把得到的结果整理成可以直接供给算法消费的标准格式。比如按照一定规则划分训练集、验证集及测试集合的比例关系,并确保各类样本数量相对均衡分布以便于更好地评估性能指标。 ```python from sklearn.model_selection import train_test_split X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42) X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42) ``` 这里展示了如何采用sklearn库里的train_test_split()函数来进行分层抽样分割操作,其中参数设置可以根据具体需求做适当修改[^2]。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值