이종윤 프로필 사진

이종윤

White Hat Hacker
정보보안전문가
🇰🇷 대한민국
👨‍💻 25세 (2000년생)

보안 전문성과 창의적 사고로 디지털 세상을 지킵니다

정보보안 분야에서 4년간의 실무 경험과 지속적인 학습을 통해 화이트해킹, 웹 보안, 시스템 보안 전문성을 쌓아왔습니다. CTF 운영과 실무 프로젝트를 통해 실제 환경에서의 문제 해결 능력을 검증받았습니다.

학력

명지대학교
정보통신공학과 4학년 2학기 휴학
2020 – 현재
동패고등학교
졸업

자격증

SQLD
SQL 개발자
2024-06-21
정보처리기능사
기초 개발 자격
2021-10

보안 교육

화이트햇스쿨 3기
KITRI
팀 프로젝트
조 이름: 가지마 웹바오
주제: Semantic Gap 공격에 대한 분류 체계 구축
웹 보안 취약점 분류

기술

언어
Python JS/TS Java SQL
웹/프레임워크
React Django/DRF Spring
DevOps/인프라
Nginx Docker Docker Compose GitHub Actions GCP Ubuntu
DB/캐시
MySQL/MariaDB Redis SQLite

보안 경험

육군 정보보호병(1년 6개월)
정보사 보안장비 운용 및 정책 관리
2022.04 – 2023.10
보안장비 운용 / UTM 정책 관리 / 웹 취약점 보고 / 보안장비 관제

다룰 수 있는 보안장비

보안장비 목록
회사/군 보안장비
GenianNAC
AhnlabTrusGuard(UTM)
SGARedCastle
국군TACS(전군보안진단체계)
IGLOOSPiDERTM(SIEM)
SoosanSMeWalker SWG, DLP
SECUISECUI MF2(UTM)
SaferzoneSaferzone
Waterwallsystemwaterwall
파수(FASOO)FASOO DRM
HAURIVIROBOT MANAGER 1.0

주요 성과

🔐 취약점 보고
정보사 웹사이트 취약점 보고
2022.12 · 2023.02
정보사 웹사이트 취약점 보고 PoC/스크린샷

XSS, CSRF, SQL Injection 등 다수 취약점 식별 및 신속 보고로 보안 강화.

특히 나모 웹 에디터에서 확장자 검증 미흡으로 인한 파일 업로드 우회파일명 기반 Stored XSS가 가능했고, form action 필터링 미흡으로 CSRF가 발생 가능한 상태였습니다.

File Upload 우회 Stored XSS CSRF SQLi
  • 파일 업로드: 확장자/Content-Type 검증 미흡 → 위험 파일 업로드 가능
  • Stored XSS: 파일명 스크립트 주입 취약
  • CSRF: 중요 요청에 토큰 부재 및 검증 미흡
  • SQLi: 입력 검증·바인딩 미흡 의심 구간 확인
  • 조치: 재현 절차/가이드 제출, 화이트리스트·콘텐츠타입 검사 강화, CSRF 토큰 도입 권고
  • 결과: 관련 페이지 보완 및 모니터링 강화
🏆 우수상(소장급)
정보사령부 보안경연대회
정보사령부 보안경연대회 우수상 상장

내부망 보안 강화 아이디어를 도구 + 정책으로 실현하여 우수상 수상. (DevTools 차단 자동화, NAC 정책 적용)

Python3 BAT 스크립트 Windows Registry NAC 정책 내부망 적용
  • 개발자 도구 삭제 프로그램: Python3 + BAT로 주요 브라우저 DevTools를 레지스트리 값 추가 방식으로 제거·차단.
  • NAC 정책 개발: DevTools 프로세스 실행·설치 여부차단 레지스트리 키 존재 점검·차단을 정책화.
  • 효과: DevTools 사용을 체계적으로 제한, 표준화된 배포·운영으로 내부망 보안 인프라 강화.
🥇개인전 1위
SPACE WAR URANUS — WEB
주최/주관: HSPACE · 참가자 116명

