
Tor 히든 서비스를 통한 암호화된 푸시투톡 음성 및 텍스트 통신, 종단간 암호화, 구성 가능한 암호화 방식, 그룹 통화를 위한 중계 모드, 그리고 포렌식 방지 데이터 파괴 기능.
Tor 히든 서비스를 통한 암호화된 푸시투토크 음성 통신.
TerminalPhone은 Tor 네트워크를 통해 두 명 이상의 당사자 간에 익명의 종단간 암호화된 음성 및 텍스트 통신을 제공하는 단일 자체 포함 Bash 스크립트입니다. 무전기처럼 작동합니다. 음성 메시지를 녹음하면 압축, 암호화되어 단일 단위로 원격 당사자에게 전송됩니다. 통화 중에 암호화된 텍스트 메시지를 보낼 수도 있습니다. 서버 인프라도, 계정도, 전화번호도 필요 없습니다. 귀하의 Tor 히든 서비스 .onion 주소가 곧 귀하의 신원입니다.
T를 눌러 메시지를 입력하세요..onion 주소를 교환합니다. 원격 주소는 통화 헤더에 표시됩니다.S를 눌러 설정에 접근합니다. 암호를 즉석에서 변경할 수 있으며, 원격 당사자의 화면이 자동으로 업데이트됩니다.jq가 필요합니다(요청 시 설치). 각 트리거 후 볼륨은 자동으로 복원됩니다..onion 주소는 영구적이고 라우팅 가능한 엔드포인트 역할을 합니다. 포트 포워딩이나 공인 IP가 필요하지 않습니다..onion 주소를 터미널에서 스캔 가능한 QR 코드로 표시할 수 있습니다. qrencode가 설치되어 있지 않으면 설치하라는 메시지가 표시됩니다. QR 코드는 대체 화면 버퍼에 렌더링되며 닫으면 제거됩니다. 일부 QR 스캐너가 http://를 자동으로 앞에 붙인다는 경고가 표시되며, 이 접두사는 전화 걸기 시 자동으로 제거됩니다..tmp 확장자와 임의의 16진수 식별자를 사용합니다. 파일 유형이나 타이밍 메타데이터가 파일 시스템에 유출되지 않습니다.StrictNodes와 함께 ExcludeNodes를 사용합니다./dev/urandom의 임의 데이터로 덮어씁니다. 파일 크기를 읽고, conv=notrunc와 함께 dd를 사용하여 그만큼의 임의 데이터 바이트를 파일에 덮어쓰고, sync로 저장 장치에 쓰기를 플러시한 다음, rm으로 파일을 제거합니다. 모든 민감한 런타임 파일을 포함합니다: 원시 PCM 녹음, Opus 인코딩 오디오, 암호화된 페이로드, 복호화된 수신 오디오 및 채팅, 음성 효과 중간 파일, 암호 및 HMAC 키 자료, nonce 로그, 세션 플래그, PID 파일, 명명된 파이프, 교체 시 Tor 히든 서비스 키, 릴레이 세션 데이터. 디렉터리의 경우 내부의 모든 파일이 재귀적으로 덮어쓰여집니다. 내장 테스트 옵션은 샘플 파일을 생성하고, 원본 내용을 평문과 16진수로 표시하고, 덮어쓴 다음, 덮어쓴 16진수를 표시하여 사용자가 데이터가 파괴되었음을 시각적으로 확인할 수 있게 합니다. 기본적으로 꺼져 있습니다 — 대부분의 사용자에게는 표준 rm으로 충분합니다. TerminalPhone의 임시 파일은 작고 수명이 짧으며, 디스크 공간은 일반적으로 정상적인 시스템 활동에 의해 빠르게 재사용됩니다. 이 기능은 포렌식 복구에 대한 추가 보호 계층을 원하는 사용자를 위한 것입니다. 참고: SSD 및 플래시 저장 장치에서는 웨어 레벨링으로 인해 덮어쓰기가 다른 물리적 NAND 셀에 기록될 수 있습니다 — 플래시 미디어에서는 전체 디스크 암호화가 유일하게 신뢰할 수 있는 방어입니다. 기존 HDD에서는 덮어쓰기가 동일한 물리적 위치의 데이터를 대체하며 모든 소프트웨어 기반 복구에 효과적입니다.RELAY:1 핸드셰이크를 통해 릴레이 모드를 자동 감지하고 실시간 그룹 발신자 수를 표시합니다. 한 발신자가 나가도 다른 발신자의 연결이 끊기지 않습니다. 운영자 대시보드는 발신자 수, 가동 시간, 데이터 처리량을 보여줍니다.지원 배포판: Debian/Ubuntu (apt), Fedora/RHEL (dnf), Arch (pacman).``` bash
git clone https://gitlab.com/here_forawhile/terminalphone.git cd terminalphone bash terminalphone.sh
메뉴에서 옵션 **7**을 선택하면 모든 종속성이 자동으로 설치됩니다. 다음 패키지들이 설치됩니다:
| 패키지 | 용도 |
|---|---|
| `tor` | 어니언 라우팅 및 숨겨진 서비스 |
| `opus-tools` | 음성 압축 (Opus 코덱) |
| `sox` | 오디오 처리 유틸리티 |
| `socat` | Tor SOCKS 프록시를 통한 양방향 TCP 릴레이 |
| `openssl` | AES-256-CBC 암호화 및 복호화 |
| `alsa-utils` | 오디오 녹음 및 재생 (`arecord`, `aplay`) |
### macOS``` bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh
7번 옵션을 선택하면 모든 종속성이 자동으로 설치됩니다. Homebrew가 설치되어 있지 않으면 스크립트가 먼저 Homebrew를 설치한 다음, 다음 패키지들을 설치합니다:
| 패키지 | 용도 |
|---|---|
tor | Onion 라우팅 및 숨겨진 서비스 |
opus-tools | 음성 압축 (Opus 코덱) |
sox | 오디오 녹음 및 재생 (rec, play) |
socat | Tor SOCKS 프록시를 통한 양방향 TCP 릴레이 |
openssl | AES-256-CBC 암호화 및 복호화 |
참고: macOS는 ALSA 대신 녹음(rec)과 재생(play) 모두에 sox를 사용합니다. 추가 오디오 패키지는 필요하지 않습니다.
Apple Silicon (M1/M2/M3+): Homebrew가 네이티브 ARM 접두사(/opt/homebrew)에 설치되어 있는데 터미널이 Rosetta 2(x86_64 프로세스)에서 실행 중인 경우, brew install은 일반적으로 Cannot install under Rosetta 2 in ARM default prefix 오류와 함께 실패합니다. 이제 종속성 설치 프로그램이 이를 감지하고 자동으로 arch -arm64로 Homebrew를 다시 실행하므로, 스크립트가 어떻게 실행되었든 7번 옵션이 작동합니다.
TerminalPhone은 Termux를 통해 Android 기기를 지원합니다. Android의 샌드박스 오디오 아키텍처로 인해 두 가지 추가 구성 요소가 필요합니다.
1단계: Termux 설치
F-Droid에서 Termux를 설치하세요. Play Store 버전은 오래되었고 더 이상 업데이트를 받지 않으므로 사용하지 마세요.
2단계: Termux:API 앱 설치
F-Droid에서 Termux:API를 설치하세요. 이것은 Termux 패키지가 아닌 별도의 Android 애플리케이션으로, Termux와 Android 시스템 API 사이의 브리지 역할을 합니다. TerminalPhone은 기기 마이크와 미디어 재생에 접근하기 위해 이 앱이 필요합니다.
기기에 Termux:API 앱이 설치되어 있지 않으면 termux-microphone-record 및 termux-media-player 명령이 작동하지 않으며, 오디오 녹음과 재생이 조용히 실패합니다.
Termux:API 앱을 설치한 후, 마이크 권한을 요청하면 허용하세요.
3단계: Termux 내부에 Termux:API 패키지 설치```bash pkg install termux-api
이것은 Termux:API 앱과 통신하는 명령줄 유틸리티를 설치합니다.
**Step 4: Run TerminalPhone**```bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh
7번 옵션을 선택하여 나머지 모든 종속성을 설치합니다. 설치 프로그램은 먼저 pkg upgrade를 실행하여 패키지 링크 문제를 해결한 다음, tor, opus-tools, sox, socat, openssl-tool, ffmpeg, termux-api를 설치합니다.
Termux 전용 종속성:
| 패키지 | 용도 |
|---|---|
termux-api | Android 마이크 및 미디어 플레이어로의 CLI 브리지 |
ffmpeg | Android의 M4A 녹음을 Opus 인코딩을 위한 원시 PCM으로 변환 |