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.
Zdekoduj nazwę DNS z pakietu do 65535 bajtów i zwróć surowe etykiety oraz następne przesunięcie.
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
Sprawdź korzeń, ucięcie i limit rozwiniętej nazwy 255 bajtów, odrzucając błędne znaczniki, cykle i wskaźniki niekierujące wstecz.
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
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.
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 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.
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.
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.
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.
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.
LabelFen · Zaktualizowano 2026-10-25