오픈소스 공개는 누구나 동작을 검토하고 직접 빌드할 수 있게 해 주지만, 공개된 소스만으로 임의의 EXE가 반드시 같은 소스에서 만들어졌음을 자동 증명하지는 않습니다. 가장 강한 검증 방법은 이 저장소를 직접 빌드해 사용하는 것입니다. 제공 EXE를 사용할 때는 release/SHA256SUMS.txt와 해시를 비교하세요. 소스 변경 이력과 파일 무결성은 Git 커밋으로 추적합니다. 해시는 파일의 동일성을 확인할 뿐, 그 자체가 안전성을 보증하지는 않습니다.
| 항목 | 동작 | 확인 위치 |
|---|---|---|
| 패킷 캡처 | Npcap/Scapy AsyncSniffer로 선택된 TCP 16000 연결을 수동 관찰 |
src/mabi_music_probe/capture/sniffer.py |
| 연결 탐색 | psutil.net_connections()로 게임 연결 후보 확인 |
src/mabi_music_probe/capture/connections.py |
| 맵 이동 갱신 | 패킷 수가 3초간 멈춘 경우에만 연결을 다시 확인 | src/mabi_music_probe/countdown_gui.py |
| 패킷 처리 | 서버가 보낸 제목·압축 MML·합주 상태를 로컬에서 해석 | score_packet.py, ensemble_packet.py |
| 파일 기록 | 실행 파일 옆 timer_logs/에 PCAP·JSONL 기록 |
capture/pcap_writer.py, countdown_gui.py |
| 관리자 권한 | Npcap 캡처를 위해 EXE manifest에서 요청 | MabiMusicMonitor.spec |
keyboard,pynput같은 입력 자동화 의존성SendInput,keybd_event또는 게임 창으로의 키 입력- 패킷 전송·변조·재생
ReadProcessMemory,WriteProcessMemory, DLL 주입- HTTP 클라이언트, 원격 분석 서버, 텔레메트리, 자동 업데이트
공개용 pyproject.toml의 실행 의존성은 Brotli, psutil, Scapy 세 가지뿐입니다. Tkinter와 ctypes는 Python/Windows 기본 기능이며, ctypes는 DPI 설정·둥근 창·관리자 권한 확인에 사용됩니다.
# 테스트
.\.venv\Scripts\python.exe -m pytest
# 배포 파일 해시
Get-FileHash -Algorithm SHA256 .\release\MabiMusicMonitor.exe
# 위험 기능 이름 검색 예시
rg -n "SendInput|keybd_event|ReadProcessMemory|WriteProcessMemory|press_and_release|requests|urllib" srcPyInstaller 내부 파일 목록도 확인할 수 있습니다.
.\.venv\Scripts\pyi-archive_viewer.exe -r -b .\release\MabiMusicMonitor.exe이 EXE는 관리자 권한과 패킷 캡처 기능을 사용하고 코드 서명이 없기 때문에 일부 보안 제품에서 경고할 수 있습니다. 경고를 무조건 무시하지 말고 파일 해시를 확인하거나 소스에서 직접 빌드하세요.
보안 문제를 발견하면 실제 PCAP, 계정 정보, 닉네임을 공개 이슈에 첨부하지 마세요. GitHub 저장소에서 Security Advisories를 활성화한 뒤 비공개 제보 기능을 사용하는 것을 권장합니다.