HSPACE 주최 CTF에서 참가자 116명 중 Web 부문 1위 달성.

문제 의도 파악과 풀이 전략 수립에 집중하고, 핵심 원리를 정리한 write-up을 작성·공유했습니다.

Tistory SPACE WAR URANUS — WEB Write-up ialleejy.tistory.com/54
CTF WEB 풀이 전략 Write-up
  • 문제 의도/요구사항 분석
  • 공격 표면·풀이 전략 설계
  • 핵심 취약점/원리 설명 중심으로 정리
  • 완성된 write-up 공개 및 공유
🛠️ 대회 운영·출제
MSG CTF 2025 — 공동 주최·운영·문제 출제

10:00–22:00 진행, 총 26문제 출제, 3개 대학 동아리 65명 참가.

사전 부하 테스트로 서버 안정성 검증, 대회 중 디스코드 봇으로 공지/이슈 즉시 대응해 무중단 운영.

보안 실력이 부족해 대회 참가를 주저하는 부원들을 위해 신입 부원도 부담 없이 참여할 수 있는 입문자 친화 대회로 기획했습니다. 정보보안 인재 양성과 보안 역량 강화, 그리고 대학 간 교류·협력 증진을 목표로 했습니다.

- 25년 11월 8일에 해당 대회를 리뉴얼하고 HSPACE 후원을 받아 오프라인 대회로 개최할 예정입니다.

26문제 참가 65명 3개 동아리 부하 테스트 통과 디스코드 봇 공지
공동 주최
명지대 MJSEC 세종대 SSG 건국대 seKUrity
예정
명지대 MJSEC 중앙대 Securious 건국대 seKUrity 순천향대 Security First 상명대 CodeCure

활동

학부 연구 — DBREACH 압축 사이드채널

현재

secret–guess 중복이 생기면 압축률이 증가하고 on-disk 크기(Δsize)가 감소합니다.길이 신호만 반복 관찰해 비밀을 단계적으로 추론하는 DBREACH 공격을 MariaDB(InnoDB)에서 재현 가능한 Docker 환경과 함께 구현·평가했습니다.

Docker 환경 재현 MariaDB 버전 고정 K-of-N attack 노이즈 정규화 스코어링 싱글톤 재검증

Compression Side Channel이란?

암호화 전에 이뤄지는 압축 단계가 데이터 중복도에 따라 출력 길이(크기)를 바꾸는 성질을 이용해, 길이만 관찰해도 비밀 일부를 추론하는 부채널입니다.

  • 핵심: guess가 secret과 겹칠수록 압축률 증가 → 네트워크 패킷 길이디스크 파일/페이지 크기감소.
  • 관측 지점: InnoDB/WiredTiger on-disk 크기·WAL 바이트 등.
  • 위협 모델: chosen-plaintext/insert — 공격자가 guess를 시스템에 주입/반영하게 만들고 길이 변화를 반복 관찰.
  • 왜 위험한가: 애플리케이션 로그 없이도 길이만으로 새며, 암호화만으론 방어가 어렵습니다.
  • 완화: 비밀과 attacker-controlled 입력을 같이 압축 금지, 민감 테이블 페이지 압축 비활성화, 고정 길이/패딩, flush 스케줄 제어, 변화 탐지 기반 모니터링(Δsize threshold) 등.

왜 중요한가 (보안 관점)

  • 암호화만으론 부족: 데이터가 암호화돼 있어도 압축 후 길이페이지/파일 크기 메타데이터측정 가능할 수 있음.
  • 낮은 가시성: 파일 크기 변화를 악용하므로 애플리케이션 로그만으로는 탐지 난해.
  • 현실성: 웹의 CRIME/BREACH가 네트워크 길이를 본다면, DBREACH는 저장 매체 길이를 본다는 점이 다름.

내 역할

  • 공격 루프 자동화: 삽입→동기화→크기 샘플링→정규화/스코어링→후보 업데이트.
  • 스코어러: Δsize에 Z-정규화/중앙값 적용해 디스크/캐시 노이즈 완화.
  • K-of-N attack: 질의 수를 줄이는 구조 설계, 싱글톤 재검증으로 오탐 관리.
  • 실험/배포: 논문 계열 MariaDB 버전 고정 + Docker 격리, InnoDB page compression(zlib)·file-per-table 구성.
  • 문서화: GitHub(compression-side) 및 노션에 실험 절차/결과 정리.

