LLabelFen
AI-werkruimte voor code

DNS-namen met terugwijzende pointers

Decodeer een DNS-naam uit maximaal 65535 pakketbytes en geef ruwe labels plus de volgende positie terug.

● ● ●LabelFen●
Werkprocessen · DNS-namen met terugwijzende pointers ×
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
✳DNS-namen met terugwijzende pointers
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
01

Project

Test de wortel, afgebroken invoer en de uitgepakte grens van 255 bytes, en weiger ongeldige markeringen, cycli en pointers die niet terugwijzen.

02

Controleer vóór het toepassen

Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.

03

Modellen

Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.

Werkprocessen

DNS-namen met terugwijzende pointers

Werkprocessen ↗
Werkprocessen
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
AI-werkruimte voor code

Beoordeel het parserresultaat én de achtergelaten positie

LabelFen brengt protocolonderhoud naar een AI-programmeeromgeving voor Windows. Open de projectmap en beschrijf welk pakketgedrag je wilt wijzigen, inclusief wat de volgende stap na het parsen verwacht. Een gesprek op basis van die bestanden kan een lokale correctie verbinden met de grotere lezer in plaats van een hulpfunctie alleen op haar teruggegeven waarde te beoordelen.

Gecomprimeerde DNS-namen vormen een voorbeeldtaak. Vraag het model pointerverwerking, weigering van ongeldige invoer en de aan de aanroeper teruggegeven offset te bekijken. Voeg een pakket toe waarin na een gecomprimeerde naam een ander veld volgt. Zo krijgt de voorgestelde patch een concrete eis: de naam herstellen en de omringende parser op de juiste plaats achterlaten.

Maak tijdens de beoordeling onderscheid tussen waar een pointer wordt gevolgd en waar de aanroeper verder moet gaan. Een aannemelijke gedecodeerde naam bewijst niet dat het volgende veld goed wordt gelezen. Voer relevante tests met afgekorte en geldige testgevallen uit, bekijk de uiteindelijke offset en vergelijk het resultaat van de omringende parser voordat je de wijziging overneemt.

Je kunt een geablitereerd AI-model kiezen dat een ondersteund OpenAI-compatibel of Anthropic-endpoint aanbiedt, met inloggegevens waar nodig. Antwoordbeperkingen, tools en contextlimieten blijven afhankelijk van model en server. LabelFen ondersteunt het projectgesprek; jouw beoordeling en protocoltestgevallen leveren het bewijs voor de softwarebeslissing.

Een correctie in protocolparsing nagaan

Waarom naast de naam ook de teruggegeven offset bekijken?

De aanroeper kan die offset gebruiken om het volgende veld te lezen. Een correcte naam met een verkeerde hervatpositie kan de rest van de pakketinterpretatie verstoren. Voeg een volgend veld aan het testgeval toe en controleer beide uitkomsten expliciet.

Moet een kleine parser elke pointervorm accepteren?

Accepteer alleen vormen die je gedocumenteerde contract ondersteunt. Vergelijk de implementatie met die deelverzameling voordat je haar uitbreidt. Vraag het model nieuw geaccepteerde invoer te benoemen, zodat opschonen niet stilzwijgend de acceptatieregels van het protocol verandert.

Wat maakt een afgekort pakket bruikbaar als testgeval?

Het moet op een betekenisvolle grens eindigen, bijvoorbeeld in een onvolledige pointer of een onvolledig label, en de verwachte weigering vastleggen. Controleer of de parser faalt voordat niet-beschikbare bytes worden gelezen en hoe de omringende lezer de fout afhandelt.

Kan pakketinspectie gegevens buiten mijn computer blootstellen?

Afhankelijk van endpoint- en toolconfiguratie wel. Gebruik bij voorkeur bytevoorbeelden waaruit gevoelige gegevens zijn verwijderd en controleer bestemmingen voordat je pakketopnames deelt. Een afzonderlijk draaiende lokale modelserver maakt niet elke verbonden inspectietool of externe dienst lokaal.

Download voor Windows ↗

LabelFen · Bijgewerkt 2026-10-25