Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
vortex — Herramienta integral de reconocimiento, pruebas, enumeración y explotación de VPN | Kitploit
Herramientas/GitHubGitHub/klezvirus/vortex
OSINT (Inteligencia de Fuentes Abiertas)Descifrado de ContraseñasHerramientas de PhishingReconocimientoAtaques de ContraseñasAnálisis de VulnerabilidadesRecopilación de InformaciónPruebas de PenetraciónIngeniería SocialEnumeración de Subdominios
GitHubklezvirus/vortex
450517hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

vortex

Herramienta integral de reconocimiento, pruebas, enumeración y explotación de VPN

Ver Repositorio

🚩 Este es el repositorio público de vortex, para la última versión y actualizaciones, considera apoyarnos a través de https://porchetta.industries/

Vortex

Kit de herramientas de reconocimiento, prueba, enumeración y explotación de VPN en general

🚩 Patrocinadores

Si quieres patrocinar este proyecto y tener las últimas actualizaciones de vortex, los últimos errores corregidos, las últimas características, apóyanos en https://porchetta.industries/

Canal Oficial de Discord

¡Ven a pasar el rato en Discord!

Porchetta Industries

Resumen

Un framework de Python muy simple, inspirado en [SprayingToolkit][1], que intenta automatizar la mayor parte del proceso necesario para detectar, enumerar y atacar endpoints comunes de O365 y VPN (como Cisco, Citrix, Fortinet, Pulse, etc...).

Por qué lo desarrollé

Hacer la fase de pulverización de VPN mucho más rápida y fácil. Además, debido a su flexibilidad, esta herramienta se puede añadir a un flujo de trabajo OSINT existente con bastante facilidad.

Qué puede hacer la herramienta por ti

Vortex principalmente brinda asistencia para realizar las siguientes tareas:

  • Búsqueda y Recopilación de Usuarios
    • LinkedIn
    • Google
    • PwnDB
  • Filtraciones de Contraseñas
    • PwnDB
  • Identificación del Dominio Principal
    • OWA
    • S4B/Lynk
    • ADFS
  • Búsqueda de Subdominios
    • Enumeración
    • Fuerza Bruta
  • Detección de Endpoints VPN
  • Ataques de Pulverización/Adivinación de Contraseñas
    • O365
    • Lynk/S4B
    • ADFS
    • IMAP
    • VPNs
      • Cisco
      • Citrix
      • FortiNet
      • Pulse Secure
      • SonicWall
  • Búsqueda de perfiles en Redes Sociales
    • Instagram
    • Facebook
    • Twitter
    • TikTok
    • Onlyfans

Instalación

Instala los requisitos previos con pip3 de la siguiente manera:``` sudo -H pip3 install -r requirements.txt

root@kitploit:~
### Instalar con Virtualenv

De lo contrario, puedes instalar los requisitos previos usando un entorno virtual:

###### En Windows```
virtualenv venv
venv\Scripts\activate
pip install -r requirements.txt
En Linux```

python3 -m virtualenv venv source venv/bin/activate pip install -r requirements.txt

root@kitploit:~
## Uso

Usar la herramienta es bastante sencillo, pero hay un flujo de trabajo que respetar. La herramienta
utiliza una base de datos SQLite para almacenar información sobre el ataque actual.

### Espacio de trabajo

El espacio de trabajo representa el archivo de base de datos utilizado por la herramienta. El nombre debe ser solo un
nombre simple para etiquetar el ataque, proyecto o objetivo actual.

A cada espacio de trabajo se le asigna una base de datos SQLite. Cuando especificas un nombre de espacio de trabajo,
como:```
python manage.py -w workspace1

Lo que realmente estás diciendo es "Quiero operar en el archivo workspace1.db".

Inicialización del espacio de trabajo

Para funcionar correctamente, Vortex necesita inicializar la base de datos con los esquemas correctos. Para ello, lo único que hay que hacer es ejecutar el comando:``` python manage.py -w workspace1 db -c init

root@kitploit:~
Si un usuario intenta saltarse esta fase, Vortex simplemente imprimirá en pantalla el comando correcto para ejecutar primero.```
[-] Workspace not initialized. Please initialise it using:
    python manage.py -w workspace1 db -c init

