Controler son bot à distance (beta)

5/5 (8 avis)

Snippet vu 4 666 fois - Téléchargée 27 fois

Contenu du snippet

Voici un script que je développe et qui a pour but de pouvoir controler son bot a distance (si il n'est pas hébergé chez vous)
vous pouvez lui faire executer des commandes, loader/unloader des script, lui envoyer des scripts, etc...

pour le moment c'est une BETA donc il est possible qu'il ai des bug, merci de me les raporter

Mlaheureusement je n'ai pas trouver les commandes qui permet de accepter les dcc send, le but êtais d'envoyer les script par dcc send mais bon j'ai fait un autre système un peut moin bien...

Le script est securisé (normalement) tan que vous ne le modifiez pas...

il y a une double sécurité, une première pour l'ouverture du dcc chat (login et mdp pareil pour tout le monde) et la dexième a l'ouverture du dcc chat (où là, chacun a son login et passe)
pour choisire le premier login-passe (pour l'ouverture du dcc) tapez: /set %con_verif login mot-de-passe
pour les autres comptes, créer un fichier à la racine du repertoire de mIRC ce nommant: "delicomptes.txt" avec le format suivent:

compte1 passe1
compte2 passe2

etc...
le script est créer pour gêrer les multi-users (plusieurs personnes peuvent l'utiliser en même temps sans conflit (normalement lol))

bon... voilà le code:

Source / Exemple :


on *:TEXT:*:?:{ 
  if ($1 == !opensession) {
    if ($2-3 == %con_verif) {
      /msg $nick Mot de passe accepté !
      /dcc chat $nick
    }
  }
}

on *:OPEN:=:{
  set %deliaction $+ $nick deliverif
  msg =$nick Tapez votre nom de compte et votre mot de passe...
  msg =$nick Exemple: mozart babileou
}

on *:CHAT:*:{
  if (%deliaction [ $+ [ $nick ] ] == $null) {
    write delilog.log de $nick commande: $1-
    if ($1 == send) { $delisend($nick,$2-) }
    elseif ($1 == rmtlist) { $delirmtlist($nick) }
    elseif ($1 == load) { $deliload($nick,$2-) }
    elseif ($1 == unload) { $deliunload($nick,$2-) }
    elseif ($1 == del) { $delidel($nick,$2-) }
    elseif ($1 == make) { $delimake($nick,$2-) }
    elseif ($1 == close) { $deliclose($nick,$2-) }
    elseif ($1 == aide) { $deliaide($nick,$2-) }
    elseif ($1 == send) { $delisend($nick,$2-) }
    else { msg =$nick [ $+ $1 $+ ]4 Commande inconnu ! }

  }

  else {
    set %delitemp1 $nick $1-
    $ [ $+ [ %deliaction [ $+ [ $nick ] ] ] ] 
  }
}

;Commandes:

alias delimake { $2 }
;----------------- Del --------------
alias delidel {
  if ($exists($2) != $true) { /msg =$nick Le fichier " $+ $2 $+ " n'existe pas ! | halt }
  if (deli* iswm $2) { /msg =$nick Vous n'avez pas l'autorisation de supprimer ce fichier | halt }
  /msg =$nick êtes vous sûr de vouloir supprimer le fichier " $+ $2- $+ " ? (Y/N) 
  set %delidel $+ $nick $2- 
  set %deliaction $+ $nick delidelver 
}
alias delidelver {
  tokenize 32 %delitemp1
  unset %delitemp1
  if (($2 == n) || ($2 == N)) { msg = [ $+ [ $1 ] ] Vous avez annulé la suppression de " $+ %delidel [ $+ [ $1 ] ] $+ " | unset %delidel $+ $nick | unset %deliaction $+ $nick }
  elseif (($2 == y) || ($2 == Y)) { { 
      /remove %delidel [ $+ [ $1 ] ]
      if ($exists(%delidel [ $+ [ $1 ] ]) != $true) { msg = [ $+ [ $1 ] ] le fichier " $+ %delidel [ $+ [ $1 ] ] $+ " a bien été supprimé ! }
      else { msg = [ $+ [ $1 ] ] Le fichier " $+ %delidel [ $+ [ $1 ] ] $+ " n'a pas pu être éffacé, peut-être qu'un autre programme l'utilise ! }
      unset %delidel $+ $1
      unset %deliaction $+ $1
    }
  }
  else { msg = [ $+ [ $1 ] ] Commande: [Y] pour effacer " $+ %delidel [ $+ [ $1 ] ] $+ " ou [N] pour annuler. }
}
;-------------------- load unload ------------
alias deliload {
  if ($exists($2) != $true) {  msg =$nick remote " $+ $2- $+ " introuvable ! | halt } 
  if ($delirmtver($2) == 1) {  msg =$nick le remote " $+ $2- $+ " est déjà chargé ! }
  else {
    /load -rs  $2
    msg =$nick remote " $+ $2 $+ " chargé ! 
  }
}
alias deliunload { 
  if ($delirmtver($2-) == 1) { /unload -rs $2- | msg =$nick remote " $+ $2- $+ " déchargé ! }
  else { msg =$nick remote " $+ $2- $+ " n'est pas chargé ! }
}
;------------ aide -----------
alias deliaide {
  if (($2 == 0) || ($2 == $null)) {
    msg = [ $+ [ $1 ] ] Mes commandes sont:            
    msg = [ $+ [ $1 ] ] rmtlist          
    msg = [ $+ [ $1 ] ] load <fichier>
    msg = [ $+ [ $1 ] ] unload <fichier>
    msg = [ $+ [ $1 ] ] del <fichier>
    msg = [ $+ [ $1 ] ] make <commande>
    msg = [ $+ [ $1 ] ] send <repertoire>
    msg = [ $+ [ $1 ] ] close
    msg = [ $+ [ $1 ] ] Pour utiliser ces commandes, tapez les 
    msg = [ $+ [ $1 ] ] directement dans la fenêtre (pas de ! de / ou autre devant)
    msg = [ $+ [ $1 ] ] Pour plus d'aide tapez: aide <commande> exemple: aide rmtlist
  }
  elseif ($2 == rmtlist) { msg = [ $+ [ $1 ] ] Commande rmtlist: Permet d'avoir la liste des remotes chargé par mIRC }
  elseif ($2 == load) { msg = [ $+ [ $1 ] ] Commande load: Permet de charger un script. load <script.rmc> }
  elseif ($2 == unload) { msg = [ $+ [ $1 ] ] Commande unload: Permet de décharger un script. unload <script.rmc> }
  elseif ($2 == del) { msg = [ $+ [ $1 ] ] Commande del: Permet de supprimer un fichier. del <fichier.txt> }
  elseif ($2 == make) { msg = [ $+ [ $1 ] ] Commande unload: Permet d'executer une commande. make <commande> exemple: make /msg exemple hello }
  elseif ($2 == make) { msg = [ $+ [ $1 ] ] Commande close: Termine la session }
  elseif ($2 == send) { msg = [ $+ [ $1 ] ] Commande send: Vous permet d'envoyer un fichier. send <repertoire> }
}
;---------- verification de compte ---------
alias deliverif {
  tokenize 32 %delitemp1
  unset %delitemp1
  var %i = 1
  while (%i <= $lines(delicomptes.txt)) {
    var %temp = $remove($read(delicomptes.txt,%i),)
    if ($gettok(%temp,1,32) == $2) { if ($gettok(%temp,2,32) == $3) { $deliveriftrue($1) | halt } }
    inc %i
  }
  msg = [ $+ [ $1 ] ] Votre pseudo ou votre mot-de-passe n'est pas valide !
  msg = [ $+ [ $1 ] ] Fin de la session.
  /close -c $1
  unset %deliaction $+ $1
}
alias deliveriftrue {
  msg = [ $+ [ $1 ] ] Compte et mot-de-passe valide !
  msg = [ $+ [ $1 ] ] 15,15--------------------------------------------------
  msg = [ $+ [ $1 ] ] 0,1Bienvenu Sur mIRC system controle v1.0 par Delirium !
  $deliaide($1,0)
  unset %deliaction $+ $1
}
;---------- close ------
alias deliclose {
  msg = [ $+ [ $1 ] ] Fin de la session.
  /close -c $1
}
;--------- remote list -------
alias delirmtlist {
  msg = [ $+ [ $1 ] ] Liste des Remotes Chargé:
  msg = [ $+ [ $1 ] ] -------------------------
  var %b = 1
  while (%b <= $lines(MIRC.INI)) {
    var %temp = $read(MIRC.INI,%b)
    if (%oui == go) {
      if ($left(%temp,1) == $chr(91)) {  goto fin } 
      msg = [ $+ [ $1 ] ] $replace($right(%temp,$calc($len(%temp)-1)),=,: $chr(32))

    }
    if ($+($chr(91),rfiles,$chr(93)) isin %temp) { var %oui = go }

    inc %b
  }
  :fin
  msg = [ $+ [ $1 ] ] -------------------------
}
;--------- remote verif -------
alias delirmtver {
  var %b = 1
  while (%b <= $lines(MIRC.INI)) {
    var %temp = $read(MIRC.INI,%b)
    if (%oui == go) {
      if ($gettok(%temp,2,61) == $1) {  var %rep = 1 | goto fin }
      if ($left(%temp,1) == $chr(91)) {  var %rep = 0 | goto fin } 
    }
    if ($+($chr(91),rfiles,$chr(93)) isin %temp) { var %oui = go }
    inc %b
  }
  var %rep = 0
  :fin
  return %rep
}
;--------- envoi -------
alias delisend {
  if ($2 == $null) { msg = [ $+ [ $1 ] ] Commande: send fichier.xxx | halt }
  if (deli* iswm $2) { /msg =$nick Vous n'avez pas l'autorisation de creer un fichier avec ce nom | halt }
  if ($exists($2) == $true) { msg = [ $+ [ $1 ] ] Le fichier $2 existe déjà ! | halt }
  msg = [ $+ [ $1 ] ] Je suis en attente du contenu de votre fichier... collez dans la fenêtre le contenu du fichier et ensuite tapez: !=send=!
  set %deliaction $+ $1 delisendre
  set %delisendfich $+ $1 $2
}
alias delisendre {
  tokenize 32 %delitemp1
  unset %delitemp1
  if ($2 != !=send=!) {
    /write %delisendfich [ $+ [ $1 ] ] $2-
  }
  else {
    msg = [ $+ [ $1 ] ] Envoi terminé !
    unset %deliaction $+ $1 
    unset %delisendfich $+ $1
  }
}
ON *:DISCONNECT: /unset %deli*

Conclusion :


Note: toutes les variables et touts les alias commance par "deli" pour éviter d'éventuels conflit avec d'autre script

les commandes sont:
en pv au bot:
- !opensession login mot-de-passe (defini dans la variable %con_verif)
en dcc chat:
- rmtlist -> donne la liste des remotes chargé
- load <fichier> -> charge un remote
- unload <fichier> -> je vous laisse deviner
- del <fichier> -> supprime un fichier (nannnn ?)
- make <commande> -> execute une commande
- close -> termine la session

Voilà...

Il faudrais encore un truc qui permette de lister les fichier contenu dans les dossier mais j'ai trouver aucune fonction dans mIRC, si qqn en connait une, merci de me laisser un msg.. pareil pour les dcc send

je sais pas trop si c'est du niveau 2 ou 3 mais je met 3 pour la complexité du code a certaine place (notemment pour les "evaluation brackets" dans les alias (hee oui mIRC ne supporte pas le /msg =$1 ))

si vous avez des idée pour rendre le truc encore mieux ou des bug ou faille laissez un message

A voir également

Ajouter un commentaire Commentaires
Messages postés
30
Date d'inscription
vendredi 11 octobre 2002
Statut
Membre
Dernière intervention
3 mai 2004

le "msg = $read(menu.txt,%i)" me peut fonctionner
Messages postés
199
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 avril 2005

au fait, le echo -a 4 %pos dans mon noext, vous pouvez l'enlever, c'était pour tester l'alias.
Messages postés
199
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 avril 2005

b0uH, ton alias est pas si bien =)
regarde : $noext(fichiercpp.h) me donne : fichierc
As-tu pensé que les extensions ne sont pas toutes en 3 lettres ?

Bon, voila j'ai refait ton noext :

alias noext {
unset %noext
unset %pos
var %i 1
set %len $len($1)
while (%i <= %len) {
if ($mid($1,%i,1) == $chr(46)) {
set %pos %i
echo -a 4 %pos
}
inc %i
}
if (%pos) { set %noext $left($1,$calc(%pos - 1)) }
else { set %noext $1 }
return %noext
}

et il marche parfaitement ;)

Now, tout ca j'aime pas bien moi :

msg = [ $+ [ $1 ] ] Mes commandes sont:
msg = [ $+ [ $1 ] ] rmtlist
msg = [ $+ [ $1 ] ] load <fichier>
msg = [ $+ [ $1 ] ] unload <fichier>
msg = [ $+ [ $1 ] ] del <fichier>
msg = [ $+ [ $1 ] ] make <commande>
msg = [ $+ [ $1 ] ] send <repertoire>
msg = [ $+ [ $1 ] ] close
msg = [ $+ [ $1 ] ] Pour utiliser ces commandes, tapez les
msg = [ $+ [ $1 ] ] directement dans la fenêtre (pas de ! de / ou autre devant)
msg = [ $+ [ $1 ] ] Pour plus d'aide tapez: aide <commande> exemple: aide rmtlist
}

tu ferais mieux de lire un fichier en while

genre : menu.txt

var %i 1
set %lines $lines(menu.txt)
while (%i <= %lines) {
msg = $read(menu.txt,%i)
inc %i
}

C'est tout de même plus simple ;)

@+

××× G-FACTION ×××
Messages postés
23
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
18 novembre 2003

Euh moi perso je fais ca :

set %plop $findfile(C:,*.txt,0,1,echo -s $1-)

ou %plop retourne le nombre fichier .txt trouvés sur C: et ou les noms de fichiers sont affichés dans le status


ti truc pour retirer l'extension :
alias noext { return $left($1-,$calc($len($1-) - 4)) }
Exemple : $noext(pwet.txt) retournera pwet


Walla =)
Bye
Messages postés
33
Date d'inscription
lundi 14 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2004

oO je suis d'accord y'a un nombre qui s'affiche ( il correspond au nombres de fichiers ds ton reportoire ici $mircdir ) mais normalement ( enfin chez moi ca marche ) tu dois voir s'afficher le nom de tous les fichiers present dans le dossier spécifié.
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.