Controler son bot à distance (beta)

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

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.