begin process at 2010 09 09 14:00:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

AddOns

 > BOTSPAM SYSTEM DETECTOR / ANTI SPAM

BOTSPAM SYSTEM DETECTOR / ANTI SPAM


 Information sur la source

Note :
6,33 / 10 - par 3 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :AddOns Niveau :Initié Date de création :06/08/2004 Date de mise à jour :12/10/2004 10:24:06 Vu :4 015

Auteur : HeXoR

Ecrire un message privé
Commentaire sur cette source (39)
Ajouter un commentaire et/ou une note

 Description

Ça sert en fait à détecter les bots spammers qui ont des nicks comme "Kjyvbnqdbp" au join d'un salon. Une fois détecter le bot est kické.
Evidemment ça ne fonctionne pas à tout les coups : le principe est de calculer le pourcentage de consonnes dans le nick, et si ce pourcentage est supérieur à 60% (valeur par défaut), alors il est kické :
* Kjyvbnqdbp kicked from #microsoft by HeXoR- (BotSpam System Detector by HeXoR [Si vous n'êtes pas un robot revennez avant 60secs])
Si ce n'est pas un bot, la personne peut revenir avant 60secs (valeur par défaut) et celle-ci est ajoutée ensuite aux "exceptions", c'est à dire ajoutée à la liste des nick à ne pas kicker la prochaine fois qu'elle reviendra.

Les valeurs par défaut sont modifiable par l'intermédiaire du dialog accessible dans Menu Bar.

