API REST développée avec Node.js et Express pour des outils de sécurité et d'analyse.
- Inscription :
POST /new/signup - Connexion :
POST /user/login - JWT : Authentification par token Bearer
- Scan IP :
GET /scan/ip- Récupération de l'IP publique - Scan URL :
POST /scan/url- Scan de vulnérabilités web avec Nuclei - Scan Port :
POST /scan/port- Scan de ports avec Nmap - Scan EXIF :
POST /scan/exif- Analyse des métadonnées d'images - IA Analysis :
POST /scan/ia- Analyse avec Ollama
- Liste des utilisateurs :
GET /- Récupération de tous les utilisateurs
- Node.js v18+
- Express.js v5.1.0
- PostgreSQL (Neon)
- JWT pour l'authentification
- bcryptjs pour le hachage des mots de passe
- Nmap pour le scan de ports
- Nuclei pour le scan de vulnérabilités
- ExifTool pour l'analyse d'images
- Cloudinary pour le stockage d'images
- Cloner le projet
git clone <repository-url>
cd backproject- Installer les dépendances
npm install- Configuration de l'environnement
Créer un fichier
.envà la racine :
JWT_SECRET=your_jwt_secret_here-
Configuration de la base de données Le fichier
db.jscontient la configuration PostgreSQL (Neon). -
Démarrer le serveur
JWT_SECRET=your_secret node app.jsLe serveur démarre sur http://localhost:3000
POST /new/signup
Content-Type: application/json
{
"email": "user@example.com",
"username": "username",
"password": "password",
"nom": "Nom",
"prenom": "Prénom"
}POST /user/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password"
}Réponse :
{
"token": "jwt_token_here",
"user": {
"id": 1,
"username": "username",
"email": "user@example.com",
"avatar_url": "https://..."
}
}GET /scan/ip
Authorization: Bearer <token>POST /scan/url
Authorization: Bearer <token>
Content-Type: application/json
{
"url": "https://example.com"
}POST /scan/port
Authorization: Bearer <token>
Content-Type: application/json
{
"type": "public",
"ip": "1.1.1.1",
"ports": [80, 443, 8080]
}POST /scan/exif
Authorization: Bearer <token>
Content-Type: multipart/form-data
file: <image_file>Le serveur est configuré pour accepter les requêtes depuis http://localhost:5173. Pour modifier :
app.use(cors({
origin: "http://localhost:5173", // Modifier selon vos besoins
methods: ["GET", "POST"],
credentials: true
}));Configuration PostgreSQL dans db.js :
- Connexion à Neon (PostgreSQL cloud)
- Pool de connexions configuré
- SSL activé
- Node.js v18 ou supérieur
- Nmap installé sur le système
- Nuclei installé sur le système
- ExifTool installé sur le système
# Nmap
sudo apt-get install nmap
# Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# ExifTool
sudo apt-get install exiftoolbackproject/
├── app.js # Point d'entrée principal
├── db.js # Configuration base de données
├── package.json # Dépendances
├── function/
│ ├── auth.js # Middleware d'authentification
│ ├── inscription.js # Routes d'inscription
│ ├── connexion.js # Routes de connexion
│ ├── get_user.js # Gestion des utilisateurs
│ └── scan/
│ ├── scanip.js # Scan IP publique
│ ├── scanurl.js # Scan de vulnérabilités web
│ ├── scanport.js # Scan de ports
│ ├── exiftool.js # Analyse EXIF
│ └── iaollama.js # Analyse IA
└── uploads/ # Dossier de stockage temporaire
- Mots de passe hachés avec bcryptjs
- Authentification JWT avec expiration (1h)
- Validation des entrées utilisateur
- CORS configuré
- Headers de sécurité
Vérifiez que le serveur a été redémarré après les modifications.
- Vérifiez que
JWT_SECRETest défini - Relogez-vous pour obtenir un nouveau token
Vérifiez la configuration dans db.js et la connectivité réseau.
- Le serveur doit être redémarré après modification des routes
- Les scans de ports nécessitent des privilèges système
- Les outils externes (Nmap, Nuclei) doivent être installés
- Le CORS est configuré pour le développement local
- Fork le projet
- Créer une branche feature (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request