1. Messagerie client-client historique
Le protocole contient depuis longtemps une messagerie directe entre clients.
Opcode relevé :
OP_MESSAGE = 0x4ELe chat est indépendant du transport des fichiers mais partage l’identité et la connexion client-client.
2. Pourquoi un anti-spam a été ajouté
Une fonction de messagerie ouverte à des inconnus a naturellement attiré des robots et publicités automatiques.
Les versions plus récentes ont donc ajouté plusieurs couches locales :
accepter uniquement les amis selon préférence
filtres de texte configurables
heuristiques sur le premier message
détection d'URL
marquage spammer selon comportement
Captcha
3. Capability Captcha
Le support Captcha est annoncé dans CT_EMULE_MISCOPTIONS2.
Dans l’implémentation étudiée, SupportsCaptcha correspond au bit 11 de ce champ de capacités.
4. Opcodes Captcha
OP_CHATCAPTCHAREQ = 0xA5
OP_CHATCAPTCHARES = 0xA6Le premier transporte la demande/challenge ; le second transporte la réponse ou le résultat associé.
5. Séquence typique
Le chemin étudié peut être résumé ainsi :
message d'un pair inconnu
→ message retenu
→ génération d'un Captcha
→ image envoyée au pair
→ réponse saisie
→ validation
→ message original affiché si réussite
6. Nombre d’essais
La logique étudiée autorise jusqu’à trois tentatives avant d’abandonner le challenge.
7. Validation de l’image reçue
Le code applique des contrôles grossiers avant d’accepter une image Captcha distante, notamment sur la taille du payload et sur les dimensions décodées.
L’ordre de grandeur observé pour la taille est approximativement :
128 à 4096 octets
avec des limites de dimensions afin d’éviter des entrées absurdes.
8. Ce que prouve réellement le Captcha
Le Captcha apporte au mieux une indication :
un humain a probablement interagi avec cette conversation
Il ne prouve pas :
l'identité civile du pair
l'authenticité de son logiciel
la sécurité d'un fichier
la fiabilité générale de ce client
9. Anti-spam heuristique
Le filtrage repose en partie sur des observations comportementales. Un premier message contenant certains motifs, ou une série de messages sans interaction réciproque, peut être classé comme suspect.
Ces règles sont une politique locale du client, pas une obligation du wire protocol.