数字内容安全实验(五)环境配置问题的解决
前言
过时的python版本、过时的程序、过时的下载链接——这就是数字内容安全实验五。
被数字内容安全实验五的环境搭建部分折磨一整天后,终于把遇到的问题一一解决。为什么网安没有数字内容安全?希望下学期的网络安全治理给点力吧……
为了不让同学/学弟学妹们被正常教学课程实验本不该出现的版本、过时问题,无缘无故浪费时间和精力,在此写一篇文章讲讲这些问题是如何解决的。
环境搭建
项目准备
主机环境:ubuntu22.04 LTS(VMware虚拟机)
项目的地址:https://github.com/liuyanqi/bitright一看是五年前的老项目,就有点害怕…
直接git clone到~目录:
1 |
|
文件Installation Guide.txt的指导
如果是第一次运行:依次执行这两条命令
1 |
|
如果是后续的运行:执行这一条命令
1 |
|
但其实如果完全按照这个Guide执行两个脚本,绝大多数电脑(尤其是python3版本在3.10)都会遇到一堆报错,而且十分零碎,很难解决。
究其最根本的原因,还是所需python版本的问题。包括安装环境所需的python版本过时、运行程序所需的python版本过时,等等。
source ./install.sh命令
打开install.sh:
分成三个步骤:
1 |
|
最关键的就是这个install.sh的过程,我们分开说。
安装virtualenv并开启虚拟环境
先了解一下virtualenv是干什么的:
全网最最最详细的virtualenv的使用命令详解_virtualenv命令
关键信息:
- 使用
virtualenv
可以创建一个隔离的Python环境 - 如果你的系统上安装了多个版本的Python,可以指定使用特定版本的Python创建虚拟环境
所以说install.sh中的第一部分:
1 |
|
作用就是:安装virtualenv并开启env虚拟环境
但是如果你此前运行过install.sh,就会发现此处env的激活命令,就是使用你安装的默认的python版本,也就是说如果你的系统的python3版本是python3.10,env就会创建python3.10的环境。
这样就肯定会产生报错,如果你在执行install.sh的过程中,遇到了诸如”Could not build wheels for Pillow, scikit-image, scipy“这种报错——问题就出于此处的版本设置。
- 注:如果你想知道为什么这个报错是由于版本不兼容,可以查看此处的解释. 当然,也可以直接继续下面的内容。
我们注意到:
”如果你的系统上安装了多个版本的Python,可以指定使用特定版本的Python创建虚拟环境。“
所以说如果你想要换python虚拟环境的版本,还要在系统上安装相应版本的Python,这显然非常繁琐,经过一番寻找,发现了完美的替代——Anaconda.
将Virtualenv换成Anaconda
如果激活了env环境,
先关闭env环境:
1 |
|
然后直接删除./env
目录即可:
1 |
|
接下来安装Anaconda
关于Anaconda的安装及配置,详见:
【Conda】超详细的linux-conda环境安装教程_linux安装conda-CSDN博客
篇幅有限,只介绍安装后的使用。
成功配置后,你可以看到(base)字样:
直接创建虚拟环境:
1 |
|
其中的python36是你设置的环境名称。
- 如果这一步无法进行,试试conda换源。==实测将~/.condarc改为以下内容就可以==:
1
2
3
4
5
6
7
8
9
10channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: true
ssl_verify: true
allow_conda_downgrades: true
然后执行命令开启虚拟环境:
1 |
|
看到在终端界面带有(python36)
的字样,执行命令:
1 |
|
说明环境已经激活完成。
安装requirement.txt上的程序
install.sh的第二部分是安装requirement.txt上的程序。
打开requirement.txt:
可以看到需要用pip安装的程序及其版本。
直接运行命令:
1 |
|
所需程序被一一安装。
注意:如果这时候安装进度条是彩色的,说明python3.6的环境并没有真正启动,需要重新启动conda环境。正常情况下,安装进度条应该是白色的如下图:
报错情况及处理
如果安装image-match时遇到报错:
1 |
|
直接安装pytest-runner即可:
1 |
|
同样地,如果安装scikit-image时遇到报错:
1 |
|
直接安装cython即可:
1 |
|
如果报错:
按照说明,安装numpy即可:
1 |
|
如果报错:
1 |
|
一般是安装numpy时缺少gcc导致的,直接安装即可:
1 |
|
遇到报错,修复完成后,重新运行pip install -r requirements.txt
,再根据情况进行修复……这样一遍遍运行,耐心等待,到最后肯定可以顺利完成。
附上安装完成截图:
解压并安装tlsh
1 |
|
这一步依旧是巨坑。运行过install.sh的同学肯定清楚,这里运行结果如图:
完全无法找到https://bitright.sfo2.digitaloceanspaces.com/tlsh.zip 里的文件。
依旧是过时的问题。
所以我们不能从他提供的网站里下载和安装tlsh.zip
求助搜索引擎:
原项目地址:trendmicro/tlsh (github.com)
根据原项目的安装教程,我们首先下载并解压文件:
1 |
|
然后再执行编译安装脚本:
1 |
|
- 注意:此处需要你预先安装cmake,如果执行不成功,大概率是你还没有安装cmake:
1
2
3sudo apt install cmake
sudo apt install gcc
sudo apt install g++
编译完成
然后安装py-tlsh包:
1 |
|
至此tlsh也成功安装。
运行network.py
在执行完source ./install.sh
后,接下来就是:
1 |
|
如果报错如:
直接安装:
1 |
|
同样地,后续缺少什么module就pip下载对应的包,再重新python network.py
即可。
如果遇到了这个报错:
1 |
|
可以看到,问题出在chromaprint
上。
我们直接重新安装一下chromaprint
即可:
1 |
|
安装所有所需模块后,再执行python network.py
正常情况下即可成功启动。
- 注:关于报错“TypeError: init() got an unexpected keyword argument ‘winmode’”的详细解释,可以看这里。当然不看也不影响后续的过程
在虚拟机本机的浏览器中输入http://127.0.0.1:8000/ 并进入,或者直接在终端中打开链接:
可以看到页面正常显示。此时你可以执行后续上传文件等操作,功能均正常。
可能速度会很慢,耐心等待。如果太慢或者无响应,就在终端Ctrl+C终止程序,再重新python network.py
试试。
如果速度实在慢到无法忍受的话,我推荐你使用WSL2的ubuntu系统,而不是VMware workstation. 换成WSL的话,速度会变快很多倍,但是需要在WSL上面再配置一遍环境,不过WSL真的很好用……
另外,实验所需上传的文件就在~/.bitright/media目录里,尽情使用它们吧
至此,所有因为实验材料过时引发的不必要的问题已经解决。你可以继续进行实验。后续的实验过程很简单(使用这个网站的功能即可),也是课程要求的验证性实验的主要内容,因此不做赘述。
对install.sh和run.sh的更改
由于我们进行了较大幅度的改动,过程中很多install.sh文件中的指令并未用到,以及run.sh中的指令也已经对我们不适用,所以为了后续启动环境的便利,还需要对这两个.sh文件进行更改。
注:以下操作均在~/.bitright目录下进行
修改install.sh
1 |
|
将其修改为:
1 |
|
修改run.sh
1 |
|
将其修改为:
1 |
|
这样,后续运行程序只需要执行run.sh:
1 |
|
就可以正常开启网站:
- 注:在安装过程中如果仍有报错,执行install.sh,然后根据报错再作后续修改即可:
1
source ./install.sh
总结
写到最后还是想说,这些因为实验背景材料不充足、过时导致的不必要的问题,似乎不应该成为这项实验的主要内容。希望未来做该实验的同学们能够收到一份更加合理的实验说明、准备材料;希望学校未来的课程设计能够更精进、更合理、更人性化,向真正的计算机一流高校看齐吧。