
API RESTful enveloppant Nmap pour le scan réseau automatisé, la détection de ports, l'énumération de services et l'analyse de vulnérabilités avec une génération de rapports optionnelle assistée par IA.
Utilise python3.10, Debian, python-Nmap, et le framework Flask pour créer une API Nmap capable d'effectuer des scans rapidement en ligne et facile à déployer.
Il s'agit d'une implémentation pour notre projet PCL universitaire, encore en développement et en constante mise à jour.
GET /api/p1/{auth_key}/{target}
GET /api/p2/{auth_key}/{target}
GET /api/p3/{auth_key}/{target}
GET /api/p4/{auth_key}/{target}
GET /api/p5/{auth_key}/{target}
| Paramètre | Type | Description |
|---|---|---|
auth_key | string | Requis. La clé d'authentification API donnée |
target | string | Requis. Le nom d'hôte et l'IP cibles |
GET /api/p1/
GET /api/p2/
GET /api/p3/
GET /api/p4/
GET /api/p5/
GET /api/p6/
GET /api/p7/
GET /api/p8/
GET /api/p9/
GET /api/p10/
GET /api/p11/
GET /api/p12/
GET /api/p13/
GET /register/<int:user_id>/<string:password>
| Paramètre | Type | Description |
|---|---|---|
ID | Int | identifiant utilisateur |
Passwd | String | Mot de passe utilisateur |
Ajout de la fonctionnalité GPT avec module de découpage (chunking).
La méthodologie est basée sur le fonctionnement des embeddings GPT de Langchain. En gros, l'opération se déroule comme suit :
Data -> Chunks_generator ─┐ ┌─> AI_Loop -> Data_Extraction -> Return_Data
├─> Chunk1 ─┤
├─> Chunk2 ─┤
├─> Chunk3 ─┤
└─> Chunk N ─┘
Code IA :
def AI(analize: str) -> dict[str, any]:
prompt = f"""
Do a NMAP scan analysis on the provided NMAP scan information
The NMAP output must return in a JSON format accorging to the provided
output format. The data must be accurate in regards towards a pentest report.
The data must follow the following rules:
1) The NMAP scans must be done from a pentester point of view
2) The final output must be minimal according to the format given.
3) The final output must be kept to a minimal.
4) If a value not found in the scan just mention an empty string.
5) Analyze everything even the smallest of data.
6) Completely analyze the data provided and give a confirm answer using the output format.
The output format:
{{
"critical score": [""],
"os information": [""],
"open ports": [""],
"open services": [""],
"vulnerable service": [""],
"found cve": [""]
}}
NMAP Data to be analyzed: {analize}
"""
messages = [{"content": prompt, "role": "assistant"}]
response = openai.ChatCompletion.create(
model=model_engine,
messages=messages,
max_tokens=2500,
n=1,
stop=None,
)
response = response['choices'][0]['message']['content']
ai_output = {
"markdown": response
}
return ai_output
Default_Key: e43d4
les nouvelles mises à jour sont toujours en cours
| Paramètre | Données retournées | Description | Commande Nmap |
|---|
p1 | json | Scan efficace | -Pn -sV -T4 -O -F |
p2 | json | Scan simple | -Pn -T4 -A -v |
p3 | json | Scan basse puissance | -Pn -sS -sU -T4 -A -v |
p4 | json | Scan intense partiel | -Pn -p- -T4 -A -v |
p5 | json | Scan intense complet | -Pn -sS -sU -T4 -A -PE -PP -PY -g 53 --script=vuln |
p6 | json | Détection complète des versions de services | -Pn -sV -p- -A |
p7 | json | Scan agressif avec détection d'OS | -Pn -sS -sV -O -T4 -A |
p8 | json | Scan de scripts pour vulnérabilités courantes | -Pn -sC |
p9 | json | Scan intense, tous les ports TCP | -Pn -p 1-65535 -T4 -A -v |
p10 | json | Scan UDP | -Pn -sU -T4 |
p11 | json | Détection des services et versions pour les ports les plus courants | -Pn -sV --top-ports 100 |
p12 | json | Scan agressif avec scripts NSE pour vulnérabilités | -Pn -sS -sV -T4 --script=default,discovery,vuln |
p13 | json | Scan rapide pour ports courants | -Pn -F |