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...)
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.