Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pgm-attack — PGM-인덱스에 대한 포이즈닝 공격 연구 코드로, 학습된 인덱스 성능을 저하시키기 위해 적대적 데이터를 구성하는 방법을 시연합니다. | Kitploit
도구/GitHubGitHub/atsukisato/pgm-attack
Machine LearningPapers & ResearchAI SecurityAdversarial Attack
GitHubatsukisato/pgm-attack

pgm-attack

PGM-인덱스에 대한 포이즈닝 공격 연구 코드로, 학습된 인덱스 성능을 저하시키기 위해 적대적 데이터를 구성하는 방법을 시연합니다.

저장소 보기
1471개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PGM-attack

개요

본 논문 Poisoning Attacks on the PGM-index의 공식 코드입니다.

빠른 시작

1. 클론 및 서브모듈

root@kitploit:~
git clone [REPOSITORY LINK]
cd pgm-index-poisoning
git submodule update --init --recursive

2. 빌드

root@kitploit:~
./scripts/build.sh

CMake 필요(종속성 참조). 출력물은 build/ 아래에 생성됩니다(기본적으로 바이너리는 build/bin).

3. 데이터 다운로드, 전처리 및 합성 데이터

root@kitploit:~
./scripts/download_alex_dataset.sh       # ALEX
./scripts/download_mgbench.sh            # mgbench
./scripts/download_sosd_datasets.sh      # SOSD
./scripts/preprocess_alex_dataset.sh     # ALEX
./scripts/preprocess_mgbench.sh          # mgbench
./scripts/generate_synthetic_dataset.sh  # synthetic

4. 실험

각 실행은 ./scripts/run_experiment.sh <config.json>을 통해 JSON 설정 파일 하나를 사용합니다. 예시:

4.1 최대 오류 최대화 (예: n=16, 연속 방식)

root@kitploit:~
./scripts/run_experiment.sh "configs/experiments/poison_attack/maximize_maxerror_consec/baseline_n16.json"

4.2 합법적 키 커버리지 최소화 (예: epsilon=2, 연속 방식)

root@kitploit:~
./scripts/run_experiment.sh "configs/experiments/poison_attack/minimize_segment_length/baseline_epsilon2.json"

4.3 m_opt 최대화 (PGM-index 예시)

root@kitploit:~
./scripts/run_experiment.sh "configs/experiments/poison_attack/inject_poisons_to_minimize_segment_length_swing_lambda_with_theta/baseline.json"

4.4 m_opt의 상한 (인스턴스 의존 예시)

root@kitploit:~
./scripts/run_experiment.sh "configs/experiments/upper_bound/fix_w_per_block/baseline.json"

4.5 모든 실험 실행 (배치)

scripts/run_all_experiment.sh에 정의된 전체 실험 설정 목록을 실행합니다(해당 파일을 편집하여 목록을 변경할 수 있음).

root@kitploit:~
./scripts/run_all_experiment.sh

5. 플롯 및 테이블

저장소 루트에서:

root@kitploit:~
./scripts/plot.sh
./scripts/print_table.sh

그림과 로그는 fig/ 아래에 기록됩니다. 먼저 Python 종속성을 설치하세요: pip install -r requirements.txt.

종속성

  • C++ 툴체인: g++, make, CMake (빌드 스크립트는 CMake로 구성하고 cmake --build로 빌드하며, 일반적으로 Make를 호출합니다).
  • Python 3 및 requirements.txt의 패키지 (플로팅/테이블 스크립트).
  • jq — ./scripts/run_experiment.sh에서 실험 JSON을 파싱하는 데 필요합니다.

프로젝트 구조

Docker

이미지를 한 번 빌드합니다:

root@kitploit:~
./docker_build.sh
  • docker_run.sh — 대화형 컨테이너: 저장소를 /workspace에 마운트하고, 8개 CPU(0–7)를 할당하며, bash 셸로 진입하여 수동으로 빌드 및 명령을 실행할 수 있습니다.
  • docker_run_all.sh — 분리 실행: 컨테이너 내부에서 ./scripts/run_all_experiment.sh를 실행하고(8개 CPU) stdout을 results/run_all.log에 기록합니다.
  • docker_run_all_single_cpu.sh — docker_run_all.sh와 동일하지만 단일 CPU와 OMP_NUM_THREADS=1을 사용하여 단일 스레드로 실행합니다.

세 스크립트 모두 pgm_poisoning:latest 이미지와 스크립트에 정의된 동일한 권한/볼륨 설정을 사용합니다.

도구 다운로드
경로역할
src/C++ 소스 (공격, PGM 벤치마크, 도구, 상한).
configs/experiments/실험 JSON 설정 (poison_attack/, upper_bound/ 등의 경로).
scripts/빌드, 데이터, run_experiment.sh, run_all_experiment.sh, plot.sh, print_table.sh.
third_party/Git 서브모듈 (PGM-index, FITing-Tree, RadixSpline).
data/, results/, fig/데이터, 실행 출력물, 생성된 그림/테이블 로그.
plot/Python 플로팅 및 테이블 출력 스크립트.