ncat指令
1
| ncat -klp 10000 -c 'python3 task.py'
|
k为启用多次连接,l为监听,p为指定端口
注:这里使用ncat而不用nc是因为nc可能会因为安全问题不能适用
docker
拉取父环境
利用Dockerfile制作镜像
1 2 3 4 5 6 7
| FROM sagemath/sagemath RUN sudo apt-get update ARG DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Shanghai RUN sudo apt-get install tzdata -y RUN sudo apt-get install socat -y RUN sage -pip install pycryptodome
|
在Dockerfile目录下构建镜像
1
| docker build -t image_name .
|
直接使用我制作好的
1
| docker pull registry.cn-hangzhou.aliyuncs.com/lorlike/crypto:latest
|
制作题目容器
Dockerfile
1 2 3 4 5 6 7 8
| FROM registry.cn-hangzhou.aliyuncs.com/lorlike/crypto:latest COPY task /home/sage/task COPY flag /flag
EXPOSE 19132
CMD ["socat", "TCP4-LISTEN:19132,fork", "EXEC:\"python3 -u /home/sage/task/task.py\""]
|
目录树
1 2 3 4 5 6 7 8
| problem/ ├── Dockerfile ├── flag ├── ... └── task ├── task.py ├── ... └── task.sage
|
1 2
| docker build -t subimage_name . docker run -d --name problem_name -p 19132:19132 subimage_name
|