설계 핵심(Tech)

  • 신호(Δsize): guess 삽입 전/후 .ibd 크기(또는 페이지 크기) 비교.
  • 정규화: 라운드별 분포를 기준화(Z, median)하여 환경 노이즈(buffer flush, 배경 작업) 억제.
  • 선정: Δsize가 큰 상위 k개만 다음 라운드(K-of-N)로 승급, 싱글톤 재검증으로 안정화.

공격 흐름

  1. Baseline 구성: filler 데이터로 기준 상태 확립.
  2. Secret 포함 테이블 준비.
  3. Guess 삽입(순차/그룹) 후 Δsize 측정.
  4. 스코어링·정규화 → 상위 후보 선별.
  5. 수렴: K-of-N 반복·싱글톤 재검증.

스코어링(간단식)

MariaDB

추가 바이트를 점진 삽입하며 최초로 크기 감소가 관측된 지점을 점수화:
score = 1 / bytesShrunkForCurrentGuess
적은 바이트로 감소 유도될수록 점수↑ → 중복도↑.

WiredTiger(참고 실험)

score = 1 - (b_yes - b) / max(b_yes - b_no, 1)
b_no: 무효 기준, b_yes: 이상, b: 현재 측정값.
victim 테이블 생성 및 실험 환경 구성
guess·secret 중복도에 따른 압축 크기 신호 추출 루프
k-of-n 공격으로 후보 수렴 예시

결과

  • 재현 성공: 버전 고정 MariaDB + Docker로 안정적 Δsize 신호 확보.
  • 효율화 구조 검증: K-of-N + 정규화 스코어러로 탐색 효율 향상.
  • 공유 자산: 누구나 시험 가능한 공개 코드·환경 제공.

한계 · 다음

  • 노이즈 원인: 파일시스템 캐시/백그라운드 압축 스케줄러 변동.
  • 가정: guess 삽입 영향권 확보(낮은 권한이라도 쓰기/유도 필요).
  • 다음: 페이지 패딩·고정 크기 쓰기, Encrypt-then-Compress 구조, 변화 탐지 기반 모니터링으로 방어 실험 예정.

대회

CTF 및 각종 보안 경진대회 (최신순)
CCE 2025 — 일반부문 참가
White Hat School CTF 2025 참가
HSPACE — SPACE WAR URANUS [WEB] 참가
Hackathon Sejong 2025 참가
LG U+ 2024 SECURITY HACKATHON 참가
FIESTA 2024 참가
CCE 2024 — 일반부문 참가
CCE 2023 — 공공부문 참가
CCE 2022 — 공공부문 참가

보안 동아리 활동

MJSEC 2.5기 멘토링
MJSEC CTF 2025
MJSEC 2기 멘토링
MJSEC BOJ CONTEST 2025
MJSEC 1.5기 멘토링
MJSEC 1기 멘토링
MJSEC BOJ CONTEST 2024
MJSEC CTF 2024
MJSEC 창단 · 초기 회장
seKUrity

주요 프로젝트

Reagan — 악성 URL 탐지 (3단계 AI)
Reagan 대표 이미지

Reagan은 URL Detection AI, Packet Analysis AI, Break_Captcha_AI로 구성된 3단계 파이프라인을 통해 악성 URL을 자동 식별하는 크롬 익스텐션 프로그램

역할: PM, DevOps · reCAPTCHA 우회 AI Reagan reCAPTCHA AI 상세
MSG CTF 제작
현재
MSG CTF 대표 이미지

CTFd를 사용하지 않고 웹, 디스코드봇을 자체 개발한 MSG CTF 대회 플랫폼.

역할: PM, DevOps, Firstboold bot 개발 Front Back Discord Bot 상세
MJSEC Homepage (LMS Front)
현재
MJSEC 홈페이지 대표 이미지 방문하기 →
배포중 mjsec.kr

