El libre pensamiento para un internet libre
No estas registrado.
Muy buenas, antes que nada, saludos al foro!
A mediados del año pasado publiqué esta herramienta. Para ser sinceros, lo que subí (era una beta) era bastante chapucero y presentaba incompatibilidades a puñados.
Por eso, hace un par de días me propuse pulir un poco la herramienta y, por fin, sacarla de la versión "Beta 0.5" en la que llevaba más de nueve meses
El caso es que tras hacerle unas reformas, ahora, ya únicamente se necesita UNA INTEFAZ y NO SE NECESITA MODO MONITOR.
El objetivo del script es obtener handshakes atacando al cliente, sin necesidad de tener alcance a la red en cuestión. Pongamos un ejemplo de como funciona: digamos que Juan, nuestro vecino, trabaja en las oficinas de Microsoft, y queremos sacar la contraseña de la wifi de las oficinas, pero no podemos ir allí (a las oficinas) con el ordenador; con está herramienta crearemos una red con el nombre "OficinasMS-3", ya que sabemos el nombre, y Juan, como tiene ese nombre de red memorizado en su teléfono, se conectará automáticamente mandándonos la contraseña cifrada, que después, podremos crackear con hashcat, aircrack o lo que queramos.
Concepto:
El script levanta la red WPA2 usando hostapd y captura el tráfico con tcpdump y, acto seguido, tras tener 2 de los 4 paquetes EAPOL del handshake, lo convierte a hccapx con un script en python que he apañado. El problema radica en que todavía no he probado mucho el script que convierte de cap a hccapx, por lo que, aunque no debería dar problemas, si da problemas avisad por favor. De todas formas pronto publicaré como generar un hccapx manualmente a partir de una captura de red, por si a alguien le saca de un apuro.
Descarga:
GitHub -> https://github.com/Miguelillo000/halfhandshaker (Si le dais una estrellita es de agradecer)
Un saludo y muchas gracias!
Ultima edición por Miguelillo0 (28-04-2021 18:44:14)
Desconectado
Muchas gracias a ti por compartir tu trabajo y bienvenido a wifi-libre.
Tú presentación está muy bien hecha y se nota que le has puesto esfuerzos y cariño a tu código.
Desconectado
Muchas gracias kcdtv!
Un placer formar parte de este foro!
Desconectado
Hola
Solo una pequeña sugestión, sin importancia: ifconfig se considera cómo obsoleto (oficialmente desde... 2011) y no está instalado por defecto en las distribuciones hoy en día.
Ifconfig es obsoleto... ¡Actualiza tus sintaxis con el comando ip!
En tu script usas ip que es el sucesor oficial de ifconifg y esto es lo recomendable.
En tu función check_interface haces
if [ -z "$(ip link | grep $interface:)" ]; then
error=1
fi
Pero luego usas ifconfig en random_mac y original_mac para levantar y bajar las interfaces
Y esto lo puedes hacer perfectamente con ip.
Tomando en ejemplo random_mac
En lugar de
# Mac random
function random_mac(){
printf " $s1 $changing_mac "
ifconfig $interface down > /dev/null && macchanger -r $interface | grep "New" | awk -F " " '{print $2}' | head -c 18 && ifconfig $interface up > /dev/null || echo " /\ ERROR /\\"
echo
echo
}
Haces
# Mac random
function random_mac(){
printf " $s1 $changing_mac "
ip l s $interface down > /dev/null && macchanger -r $interface | grep "New" | awk -F " " '{print $2}' | head -c 18 && ip l s $interface up > /dev/null || echo " /\ ERROR /\\"
echo -e "\n"
}
Y quitas así una dependencia extra de tu variable dep_list. Dependencia que puede ser problemática ya que tiende a salir de los repositorios de las distribuciones mientras que ip está en todas por defecto.
Te he puesto la sintaxis corta, la sintaxis completa es
ip link set <interfaz> up/down
que se abrevia así
ip l s <interfaz> up/down
Es un detalle, mucha tutoriales y scripts siguen empleando ifconfig, lo que pasa es que hace ya un par de años o tres que estos scripts devuelven errores porque falta ficonfig en el sistema del usuario. Pasando a ip te cubres la espalada.
Desconectado
Muchas gracias kcdtv!
Supongo que fallo mio, acostumbro a user ifconfig siempre y no había valorado el hacer el cambio a "ip" pero desde luego que lo haré.
Mismamente esta tarde actualizo, si todo va bien.
Por cierto, buen foro! Apuesto por que me veréis más por aquí
Edit: Ya está solucionado!
Ultima edición por Miguelillo0 (29-04-2021 14:07:06)
Desconectado
Supongo que fallo mio
No: Fallo nuestro.
Somos tod@s "culpables", personalmente me enteré 3 o 4 años despuès que la Linux Fundation anunciará el cambio y llevaba ifconfigurando alegremente "toda la vida". Y para ser sincero no me gustó nada aquel cambio, ahora lo tengo asimilado, pero me costó.
Creo que es uno de los comandos que se ha quedado más tiempo en uso siendo "jubilado" en la historia de los paquetes linux. Las distribuciones han seguido poniéndolo por defecto hasta hace poco.
Pero ahora si que se empieza a ver el final, en un ubuntu 20.04 LTS (distribución de 2020 con soporte a largo a plazo)
kcdtv@zut:~$ sudo ifconfig
sudo: ifconfig: orden no encontrada
kcdtv@zut:~$ sudo ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |pero es aconsejable mirar "por adelante" y si se puede quitar una dependencia mejor
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
vrf | sr | nexthop }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec | -j[son] | -p[retty] |
-f[amily] { inet | inet6 | mpls | bridge | link } |
-4 | -6 | -I | -D | -M | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } | -br[ief] |
-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -N[umeric] | -a[ll] |
-c[olor]}
Lo que no ha ayudado a cambiar los hábitos es que ifconfig tiene muchísimas menos opciones que ip.
Cierto, Ifconfig es menos potente, pero las sintaxis son mucho más directas y simples.
El ejemplo de cómo bajar o subir una interfaz habla de por si solo: ifconfig <interfaz> up vs ip link set <interfaz> up.
Con ip hay más parámetros y es más largo.
Una vez que estás acostumbrado y conoces las abreviaciones ("l s" en lugar de "link set") es lo mismo, hay incluso un carácter menos con ip (usando sintaxis reducida).
Bueno, paro de dar la chapa con esto...
Si estás abierto a sugestiones hay un par de optmizaciones que veo.
Pero repito, tú código está ya muy limpio y muy curado, no necesita nada.
Es más que cada uno, por las batallas que ha llevado haciendo bash, ve unas cosas que otro ha visto de otra forma.
Te lo puedo proponer como "commit" en github si lo prefieres.
Un saludo y otra vez gracias por esta linda presentación y por compartir este script muy curado.
Desconectado
Si estás abierto a sugestiones hay un par de optmizaciones que veo.
Pero repito, tú código está ya muy limpio y muy curado, no necesita nada.
Es más que cada uno, por las batallas que ha llevado haciendo bash, ve unas cosas que otro ha visto de otra forma.
Te lo puedo proponer como "commit" en github si lo prefieres.
Un saludo y otra vez gracias por esta linda presentación y por compartir este script muy curado.
Sin dudarlo, propón el commit o como prefieras. Agradezco toda ayuda o sugerencia!
Desconectado
Puedo testificar de la eficiencia del concepto, es casi cómico.
Me explico: Tengo el router en el salón, y estoy en mi cuarto, en la otra planta.
La señal del router es muy buena, la recibo desde mi móvil en mi cuarto con un rssi de -60, tengo el icono del gestor de redes que está "a full".
Ejecuto el script desde mi ordenador de sobre mesa en mi cuarto con un adaptador USB sin alta potencia, tiene sus 20dBm legales, nada de otro mundo.
Lo único: está mucho más cerca del móvil.
Y obtengo el handshake en un par de minutos
Qué la mac sea diferente no le importa lo más mínimo al android.
Es imparable, si la red trampa se capta con más fuerza que la red legitima a la cuál estamos conectado, aunque la conexión este muy buena, Android va a intentar conectarse a la otra red.
Con una antena direccional y un adaptador wifi USB de alta potencia podemos obtener el handshake así incluso cuando la victima está a pocos metros de su Punto de Acceso.
Podemos también echar un ojo en los probes del paquete *.cap que el script ha pillado para ver los essids que la vicitima tiene guardados y sacarle los handshakes de todos los PA que visita, ya que si Android detecta una red guardada en los perfiles con más señal, va a intentar una conexión con dicha red
Desconectado
Iba a proponerte un commit pero sería quizá un poco abrupto sin explicaciones
Tampoco es algo grave, si lo quieres decir tal cuál no pasa nada, el script es funcional.
El error: Cuando ejecutas el script sin una dependencia tienes un error (halfhandshaker.sh: línea 77: exit_script: orden no encontrada)
sudo bash *.sh
/!\ Falta dependencia: tcpdump
halfhandshaker.sh: línea 77: exit_script: orden no encontrada
_ _ _ _
| | | || | | |
| |______| || |____________| | Version: 1.0
| ______ || ____________ | By Miguelillo & fromCharCode
| | Half | || | Handshaker | | 27/04/2021
|_| |_||_| |_|
-> https://github.com/Miguelillo000/halfhandshaker <-
Opciones:
-h, --help Muestra esta ayuda
-v, --version Muestra la version del script
-i, --interface <interfaz> Especifica la interfaz a usar
-e, --essid <nombre> Especifica el nombre del AP falso
-o, --output <nombre> Elige el nombre del archivo .cap y hccapx
-n, --no-auto-stop No para automaticamente cuando se detecta un handshake
-r, --random-mac Cambia la mac de la tarjeta de red por una al azar
Ejemplos:
./halfhandshaker.sh -i wlan0 -e "Bar-Juanito" -o "red-bar"
./halfhandshaker.sh -i wlan0 -e "Oficinas-12" -r
./halfhandshaker.sh -i wlan0 -e "Red-profesores" -r -o "wifi-profes"
Esto es porque ejecutas la función check nada más declararla. Es cómo no hacer una función. El interprete se para en este punto y no va más allá, no tiene a la función exit_script en su buffer porque está declarada despuès y no llegó. .
Puedes hacer un exit en lugar de llamar la función exit_script
O bien invocar la función check antes de attack.
Creo que sería mejor hacer un exit por consistencia en la salida: Cuando tienes un error por falta de privilegios, se ve claramente el error y no se ve la ayuda. Es limpio y entendible por el usuario.
En el caso de las dependencias, si no haces un exit en este punto y llamas exit_script el error no se ve en consola porque la consola se rellena con la ayuda.
Un principio del script es pensar que si hay un error que se puede hacer, el usuario lo va a cometer.
En este caso tiene una dependencia no cumplida pero no lo ve en consola sin volver atrás, va a pensar que es un problema de sintaxis porque tiene la ayuda con ejemplos de sintaxis, va a probar varias sintaxis sin éxito y va a pensar que el script está mal.
Luego, sobre la función check, puedes reducirla con algunos tricks (esta parte es pura cosmetica).
# Comprueba si tiene permisos de administrador
if [[ "$(id -u)" != "0" ]]; then
echo; echo " $s3 $root_required"; echo
exit 0
fi
Cuando haces un if con una sola condición puedes generalemente "emular" un operador ternario así:
condición || se ejecuta una orden si falso
condición && se ejecuta una orden si verdadero
en este caso puedes hacer
id -u | grep -q "^0$" || { echo -e "\n $s3 $root_required \n"; exit 1; }
haces id -u que mandas en pipe a tu comando grep.
- Se usa -q para silenciar la salida (sino aparecerá un 0 feo en la consola)
- Los ^ y $ son para hacer un grep "estricto" sobre la expresión regular 0. el primer y el ultimo carácter deben ser 0 (para evitar que considere como verdadero 100 o 1000 que contiene 0)
A partir de este punto, si no se verifica tu "condición", o sea el id del usuario es otro que 0, se ejecuta lo puesto despuès ||
Es decir el mensaje de error con echo. No es necesario ejecutar echo varias veces para hacer lineas en blanco, puedes usar \n (salto de linea)
También en este caso sería más un exit 1 que 0 ya que es un error (faltan privilegios)
Sobre la otra parte de la función check
# Comprobando las herramientas
no_tool=0
dep_list="tcpdump hostapd ip macchanger xterm python3"
for dependency in $dep_list; do
if [ -z "$(command -v $dependency)" ]; then
echo " $s3 $needs $dependency"
no_tool=1
fi
done
if [ "$no_tool" == "1" ]; then
exit_script
fi
Puedes prescindir de las dos primeras variables y de la condición if al final haciendo así:
for dependency in tcpdump hostapd ip macchanger xterm python3 ; do
if [ -z "$(command -v $dependency)" ]; then
echo -e "$s3 $needs $dependency"
no_tool=1
fi
done
[[ -z no_tool ]] && exit 1
tu array con las dependencias lo puedes poner directo en tu for
Y luego no hace falta "iniciar la variable" cómo puede ser el caso en otros lenguajes, a bash no le molesta que tu variable no_tool no este declarada en este caso.
Haciendo así tu variable solo se define si se cumple la condición if (falta una dependencia)
Luego en lugar de hacer una condición más usas de nuevo la emulación del operador ternario pero está vez con && (se ejecuta si la condición es verdadera).
[[ -z no_tool ]] sería tu condición, devuelve "falso" si tu variable no está definida o es "null"
Si está definida (entonces falta una dependencia) se ejecuta la orden que sigue (exit 1)
La parte cosmetica no importa, quizás más que nada es quitar el error (que tampoco impide la correcta ejecución del script)
Puedo proponerte un commit si quieres ya que lo tengo listo en mi fork.
Un saludo
Desconectado
Muchísimas gracias por todo: el tiempo, el interés, etc.
Propón commit si lo tienes ya listo, sino lo corrijo yo!
(pd. te he mandado un correo mediante el foro, no sé si irá eso bien. Si no te ha llegado hazmelo saber)
Y... como siempre: Un saludo!!
Desconectado
Hola
He intentado usar el script pero, tengo inconvenientes para su funcionamiento. En el primer intento, me pedía que instalará la dependencia Macchanger, la instale y procedí a intentar ingresar el comando como se muestran en los ejemplos, no funcionó salió un error: /!\ Se necesita especificar una interfaz valida. Abrí el script y encontré el comando de las interfaces, entonces de manera independiente probé el comando: "ip link | grep $interface:" no encontré el parámetro "wlan0" las disponibles eran las siguientes:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/loopback c6:5f:7d:3f:d3:6d brd 00:00:00:00:00:00
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 20:89:84:3f:cb:4d brd ff:ff:ff:ff:ff:ff
3: wlp2s0b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether f4:b7:e2:94:d4:d3 brd ff:ff:ff:ff:ff:ff
Supuse que cambiando el parámetro del comando a alguna de las opciones anteriores funcionaría, pero al intentar por segunda vez se quedó cargando en los puntos de colores. Revisé el video y me di cuenta que a mi no me salía la consola del hostapd, no estaba instalado, sería genial que el programa avisara igual que con macchanger. En el último intento, me aprece la consola de hostapd pero la de tcpdump espabila y se desaparece, pero al fin y al cabo no logré poner a funcionar el script, el hostapd se queda en:
configuration file: hostapd.conf
using interface wlp2s0b1 with hwaddr a2:aa:28:d6:72:06 and ssid "FLIA GUERRA"
wlp2s0b1: interface state uninitialized->Enabled
wlp2s0b1 : ap-enabled
wlp2s0b1 : sta c8:52:61:bd:d0:ea IEEE 802.11: disassociated
wlp2s0b1 : interface-disabled
wlp2s0b1 : interface enabled
failed to set beacon parameters
ahí se queda cargando de nuevo en los puntos de colores, al para el proceso aparece un mensaje:
tcpdump: no process found
Que estoy haciendo mal?
Ultima edición por cmateo (19-05-2021 23:37:56)
Desconectado
Buenos días cmateo y bienvenido a wifi-libre
¿Podrías decirnos que distribución usas y darnos la versión de tcpdump?
Te comento esto porque he probado rápido en Ubuntu LTS (20.04) con las herramientas tal y cómo vienen en los repositorios ( tcpdump está en una versión "estable" un poco más antigua que en otros sistemas) y he tenido el mismo fallo que tú: La consola con tcpdump se abre y se cierra de inmediato, el proceso no aguanta. En la consola principal se lee "tcpdump: no process found"
no encontré el parámetro "wlan0" las disponibles eran las siguientes:
Esto es "normal": Con la configuración por defecto de un sistema que tira de systemd (casi todos) hay un cambio de política de nombramiento de las interfaces.
Las interfaces wifi internas se llaman wlp2sX, las interfaces USB wlx+mac..
Hay varios motivos por ello (personalmente no los valido) pero queda claro que no simplifica el uso en consola.
Puedes revertir el cambio y volver a la vieja política de nombramiento wlanX modificando las reglas systemd.
O bien renombrar tu interfaz con el comando iw antes de ejecutar el script.
wlp2s0b1 : interface enabled
failed to set beacon parameters
Pueden ser dos cosas:
Proceso conflictivo: Puedes usar
airmon-ng check kill
para parrar todos los procesos conflictivos de golpe (wpa_suppliacant, NetworkManager...). Una vez hecho asegúrate de que tu interfaz wifi esté bien activa con:
rfkill unblock wifi
sudo ip l s wlp2s0b1 up
Tu chipset no es compatible con el modo AP, necesario para usar hostpad. Para averiguarlo ejecuta
iw list
y tendrás que ver algo así (si tu interfaz es compatible:
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
Vez que tengo AP bajo managed
Para probar el script he usado Kali y no le he dado más vueltas al asunto, pero si Miguelillo0 quiere brindar más soporte y mejorar la detección de eventuales bugs, me apunto para la operación.
Habría que probar en Arch y Debian/Ubuntu que son las bases más importantes y tiran de systemd.
Con una o un par de funciones más se puede, es cuestión de bien identificar los problemas que pueden surgir.
edit
Acabo de arrancar el Xubuntu, el problema está en la interfaz, no sé porque, con tcpdump no arranca y si añado un "echo $interface" justo antes de que ejecuta tcpdump no aparece. Pero sí que va bien con hostapd...
No es un error con las xterm ya que si ejecuto el comando indicando la interfaz me funciona.
Desconectado
Saludos kcdtv.
La distribución que utilizó es Linux Lite, esta basada en Ubuntu. En definitiva el problema eran los procesos conflictivos, actualice manualmente tcpdump, pero no funcionó, después verifique que mi chipset fuese compatible con el modo APT y si lo era. por ultimo, intenté realizar los pasos que agregaste en procesos conflictivos y resultó ser eso, el script funcionó, se abrieron las dos consolas y se guardo el ha handshake . Lo que si causo esto, es que el wifi se deshabilitara por lo que hay que habilitarlo de nuevo, dejo los comandos por si las moscas:
service NetworkManager restart
Reinicia el administrador de redes
iwconfig
Para verificar si esta activo el modo monitor, esto es cierto, si el nombre de la interfaz prosigue de la palabra "mon". Sí, esta activo digitamos el siguiente comando
airmon-ng start wlp2s0b1
Por último, se detiene la interfaz de monitoreo
airmon-ng stop wlp2s0b1
Listo se activa de nuevo el wifi, por lo menos ese fue la manera que me funciono de nuevo el wifi. Por otro lado estoy teniendo problemas para descifrar el .hccapx pues, me da el siguiente error.
hashcat (v5.1.0) starting...
* Device #1: Not a native Intel OpenCL runtime. Expect massive speed loss.
You can use --force to override, but do not report related errors.
No devices found/left.
Started: Thu May 20 13:07:47 2021
Stopped: Thu May 20 13:07:47 2021
con una versión más actualizada tengo:
hashcat (v6.2.1) starting...
/usr/bin/modules/module_00000.so: No such file or directory
If you are using the hashcat binary package this error typically indicates a problem during extraction.
For example, using "7z e" instead of using "7z x".
Started: Thu May 20 13:07:21 2021
Stopped: Thu May 20 13:07:21 2021
Sigo buscando como descifrar la contraseña, gracias kcdtv por la información.
Ultima edición por cmateo (20-05-2021 23:25:49)
Desconectado
Buenas, muchas gracias a Kcdtv por responder anteriormente!
El problema ya es de hashcat, no estoy seguro de que sea pero al parecer no detecta una GPU... Puedes probar tirando de procesador con aircrack-ng. Desde la version 1.3 aircrack soporta archivos hccapx.
Un saludo!
Desconectado
no estoy seguro de que sea pero al parecer no detecta una GPU...
Esto es.
Para ver cuales son los dispositivos detectados por hashcat puedes ejecutar
hashcat -I
Si quieres averiguar que pasa te invito a abrir un tema en nuestro foro dedicado : El rincón del GPU y de la búsqueda de la máxima velocidad
Desconectado
Hola gente linda, como andan.
Lo quise probar y no me fue muy bien, se me cierra al momento de escanear por redes. Busque info en inet pero no encontre nada sobre este script en kali.
RT2870/RT3070 adapter
Desconectado
Buenos días troh
A priori el script funciona bien en Kali sin hacer maniobras extras, es con Kali que lo he probado. Y si bien me recuerdo he probado con un rt3070 USB.
Nos ayudaría ver que pasa en la consola principal antes de que el script se detenga.
Un saludo
Desconectado
Hola kcdtv, tanto time.
Lo intente con otro adapter (ath9k_htc) y obtengo el mismo resultado.
No se si hice bien, pero en consola corro
sudo bash handshaker.sh | tee log.txt
y el log no muestra info relevante.
Ejecuto el script y me detecta wlan0, la selecciono, aparece la layenda inciando el escaneo, presione ctrl + c cuando quiera y automaticamente se me cierra la ventana. Es todo muy rapido.
Dejo mas data, es una vmware machine de kali linux 2021.2
Desconectado
Intenta correr el script así en lugar de usar tee:
sudo bash ./halfhandshaker.sh -i wlan0 -e "Bar-Juanito" >> log.txt
Así volcarás el contenido de la consola principal en el fichero "log.txt" y podremos ver el mensaje de error.
Desconectado
Pido mil disculpas pero crei haber posteado en el topic correspondiente.
https://www.wifi-libre.com/topic-154-ob … age-2.html
Este script me funciona, es handshaker el que no puedo hacer andar. Juro que crei haber posteado en el lugar correcto.:(
https://www.wifi-libre.com/topic-154-ob … age-2.html
La version 1.1.
Desconectado
No pasa nada, es divertido.
Sí, probablemente habría que meter le mano (a handshaker "entero").
Es viejo y sin mantenimiento.
Miraré esto un día de estos, quizá en agosto tendré tiempo y asi practicaré un poco bash.
Desconectado
Quiero Aprender A Hackear Redes Infinitum Alguien Me Enseña Pago 300
Desconectado
¿Y para que quieres aprender a hacer eso?. Este es un foro para compartir conocimientos donde a nadie se le paga y mucho menos se le cobra por lo que pueda aprender. Tu consulta no tiene nada que ver con el asunto de este hilo, te recomiendo que te leas nuestras normas
Desconectado
Tema | Respuestas | Vistas | Ultimo mensaje |
---|---|---|---|
3 | 132 | Ayer 15:03:20 por wifiyeah | |
19 | 573 | 03-02-2023 18:25:01 por elEstudiante | |
21 | 8787 | 01-02-2023 23:46:07 por kcdtv | |
0 | 202 | 26-01-2023 19:35:15 por kcdtv | |
Pegado: |
24 | 2294 | 26-01-2023 19:00:06 por Koala |
Ultimo usuario registrado: Facu_Hok
Usuarios registrados conectados: 0
Invitados conectados: 9
Número total de usuarios registrados: 2,422
Número total de temas: 1,629
Número total de mensajes: 15,501
Atom tema feed - Impulsado por FluxBB