Categoría Scripting
Un truquillo util para cuando te enseñan un código sospechoso de ser maligno por ejemplo oculto con $encode() o $chr() una forma segura de visualizarlo en un /echo y ver realmente que hace sin temor a que se pueda ejecutar. Cargar este alias y luego para usarlo /analiza.
alias analiza {
var %c $$?="Codigo a analizar"
$iif($chr(124) !isin %c,.timerA 1 0 echo 2 %c, echo 4 Contiene $chr(124) Separa los comandos.)
}
[Contenido propio publicado originalmente en gonzo.teoriza.com]
0
GONZO
28-01-2006
Una carencia del lenguaje Scripting de mIRC es el trabajo con bases de datos. Si haces un bot de un juego más o menos complejo necesitarás almacenar datos de cada jugador con puntuaciones o configuraciones, o un bot que se encarge de recopilar datos para estadisticas por ejemplo, en cualquier caso necesitarás un sistema para almacenar los datos y trabajar con ellos de la forma más rápida posible.
Entre las opciones que a uno se le puede ocurrir estan trabajar con variables pero es mala idea, porque es posible que se borren en un mal cierre y a la hora de hacer copias de seguridad no es nada facil, aunque la velocidad sea optima no se puede usar. Otra opcion es guardar los datos en texto plano y mediante bucles, /write y $read() buscar y sacar la información, esta formula usé para programar la primera versión del VirtuaLPoL fue una solución válida pero su rendimiento era lamentable, además el coste de programación se desorbitó hasta tener más de 1300 lineas de código. Otra opción es añadir .dll especiales para el efecto como la dll para conectar a bases de datos SQL, pero no me gusta añadir addons ni dll al mIRC.
La solución más fácil que propongo es trabajar con archivos .ini Son archivos cuya estructura permite guardar y extraer datos incluso sacar totales de items y similar. Su estructura es la siguiente:
[seccion]
item1=contenido del item1
item2=contenido del item2
Hasta aquí bien, usando
/writeini y
$readini() trabajas con los datos, ahorrando bucles y de forma muy eficiente. Pero surge un problema, al trabajar con nicks te das cuenta que estos tienen caracteres que el
item no acepta entonces es imposible trajar bien con inis, pues la clave es el item y si trabajas con nicks y sus datos es necesario que el item sea el nick. La solución que propongo a este problema es codificar el nick con
$encode($lower(ELNICK),m) de esta forma el nick
[Prueba^_ se convertirá en
W3BydWViYV5f que es aceptado como item. Ahora solo es añadir ese código cada vez que se tenga referenciar el item y problema resuelto. En el contenido puedes usar separadores (yo siempre uso ":" y ".") y con
$gettok() gestionar los datos de cada item.
[Contenido propio publicado originalmente en gonzo.teoriza.com]
0
GONZO
28-01-2006
El punto débil de una red IRC es que hoy en dia conectar a ellas es trivial. El problema viene cuando se conectan usuarios masivamente con programas automáticos para atacar la red, propagar virus o hacer campañas de spam. Con la evolución de internet los problemas han ido evolucionando y hoy en dia es casi imposible controlar las conexiones por IP ya hay miles de máquinas infectadas por troyanos o que dan servicios que pueden ser utilizados publicamente de forma descontrolada.
La solución que propongo es una implementación de los conocidos sistemas de validación por imagenes que ya abundan por toda la red. Consisten en mostrar en los formularios una imagen con un numero, este ha de ser visualizado e introducido en un campo, el numero esta desfigurado de tal forma que sea muy difuso para que lo entienda un programa OCR y natural para un humano. La idea es la misma pero en IRC, es decir dibujando los numeros en ASCII de la forma mas aleatoria y complicada posible pero siempre siendo entendible por cualquier humano.
Las formas de aplicar el sistema son variadas, pero la más inovadora que se me ocurre es hacer validar on connect a todos los usuarios sin registrar. De esta forma para conectar a la red tendria que validar o registrar el nick (más faciles de gestionar) limpiando la red de ataques, virus y spamers.
El resultado es algo así:
Hola, si eres humano teclea este numero por favor.
#############################
#############################
#############################
#############################
#############################
#############################
#############################
Me guardo el código por aquí, pero si a alguien le interesa o lo quiere implementar en su red me encantará enseñarlo si contactan conmigo.
[Contenido propio publicado originalmente en gonzo.teoriza.com]
0
GONZO
28-01-2006
Una oleada más de spamers azotan las redes de IRC. Esta vez un gusano que se propaga a sí mismo está haciendo spam de una dirección que contiene el virus. Entran a los canales grandes, de 300 personas para arriba y molestando al entrar continuamente y haciendo spam.
Al grano, el patrón es bastante bueno, nick y realname con lista pero el identd es generado por letras minusculas aleatorias de tamaño variable. Además la lista de nicks y realnames estara incluida en el virus y supongo que se podran obtener de alguna manera, otro punto debil. Pero lo que más va a facilitar el trabajo de eliminarlos es que todos tienen un away inconfundible, eso sera su fracaso.
He creado un pequeño código que los expulsa del canal, para ello necesita hacer whois cuando entra alguien al canal con el identd característico. Lo más seguro es que sea necesario +k ya que esta orientado para los bots de canales grandes. Mantendré actualizado al dia el script en este post por si saliesen nuevos patrones o posibles mejoras.
Descargar: antidoto.mrc 1.4 - 1kb
Instalación: Guardar comoâ?¦ > Colocar antidoto.mrc en raiz del mIRC > Modificar #ELCANAL por el canal en el que actuará > Ejecutar /load -rs antidoto.mrc
[Contenido propio publicado originalmente en gonzo.teoriza.com]
0
GONZO
28-01-2006
Otro addon para IRC. Consigue simular un ignore de los mensajes MeMo de la red IRC-Hispano. Lo consigue ocultando los mensajes y borrandolos una vez que llegan. Tiene una lista de nicks a ignorar gestionada por los comandos /memoignore add NICK y /memoignore del NICK. Es un apaño sencillo hasta que se implemente en el IRCd. Como es costumbre pulsando en ampliar se visualiza el sencillo código para los curiosos scripters.
Descargar: memoignore 1.0 - 1kb
Instalación: Guardar comoâ?¦ > Colocar en raiz del mIRC como memoignore.mrc > Ejecutar /load -rs memoignore.mrc
[Contenido propio publicado originalmente en gonzo.teoriza.com]
0
GONZO
28-01-2006
Voy a publicar este addon ya que su resultado es realmente bueno y que es imposible mantenerlo privado. Así que lo publico para que pueda ser util a todo el mundo.
Se trata del anticlonesx Su función es bloquear y silenciar los ataques de clones a canales de IRC. En concreto solo anula los ataques producidos con el programa ClonesX osea la gran mayoría.
Lo que hace es analizar los patrones y cuando entran repetidamente usuarios con estos patrones se activa la maquinaria, lo primero que hace es fijar modos +RM durante 120 segundos, con lo que se bloqueara el canal esto lo consigue en el mismo segundo en el que entran los clones con lo cual solo podran entrar los que quepan en ese segundo normalmente no más de 10. Después los banea de forma anidada para que pueda poner más bans en menos tiempo (+bbbbbb). También incorpora un protector de querys masivos poniendo +R durante dos minutos en caso de activarse.
Con el comando /anticlonesx se activa o desactiva y para cargar el addon se coloca el archivo anticlonesx.mrc en el raiz del mIRC y se carga con /load -rs anticlonesx.mrc. Puedes ver el código sin necesidad de instalarlo pulsando en Ampliar pero para que funcione correctamente es necesario cargar con /load el archivo. Con el comando //set %anticlonesx.numeroclones N fijas el numero N de clones que tienen que entrar para activarse la protección.
Descargar: anticlonesx 1.0 - 7kb
Instalación: Guardar comoâ?¦ > Colocar anticlonesx.mrc en el raiz del mIRC > Ejecutar /load -rs anticlonesx.mrc
[aclaración: He visto que ya existia otro anticlonesx de similar función, he de aclarar que esto no tiene nada que ver con el de EvilKing y Zyberdog y que la coincidencia del nombre ha sido por simple falta de originalidad]
[Contenido propio publicado originalmente en gonzo.teoriza.com]
0
GONZO
28-01-2006
Página siguiente ►◄ Página anterior