React + Vite 기반 프런트. Ubuntu 서버 포트포워딩 + Nginx 리버스 프록시, GitHub Actions로 자동 빌드·배포.

역할: PM, DevOps (CI/CD) GitHub 상세
MJSEC BOJ CONTEST
MJSEC BOJ CONTEST 대표 이미지

Solved.ac API를 활용한 백준 코딩대회 플랫폼. GCP E2 + Docker/Compose, Nginx + Gunicorn, Django 기반.

역할: 개인 개발 GitHub 상세
DELDEVTOOL
DELDEVTOOL 대표 이미지

Windows에서 브라우저 개발자도구(DevTools)를 레지스트리로 차단/해제하는 로컬 유틸리티. PyInstaller로 단일 exe 배포.

역할: 개인 개발 GitHub 상세

프로젝트 상세 내용

WEAVE — Semantic Gap 분류/지식 사이트 — 상세

Semantic Gap 기반 Root Cause 분류 체계 + 절차별 페이로드 위키. 프런트=React, 운영=GCP N2·Nginx, CI/CD=GitHub Actions+Docker Compose.

Semantic Gap은 동일한 데이터/요청이 컴포넌트별로 다르게 해석되어 생기는 의미적 불일치를 악용하는 취약점 군입니다. 기존 CWE/CAPEC/OWASP결과·기법 중심 한계를 보완하기 위해, Root Cause 중심 분류공격 절차별 페이로드를 한 플랫폼에서 정리해 퍼플팀(방어·공격) 활용성을 높혔습니다.

분석 기간: 5/14–7/12 분석 문서 117개 소분류 44개 구축 트리/태그 내비게이션

서버/인프라
GCP N2NginxDockerDocker ComposeGitHub Actions
프레임워크
React
언어
TS/JSCSSHTML
기타
Reverse ProxyAnalytics

왜 Semantic Gap인가

  • 근본 원인 공백: 기존 체계는 기법/결과 위주라 방어 인사이트 도출이 어렵다.
  • 명칭/서술 난립: 동일 현상을 서로 다른 용어로 기술 → 일관된 대응과 사례 비교가 힘듦.
  • 목표: Root Cause 기준의 대·중·소 분류와 공격 절차별 페이로드 정리를 통해 모의해킹·스캐너·방어정책 수립에 바로 쓰이는 지식 자산 제공.

Root Cause 분류(5대 축)

Syntax Parsing Gap Security Policy Gap Perceptual Context Gap Metadata Interpretation Gap Data Representation Model Gap
  • Syntax Parsing Gap: 구성요소별 문법/파싱 규칙 차이 → HRS, HPP 등.
  • Security Policy Gap: WAF/필터 규칙과 실제 처리 적용 불일치 → JWT alg 변조 등.
  • Context Boundary Gap: 동일 데이터가 다른 실행/보안 경계로 분류 → 클릭재킹, 포커스 오용.
  • Data Representation Model Gap: 인코딩/정규화/유사문자 처리 불일치 → 필터 우회·스푸핑.
  • Metadata Interpretation Gap: 헤더/쿠키/토큰 우선순위/검증 상이 → 세션/인증 우회.

구축 방법(현황 기반)

  • 자료 수집·분석: 주간 스크래핑 + Jira 커스텀 필드로 추적, 실제 사례 수동 검증.
  • 매핑 프로세스: 대분류→중분류→소분류 MECE 매핑 및 재검토.
  • LLM 보조: 프롬프트 엔지니어링으로 분류 후보 생성·정제(검수 포함).
  • 협업·리듬: 주 6회 정기 회의(토 오프라인, 평일 온라인)·파이프라인 기반 진행.

WEAVE 결과(플랫폼 기능)

  • 홈/대시보드: 전체 분류 현황을 한 눈에 확인, 항목 클릭으로 상세 이동.
  • 트리 네비게이션: 대→중→소 계층 구조로 계통도 탐색.
  • 태그 검색: 테크닉/페이로드 태그로 관련 기법을 교차 조회.
  • 절차 서술: Recon → Injection → Obfuscation → Validation → Exploitation → Exfiltration 단계로 공격 기법 정리.

