Generateur de socket

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 504 fois - Téléchargée 25 fois

Contenu du snippet

comme c'est écrit dans le titre, cette petite source permet de "generer" un socket
Il suffit d'entrer les differentes informations, puis il est possible de tester le socket pour voir s'il fonctionne, de voir les sources de la pages (pour pouvoir par la suite filtrer les informations utiles)
Enfin, un fichier mrc est generé, permettant la connexion au socket entré
Il ne vous reste plus qu'a completer le sockread a votre convenance pour récuperer les infos qui vous interressent

Bon ce code n'a rien de compliqué, il peut être pratique, surtout pour les débutants en socket, ou peut être même pour les flemards, qui sait ;-)

Source / Exemple :


;SocketGen v1
;fjxokt@gmail.com

dialog socko {
  title "SocketGen v1"
  size -1 -1 174 176
  option dbu
  text "Rentrez la page du site sur lequel vous voulez vous connecter :", 1, 6 4 162 8
  edit "", 2, 6 13 122 11, autohs
  text "Protocole :", 3, 7 29 28 8, right
  combo 4, 37 27 55 30, size drop
  button "Tester", 5, 10 142 28 12
  button "Fermer", 6, 72 161 37 13
  text "Variable :", 7, 10 43 25 8, right
  combo 8, 37 41 55 30, size drop
  list 9, 9 65 155 75, size
  box "Informations ", 10, 3 55 167 103
  button "Générer le code !", 11, 113 142 50 12, multi
  button "Effacer", 12, 41 142 28 12
  text "Port :", 13, 131 15 15 8
  edit "80", 14, 147 13 23 11, limit 5 center
  text "Nom de la var :", 15, 101 43 39 8
  edit "a", 16, 141 41 29 11, center
  button "Sources", 17, 72 142 28 12
}

on *:dialog:socko:*:*:{
  if ($devent == init) { didtok $dname 4 32 HTTP/1.0 HTTP/1.1 | didtok $dname 8 32 &binvar % $+ variable }
  elseif ($devent == sclick) {
    if ($did == 5) {
      if (!$sock(st)) {
        if ((!$did(2)) || (!$did(4)) || (!$did(8)) || (!$did(14)) || (!$did(16))) halt
        sock_b
        set %sock_site $iif(http isin $did(2),$gettok($did(2),2,47),$gettok($v2,1,47))
        set %sock_link / $+ $iif(http isin $did(2),$gettok($did(2),3-,47),$gettok($did(2),2-,47))
        set %sock_port $did(14)
        if ($exists(testsock.html)) .remove testsock.html
        sockclose st | sockopen st %sock_site %sock_port
        if ($did(9).lines) did -a $dname 9 $str(-,30) | did -a $dname 9 $t Connexion a %sock_site en cours...
      }
      else { sock_b | sock_quit | did -a $dname 9 $t Connexion annulée ! }
    }
    elseif ($did == 12) did -r $dname 9
    elseif ($did == 11) {
      if ((!$did(2)) || (!$did(4)) || (!$did(8)) || (!$did(14)) || (!$did(16))) halt
      else sock_generate
    }
    elseif ($did == 6) { dialog -x $dname | sock_quit }
    elseif ($did == 17) sock_win
  }
  elseif ($devent == close) sock_quit
}

on *:sockopen:st:{
  if ($sockerr) { did -a socko 9 $t Connexion impossible | sock_b | halt }
  else did -a socko 9 $t Connexion établie
  if ($did(socko,4) == HTTP/1.1) { sockwrite -n st GET %sock_link HTTP/1.1 | sockwrite -n st Host: %sock_site $+ $str($crlf ,2) | sockwrite -n st User-Agent: Mozilla/5.O }
  else { sockwrite -n st GET %sock_site HTTP/1.0 | sockwrite -n st $crlf }
}

on *:sockread:st:{
  sockread %a
  sockread &a | bwrite testsock.html -1 -1 &a
  if (HTTP isin $g(%a,1) && $g(%a,2-) == 400 Bad Request) { did -a socko 9 $t Erreur de protocole ( Erreur: $v2 ) | sock_err }
  elseif (HTTP isin $g(%a,1) && $g(%a,2-) == 302 Found) { did -a socko 9 $t Document déplacé ou inconnu ( Erreur: $v2 ) | sock_err }
  elseif (HTTP isin $g(%a,1) && $g(%a,2) == 404) { did -a socko 9 $t Page non trouvée ( Erreur: $v2 ) | sock_err }
  elseif (HTTP isin $g(%a,1) && $g(%a,2) isnum 400-505) { did -a socko 9 $t Erreur: $g(%a,2- ) }
  elseif (Réception des données !isin $did(socko,9,$did(socko,9).lines)) did -a socko 9 $t $v1
  unset %a
}

