Proje
Kökü, kesilmeyi ve 255 baytlık açılmış ad sınırını test edip geçersiz etiketleri, döngüleri ve geriye gitmeyen işaretçileri reddedin.
En fazla 65535 baytlık paketten DNS adını çözerek ham etiketlerle sonraki konumu döndürün.
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
Kökü, kesilmeyi ve 255 baytlık açılmış ad sınırını test edip geçersiz etiketleri, döngüleri ve geriye gitmeyen işaretçileri reddedin.
Gerçek davranışı beklenen sonuçla karşılaştırın. Bir kontrol başarısız olursa yeni değişikliklerden önce nedenini araştırın.
Temel URL ve gerekiyorsa API anahtarıyla OpenAI uyumlu veya Anthropic endpoint yapılandırın. Bağlantıyı test edin. Yerel model sunucusu çalışıyor olmalıdır; uzak araçlar ayrıca veri aktarabilir.
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, protokol bakımını bir Windows yapay zeka kodlama çalışma alanına taşır. Proje klasörünü açın ve ayrıştırma sonrasında sonraki aşamanın ne beklediği dahil, değiştirmek istediğiniz paket davranışını açıklayın. Bu dosyalara dayanan bir görüşme, yardımcı işlevi yalnızca döndürdüğü değere göre değerlendirmek yerine yerel bir düzeltmeyi daha geniş okuyucuyla ilişkilendirebilir.
Sıkıştırılmış DNS adları bir örnek görev sunar. Modelden işaretçi işlemeyi, bozuk girdilerin reddedilmesini ve çağıran koda döndürülen ofseti incelemesini isteyin. Sıkıştırılmış addan sonra başka bir alan içeren paket ekleyin. Böylece önerilen yama somut bir gereksinim kazanır: çevresindeki ayrıştırıcıyı doğru konumda bırakırken adı elde etmek.
İnceleme sırasında işaretçinin takip edildiği yerle çağıran kodun devam etmesi gereken yeri ayırın. Makul bir çözümlenmiş ad, sonraki alanın doğru okunacağını kanıtlamaz. Kesilmiş ve geçerli test verileriyle ilgili testleri çalıştırın, son ofseti inceleyin ve değişikliği benimsemeden önce çevresindeki ayrıştırıcının sonucunu karşılaştırın.
Desteklenen bir OpenAI uyumlu veya Anthropic uç noktasının sunduğu abliterasyonu uygulanmış bir yapay zeka modelini gerektiğinde kimlik bilgileriyle seçebilirsiniz. Yanıt kısıtlamaları, araçları ve bağlam sınırları modele ve sunucuya bağlı kalır. LabelFen proje tartışmasını destekler; yazılım kararına ilişkin kanıtı incelemeniz ve protokol test verileriniz sağlar.
Çağıran kod bu ofseti sonraki alanı okumak için kullanabilir. Yanlış devam konumuyla birlikte doğru bir ad, paketin geri kalanının yorumunu bozabilir. Test verisine sonraki alanı ekleyin ve iki sonucu da açıkça denetleyin.
Yalnızca belgelenmiş sözleşmenizin desteklediği biçimleri kabul edin. Genişletmeden önce uygulamayı bu alt kümeyle karşılaştırın. Temizliğin protokol kabul kurallarını sessizce değiştirmemesi için modelden yeni kabul edilen girdileri belirlemesini isteyin.
Eksik bir işaretçi veya etiket gibi anlamlı bir sınırda bitmeli ve beklenen reddetmeyi belirtmelidir. Ayrıştırıcının mevcut olmayan baytları tüketmeden başarısız olup olmadığını inceleyin, ardından çevresindeki okuyucunun hatayı nasıl ele aldığını denetleyin.
Uç nokta ve araç yapılandırmasına bağlı olarak evet. Hassas verilerden arındırılmış bayt test verilerini tercih edin ve yakalanmış paketleri paylaşmadan önce hedefleri inceleyin. Yerel model sunucusunu ayrı çalıştırmak, bağlı her inceleme aracını veya harici hizmeti yerel yapmaz.
LabelFen · Güncellendi 2026-10-25