내 역할

  • 웹/인프라: React 프런트, GCP N2·Nginx 운영, GitHub Actions + Docker Compose CI/CD.
  • 콘텐츠 온보딩: 사례/소분류 문서 다수의 정형 템플릿화, 태그/메타데이터 일관화.
  • 품질화: 용어/분류 기준 정리, 절차·페이로드 표준 서술 가이드 반영.
  • 운영 안정성: 리포지토리 백업·복원 경로 마련, 접근/활용 모니터링 기반 운영.

Reagan — 3단계 AI 기반 악성 URL 탐지 — 상세

Chrome 확장 → 백엔드(DRF) → reCAPTCHA v2 자동 처리 → 콘텐츠/트래픽 분석 파이프라인. 내 역할: DevOps · BreakCAPTCHA AI.

만들게 된 계기

검색 노출을 악용하는 SEO Poisoning과, 공개된 취약 도메인 사례(예: 360xss)를 조사하면서 “봇과 실제 사용자를 구분해 정상/악성 경로를 갈라치기”하는 공격 트렌드에 대응하기 위해 브라우저 확장·CAPTCHA 자동처리·패킷 분석을 결합한 실시간 방어 체계를 설계했습니다.



서버/인프라
GCP E2NginxDockerDocker ComposeHTTPS
프레임워크
ReactDjango REST FrameworkChrome Extension
언어
PythonJS/HTML/CSS
기타
YOLOv8SeleniumGitHub Actions


전체 파이프라인(3단계)

  1. URL 특징 기반 1차 탐지 — 경량 LightGBM으로 URL/콘텐츠 특징을 실시간 분류(확장 프로그램에서 경고 표시).
  2. CAPTCHA 처리Selenium + fine-tuned YOLOv8로 reCAPTCHA v2 퍼즐 자동 해결(보드 변화 감지·재시도·자연스러운 마우스 이동 포함).
  3. 패킷·TLS/HTML 기반 2차 판별 — 백엔드가 네트워크·도메인·TLS·HTML 메타 특징을 추출해 RandomForest로 악성/피싱 여부를 JSON으로 응답.

핵심 기능

  • 실시간 사용자 보호: Chrome 확장이 요청을 가로채 분석 결과를 바로 팝업/배지로 안내.
  • 모듈형 분석: site → captcha → packet 태스크를 분리해 확장/교체 용이.
  • 입력값 변조 감지: 브라우저 로그 수집으로 전송 파라미터 변조 여부 확인.
  • 화이트리스트 캐시: 안전 도메인 반복 분석 최소화로 속도 확보.

내 역할

  • DevOps: GitHub Actions로 CI/CD 구성, 이미지는 Docker Hub(ialleejy/reagan-backend)에 빌드·푸시, 서버는 docker-compose로 배포.
  • 보안·인프라: Nginx 리버스 프록시와 HTTPS(443) 적용, GCP 인스턴스 모니터링/알림, 방화벽(80·8000·443만 허용).
  • BreakCAPTCHA AI: YOLOv8 파인튜닝, 보드 diff 감지, human-like 마우스 이동, 재시도 로직 구현.

설계 메모

  • 프런트/AI 고려: 실시간성 위해 경량 모델·특징 최소화, MV3 제약 해결 위해 메시지 기반 통신.
  • 백엔드: DRF로 AnalysisRequest 생성 시 세 가지 태스크 자동 파생·상태관리, CORS/BasicAuth, Gunicorn.
  • 데이터: reCAPTCHA 데이터셋(예: Mandourah) 활용해 YOLOv8 파인튜닝, 패킷 AI는 TLS/도메인/HTML/네트워크 로그로 피처 구성.

MSG CTF 제작 — 상세

현재

GCP N2(Ubuntu) · Nginx · Docker Compose · GitHub Actions. Front=React+Vite, Back=Spring Boot, Discord Bot=Python.