Source

  • ---- BotSpam System Detector V1.1 & $convoy V1.1 coded by HeXoR timothee@hush.ai ----
  • on *:load:dialog -m bsd bsd
  • menu menubar {
  • -
  • BotSpam System Detector:dialog -m bsd bsd
  • -
  • }
  • alias convoy {
  • var %v = aeiouy, %c = 0
  • var %a = $len($1)
  • while %a { if $mid($1, %a, 1) !isin %v { if ($v1 isalpha) inc %c } | dec %a }
  • return $iif($prop == c, $calc(%c / $len($1) * 100), $calc(($len($1) - %c) / $len($1) * 100))
  • }
  • on *:join:*:{
  • if $me isop # && $len($nick) > %bsdnl && $convoy($nick).c > %bsd%c && %bsds {
  • var %n = $gettok($nick, 1, 124)
  • if !$readini(bsd.ini, ex, %n) {
  • echo # $timestamp 4-BotSpam System Detector-  $+ $nick $+  est sûrement un robot
  • kick # $nick %bsdmk
  • writeini bsd.ini ex %n x
  • .timerbsd_ [ $+ [ %n ] ] 1 %bsdns remini bsd.ini ex %n
  • }
  • elseif $timer(bsd_ [ $+ [ %n ] ]) { .timerbsd_ [ $+ [ %n ] ] off }
  • }
  • }
  • dialog bsd {
  • title "BotSpam System Detector"
  • size -1 -1 125 97
  • option dbu
  • text "Nombre de secs permettant à qqun « pris pour un robot » pour pouvoir revenir :", 1, 5 10 100 15
  • edit "", 2, 106 12 15 10, limit 3 center
  • text "Message de kick :", 3, 5 27 42 9, center
  • edit "", 4, 48 26 73 10, autohs
  • text "Detecter en tant que robot si le pseudo contient plus de :", 5, 5 38 118 13
  • edit "", 6, 5 52 15 10, limit 2 center
  • text "Codé par HeXoR - 2004 ", 7, 0 89 58 8
  • link "timothee@hush.ai", 8, 79 89 46 8
  • check "BSD activé", 9, 1 0 37 10
  • edit "", 11, 5 62 15 10, limit 2 right
  • text "% de consonnes", 10, 22 53 42 8
  • text "lettres", 12, 22 63 25 8
  • button "Manipuler les exceptions", 13, 5 74 116 12
  • button "", 999, 0 0 0 0, ok
  • }
  • on *:dialog:bsd:*:*:{
  • if $devent == init {
  • if !%bsd { set %bsd on | set %bsdns 60 | set %bsdmk BotSpam System Detector by HeXoR [Si vous n'êtes pas un robot revennez avant 60secs] | set %bsd%c 60 | set %bsdnl 6 | set %bsds $true }
  • did -a bsd 2 %bsdns
  • did -a bsd 4 %bsdmk
  • did -a bsd 6 %bsd%c
  • did -a bsd 11 %bsdnl
  • if (%bsds) did -c bsd 9
  • }
  • elseif $devent == edit {
  • if $did == 2 { if $did(bsd, 2).text !isnum { did -ra bsd 2 60 } | else { set %bsdns $v1 } }
  • elseif ($did == 4) set %bsdmk $did(bsd, 4).text
  • elseif $did == 6 { if $did(bsd, 6).text !isnum { did -ra bsd 6 60 } | else { set %bsd%c $v1 } }
  • elseif $did == 11 { if $did(bsd, 11).text !isnum { did -ra bsd 11 } | else { set %bsdnl $v1 } }
  • }
  • elseif $devent == sclick {
  • if $did == 13 { dialog -m bsdex bsdex }
  • elseif ($did == 9) set %bsds $did(bsd, 9).state
  • }
  • }
  • dialog bsdex {
  • title "BSD - Exceptions"
  • size -1 -1 125 66
  • option dbu
  • button "Ajouter", 2, 3 52 59 12
  • button "Supprimer", 3, 63 52 59 12
  • list 1, 3 3 119 47, size extsel hsbar vsbar sorted
  • button "", 999, 0 0 0 0, ok
  • }
  • alias bsdexrl { did -r bsdex 1 | var %x = $ini(bsd.ini, ex, 0) | while %x { if $ini(bsd.ini, ex, %x) { did -a bsdex 1 $v1 } | dec %x } }
  • on *:dialog:bsdex:*:*:{
  • if ($devent == init) bsdexrl
  • elseif $devent == sclick {
  • if $did == 2 { var %a = $input(Entrez le pseudo à excepter, e, BSD) | if (%a && $chr(32) !isin %a) writeini bsd.ini ex %a x | bsdexrl }
  • elseif $did == 3 {
  • var %x = $did(bsdex, 1, 0).sel
  • while %x { dec %x | remini bsd.ini ex $did(bsdex, 1, $did(bsdex, 1, %x).sel).text }
  • bsdexrl
  • }
  • }
  • }
---- BotSpam System Detector V1.1 & $convoy V1.1 coded by HeXoR timothee@hush.ai ----
on *:load:dialog -m bsd bsd
menu menubar {
  -
  BotSpam System Detector:dialog -m bsd bsd
  -
}
alias convoy {
  var %v = aeiouy, %c = 0
  var %a = $len($1)
  while %a { if $mid($1, %a, 1) !isin %v { if ($v1 isalpha) inc %c } | dec %a }
  return $iif($prop == c, $calc(%c / $len($1) * 100), $calc(($len($1) - %c) / $len($1) * 100))
}
on *:join:*:{
  if $me isop # && $len($nick) > %bsdnl && $convoy($nick).c > %bsd%c && %bsds {
    var %n = $gettok($nick, 1, 124)
    if !$readini(bsd.ini, ex, %n) {
      echo # $timestamp 4-BotSpam System Detector-  $+ $nick $+  est sûrement un robot
      kick # $nick %bsdmk
      writeini bsd.ini ex %n x
      .timerbsd_ [ $+ [ %n ] ] 1 %bsdns remini bsd.ini ex %n
    }
    elseif $timer(bsd_ [ $+ [ %n ] ]) { .timerbsd_ [ $+ [ %n ] ] off }
  }
}
dialog bsd {
  title "BotSpam System Detector"
  size -1 -1 125 97
  option dbu
  text "Nombre de secs permettant à qqun « pris pour un robot » pour pouvoir revenir :", 1, 5 10 100 15
  edit "", 2, 106 12 15 10, limit 3 center
  text "Message de kick :", 3, 5 27 42 9, center
  edit "", 4, 48 26 73 10, autohs
  text "Detecter en tant que robot si le pseudo contient plus de :", 5, 5 38 118 13
  edit "", 6, 5 52 15 10, limit 2 center
  text "Codé par HeXoR - 2004 ", 7, 0 89 58 8
  link "timothee@hush.ai", 8, 79 89 46 8
  check "BSD activé", 9, 1 0 37 10
  edit "", 11, 5 62 15 10, limit 2 right
  text "% de consonnes", 10, 22 53 42 8
  text "lettres", 12, 22 63 25 8
  button "Manipuler les exceptions", 13, 5 74 116 12
button "", 999, 0 0 0 0, ok
}
on *:dialog:bsd:*:*:{
  if $devent == init {
    if !%bsd { set %bsd on | set %bsdns 60 | set %bsdmk BotSpam System Detector by HeXoR [Si vous n'êtes pas un robot revennez avant 60secs] | set %bsd%c 60 | set %bsdnl 6 | set %bsds $true }
    did -a bsd 2 %bsdns
    did -a bsd 4 %bsdmk
    did -a bsd 6 %bsd%c
    did -a bsd 11 %bsdnl
    if (%bsds) did -c bsd 9
  }
  elseif $devent == edit {
    if $did == 2 { if $did(bsd, 2).text !isnum { did -ra bsd 2 60 } | else { set %bsdns $v1 } }
    elseif ($did == 4) set %bsdmk $did(bsd, 4).text    
    elseif $did == 6 { if $did(bsd, 6).text !isnum { did -ra bsd 6 60 } | else { set %bsd%c $v1 } }
    elseif $did == 11 { if $did(bsd, 11).text !isnum { did -ra bsd 11 } | else { set %bsdnl $v1 } }
  }
  elseif $devent == sclick {
    if $did == 13 { dialog -m bsdex bsdex }
    elseif ($did == 9) set %bsds $did(bsd, 9).state 
  }
}
dialog bsdex {
  title "BSD - Exceptions"
  size -1 -1 125 66
  option dbu
  button "Ajouter", 2, 3 52 59 12
  button "Supprimer", 3, 63 52 59 12
  list 1, 3 3 119 47, size extsel hsbar vsbar sorted
button "", 999, 0 0 0 0, ok
}
alias bsdexrl { did -r bsdex 1 | var %x = $ini(bsd.ini, ex, 0) | while %x { if $ini(bsd.ini, ex, %x) { did -a bsdex 1 $v1 } | dec %x } }
on *:dialog:bsdex:*:*:{
  if ($devent == init) bsdexrl
  elseif $devent == sclick {
    if $did == 2 { var %a = $input(Entrez le pseudo à excepter, e, BSD) | if (%a && $chr(32) !isin %a) writeini bsd.ini ex %a x | bsdexrl }
    elseif $did == 3 {
      var %x = $did(bsdex, 1, 0).sel
      while %x { dec %x | remini bsd.ini ex $did(bsdex, 1, $did(bsdex, 1, %x).sel).text }
      bsdexrl
    }
  }
}

 Conclusion

MàJ : le dialog permet de modifier plus de choses, comme désactiver/activer l'anti spam par exemple ;). On peut aussi mnt ajouter et supprimer des exceptions, etc.
MàJ : rajout d'un on load pour initier les vars & co
MàJ : optimisation des events du dialog et correction de quelques bugs (genre les noms de variables pouvaient se "chevaucher")
MàJ : utilisation d'un .ini au lieu des variables - manipulations de la liste d'exceptions
/!\ Fonctionne sous mIRC6.16 et plus [utilisation de $v1]


 Historique

06 août 2004 18:58:42 :
Faute d'orthographe
06 août 2004 19:25:21 :
j'avais oublié le dialog :x
06 août 2004 23:12:19 :
Voir ci-dessous.
06 août 2004 23:18:08 :
Voir ci-dessus ;)
07 août 2004 11:50:33 :
Voir ci-dessus
07 août 2004 11:51:41 :
Voir ci-dessus
07 août 2004 11:55:24 :
Fautes d'orth :(
07 août 2004 14:06:51 :
Correction du code
07 août 2004 14:33:44 :
mIRC6.16++
07 août 2004 17:38:25 :
voir ci-dessus
07 août 2004 18:50:54 :
 
07 août 2004 19:01:21 :
 
09 août 2004 15:38:01 :
Léger bug au niveau du site qui confond Chr(160) et Chr(32) et qui rend l'addon inutilisable
09 août 2004 16:12:09 :
-
15 août 2004 18:25:03 :
 
12 octobre 2004 10:24:07 :
button "", 999, 0 0 0 0, ok

 Sources du même auteur

$DERIVE(EXPRESSION) : FONCTION DÉRIVÉE
$LONGIF : SIMPLIFIE/CLARIFIE LES IF LONGS ET ENCOMBRANTS
$FACTOR : DÉCOMPOSITEUR DE NOMBRE PREMIER
$GROUPE : FAIRE DES GROUPES
Source avec Zip HEXFS.DLL

 Sources de la même categorie

TCL - AJOUT SUPPRESSION DE LOGS par Atok
BLACKLIST PSEUDOS/MASKS par usurpateur
Source avec une capture [XCHAT] ANTI KICK / AWAY C++ par GeroXXXX
JEU DU CODE par alanpersonproject
SERVEUR FTP par hisoka2501

Commentaires et avis

Commentaire de tofu le 06/08/2004 19:00:05

je crois que je comprendrais jamais l'utilité de mettre des crochets d'évaluation partout .

Commentaire de HeXoR le 06/08/2004 19:06:55

mouarf pk ils servent à rien ? ya un autre moyen ? parce que sans eux chez moi ça marche pas :(

Commentaire de PaDa le 06/08/2004 19:13:03

si si les crochets c'est pour pas utiliser $eval et se paumer à la moindre modif ^^^^

l'alias convoy se simplifie un peu avec des regex (j'adore dsl :p) :

alias convoy {
    var %c = $regex($1,/[b-df-hj-np-tv-xz]/gi)
    return $iif($prop == c, $calc(%c / $len($1) * 100), $calc(($len($1) - %c) / $len($1) * 100))
}

Commentaire de HeXoR le 06/08/2004 19:16:39

va vraiment falloir que je m'interesse   à ces regex ;)

Commentaire de PaDa le 06/08/2004 19:17:20

tes crochets servent a évaluer des variables collées (concaténées) dans l'ordre que tu veux :

if [ %bsd_ [ $+ [ # $+ [ %n ] ] ] ] == $null {

mirc évalue %n , puis colle a # puis a %bsd_ si bien que si %n vaut 5 il éfvalue au finale %bsd_#5 alors que sans il aurait évalué la valeur de %bsd_ au même niveau que le reste . ton crochet autour du dièse est en fait inutile , et ca :
if [ %bsd_# [ $+ [ %n ] ] ] == $null {
ca s'écrit avec $eval de cette facon :
if $eval($+(%,bsd_#,%n),2) == $null {
ce qui est plus clair de mon point de vue :
$eval évalue le $+ au premier niveau , soit la concaténation %bsd_#5 puis la valeur de cette chaine ... si c po clair /help lol

Commentaire de HeXoR le 06/08/2004 19:26:33

j'avais oublié le dialog huhu. PaDa je remplaceré $convoy des que j'aurais compris comment fonctionnent les regex :p

Commentaire de tofu le 06/08/2004 20:34:01

ah ça doit être pour ça, j'ai jms utilisé de variables collées .   avec les hash tables j'utilise $+() et hop ça marche :/

Commentaire de HeXoR le 06/08/2004 23:14:06

Voilà j'ai déjà fait une première MàJ. Voir "L'explication finale" ;)

Commentaire de Kerrigan le 07/08/2004 01:38:07

J'aime bien c'est vraiment pas mal. Le problème c'est que c'est pas efficace a 100%, ce qui rend les exceptions encore plus interessantes

je te met 9/10 je trouve ça vraiment cool, rien que l'idée du pourcentage ça dechire.
Faudrait peut etre faire pareil pour les voyelles c'est bizare un mot qui a trop de voyelle.

Commentaire de Kerrigan le 07/08/2004 01:40:42

Meme on pourrait faire autre chose encore je pense histoire d'isoler encore plus. On pourrait lister les phonème de la langue française, il y en a 11 si je me rapel bien, ensuite on pourrait faire un code qui recherche ces phonème dans les pseudo. Si un pseudo s'en retrouve dépourvu, il n'est pas du tout français.

Ca risque d'etre difficil a faire, mais ça ferait moins de dommages colateraux.

Commentaire de PaDa le 07/08/2004 09:11:18

c'est quoi ces règles ? jamais entendu parler :p une url ?

Commentaire de ReMi34 le 07/08/2004 10:24:41

Oula, les events du dialogs, ça fait peur !
Restructure les comme ça :
on *:dialog:bsd:*:*: {
if $devent == sclick {
if $did == ID {
}
}
if $devent == init {
}
if $devent == edit {
}
}
Ça devrait plus le faire :D
Sinon c'est pas mal :)

Commentaire de HeXoR le 07/08/2004 10:50:02

ça risque d'etre chaud ton idée en effet kerrigan :x j'essairé d'y reflechir. et sinon ReMi34 ça fait 1an que j'ai pas fait de dialogs alors bon.. je modifierai ;)

Commentaire de HeXoR le 07/08/2004 11:52:46

c'est mieux comme ça les events ?

Commentaire de ReMi34 le 07/08/2004 13:40:42

C'est parfait (:

Commentaire de HeXoR le 07/08/2004 13:56:21

Pour diminuer les risque d'erreurs on pourrait modifier le % de consonnes qui détermine si une personne est un bot. Au lieu de 60% par exemple si on met 65% ça pourrait peut-être être mieux. Je sais pas il faudrait que j'effectue une série de tests :)

Commentaire de HeXoR le 07/08/2004 14:05:10

Ahhh en modifiant le nb mini de lettres d'un pseudo pr être détecté à mon avis 8 au lieu de 6 c'est bien mieux et le risque d'erreurs diminue encore plus

Commentaire de Kerrigan le 07/08/2004 14:20:00

A mon avis mon idée doit etre vraiment trop dure a codé. J'ai réfléchis un peu et je trouve ça vraiment ardu.
Mais franchement j'adore ce code rien a dire.

Commentaire de HeXoR le 07/08/2004 14:27:32

Merci c'est simpa mais ça serait bien de trouver un moyen plus performant encore :)

Commentaire de HeXoR le 07/08/2004 17:40:52

MàJ : utilisation d'un .ini au lieu des variables - manipulations de la liste d'exceptions

je pense que les ini c'est plus simple, rien que pour faire la liste des items.. avec les variables c'est chaud.
en plus ça enlève certains crochés d'éval

Commentaire de eXcellent le 08/08/2004 19:51:41

A noter que les bots de spam peuvent rejoindre automatiquement, que generalement, ils prennent des pseudos "normaux" pour se fondre dans la foule :o.. C'est vraiment fait pour des bots de spam "bof" :x

Commentaire de tofu le 08/08/2004 19:55:56

ce les bots de spam qui sont sur voila/wanadoo qui prennent des pseudos à la con comme ça :P

Commentaire de rellik77 le 23/09/2004 15:27:07

J'ai bien loadé le script, mais ca ne me détecte rien, ou est ce que c'est moi qui ne sais pas me servir du truc ?

Commentaire de HeXoR le 25/09/2004 21:20:56

t'as testé sur quel serveur irc ? t'as bien config avec le dialog ?

Commentaire de rellik77 le 26/09/2004 00:58:28

Oui le dial est bien config, mais il me semble que les paramètres ne sont pas gardés, sinon j'ai testé sur irc.entrechat.net. Enfin bref ce n'est pas trop génant mais bon j'aurai bien aimé voir le script fonctionner :)

Commentaire de HeXoR le 26/09/2004 11:47:56

étrange..... t'utilise bien mirc 6.16 ?

Commentaire de rellik77 le 26/09/2004 13:12:34

Oui oui un mirc 6.16 !

Commentaire de HeXoR le 26/09/2004 19:23:42

o_O c'est chez toi que ça coince parceque j'ai fait tester plusieurs personnes et ça fonctionne ..

Commentaire de rellik77 le 26/09/2004 20:39:40

C'est pas grave :(

Commentaire de FuSioOoN83 le 10/10/2004 16:38:40

Sa marche pa sa me met sa :
* /dialog: 'bsd' invalid table, no ok or cancel id
:/

Commentaire de PaDa le 10/10/2004 16:41:07

rajoute un : button "",999,0 0 0 0,ok

Commentaire de OoZz le 08/01/2005 01:48:56

Chez moi ça marche ;)
7/10 pour tout tes bugs précédent ^^

Dealan ©

Commentaire de KyALuNe le 26/04/2005 14:33:32

Ha...

Moi j'aimerai savoir dans quelles conditions il fonctionne ce machin...
Parce que chez moi y'a rien a faire...
Il est activé, je suis op, et c'est tout juste s'il leur dit pas bonjour en leur ouvrant la porte aux spams bots...

Il est juste décoratif, ou il a une utilité ?

Commentaire de Kti le 11/05/2005 21:22:54

Bonjour à tous,

Pour moi il fonctionnait bien tant que les bots étaient dans le style défini : "Kjyvbnqdbp". Mais j'aimerai, si possible... le modifier (chose que j'ai essayé.. sans succès) pour que ce soit un % de chiffre.

Please help me :))

Commentaire de killerstar le 13/05/2005 23:26:03

Une petite idée comme ça en passant pour améliorer la détection des bots :

Il faudrait voir si y'a pas moyen de prendre en compte le realname du bot (raw 311 de mémoire) et si le realname contient un % élevé de consonne et ne contient qu'un seul mot en plus de la détection du pseudo ça kick. Sachant que la plupart des spambots ont des pseudos à la con ainsi qu'un realname à la con.

Commentaire de NaNaU le 05/06/2005 03:51:00

merci j'ai adoré , j'aimerais savoir si la personne n'est pas re-rentré dans le salon , l'addons pose un ban ??
sinon c'est parfait : 7/10 :) a bientot ;)

Commentaire de rellik77 le 05/06/2005 18:44:44

Si ca pose un ban
ta banlist risque d'être pleine rapidement !

Commentaire de killerstar le 12/06/2005 02:36:37

Je me suis permis une petite modif que je  pose ici suite à l'évolution des spams qui change de pseudo rapidement au join :)

Alors à la ligne 19, rien de bien méchant j'ai juste mis un timer de 10 sec et au lieu de kick sur le nick ben ça recherche l'adresse du spam et ça kick ; ce qui donne :
.timerkbsd_ [ $+ [ %n ] ] 1 10 kick # $$ial($$address($nick,2),1).nick %bsdmk


Commentaire de killerstar le 15/06/2005 09:47:20

Petit complément aussi le fait de mettre un timer sur le kick permet aussi de kick lors d'une invasion massive de spam bot comme il arrive régulièrement en ce moment sur pas mal de serveurs

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales