camouflage / Dockerfile
nullswan
feat: add Camouflage ultrasonic audio jammer
c05aa98
Raw History Blame Contribute Delete
7.2 kB
# Build stage for Rust binary
FROM rust:1.83-slim-bookworm AS builder
RUN apt-get update && apt-get install -y \
pkg-config \
libasound2-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
RUN cargo build --release --package camouflage
# Runtime stage with simple web server
FROM python:3.12-slim-bookworm
RUN apt-get update && apt-get install -y \
libasound2 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy the binary
COPY --from=builder /app/target/release/camouflage /usr/local/bin/camouflage
# Create static directory and HTML page
RUN mkdir -p /app/static
COPY <<'EOF' /app/static/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Camouflage - Ultrasonic Audio Jammer</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
color: #e0e0e0;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
min-height: 100vh;
padding: 2rem;
}
.container { max-width: 900px; margin: 0 auto; }
h1 {
font-size: 3rem;
margin-bottom: 0.5rem;
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.tagline {
font-size: 1.2rem;
color: #888;
margin-bottom: 2rem;
border-left: 3px solid #667eea;
padding-left: 1rem;
}
.badge {
display: inline-block;
background: #667eea;
color: white;
padding: 0.3rem 0.8rem;
border-radius: 4px;
text-decoration: none;
margin-bottom: 2rem;
font-size: 0.9rem;
}
.badge:hover { background: #764ba2; }
.section {
background: rgba(255,255,255,0.05);
border-radius: 12px;
padding: 1.5rem;
margin-bottom: 1.5rem;
border: 1px solid rgba(255,255,255,0.1);
}
h2 {
color: #667eea;
margin-bottom: 1rem;
font-size: 1.5rem;
}
ul { list-style: none; }
li {
padding: 0.5rem 0;
padding-left: 1.5rem;
position: relative;
}
li::before {
content: ">";
position: absolute;
left: 0;
color: #667eea;
}
code {
background: rgba(0,0,0,0.3);
padding: 0.2rem 0.5rem;
border-radius: 4px;
font-family: 'Monaco', 'Menlo', monospace;
font-size: 0.9rem;
}
pre {
background: rgba(0,0,0,0.4);
padding: 1rem;
border-radius: 8px;
overflow-x: auto;
margin: 1rem 0;
border: 1px solid rgba(255,255,255,0.1);
}
pre code { background: none; padding: 0; }
.stats {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
}
.stat {
text-align: center;
padding: 1rem;
background: rgba(102, 126, 234, 0.1);
border-radius: 8px;
}
.stat-value {
font-size: 2rem;
font-weight: bold;
color: #667eea;
}
.stat-label { color: #888; font-size: 0.9rem; }
.links { display: flex; gap: 1rem; flex-wrap: wrap; }
.link {
background: rgba(102, 126, 234, 0.2);
color: #667eea;
padding: 0.8rem 1.5rem;
border-radius: 8px;
text-decoration: none;
transition: all 0.2s;
}
.link:hover {
background: #667eea;
color: white;
}
strong { color: #fff; }
</style>
</head>
<body>
<div class="container">
<h1>Camouflage</h1>
<p class="tagline">Ultrasonic audio jamming tool to protect against unauthorized recording</p>
<a href="https://www.nomi.so" class="badge" target="_blank">Made by Nomi</a>
<div class="section">
<h2>Features</h2>
<ul>
<li><strong>Speaker Jammer Mode</strong> - Outputs ultrasonic signals through speakers to jam nearby microphones</li>
<li><strong>System Jammer Mode</strong> - Creates virtual audio devices to prevent remote recording during voice calls</li>
<li><strong>Multi-tone Generation</strong> - Uses multiple ultrasonic frequencies for increased effectiveness</li>
<li><strong>Inaudible Operation</strong> - Optimized amplitude settings to remain completely inaudible</li>
<li><strong>Cross-platform Support</strong> - macOS, Linux, and Windows</li>
</ul>
</div>
<div class="section">
<h2>Installation</h2>
<h3 style="color: #888; margin: 1rem 0 0.5rem;">Docker</h3>
<pre><code>docker pull nomiswan/nomi.so:latest
docker run nomiswan/nomi.so speaker</code></pre>
<h3 style="color: #888; margin: 1rem 0 0.5rem;">From Source</h3>
<pre><code>cargo build --release
./target/release/camouflage speaker</code></pre>
</div>
<div class="section">
<h2>Usage</h2>
<pre><code># Speaker Jammer Mode
camouflage speaker -f 23000 -a 0.3
# System Jammer Mode
camouflage system -m 0.5
# Multi-tone jamming
camouflage speaker -n 5 -s 500</code></pre>
</div>
<div class="section">
<h2>Performance</h2>
<div class="stats">
<div class="stat">
<div class="stat-value">95%+</div>
<div class="stat-label">Whisper Jamming</div>
</div>
<div class="stat">
<div class="stat-value">90%+</div>
<div class="stat-label">Deepgram Jamming</div>
</div>
<div class="stat">
<div class="stat-value">&lt;5%</div>
<div class="stat-label">CPU Usage</div>
</div>
<div class="stat">
<div class="stat-value">&lt;10ms</div>
<div class="stat-label">Latency</div>
</div>
</div>
</div>
<div class="section">
<h2>Links</h2>
<div class="links">
<a href="https://github.com/nomihq/camouflage" class="link" target="_blank">GitHub</a>
<a href="https://hub.docker.com/r/nomiswan/nomi.so" class="link" target="_blank">Docker Hub</a>
<a href="https://www.nomi.so" class="link" target="_blank">Nomi</a>
</div>
</div>
</div>
</body>
</html>
EOF
EXPOSE 7860
CMD ["python", "-m", "http.server", "7860", "--directory", "/app/static"]