CTFd를 사용하지 않고 프론트/백엔드/디스코드봇을 자체 개발MSG CTF 플랫폼입니다. 운영 자동화(공지/힌트/FirstBlood), 실시간 스코어보드, 문제·팀 관리 기능을 포함합니다. 자세한 설계·코드는 Back 저장소에 정리되어 있습니다.
저는 PM을 맡았고 Admin API, Sys Arch 담당했으며, FirstBlood 디스코드봇을 개발하였습니다.


서버/인프라
GCP N2 (Ubuntu) Ubuntu Nginx Docker Docker Compose GitHub Actions
프레임워크
ReactViteSpring Boot
언어
JS/TSJavaPython (Bot)
기타
MySQLRedis

설계 요약

  • 3-티어: React+Vite(프런트) ↔ Spring Boot APIMySQL(데이터) + Redis(세션/캐시).
  • Nginx 리버스 프록시 + Docker Compose 멀티 서비스로 배포/롤백 간단화.
  • GitHub Actions로 CI/CD 자동화(이미지 빌드→DOCKER HUB 푸시→원격 Compose 업데이트).
  • 운영 자동화: Discord Bot 연동(공지/힌트/FirstBlood 알림, 운영 명령어).
  • 안정성: 사전 부하 테스트, 헬스체크/로그 수집으로 중단 없는 대회 운영.

핵심 모듈

  • Web: 문제 리스트/상세, 제출 폼, 실시간 스코어보드, 팀/개인 지원.
  • Back(API): 플래그 검증, 제출 기록/랭킹 집계, 문제·팀·유저 관리자 CRUD.
  • Discord Bot: 공지/힌트 브로드캐스트, 운영 명령어, FirstBlood 이벤트 알림.

MJSEC Homepage (LMS Front) — 상세

현재

React + Vite. Ubuntu 서버 포트포워딩 · Nginx 리버스 프록시 · GitHub Actions 자동 배포.

MJSEC HOMEPAGE를 제작했고, 현재 LMS 사이트도 연계 개발 중입니다. 프런트는 React + Vite, 배포는 Nginx 리버스 프록시GitHub Actions 기반 CI/CD로 자동화했습니다.
저는 PM을 맡았고 DevOps로서 CI/CD 파이프라인을 구축하여 배포 자동화를 진행하였습니다.


서버/인프라
Ubuntu Nginx 포트포워딩 Docker Docker Compose GitHub Actions
프레임워크
React Vite
언어
JS/TS CSS HTML
기타
Reverse Proxy

