nc题目远程环境搭建

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\""]
# CMD ["socat", "TCP4-LISTEN:19132,fork", "EXEC:\"sudo sage /home/sage/task/task.sage\""]

目录树

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