LLabelFen
Środowisko programowania z AI

Nazwy DNS ze wskaźnikami wstecz

Zdekoduj nazwę DNS z pakietu do 65535 bajtów i zwróć surowe etykiety oraz następne przesunięcie.

● ● ●LabelFen●
Sposoby pracy · Nazwy DNS ze wskaźnikami wstecz ×
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
✳Nazwy DNS ze wskaźnikami wstecz
✓ ZmianySprawdź przed zastosowaniem ↗
Ilustracja środowiska
01

Projekt

Sprawdź korzeń, ucięcie i limit rozwiniętej nazwy 255 bajtów, odrzucając błędne znaczniki, cykle i wskaźniki niekierujące wstecz.

02

Sprawdź przed zastosowaniem

Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.

03

Modele

Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.

Sposoby pracy

Nazwy DNS ze wskaźnikami wstecz

Sposoby pracy ↗
Sposoby pracy
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
Środowisko programowania z AI

Sprawdzaj wynik parsera i pozycję, którą pozostawia

LabelFen przenosi utrzymanie protokołów do środowiska programowania z AI dla Windows. Otwórz folder projektu i opisz zachowanie pakietu, które chcesz zmienić, w tym oczekiwania kolejnego etapu po parsowaniu. Rozmowa oparta na tych plikach może powiązać lokalną poprawkę z szerszym mechanizmem odczytu zamiast oceniać funkcję pomocniczą wyłącznie po zwracanej wartości.

Skompresowane nazwy DNS stanowią przykładowe zadanie. Poproś model o sprawdzenie obsługi wskaźników, odrzucania nieprawidłowych danych i przesunięcia zwracanego do kodu wywołującego. Dodaj pakiet ze skompresowaną nazwą, po której następuje kolejne pole. Nadaje to proponowanej poprawce konkretne wymaganie: odtworzyć nazwę, pozostawiając otaczający parser we właściwym miejscu.

Podczas przeglądu odróżniaj miejsce podążania za wskaźnikiem od miejsca, w którym kod wywołujący powinien wznowić odczyt. Wiarygodna zdekodowana nazwa nie dowodzi poprawnego odczytu kolejnego pola. Uruchom odpowiednie testy z uciętymi i prawidłowymi danymi, sprawdź końcowe przesunięcie i porównaj wynik otaczającego parsera przed przyjęciem zmiany.

Możesz wybrać abliterowany model AI oferowany przez obsługiwany punkt końcowy zgodny z OpenAI lub Anthropic, z danymi uwierzytelniającymi, gdy są wymagane. Ograniczenia odpowiedzi, narzędzia i limity kontekstu nadal zależą od modelu i serwera. LabelFen wspiera rozmowę o projekcie; Twój przegląd i dane testowe protokołu dostarczają dowodów do decyzji o oprogramowaniu.

Śledzenie poprawki parsowania protokołu

Dlaczego sprawdzać zwrócone przesunięcie oprócz nazwy?

Kod wywołujący może używać tego przesunięcia do odczytu kolejnego pola. Poprawna nazwa z błędną pozycją wznowienia może zepsuć interpretację reszty pakietu. Dodaj następne pole do danych testowych i jawnie sprawdź oba wyniki.

Czy mały parser powinien przyjmować każdą postać wskaźnika?

Przyjmuj tylko postacie obsługiwane przez udokumentowany kontrakt. Porównaj implementację z tym podzbiorem przed jego poszerzeniem. Poproś model o wskazanie nowo akceptowanych wejść, aby porządkowanie kodu nie zmieniło po cichu reguł akceptacji protokołu.

Co sprawia, że ucięty pakiet testowy jest przydatny?

Powinien kończyć się na istotnej granicy, na przykład niepełnym wskaźniku lub etykiecie, i określać oczekiwane odrzucenie. Sprawdź, czy parser zgłasza błąd przed odczytem niedostępnych bajtów, a następnie jak otaczający mechanizm odczytu obsługuje błąd.

Czy badanie pakietów może ujawnić dane poza moim komputerem?

Tak, zależnie od konfiguracji punktu końcowego i narzędzi. Preferuj oczyszczone z wrażliwych danych zestawy bajtów i sprawdzaj miejsca docelowe przed udostępnianiem przechwyceń. Osobno uruchomiony lokalny serwer modelu nie sprawia, że każde podłączone narzędzie analizy lub usługa zewnętrzna staje się lokalna.

Pobierz dla Windows ↗

LabelFen · Zaktualizowano 2026-10-25