LLabelFen
KI-Arbeitsumgebung für Code

DNS-Namen mit Rückwärtszeigern

Dekodiere einen DNS-Namen aus höchstens 65535 Paketbytes und liefere rohe Labels samt Folgeposition.

● ● ●LabelFen●
Arbeitsabläufe · DNS-Namen mit Rückwärtszeigern ×
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 mit Rückwärtszeigern
✓ ÄnderungenVor dem Anwenden prüfen ↗
Illustration der Arbeitsumgebung
01

Projekt

Teste Wurzel, abgeschnittene Daten und die expandierte Grenze von 255 Bytes, lehne ungültige Markierungen, Zyklen und nicht rückwärts gerichtete Zeiger ab.

02

Vor dem Anwenden prüfen

Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.

03

Modelle

Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.

Arbeitsabläufe

DNS-Namen mit Rückwärtszeigern

Arbeitsabläufe ↗
Arbeitsabläufe
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
KI-Arbeitsumgebung für Code

Parserergebnis und zurückgelassene Position prüfen

LabelFen bringt Protokollwartung in eine KI-Programmierumgebung für Windows. Öffnen Sie den Projektordner und beschreiben Sie das zu ändernde Paketverhalten einschließlich der Erwartungen des nächsten Schritts nach dem Parsen. Ein auf diesen Dateien beruhendes Gespräch kann eine lokale Korrektur mit dem übergeordneten Leser verbinden, statt eine Hilfsfunktion allein nach ihrem Rückgabewert zu beurteilen.

Komprimierte DNS-Namen bieten eine Beispielaufgabe. Lassen Sie das Modell Zeigerbehandlung, Zurückweisung fehlerhafter Eingaben und den an den Aufrufer zurückgegebenen Offset untersuchen. Nehmen Sie ein Paket mit einem komprimierten Namen und einem anschließenden Feld auf. Damit erhält der Patch eine konkrete Anforderung: den Namen rekonstruieren und den umgebenden Parser dabei an der richtigen Position belassen.

Unterscheiden Sie bei der Prüfung, wo einem Zeiger gefolgt wird und wo der Aufrufer fortfahren soll. Ein plausibler dekodierter Name beweist nicht, dass das nächste Feld korrekt gelesen wird. Führen Sie relevante Tests mit abgeschnittenen und gültigen Testdaten aus, untersuchen Sie den endgültigen Offset und vergleichen Sie das Ergebnis des umgebenden Parsers, bevor Sie die Änderung übernehmen.

Sie können ein abliteriertes KI-Modell wählen, das ein unterstützter OpenAI-kompatibler oder Anthropic-Endpunkt anbietet, bei Bedarf mit Zugangsdaten. Einschränkungen seiner Antworten, Werkzeuge und Kontextgrenzen hängen weiterhin von Modell und Server ab. LabelFen unterstützt die Projektbesprechung; Ihre Prüfung und Protokolltestfälle liefern die Nachweise für die Softwareentscheidung.

Eine Korrektur des Protokollparsers nachvollziehen

Warum neben dem Namen auch den zurückgegebenen Offset prüfen?

Der Aufrufer kann diesen Offset zum Lesen des nächsten Felds verwenden. Ein korrekter Name mit falscher Fortsetzungsposition kann die restliche Paketinterpretation beschädigen. Nehmen Sie ein folgendes Feld in den Testfall auf und prüfen Sie beide Ergebnisse ausdrücklich.

Sollte ein kleiner Parser jede Zeigerform akzeptieren?

Akzeptieren Sie nur Formen, die Ihr dokumentierter Vertrag unterstützt. Vergleichen Sie die Implementierung mit dieser Teilmenge, bevor Sie sie erweitern. Lassen Sie das Modell neu akzeptierte Eingaben benennen, damit eine Bereinigung nicht stillschweigend die Protokollannahmeregeln ändert.

Was macht einen Testfall mit abgeschnittenem Paket nützlich?

Er sollte an einer aussagekräftigen Grenze enden, etwa bei einem unvollständigen Zeiger oder Label, und die erwartete Zurückweisung angeben. Prüfen Sie, ob der Parser vor dem Zugriff auf nicht vorhandene Bytes scheitert, und anschließend, wie der umgebende Leser den Fehler behandelt.

Kann die Paketuntersuchung Daten außerhalb meines Rechners offenlegen?

Je nach Endpunkt- und Werkzeugkonfiguration ja. Bevorzugen Sie bereinigte Byte-Testdaten und prüfen Sie die Ziele, bevor Sie Mitschnitte teilen. Ein separat laufender lokaler Modellserver macht nicht jedes verbundene Analysewerkzeug oder jeden externen Dienst lokal.

Für Windows herunterladen ↗

LabelFen · Aktualisiert 2026-10-25