Projet
Testez la racine, les troncatures et la limite décompressée de 255 octets, en rejetant les marqueurs invalides, les cycles et les pointeurs non rétrogrades.
Décodez un nom DNS depuis un paquet de 65535 octets au plus et renvoyez les étiquettes brutes avec la position suivante.
def dns_name(data, offset):
if type(data) is not bytes or len(data) > 65535 or type(offset) is not int or not 0 <= offset < len(data):
raise ValueError("dns.input")
labels, seen, pos, end, size = [], set(), offset, None, 1
while True:
if pos in seen or pos >= len(data):
raise ValueError("dns.pointer")
seen.add(pos)
count = data[pos]
if count & 192 == 192:
if pos+1 >= len(data):
raise ValueError("dns.truncated")
target = ((count & 63) << 8) | data[pos+1]
if target >= pos:
raise ValueError("dns.forward")
if end is None:
end = pos+2
pos = target
continue
if count & 192 or pos+1+count > len(data):
raise ValueError("dns.label")
pos += 1
if count == 0:
return labels, pos if end is None else end
size += count+1
if size > 255:
raise ValueError("dns.length")
labels.append(data[pos:pos+count])
pos += count
Testez la racine, les troncatures et la limite décompressée de 255 octets, en rejetant les marqueurs invalides, les cycles et les pointeurs non rétrogrades.
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
def dns_name(data, offset):
if type(data) is not bytes or len(data) > 65535 or type(offset) is not int or not 0 <= offset < len(data):
raise ValueError("dns.input")
labels, seen, pos, end, size = [], set(), offset, None, 1
while True:
if pos in seen or pos >= len(data):
raise ValueError("dns.pointer")
seen.add(pos)
count = data[pos]
if count & 192 == 192:
if pos+1 >= len(data):
raise ValueError("dns.truncated")
target = ((count & 63) << 8) | data[pos+1]
if target >= pos:
raise ValueError("dns.forward")
if end is None:
end = pos+2
pos = target
continue
if count & 192 or pos+1+count > len(data):
raise ValueError("dns.label")
pos += 1
if count == 0:
return labels, pos if end is None else end
size += count+1
if size > 255:
raise ValueError("dns.length")
labels.append(data[pos:pos+count])
pos += count
LabelFen intègre la maintenance des protocoles à un espace de programmation avec IA pour Windows. Ouvrez le dossier du projet et décrivez le comportement des paquets à modifier, y compris les attentes de l’étape suivante après analyse. Une conversation fondée sur ces fichiers peut relier une correction locale au lecteur complet, plutôt que de juger une fonction auxiliaire uniquement sur la valeur renvoyée.
Les noms DNS compressés constituent un exemple de tâche. Demandez au modèle d’examiner le traitement des pointeurs, le rejet des entrées mal formées et le décalage renvoyé à l’appelant. Incluez un paquet contenant un nom compressé suivi d’un autre champ. Le correctif proposé dispose ainsi d’une exigence concrète : récupérer le nom en laissant l’analyseur englobant à la bonne position.
Pendant l’examen, distinguez la position vers laquelle un pointeur est suivi de celle où l’appelant doit reprendre. Un nom décodé plausible ne prouve pas que le champ suivant sera lu correctement. Exécutez les tests pertinents avec des jeux d’essai tronqués et valides, examinez le décalage final et comparez le résultat de l’analyseur englobant avant d’adopter la modification.
Vous pouvez sélectionner un modèle d’IA ablitérée proposé par un point de terminaison compatible OpenAI ou Anthropic pris en charge, avec des identifiants si nécessaire. Ses restrictions de réponse, ses outils et ses limites de contexte restent dépendants du modèle et du serveur. LabelFen facilite la discussion du projet ; votre examen et vos jeux d’essai de protocole apportent les preuves nécessaires à la décision logicielle.
L’appelant peut utiliser ce décalage pour lire le champ suivant. Un nom correct avec une mauvaise position de reprise peut corrompre le reste de l’interprétation du paquet. Incluez un champ suivant dans le jeu d’essai et vérifiez explicitement les deux résultats.
N’acceptez que les formes prises en charge par votre contrat documenté. Comparez l’implémentation à ce sous-ensemble avant de l’élargir. Demandez au modèle d’identifier les entrées nouvellement acceptées pour qu’un nettoyage ne change pas silencieusement les règles d’acceptation du protocole.
Il doit se terminer à une frontière pertinente, par exemple un pointeur ou un label incomplet, et préciser le rejet attendu. Vérifiez si l’analyseur échoue avant de consommer des octets indisponibles, puis comment le lecteur englobant traite l’erreur.
Oui, selon la configuration du point de terminaison et des outils. Privilégiez des jeux d’octets expurgés et examinez les destinations avant de partager des captures. Exécuter séparément un serveur de modèles local ne rend pas local chaque outil d’inspection connecté ou service externe.
LabelFen · Mis à jour 2026-10-25