CI 파이프라인(요지)

  • 트리거: pull_request, feature/** 브랜치 push
  • Build & Run: docker compose -f docker-compose.ci.yml up -d로 컨테이너 기동(로컬 8080 → 컨테이너 80)
  • Smoke Test: 최대 60초 재시도 루프로 curl --head http://localhost:8080 HTTP 200 확인
  • 정리: 항상 docker compose ... down -v로 종료/볼륨 정리(깨끗한 프리뷰 보장)

CD 파이프라인(요지)

  • 트리거: main 브랜치 push
  • 빌드/푸시: buildx로 프런트 이미지를 빌드해 GHCR(ghcr.io/owner/repo)에 latest/sha 태그로 푸시
  • 원격 준비: SSH로 서버 접속 → 디렉터리·.env 구성 → GHCR 로그인
  • HTTP 기동: 템플릿 업로드 → docker composenginx/app 우선 기동 → HTTP 헬스체크
  • SSL 발급: certbot webroot로 인증서 발급/갱신 → TLS 헬퍼 파일 확보
  • HTTPS 전환: HTTPS 템플릿 적용·nginx -s reload → 최신 이미지 pull 후 전체 스택 무중단 재기동
  • 검증/정리: HTTPS 헬스체크·오래된 이미지 prune·성공/실패 알림

MJSEC BOJ CONTEST — 상세

Solved.ac API 기반 백준 대회 플랫폼. 서버=GCP E2, Docker/Compose, Nginx + Gunicorn, Django.

MJSEC 백준 프로그래밍 대회를 위한 웹사이트입니다. 참가자 제출을 solved.ac API로 검증하고 결과를 실시간 리더보드에 반영하도록 설계했습니다. 페이지 새로고침 없이 순위가 갱신되며, 운영 측면에서는 단순하고 신뢰성 높은 점수 집계가 핵심입니다.


서버/인프라
Ubuntu (GCP E2) Nginx Gunicorn Docker Compose Docker
프레임워크
Django
언어
PythonHTML
기타
SQLitesolved.ac API
링크

주요 기능

  • 다이나믹 스코어링: 최신 제출 결과를 즉시 반영하여 실시간 피드백 제공
  • AJAX 리더보드: fetch 기반 폴링/갱신으로 새로고침 없이 순위 업데이트
  • 문제 제출·검증: requestssolved.ac 조회, 정답/오답 기록 및 점수 부여
  • 사용자·팀 관리(관리자): 참가자, 팀, 문제 포인트, 대회 시간 등 운영 도구 제공

검증 파이프라인 원리

  1. 관리 명령 호출: python manage.py update_solved_problems --user_id <handle> --problem_id <pid>
  2. 대상 조회: Participant·ContestProblem 매칭 (없으면 종료)
  3. 중복 방지: 이미 정답 기록이 있으면 종료(중복 업데이트 차단)
  4. solved.ac 질의: GET https://solved.ac/api/v3/search/problemquery=solved_by:{handle} id:{pid}로 해당 참가자의 해당 문제 해결 여부 확인
  5. DB 반영:
    • 정답: 기존 제출을 모두 삭제 후 단일 정답 제출만 생성(점수=problem.points)
    • 오답: 오답 제출을 누적해 패널티/통계 용도로 활용

DELDEVTOOL — 상세

Windows 로컬 유틸. 브라우저 DevTools 차단/해제(레지스트리·설정) 및 PyInstaller 기반 단일 실행파일 배포.

군 시절 제작한 Chrome / Edge / Internet Explorer / Firefox 개발자 도구 차단 유틸리티입니다. disable.py는 정책 레지스트리·사용자 설정을 추가해 DevTools를 비활성화하고, enable.py는 해당 값을 삭제해 활성화합니다. PyInstaller로 단일 EXE 배포(관리자 권한 필요).
재부팅을 하면 레지스트리 정책이 적용됩니다.

레지스트리 정책 관리자 권한

서버/인프라
로컬(서버 없음)
프레임워크
— (Python 스크립트)
언어
Python
기타
Windows RegistryPyInstaller
링크

브라우저별 정책 키(요약)

브라우저 경로/설정
Chrome HKLM\SOFTWARE\Policies\Google\Chrome DeveloperToolsDisabled=1
Edge HKLM\SOFTWARE\Policies\Microsoft\Edge DeveloperToolsAvailability=2
2=완전 비활성화
IE ...\IEDevTools, ...\Restrictions (HKLM/HKCU, 32/64비트)
WOW6432Node 포함
Disabled=1
Firefox %APPDATA%\Mozilla\Firefox\Profiles\<profile>\prefs.js user_pref("devtools.policy.disabled", true)
조직 배포: distribution\policies.json

활용 방안(내부망 NAC)

  • 자세 규정: DevTools 차단 값이 존재해야 정상 단말로 간주.
  • 감사/점검 (예시)
    • reg query "HKLM\SOFTWARE\Policies\Google\Chrome" /v DeveloperToolsDisabled
    • reg query "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v DeveloperToolsAvailability
    • reg query "HKLM\SOFTWARE\Policies\Microsoft\Internet Explorer\IEDevTools" /v Disabled
    • Firefox: prefs.js 문자열 또는 policies.json 정책 파일 검사
  • 자동 시정: 미준수 단말은 포털에서 disable.exe(관리자) 실행 유도 → 통과 시 정상 VLAN 복귀.
  • 운영: 브라우저/OS 업데이트 시 정책 지속성 모니터링, Firefox는 policies.json 전환 권장.
  • 배포: pyinstaller --onefile --noconsole disable.py (관리자 권한 필요)
  • 원복: enable.py가 추가 키/설정 삭제