## Contenido
- [Capacidades](#capacidades)
- [Stack técnico](#stack-técnico)
- [Dataset de entrenamiento](#dataset-de-entrenamiento)
- [Instalación](#instalación)
- [Ejemplos de uso](#ejemplos-de-uso)
- [Sistema RAG](#sistema-rag)
- [Fine-tuning propio](#fine-tuning-propio)
- [Repositorios](#repositorios)
- [Licencia](#licencia)
## Capacidades
| Dominio | Capacidad | Ejemplo de prompt |
|---------|-----------|-------------------|
| 🐍 **Programación** | Generación, revisión y depuración de código Python/C/C++/Java/Go/Rust | "Escribe un shell reverso en Python" |
| 🔓 **Exploiting** | Buffer overflow, ROP chains, heap exploitation, format strings | "Analiza este código en busca de desbordamiento de buffer" |
| 🔬 **Reversing** | Análisis de binarios, descompilación, ingeniería inversa | "Explica qué hace esta función en assembly x86" |
| 🛡️ **Ciberseguridad** | OWASP Top 10, hardening, auditoría, CTF writeups | "¿Cómo mitigar SQL Injection en una app web?" |
| 💉 **Shellcode** | Generación y análisis de shellcode para x86/x64/ARM | "Crea shellcode para ejecutar /bin/sh en x64 Linux" |
| 🕵️ **OSINT** | Técnicas de recolección de información, footprinting | "¿Qué herramientas usar para reconocimiento pasivo?" |
| 🔐 **Criptografía** | Implementación y análisis de algoritmos criptográficos | "Implementa AES-256-CBC en Python con padding PKCS7" |
| ⚡ **Rendimiento** | Optimización de código, profiling, algoritmos eficientes | "Optimiza esta función de búsqueda O(n²) a O(n log n)" |
## Stack técnico
| Capa | Tecnología |
|------|-----------|
| 🧠 **Modelo base** | [Qwen2.5-Coder-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct) |
| 🎯 **Fine-tuning** | LoRA (rank=32, alpha=64, dropout=0.1) en todas las capas lineales |
| 🏋️ **Entrenamiento** | Google Colab T4 (batch=2, grad_accum=4, ~20K steps) |
| 📊 **Dataset** | 169,258 ejemplos en formato ChatML |
| 📦 **Cuantización** | Q8_0 (GGUF) — 1.53 GB |
| 🚀 **Inferencia** | Ollama (CPU, ~4-8 tokens/s en 16GB RAM) |
| 🔍 **RAG** | ChromaDB + sentence-transformers (22,536 chunks) |
## Dataset de entrenamiento
Compilado a partir de fuentes seleccionadas para cobertura completa de seguridad y programación:
📂 169,258 ejemplos ChatML
├── 📝 Programación (150,000+)
│ ├── CodeSearchNet Python 50,000
│ ├── Stack Exchange 100,000
│ └── TheAlgorithms 340
├── 📖 Documentación (569)
│ └── Python docs oficial 569
├── 💥 Exploiting (16,000+)
│ ├── PyCode-Vul (CVE) 14,000
│ ├── how2heap 370
│ ├── CTF writeups 883
│ └── Shellcode 718
└── 🛡️ Seguridad (2,200+)
├── SecureCode OWASP Web 1,900
└── SecureCode AI/ML 285
## Instalación
### Opción 1 — Desde HuggingFace (recomendada)
ollama pull murdok1982/fsociety
ollama run fsociety
### Opción 2 — Desde el GGUF local
ollama create fsociety -f Modelfile
ollama run fsociety
### Opción 3 — Solo los adaptadores LoRA
Si querés mergear con el base vos mismo:
from peft import PeftModel
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-Coder-1.5B-Instruct",
torch_dtype=torch.float16,
device_map={"": "cpu"}
)
model = PeftModel.from_pretrained(model, "murdok1982/fsociety-LoRA")
model = model.merge_and_unload()
model.save_pretrained("./fsociety-merged")
## Ejemplos de uso
### Línea directa
ollama run fsociety "Crea un script Python que escanee puertos abiertos en una IP"
### Chat interactivo
ollama run fsociety
>>> Hola, ¿quién eres?
Soy fsociety, un asistente experto en ciberseguridad, reversing y exploiting.
Estoy aquí para ayudarte con análisis de código, desarrollo de exploits,
y técnicas de hacking ético. ¿En qué puedo ayudarte?
>>> Analiza este código C por vulnerabilidades:
void vulnerable() {
char buffer[64];
gets(buffer);
}
### Ejemplos rápidos
| Prompt | Lo que hace |
|--------|-------------|
| `"Escribe una shellcode TCP bind en x64 Linux"` | Genera shellcode funcional |
| `"Explica el heap exploit en how2heap fastbin_dup_consolidate"` | Analiza técnicas de heap |
| `"¿Qué es un ROP chain y cómo se construye?"` | Explica conceptos de exploiting |
| `"Audita este código Django por vulnerabilidades OWASP"` | Revisión de seguridad web |
| `"Traduce este IDA pseudocode a C legible"` | Asiste en reversing |
| `"Cómo bypasear NX con mprotect en ARM64"` | Técnicas avanzadas de exploit |
## Sistema RAG
fsociety se complementa con un **sistema RAG** que indexa 22,536 fragmentos de documentación real de seguridad:
📚 Fuentes indexadas
├── 🔧 how2heap → Técnicas de heap exploitation
├── 📝 CTF writeups → Soluciones de challenges reales
├── 🏛️ ExploitDB papers → Papers clásicos de seguridad
├── 🪲 Phrack 61 → La revista de hacking por excelencia
├── 🔬 Ghidra docs → Guías de reversing con Ghidra
└── 📦 Datasets JSONL → Datos estructurados de seguridad
### Uso
python chat_rag.py
El RAG busca automáticamente los fragmentos más relevantes antes de responder, combinando el conocimiento entrenado del modelo con documentación actualizada al instante.
## Fine-tuning propio
Si querés reentrenar o ajustar el modelo con tus propios datos:
1. Abrí [colab_fsociety_finetune.ipynb](colab_fsociety_finetune.ipynb) en Colab
2. **Runtime → Change runtime type → T4 GPU**
3. Conectá tu token de HuggingFace
4. **Run all** (~1.5h en T4)
### Post-training local
Después del entrenamiento en Colab, ejecutá en tu PC para mergear, cuantizar e importar en Ollama:
.\fsociety_post_train.ps1
El script:
1. Descarga los adaptadores LoRA desde HuggingFace
2. Mergea con Qwen2.5-Coder-1.5B-Instruct
3. Convierte a GGUF Q8_0
4. Importa automáticamente en Ollama
**Requisitos:** ~10 GB RAM libre, Python 3.10+, Ollama instalado
## Repositorios
| Recurso | Enlace | Descripción |
|---------|--------|-------------|
| 🤗 **Modelo completo** | [murdok1982/fsociety](https://huggingface.co/murdok1982/fsociety) | Safetensors (3.09 GB) + tokenizer |
| 🧩 **Adaptadores LoRA** | [murdok1982/fsociety-LoRA](https://huggingface.co/murdok1982/fsociety-LoRA) | 61 MB — para merge propio |
| 📊 **Dataset** | [murdok1982/gemma4-programacion-seguridad](https://huggingface.co/datasets/murdok1982/gemma4-programacion-seguridad) | 169,258 ejemplos ChatML (347 MB) |
| 💬 **RAG** | [murdok1982/rag-fsociety](https://github.com/murdok1982/rag-fsociety) | Indexador + chat con vector DB |
| 🐙 **Repo principal** | [murdok1982/fsociety](https://github.com/murdok1982/fsociety) | Este repositorio |
## Licencia
MIT License
Copyright (c) 2026 Gustavo Lobato Clara
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files...
## 💰 Apoya Este Proyecto
### ¡Donaciones en Bitcoin Bienvenidas!
[](https://bitcoin.org)
┌──────────────────────────────────────────────────┐
│ ₿ BTC Donation Address ₿ │
├──────────────────────────────────────────────────┤
│ │
│ bc1qqphwht25vjzlptwzjyjt3sex7e3p8twn390fkw │
│ │
│ Network: Bitcoin (BTC) │
│ │
│ Escanea el QR desde tu wallet: │
└──────────────────────────────────────────────────┘

**Direccion:** `bc1qqphwht25vjzlptwzjyjt3sex7e3p8twn390fkw`
*Apoya el desarrollo de herramientas de ciberseguridad open-source!* 🙏