2FA Auto Copy
SMS로 수신된 인증번호를 자동으로 클립보드에 복사하는 macOS 유틸리티. Code Piper Lite에서 영감을 받아 Python으로 직접 구현했습니다.
Overview
프로젝트 개요
인증번호가 올 때마다 메시지 앱을 열어 확인하고 직접 입력하는 게 귀찮아서 만들었습니다. App Store의 Code Piper Lite를 보고 "이건 직접 만들 수 있겠다"고 생각한 것이 시작이었습니다.
macOS Messages 앱의 SQLite 데이터베이스(chat.db)를 watchdog으로 감시하여, 새 SMS가 도착하면 인증번호 키워드와 4~8자리 숫자 패턴을 분석합니다. 인증번호가 감지되면 클립보드에 자동 복사하고, 60초 후 보안을 위해 자동 정리합니다.
Architecture
프로젝트 구조
sms-2fa-copy/
├── 2fa.py # 메인 스크립트 (138줄)
├── setup.py # py2app 빌드 설정
├── requirements.txt # 의존성 (watchdog, pyperclip)
├── scripts/
│ └── build-dmg.sh # DMG 패키징 스크립트
└── dist/
└── 2fa.app # 빌드된 macOS 앱DatabaseChangeHandler
watchdog의 FileSystemEventHandler를 상속하여 Messages DB(chat.db) 및 WAL 파일의 변경을 감지합니다. 0.5초 디바운싱으로 중복 처리를 방지합니다.
process_new_message
최신 메시지를 읽어 인증번호 관련 키워드를 확인하고, 정규식으로 4~8자리 숫자를 추출합니다. rowid 기반으로 이미 처리된 메시지를 건너뜁니다.
Key Features
주요 기능
인증번호 자동 감지
"인증", "확인", "코드", "OTP" 등 키워드가 포함된 SMS에서 4~8자리 숫자를 자동으로 추출하여 클립보드에 복사합니다.
60초 자동 정리
클립보드에 복사된 인증번호를 60초 후 자동으로 삭제합니다. 인증번호가 클립보드에 남아있을 때만 정리하여 안전합니다.
macOS 알림 센터 연동
인증번호가 복사되면 macOS 알림 센터로 즉시 알림을 표시합니다. 어떤 인증번호가 복사되었는지 바로 확인할 수 있습니다.
DMG 패키징 & 백그라운드 실행
py2app으로 .app 번들을 빌드하고 DMG로 배포합니다. Dock 아이콘 없이 백그라운드에서 조용히 동작합니다.
Flow
실행 흐름
PollingObserver로 ~/Library/Messages/ 디렉토리 감시 시작
chat.db 또는 WAL 파일 변경 시 0.5초 디바운싱 후 처리
최신 메시지에서 인증 키워드 확인 + 숫자 패턴 추출
인증번호를 클립보드에 복사하고 macOS 알림 표시
60초 후 클립보드에 해당 인증번호가 남아있으면 삭제
Comments
댓글
불러오는 중...