En cambio, al ejecutar el mismo comando contra una base de datos existente e inicializada, Vortex pedirá confirmación antes de sobrescribir el archivo de la base de datos:``` [-] The DB file exists and it was initialised, overwrite? [y|n] $> y

root@kitploit:~
### Acciones y comandos

Vortex funciona con un argumento posicional, la 'Acción', y otros valores clave.

El más importante entre ellos es el argumento de comando (`-c cmd`). En combinación con
el valor de acción, el comando define lo que Vortex debe hacer. 

Es posible ver la lista de acciones compatibles desde la Ayuda:```
python manage.py -h

Vortex: VPN Overall Reconnaissance, Enumeration and eXploitation

positional arguments:
  {db,domain,import,office,profile,search,tor,validate,vpn}
                        Action to execute

optional arguments:
  -h, --help            show this help message and exit
  -w WORKSPACE, --workspace WORKSPACE
                        Workspace to use
  -c COMMAND, --command COMMAND
                        Command for the action
  -D DOMAIN, --domain DOMAIN
                        Domain under attack
  -C COMPANY, --company COMPANY
                        Company under attack
  -l LOCATION, --location LOCATION
                        Location of the company under attack (IE, UK, US, ...)
  -u URL, --url URL     VPN Endpoint Origin (schema://domain:port)
  -t ENDPOINT_TYPE, --endpoint-type ENDPOINT_TYPE
                        Target Endpoint Type
  -U USER, --user USER  User name
  -E EMAIL, --email EMAIL
                        User email
  -N NAME, --name NAME  User full name
  -R ROLE, --role ROLE  User job
  -s SQL, --sql SQL     SQL statement
  -O EXPORT_FILE, --export-file EXPORT_FILE
                        Export file
  -Q QUOTES, --quotes QUOTES
                        Produce an Excel safe CSV
  -nh, --no-headers     Remove CSV headers
  -k KEYWORDS, --keywords KEYWORDS
                        Search keywords
  -P PASSWORDS_FILE, --passwords-file PASSWORDS_FILE
                        Password file for spraying
  -L, --leaks           Use leaks for spraying
  -I IMPORT_FILE, --import-file IMPORT_FILE
                        Import file

Entrada dinámica de argumentos

Como se puede observar en la ayuda, la lista de comandos compatibles por acción no está especificada en ningún lado. Esto se debe a que no es necesario especificar un comando directamente. De hecho, si no se especifica un comando, Vortex le pedirá al usuario que seleccione uno de entre los comandos disponibles para la acción especificada.``` python manage.py -w workspace1 db

,d#####F^ ,yy############yy ^9#######, ,######" y###################by ^9######, ######^ y#####F"" ^"9######y "######] d#####^ ,#####" by klezVirus ^9#####, ^######, ,#####] ,####F yy#######y, ^9####b ^###### [##### ####F ,###F""'"9####, 9####] 9##### #####F [#### ,##F^ yy "###b 9####, ^#####] #####] [###] ### dF""#b ^###] ^####] #####] 9####b [#### 9##, 9bd [#] [##b ##### [##### [##### ####, 9##y, ,y##^ d##F ##### [####] #####b ^####y ^"#####" d###^ ,####] d##### [#####, ^####by ,d###^ d####^ #####F 9#####y "#####byyyyyyd####F^ d####F [#####9 9#####b, ""############"^ ,d####F ,###### ^######b, ""'""'"^ ,d#####F d#####F

[*] Select a command: 0 : init 1 : sql 2 : add-endpoint 3 : add-user 4 : drop-user 5 : truncate-table 6 : export $>

root@kitploit:~
Lo mismo aplica para los argumentos necesarios para una rutina específica. Si un argumento es 
difícil de ingresar en tiempo de ejecución, Vortex le recordará amablemente al usuario que 
el parámetro es necesario. De lo contrario, Vortex guiará al usuario para seleccionar 
o ingresar los argumentos necesarios.

Por ejemplo, si un usuario quisiera exportar una tabla específica o incluso una columna, lo único que necesitaría 
sería lanzar el comando de exportación, como se puede observar en la imagen a continuación:

![Asistente de exportación](https://assets.kitploit.com/production/public/readmes/5129/d68f1299e07d162c61c0c98d33a490f36d51848799f72fe98eb5f2e565fdbf2a.gif)

Este tipo de comportamiento hace que Vortex sea muy fácil de usar.

### Flujo de trabajo general

Vortex ha sido diseñado para adherirse a un flujo de trabajo operativo específico, resumido en el siguiente
esquema:

![Flujo de trabajo general](https://assets.kitploit.com/production/public/readmes/5129/bcde914863b2f917ef576c849a9374eabf3d10d26f3e271098ff8bc4a03f036b.png)

### Operaciones

#### Recopilar usuarios

La recopilación de usuarios válidos para un objetivo específico se puede realizar utilizando tres fuentes diferentes:

* LinkedIn

Esta fuente ha sido eliminada por infringir las políticas de usuario de LinkedIn. 
Aún puede operar en LinkedIn utilizando [GoMapEnum](https://github.com/nodauf/GoMapEnum), 
y luego importar las direcciones de correo electrónico usando el comando `import`.

Nuevamente, tenga en cuenta que el uso de esta funcionalidad es una violación del acuerdo de usuario de LinkedIn,
como se puede observar en el punto [8.2](https://www.linkedin.com/legal/user-agreement#dos) 
del acuerdo de usuario de LinkedIn:

> Usted acepta que no: [...]
> 2. Desarrollará, apoyará o utilizará software, dispositivos, scripts, robots o cualquier otro medio o proceso (incluyendo rastreadores, complementos y extensiones de navegador o cualquier otra tecnología) para extraer los Servicios o copiar de otro modo perfiles y otros datos de los Servicios;

* CrossLinked

Para reemplazar parcialmente la funcionalidad anterior, la herramienta incorpora una versión adaptada de
[CrossLinked](https://github.com/m8r0wn/CrossLinked). Esta herramienta intentará detectar empleados de una empresa utilizando Google y Bing.
Ciertamente no es lo mismo que buscar directamente en LinkedIn, pero es
bastante útil.

Para operar correctamente, la herramienta le preguntará al usuario qué formato debe usar
para los nombres de usuario (por ejemplo, john.doe, j.doe o d.john) y cuál es el dominio estándar
utilizado por el dominio objetivo.```
python manage.py -w workspace1 search -c crosslinked -D evilcorp.com -C "Evil Corporation"

   ,d#####F^      ,yy############yy       ^9#######,
  ,######"      y###################by      ^9######,
  ######^     y#####F""       ^"9######y      "######]
 d#####^    ,#####" by klezVirus ^9#####,     ^######,
,#####]    ,####F    yy#######y,    ^9####b     ^######
[#####     ####F   ,###F""'"9####,    9####]     9#####
#####F    [####   ,##F^  yy   "###b    9####,    ^#####]
#####]    [###]   ###  dF""#b  ^###]   ^####]     #####]
9####b    [####   9##, 9bd [#]  [##b    #####     [#####
[#####     ####,   9##y, ,y##^  d##F    #####     [####]
 #####b    ^####y   ^"#####"   d###^   ,####]     d#####
 [#####,    ^####by          ,d###^    d####^     #####F
  9#####y     "#####byyyyyyd####F^    d####F     [#####9
   9#####b,     ""############"^    ,d####F     ,######
    ^######b,       ""'""'"^      ,d#####F      d#####F

[+] Select a format for usernames
  0: firstlast
  1: lastfirst
  2: first.last
  3: last.first
  4: last.f
  5: flast
  6: lfirst
  7: f.last
  8: l.first
  9: first
  10: last
  $> 2
[*] Starting search on Google and Bing with CrossLinked
  [>] Searching google for valid employee names at "Evil Corporation"
  [>] Searching bing for valid employee names at "Evil Corporation"
  [>] Found 133 LinkedIn accounts!
[*] Updating DB ...
[+] Done!
  • Google

Esta fuente se opera usando una versión reducida y modificada de theHarvester. La herramienta intentará extraer nombres/correos electrónicos de Google (Recolección Pasiva) usando Google Dorks, y del sitio web de la empresa (Recolección Activa).``` python manage.py -w workspace1 search -c google -D evilcorp.com

[] Starting passive/active search on Google [] (PASSIVE) Searching for emails NOT within the domain's site: evilcorp.com -site:evilcorp.com [*] (ACTIVE) Searching for emails within the domain's sites: evilcorp.com [+] Scraping any emails from: https://evilcorp.com [+] Scraping any emails from: https://www.facebook.com/EvilCorp/ ...

[+] 2 unique emails found:

[email protected] [email protected] [>] Found 2 mail [*] Updating DB ... [+] Done!

root@kitploit:~
* PwnDB

Esta fuente se opera mediante una versión adaptada de la implementada en [sn0int](https://github.com/kpcyrd/sn0int).

**Nota**: esta funcionalidad requiere estar conectado a la red TOR. En Windows, es posible usar la versión integrada proporcionada con Vortex. En Linux, en cambio, es necesario instalar el paquete tor (p.ej. `sudo apt-get install tor` en Kali).

##### Iniciar TOR```
python manage.py -w workspace1 tor -c start

[*] Starting TOR Browser, click on connect
Enumerar en en PwnDB```

python manage.py -w workspace1 search -c pwndb -D evilcorp.com

[] Starting search on PwnDB [>] Found 493 leaked accounts! [] Updating DB ... [+] Done!

root@kitploit:~
##### Detener TOR```
python manage.py -w workspace1 tor -c stop

[*] Stopping TOR browser

Recopilar endpoints

Vortex utiliza principalmente dos macrocategorías para los endpoints: VPN y endpoints de Microsoft (Office). Un objetivo se puede agregar tanto como un endpoint de Office o VPN, y Vortex intentará validar el endpoint como un endpoint de Office o VPN, respectivamente, usando un rango de validadores.

Agregar un endpoint de Office

Aclaremoslo con un ejemplo. El usuario necesita atacar el objetivo evilcorp.com, y quiere verificar si el dominio es un objetivo OWA, Lync, ADFS u O365.``` python manage.py -w workspace1 office -c add -D evilcorp.com

[#] OWA domain appears to be hosted internally [+] evilcorp.com is a valid OWA target! [-] evilcorp.com does not seem a valid LYNK target [-] evilcorp.com does not seem a valid ADFS target [-] evilcorp.com does not seem a valid IMAP target [+] evilcorp.com is a valid O365 target!

root@kitploit:~
##### Buscar subdominios para endpoints de VPN

Para endpoints de VPN, el usuario puede realizar una búsqueda de subdominios para encontrar hosts que ejecuten VPN Web Logins,
así:```
python manage.py -w workspace1 domain -c enum -D evilcorp.com

   ,d#####F^      ,yy############yy       ^9#######,
  ,######"      y###################by      ^9######,
  ######^     y#####F""       ^"9######y      "######]
 d#####^    ,#####" by klezVirus ^9#####,     ^######,
,#####]    ,####F    yy#######y,    ^9####b     ^######
[#####     ####F   ,###F""'"9####,    9####]     9#####
#####F    [####   ,##F^  yy   "###b    9####,    ^#####]
#####]    [###]   ###  dF""#b  ^###]   ^####]     #####]
9####b    [####   9##, 9bd [#]  [##b    #####     [#####
[#####     ####,   9##y, ,y##^  d##F    #####     [####]
 #####b    ^####y   ^"#####"   d###^   ,####]     d#####
 [#####,    ^####by          ,d###^    d####^     #####F
  9#####y     "#####byyyyyyd####F^    d####F     [#####9
   9#####b,     ""############"^    ,d####F     ,######
    ^######b,       ""'""'"^      ,d#####F      d#####F

[*] Starting subdomain passive enumeration
  [>] Found 10 subdomains
  [$] Elapsed time: 18.360117197036743
[*] Enumerating potential VPN endpoints (HTTPS on 443, 10443)
  [>] Found 1 hosts running an SSL webserver
  [$] Elapsed time: 18.916626691818237
[*] Trying to detect hosts with VPN web-login
  [>] Found 1 hosts with a VPN web login
  [$] Elapsed time: 32.919618368148804
[*] Updating DB...
  [+] Adding vpn.evilcorp.com:443 as a pulse target
  [>] Elapsed time: 18.920615434646606
[+] Done
Añadir manualmente un endpoint VPN

Para añadir manualmente endpoints VPN, por supuesto, especificar el dominio de nivel superior probablemente no sea suficiente. La forma correcta sería especificar un subdominio específico junto con el puerto específico en el que se ejecuta el Servidor Web VPN.``` python manage.py -w workspace1 vpn -c add -D vpn.evilcorp.com:443

[+] vpn.evilcorp.com:443 is a pulse target!

root@kitploit:~
#### Realizar un ataque de password spray o fuerza bruta contra OWA, ADFS, LYNC u O365

Para realizar un ataque de password spray o incluso de fuerza bruta, el único recurso necesario es una lista de contraseñas en forma de archivo de texto, con una contraseña por línea.```
python manage.py -w workspace1 office -c attack -P passwords.txt

   ,d#####F^      ,yy############yy       ^9#######,
  ,######"      y###################by      ^9######,
  ######^     y#####F""       ^"9######y      "######]
 d#####^    ,#####" by klezVirus ^9#####,     ^######,
,#####]    ,####F    yy#######y,    ^9####b     ^######
[#####     ####F   ,###F""'"9####,    9####]     9#####
#####F    [####   ,##F^  yy   "###b    9####,    ^#####]
#####]    [###]   ###  dF""#b  ^###]   ^####]     #####]
9####b    [####   9##, 9bd [#]  [##b    #####     [#####
[#####     ####,   9##y, ,y##^  d##F    #####     [####]
 #####b    ^####y   ^"#####"   d###^   ,####]     d#####
 [#####,    ^####by          ,d###^    d####^     #####F
  9#####y     "#####byyyyyyd####F^    d####F     [#####9
   9#####b,     ""############"^    ,d####F     ,######
    ^######b,       ""'""'"^      ,d#####F      d#####F

[*] Choose an endpoint type to attack, or all to attack any supported endpoint
0 : owa
1 : lync
2 : imap
3 : adfs
4 : o365
5 : all
 $> 4
[*] Running O365Enumerator
  [-] [email protected]:MrRobot2021! is not valid.
  [+] [email protected]:Joanna2021! is valid!
  [>] Found 1 valid logins
[*] Updating Db...
[+] Done

Realizar un ataque de pulverización de contraseñas o fuerza bruta contra endpoints de VPN

Para realizar un ataque de pulverización de contraseñas o incluso de fuerza bruta, el único recurso necesario es una lista de contraseñas en forma de archivo de texto, con una contraseña por línea.``` python manage.py -w workspace1 vpn -c attack -P passwords.txt

,d#####F^ ,yy############yy ^9#######, ,######" y###################by ^9######, ######^ y#####F"" ^"9######y "######] d#####^ ,#####" by klezVirus ^9#####, ^######, ,#####] ,####F yy#######y, ^9####b ^###### [##### ####F ,###F""'"9####, 9####] 9##### #####F [#### ,##F^ yy "###b 9####, ^#####] #####] [###] ### dF""#b ^###] ^####] #####] 9####b [#### 9##, 9bd [#] [##b ##### [##### [##### ####, 9##y, ,y##^ d##F ##### [####] #####b ^####y ^"#####" d###^ ,####] d##### [#####, ^####by ,d###^ d####^ #####F 9#####y "#####byyyyyyd####F^ d####F [#####9 9#####b, ""############"^ ,d####F ,###### ^######b, ""'""'"^ ,d#####F d#####F

[] Choose an endpoint type to attack, or all to attack any supported endpoint 0 : cisco 1 : citrix 2 : citrixlegacy 3 : fortinet 4 : pulse 5 : sonicwall 6 : all $> 6 [] Attacking vpn.evilcorp.com:443 [-] [email protected]:MrRobot2021! is not valid. [+] [email protected]:Joanna2021! is valid! [>] Found 1 valid logins [*] Updating Db... [+] Done

root@kitploit:~
#### Realizar un password spray o fuerza bruta utilizando credenciales filtradas

Dado que Vortex mantiene un registro de las credenciales filtradas en PwnDB, un usuario puede seleccionar probar todas las credenciales filtradas en lugar de proporcionar un archivo de contraseñas.

Sin embargo, tenga en cuenta que este comportamiento es muy diferente a un password spray normal. En un ataque de password spraying normal, de hecho, una única contraseña se prueba contra todos los usuarios. En un ataque con credenciales filtradas, las credenciales filtradas se prueban contra el usuario específico con el que fueron filtradas. Así, por ejemplo, si Vortex encontró las filtraciones:```
User                            Leaks
----------------------------    ----------------------------
[email protected]    ["ISecretlyLoveAngela2020!"]
[email protected]        ["Puppy19!", "MySweetJ111!"]

Vortex realizará los siguientes intentos, y solo los siguientes:``` [email protected]:ISecretlyLoveAngela2020! [email protected]:Puppy19! [email protected]:MySweetJ111!

root@kitploit:~
Para realizar este ataque, no se necesita ningún archivo de contraseñas, pero es necesario establecer el parámetro (-L, o --leaks).```
python manage.py -w workspace1 vpn -c attack -L

   ,d#####F^      ,yy############yy       ^9#######,
  ,######"      y###################by      ^9######,
  ######^     y#####F""       ^"9######y      "######]
 d#####^    ,#####" by klezVirus ^9#####,     ^######,
,#####]    ,####F    yy#######y,    ^9####b     ^######
[#####     ####F   ,###F""'"9####,    9####]     9#####
#####F    [####   ,##F^  yy   "###b    9####,    ^#####]
#####]    [###]   ###  dF""#b  ^###]   ^####]     #####]
9####b    [####   9##, 9bd [#]  [##b    #####     [#####
[#####     ####,   9##y, ,y##^  d##F    #####     [####]
 #####b    ^####y   ^"#####"   d###^   ,####]     d#####
 [#####,    ^####by          ,d###^    d####^     #####F
  9#####y     "#####byyyyyyd####F^    d####F     [#####9
   9#####b,     ""############"^    ,d####F     ,######
    ^######b,       ""'""'"^      ,d#####F      d#####F

[*] Choose an endpoint type to attack, or all to attack any supported endpoint
0 : cisco
1 : citrix
2 : citrixlegacy
3 : fortinet
4 : pulse
5 : sonicwall
6 : all
 $> 6
[*] Attacking vpn.evilcorp.com:443
  [+] [email protected]:ISecretlyLoveAngela2020! is valid!
  [-] [email protected]:Puppy19! is not valid.
  [-] [email protected]:MySweetJ111! is not valid.
  [>] Found 1 valid logins
[*] Updating Db...
[+] Done

Eso es prácticamente todo. A veces, la herramienta puede solicitar más información antes de realizar un ataque, como seleccionar el dominio/grupo VPN.

Mostrando resultados

En cualquier momento, puedes ver los inicios de sesión válidos que encontraste utilizando el siguiente comando:``` python manage.py db -w workspace1 -c found-logins [+] Valid Logins Collected: ID Target E-Mail Password


1 vpn.evilcorp.com:443 [email protected] Joanna2021! 2 vpn.evilcorp.com:443 [email protected] ISecretlyLoveAngela2020! [+] Done

root@kitploit:~
#### Búsqueda de perfiles en redes sociales

A veces, en compromisos grandes, conocer un poco más sobre nuestros objetivos nos ayudó a 
vulnerar sus defensas, como usar correos electrónicos personales o cuentas sociales para phishing,
o también encontrar respuestas a preguntas de seguridad para restablecer contraseñas).

Por esta razón, he integrado [Profil3r](https://github.com/Greyjedix/Profil3r). Esta herramienta
intenta identificar cuentas de redes sociales potencialmente relacionadas con un individuo.  

**NOTA IMPORTANTE**: Profil3r intenta localizar perfiles válidos mediante combinación de nombres. No puede
garantizar que los perfiles encontrados estén realmente relacionados con la persona objetivo. Por esta razón, los 
perfiles no se añaden automáticamente a la base de datos de Vortex.

Actualmente, es posible operar con Profil3r en dos modos:

* modo único
* modo múltiple

El modo único opera sobre un conjunto de palabras clave proporcionadas por el usuario:```
python manage.py -w workspace1 profile -c single -k elliot -k alderson

   ,d#####F^      ,yy############yy       ^9#######,
  ,######"      y###################by      ^9######,
  ######^     y#####F""       ^"9######y      "######]
 d#####^    ,#####" by klezVirus ^9#####,     ^######,
,#####]    ,####F    yy#######y,    ^9####b     ^######
[#####     ####F   ,###F""'"9####,    9####]     9#####
#####F    [####   ,##F^  yy   "###b    9####,    ^#####]
#####]    [###]   ###  dF""#b  ^###]   ^####]     #####]
9####b    [####   9##, 9bd [#]  [##b    #####     [#####
[#####     ####,   9##y, ,y##^  d##F    #####     [####]
 #####b    ^####y   ^"#####"   d###^   ,####]     d#####
 [#####,    ^####by          ,d###^    d####^     #####F
  9#####y     "#####byyyyyyd####F^    d####F     [#####9
   9#####b,     ""############"^    ,d####F     ,######
    ^######b,       ""'""'"^      ,d#####F      d#####F

[*] Starting single profile search
...
└── FACEBOOK ✔️
   ├──https://facebook.com/elliot
   ├──https://facebook.com/alderson
   ├──https://facebook.com/elliotalderson
   ├──https://facebook.com/aldersonelliot
   ├──https://facebook.com/elliot.alderson
   ├──https://facebook.com/alderson.elliot
...
[+] Done!

El modo múltiple opera sobre el nombre y apellido de cada usuario en la base de datos. Cualquier palabra clave adicional pasada en modo múltiple se utiliza en combinación con el nombre y apellido de los usuarios. Así, por ejemplo, puedes usar nombres o números adicionales para personalizar la búsqueda de perfiles.``` python manage.py -w workspace1 profile -c multi -k 90

,d#####F^ ,yy############yy ^9#######, ,######" y###################by ^9######, ######^ y#####F"" ^"9######y "######] d#####^ ,#####" by klezVirus ^9#####, ^######, ,#####] ,####F yy#######y, ^9####b ^###### [##### ####F ,###F""'"9####, 9####] 9##### #####F [#### ,##F^ yy "###b 9####, ^#####] #####] [###] ### dF""#b ^###] ^####] #####] 9####b [#### 9##, 9bd [#] [##b ##### [##### [##### ####, 9##y, ,y##^ d##F ##### [####] #####b ^####y ^"#####" d###^ ,####] d##### [#####, ^####by ,d###^ d####^ #####F 9#####y "#####byyyyyyd####F^ d####F [#####9 9#####b, ""############"^ ,d####F ,###### ^######b, ""'""'"^ ,d#####F d#####F

[*] Starting per-user profile search [>] Searching profiles for Elliot Alderson. Additional keywords: 90 ... └── TWITTER ✔️ ├──https://twitter.com/ElliotAlderson ├──https://twitter.com/AldersonElliot ├──https://twitter.com/Elliot90 ├──https://twitter.com/90Elliot ├──https://twitter.com/Alderson90 ... [>] Searching profiles for Tom Wellick. Additional keywords: 90 ... └── TWITTER ✔️ ├──https://twitter.com/Tom ├──https://twitter.com/Wellick ├──https://twitter.com/90 ├──https://twitter.com/Tom90 ├──https://twitter.com/90Tom ... [+] Done!

root@kitploit:~
#### Importación de Datos Externos

Vortex también ofrece soporte para importar datos externos relacionados con usuarios o endpoints.
Actualmente, solo se admiten archivos de texto plano y también hay soporte limitado para CSV.

Los tipos de datos que se pueden importar hasta ahora son:

* Direcciones de correo electrónico
* Nombres de usuario
* Endpoints VPN (target:port)
* Dominios
* ~~Filtraciones de PwnDB~~ OBSOLETO: solo usa el comando search
* Datos de LinkedIn extraídos con ~~Blues~~

Cada tipo de dato se admite en formato de archivo de texto normal, un elemento por línea.

## Hoja de ruta

Nuevas funcionalidades próximamente (2022):

* Generación inteligente de listas de contraseñas
* Extracción y correlación de datos

Por favor, envía errores, sugerencias o solicitudes de características.

## Créditos

* [byt3bl33d3r](https://twitter.com/byt3bl33d3r): Por su increíble trabajo en [SprayingToolkit][1], que inspiró el proyecto
* [nodauf](https://twitter.com/nodauf): Por su trabajo en [GoMapEnum](https://github.com/nodauf/GoMapEnum), que me dio otras ideas
* [quasart](https://github.com/quasart): El logotipo se generó con [spiral](https://github.com/quasart/spiral)
* [m8r0wn](https://twitter.com/m8r0wn): Por su trabajo en [CrossLinked](https://github.com/m8r0wn/CrossLinked), que es realmente una herramienta increíble
* [Greyjedix](https://github.com/Greyjedix/): Por su trabajo en [Profil3r](https://github.com/Greyjedix/Profil3r), que es una herramienta muy útil en ciertas circunstancias

[1]: https://github.com/byt3bl33d3r/SprayingToolkit
Descargar herramienta