본문 바로가기

꿀팁!

윈도우 환경에서 리눅스 GUI환경이 필요할때

CTF문제를 풀던 중 swift로 이루어진 GUI 리눅스 바이너리파일을 실행시키기 위해 GUI가 호환되는 환경이 필요했다.

하지만 내 서버는 CUI환경이기에 도커를 열어 GUI환경을 구축한 뒤 VNC를 통해 윈도우에서 웹으로 접속가능하게 했다.

 

docker-compose.yml

version: '3.8'

services:
  swift-password-manager:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: swift-gui-app
    ports:
      - "6080:6901" 
    volumes:
      - ./bin:/app/bin:rw
      - ./lib:/app/lib:rw
    environment:
      - VNC_PW=password123
      - VNC_RESOLUTION=1280x720
    stdin_open: true
    tty: true
    shm_size: 2gb

 

Dockerfile

FROM accetto/ubuntu-vnc-xfce-g3:latest

USER 0

RUN apt-get update && apt-get install -y wget curl && rm -rf /var/lib/apt/lists/*

RUN cd /tmp && \
    curl -fsSL https://download.swift.org/swift-5.8.1-release/ubuntu2204/swift-5.8.1-RELEASE/swift-5.8.1-RELEASE-ubuntu22.04.tar.gz | tar -xz -C /opt/

WORKDIR /app
RUN mkdir -p /app/bin /app/lib

COPY bin/ /app/bin/
COPY lib/ /app/lib/

RUN chmod +x /app/bin/* 2>/dev/null || true

ENV LD_LIBRARY_PATH=/app/lib:/opt/swift-5.8.1-RELEASE-ubuntu22.04/usr/lib/swift/linux:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
ENV PATH=/opt/swift-5.8.1-RELEASE-ubuntu22.04/usr/bin:$PATH

ENV VNC_PW=password123
ENV VNC_RESOLUTION=1280x720

EXPOSE 6901

USER 1001

 

다음과같이 세팅

여기서 /bin과 /lib의 경우 문제 파일이 이 두개로 이루어져있기에 문제에따라서나 환경에 따라 맞춰서 변경하면 된다.

 

이후 docker-compose up -d 을 통해 실행하고, 6080 포트포워딩을 해주면 다음과같이 웹에서 접속이 가능해진다.