Proyek
Uji akar, pemotongan dan batas nama terurai 255 byte, lalu tolak penanda salah, siklus dan penunjuk yang tidak mundur.
Dekode nama DNS dari paket paling besar 65535 byte dan kembalikan label mentah beserta posisi berikutnya.
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
Uji akar, pemotongan dan batas nama terurai 255 byte, lalu tolak penanda salah, siklus dan penunjuk yang tidak mundur.
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
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 membawa pemeliharaan protokol ke ruang kerja pemrograman AI untuk Windows. Buka folder proyek dan jelaskan perilaku paket yang perlu diubah, termasuk ekspektasi tahap berikutnya setelah parsing. Percakapan yang berlandaskan berkas tersebut dapat menghubungkan perbaikan lokal dengan pembaca secara keseluruhan, alih-alih menilai fungsi pembantu hanya berdasarkan nilai keluarannya.
Nama DNS terkompresi menyediakan contoh tugas. Minta model memeriksa penanganan pointer, penolakan masukan cacat, dan offset yang dikembalikan kepada pemanggil. Sertakan paket dengan nama terkompresi yang diikuti field lain. Ini memberi tambalan yang diusulkan persyaratan konkret: memulihkan nama sambil menempatkan parser di sekitarnya pada posisi yang benar.
Selama peninjauan, bedakan posisi tujuan pointer dari posisi tempat pemanggil harus melanjutkan. Nama terdekode yang masuk akal tidak membuktikan field berikutnya akan dibaca dengan benar. Jalankan pengujian terkait menggunakan data uji terpotong dan valid, periksa offset akhir, serta bandingkan hasil parser di sekitarnya sebelum menerima perubahan.
Anda dapat memilih model AI abliterated yang ditawarkan endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung, dengan kredensial jika diperlukan. Batasan respons, alat, dan batas konteksnya tetap bergantung pada model dan server. LabelFen mendukung pembahasan proyek; peninjauan dan data uji protokol Anda menyediakan bukti untuk keputusan perangkat lunak.
Pemanggil mungkin menggunakan offset itu untuk membaca field berikutnya. Nama yang benar dengan posisi kelanjutan yang salah dapat merusak penafsiran sisa paket. Sertakan field berikutnya dalam data uji dan periksa kedua hasil secara eksplisit.
Terima hanya bentuk yang didukung kontrak terdokumentasi Anda. Bandingkan implementasi dengan subset tersebut sebelum memperluasnya. Minta model mengidentifikasi masukan yang baru diterima agar perapian tidak diam-diam mengubah aturan penerimaan protokol.
Data itu harus berakhir pada batas bermakna, seperti pointer atau label yang tidak lengkap, dan menetapkan penolakan yang diharapkan. Tinjau apakah parser gagal sebelum mengonsumsi byte yang tidak tersedia, lalu periksa cara pembaca di sekitarnya menangani kesalahan.
Ya, tergantung konfigurasi endpoint dan alat. Utamakan data uji byte yang telah dibersihkan dari informasi sensitif dan tinjau tujuan pengiriman sebelum membagikan tangkapan. Menjalankan server model lokal secara terpisah tidak membuat setiap alat pemeriksaan terhubung atau layanan eksternal menjadi lokal.
LabelFen · Diperbarui 2026-10-25