on *:sockclose:st:{ did -a socko 9 $t Données reçues | did -a socko 9 $t Connexion refermée | sock_b }

alias -l sock_generate {
  var %sn $replace($$input(Rentrez le nom que portera le socket :,ioce,Nom du socket),$chr(32),_),%f socket_ $+ [ %sn ] $+ .mrc
  if ($exists(%f)) { if (!$input(Le fichier %f existe déja ! $crlf Voulez vous l'effacer ?,iy,Fichier déja existant)) halt }
  var %o $chr(123),%c $chr(125),%s $chr(124)
  .fopen -o f %f
  .fwrite f ; $+ socket généré par SocketGen $crlf $+ ; $+ pour tester le socket, chargez ce fichier ou copiez le contenu dans un nouveau remote mIRC, puis tapez /socket_ $+ [ %sn ] $crlf $crlf
  .fwrite f alias socket_ $+ [ %sn ] %o sockclose %sn %s sockopen %sn %sock_site %sock_port %c $crlf $crlf
  .fwrite f on *:sockopen: $+ [ %sn ] $+ : %o $crlf if ($ $+ sockerr) %o echo -a Erreur de connexion au socket $ $+ sockname %s halt %c $crlf else %o $crlf sockwrite -n %sn GET %sock_link $did(socko,4) $crlf
  if (1.1 isin $did(4)) var %prot sockwrite -n %sn Host: %sock_site $ $+  + $ $+ str($ $+ crlf ,2)
  else var %prot sockwrite -n %sn $ $+ crlf
  var %v $left($did(socko,8),1),%n $did(socko,16)
  .fwrite f %prot $crlf sockwrite -n %sn User-Agent: Mozilla/5.0 $crlf %c $crlf  $+ %c $crlf $crlf $+ on *:sockread: $+ [ %sn ] $+ : %o $crlf sockread %v $+ %n $crlf $iif(%v == %,echo -a % $+ %n)  $crlf $iif(%v == %,unset,bunset) $v1 $+ %n $crlf $+ %c $crlf $crlf
  .fwrite f on *:sockclose: $+ [ %sn ] $+ : %o echo -a Socket $ $+ sockname refermé %c
  .fclose f
  $iif($input(Génération effectuée ! $crlf Le fichier %f a été crée dans le dossier : $+(",$scriptdir,") $crlf Voulez-vous l'ouvrir ?,iy,Opération terminée),run %f)
}
alias socko dialog $iif($dialog(socko),-v,-m) socko socko
alias -l sock_win { if ($exists(testsock.html)) { window -b @data 150 150 | clear -@ @data | loadbuf @data testsock.html } }
alias -l sock_err { sockclose st | did -a socko 9 $t Déconnexion du socket | sock_b }
alias -l sock_quit { sockclose st | unset %sock_* | if ($exists(testsock.html)) .remove testsock.html | if ($window(@data)) window -c $v1 }
alias -l sock_b { did -ra socko 5 $iif($did(socko,5) == Tester,Stopper,Tester) }
alias -l g return $gettok($1,$2,32)
alias -l t return $+([,$time,])

Conclusion :


Si vous trouvez des bugs ou si vous avez des commentaires/suggestions, n'hesitez pas !
(Je pense que ce code n'est qu'un début...)

A voir également

Ajouter un commentaire

Commentaires

ExtenZ93
Messages postés
23
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
4 mars 2009
-
Je ne sais pas comment executé ce code ? c'est ou que j'accede a ce qu'il y a marker dans DIALOG ?
neobidou
Messages postés
3
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
7 juillet 2010
-
L'idée est très bonne mais la génération du code ne fonctionne paspour ma part, donc à revoir.
cs_HySteriK
Messages postés
74
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
17 décembre 2005
1 -
plop rien à dire enfin presque
good source !
AgoRa_ScripT
Messages postés
140
Date d'inscription
jeudi 22 juillet 2004
Statut
Membre
Dernière intervention
20 octobre 2007
-
C'est exactement ce qu'il me fallait.
VestaX
Messages postés
376
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
ben peux etre que le protocole exacte n'est pas le bon, mais le resultat est le même :)

Mais j'ai bien dit dans mon comment: "pas aussi complet, mais 30 lignes de code à tout casser en 10 minutes :)"

par contre pour tutorial, je ne vois pas ou c'est un tutorial. A aucun endroit tu as marqué à quoi servent tes commandes. Si c'est un addon c'est une chose, si c'est un tutorial, ca en est une autre :)

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.