* Qu’est ce que ca veut dire CTCP?
* Pourquoi ça s’appelle Protocole de Client à Client?
* Comment ça marche?
* Quelles sont les commandes CTCP courantes?
* Pourquoi tous les clients ne les supportent pas?
* Comment on utilise les CTCP?
* Qu’est ce qu’un CTCP flood?
* Et les DCC?
* Plus d’infos


* Qu’est ce que ca veut dire CTCP?

CTCP veut dire Client To Client Protocol. Donc en bon français ça donne Protocole de Client à Client.

 


* Pourquoi ça s’appelle Protocole de Client à Client?

Parceque c’est interprété et envoyé par votre client IRC, donc le serveur IRC n’entre pas en jeux, il traite la commande CTCP comme il traite un /msg envoyé à quelqu’un. Non pas comme certaines commandes comme le whois.


* Comment ça marche?

Dans CTCP, il y a deux types de communication possible : COMMAND et REPLY

Les Commandes (command) :

PRIVMSG ((cible):^A ((commande>) ((valeur)^A
Ca à l’air compliqué?
-> ^A = Le premier caractère ASCII
-> commande = la commande CTCP
-> valeur = la valeur devant être analysée par le client ciblé

sous la plupart des clients classiques ca donne :
/CTCP cible commande valeur

Les Réponses (reply) :

NOTICE ((cible):^A ((commande) ((valeur)^A
C’est pas trop sorcier
-> ^A = Le premier caractère ASCII
-> commande = la commande CTCP
-> valeur = la valeur devant être analysée par le client ciblé

sous la plupart des clients ca donne :
/CTCPREPLY cible commande valeur
la personne qui aura recu le CTCPREPLY aura dans son status :
– nick – [CTCP] reply : commande valeur

Exemple :

Pour pinger le channel #irc_aide, vous ferez :

/CTCP #irc_aide PING
soit en fait
PRIVMSG #irc_aide :^APING 920054112^A

Toutes les personnes dans #irc_aide recevront donc :
– [CTCP] #irc_aide PING
soit en fait
:Mr_RIP!~DJ@zpro12.ibm.iim.devinci.fr PRIVMSG #irc_aide :^APING 920054112^A

Une réponse à ce PING sera :
/ctcpreply Mr_RIP PING 920054112
soit en fait
NOTICE Mr_RIP :^APING 920054112^A

et Mr_RIP recevra :
– Minotor – [PING] Reply 0 seconds
soit en fait
:Minotor!cacheflow@patron.cyber-café.fr NOTICE Mr_RIP :^APING 920054112^A

Ensuite le client de Mr_RIP interprète la valeure (920054112) qui est une valeur de temps sous UNIX et la soustraira à la valeur courrante (ex : 920054112).

Soit 920054112 – 920054112 = 0

D’où la réponse – Minotor – [PING] Reply 0 seconds


 * Quelles sont les commandes CTCP courantes?

CLIENTINFO, ACTION, DCC, ERRMSG, FACE, FINGER, PING, SOUND, SOURCE, TIME, USERINFO, VERSION, XDCC, SCRIPT et MP3.

Explication de chaque commande :

CLIENTINFO —  Vous donne toutes les commandes CTCP qui
fonctionnent sur le client.

ACTION —  Quand vous tapez /me, c’est ce CTCP là qui est
utilisé. La différence avec les autres CTCP est qu’il
n’y a pas de réponse (ctcpreply) donnée en retour.

DCC et XDCC — Les DCC sont établis grâce à un CTCP,
même si ils n’utilisent pas ce protocole.Voir le
bas de la page pour des infos sur les DCC.

ERRMSG — Réponse à un CTCP inconnu.

GET FACE — Icone en 32×32 pixels qui représente l’utilisateur
(Macintosh clients only).

FINGER —  Vous donne le temps de idle (inactivitée) de la
personne ainsi que son mail et un message.

PING — Utilisé pour mesurer le lag (temps de retard) ou le
temps de trajet avec le serveur.

SOUND — Fait jouer un son par le client qui le recoit.

SOURCE — Donne l’URL où le script/client peut être trouvé.

TIME —  Donne l’heure locale.

USERINFO — Vous donne un message personnel mis par la
personne.

VERSION — Vous donne la version du script/client.

SCRIPT — Donne l’URL où le script peut être trouvé.

MP3 — Vous donne un titre de MP3 joué par quelqu’un qui fait du commerce/échange illégal de MP3 (musique). Je vous recommande sous mIRC de mettre au début de votre fichier remote.ini après [script] :
n0=ctcp ^1:*mp3*:{ haltdef | /ctcpreply $nick ! MP3 trade is not allowed on Undernet ! }
Ce petit script vous permettra d’ignorer la commande MP3 en répondant à celui qui l’a envoyé que le commerce/échange de MP3 est interdit sur Undernet.


* Pourquoi tous les clients ne les supportent pas?

 

Parceque c’est une fonction qui dépasse certains clients très basiques. Presque tous les clients répondront à la commande CLIENTINFO qui vous montreront les commandes CTCP acceptées par celui-ci.


 * Comment on utilise les CTCP?

En général /CTCP cible commande est implémentée dans tous les bons clients actuels. Il existe des raccourcis aux fonctions les plus utilisées :
– /version nick = /ctcp nick version
– /ping nick ou /cping nick = /ctcp nick ping
– /chat nick = /ctcp nick dcc chat
– /send nick valeur = /ctcp nick dcc send valeur


* Qu’est ce qu’un CTCP flood?

 

C’est quand un petit malin s’amuse à vous flooder de CTCP pour que vous soyez déconnecté du serveur IRC.

La plupart des serveurs sont configurés pour que vous puissiez recevoir plus de plus de données que ce que vous pouvez émettre. Malgré tout, certaines commandes comme CLIENTINFO peuvent être utilisées pour vous faire déconnecter.
La commande CLIENTINFO fait 12 lettres  (plus les infos sur l’expediteur et le destinataire), alors que la réponse au CLIENTINFO peut faire plus de 200 caractères. Vous serez donc déconnecté avec le message “Excess Flood”.
Je vous recommande sous mIRC de mettre au début de votre fichier remote.ini après [script] :
n1=ctcp 1:*clientinfo*:{ haltdef | /ctcpreply $nick mIRC }


* Et les DCC?



Les DCC sont lancés par une commande CTCP. Une fois qu’ils sont lancés, leur vitesse ne peut être altérée que par votre propre connection, puisque ils n’utilisent pas les serveurs IRC.
La commande CTCP pour un DCC CHAT est :
/ctcp cible dcc chat ou /chat cible ou /dcc chat cible
soit en fait
PRIVMSG ((cible) :^ADCC CHAT ((Chat ou Talk) ((IP) ((port)^A

-> ^A = Le premier caractère ASCII
-> IP = L’IP longue codée sur 32 bit
-> port = Port sur lequel va être effectué le DCC

La personne que je veux DCC (Minotor) recevra :

:Mr_RIP!~DJ@zpro12.ibm.iim.devinci.fr PRIVMSG Minotor :^ADCC CHAT CHAT 5145646947 4242^A

Ma machine (5145646947) est donc prete à recevoir une connection DCC CHAT sur le port 4242 si le DCC CHAT est accepté.
NOTE : La plupart des clients acceptent les DCC entre les ports 1024 et 5000.

Pour un DCC SEND la commande est donc :

PRIVMSG ((cible) :^ADCC SEND ((nom du fichier) ((IP) ((port)
((taille du fichier)^A

-> ^A = Le premier caractère ASCII
-> IP = L’IP longue codée sur 32 bit
-> port = Port sur lequel va être effectué le DCC

La personne à qui je veux DCC (Minotor) recevra :

:Mr_RIP!~DJ@zpro12.ibm.iim.devinci.fr PRIVMSG Minotor :^ADCC SEND blagues.txt 5145646947 1313 5562^A

Ma machine (5145646947) est donc prete à recevoir une connection DCC SEND de 5562 Octets sur le port 1313 si le DCC SEND est accepté (une commande DCC GET est envoyé des que vous cliquez sur “accepter”).