murdok1982/fsociety

GitHub: murdok1982/fsociety

Stars: 3 | Forks: 1

"Trust me, you are not a bad coder. You're just not as good as you will be."

Qwen2.5-Coder-1.5B fine-tuned para ciberseguridad · exploiting · reversing · hacking ético

## 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...
Hecho con ☕ y 🎵 por murdok1982
📧 Email · 💼 LinkedIn
## 💰 Apoya Este Proyecto
### ¡Donaciones en Bitcoin Bienvenidas! [![Bitcoin](https://img.shields.io/badge/Bitcoin-000000?style=for-the-badge&logo=bitcoin&logoColor=white)](https://bitcoin.org) ┌──────────────────────────────────────────────────┐ │ ₿ BTC Donation Address ₿ │ ├──────────────────────────────────────────────────┤ │ │ │ bc1qqphwht25vjzlptwzjyjt3sex7e3p8twn390fkw │ │ │ │ Network: Bitcoin (BTC) │ │ │ │ Escanea el QR desde tu wallet: │ └──────────────────────────────────────────────────┘ ![Bitcoin QR](https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=bitcoin:bc1qqphwht25vjzlptwzjyjt3sex7e3p8twn390fkw) **Direccion:** `bc1qqphwht25vjzlptwzjyjt3sex7e3p8twn390fkw` *Apoya el desarrollo de herramientas de ciberseguridad open-source!* 🙏