プロジェクト
ルート、途切れ、展開後255バイトの上限を試し、不正タグ、循環、後方以外のポインターを拒否してください。
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
ルート、途切れ、展開後255バイトの上限を試し、不正タグ、循環、後方以外のポインターを拒否してください。
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
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はプロトコル保守をWindows向けAIコーディングワークスペースで扱います。プロジェクトフォルダーを開き、解析後に次の段階が何を期待するかも含め、変更したいパケットの動作を説明してください。ファイルに基づく対話なら、戻り値だけでヘルパーを判断せず、局所的な修正とリーダー全体の関係を確認できます。
圧縮されたDNS名は課題の一例です。ポインター処理、不正入力の拒否、呼び出し側に返すオフセットを調べるよう依頼します。圧縮名の後に別のフィールドがあるパケットを含めてください。名前を復元しつつ、周囲のパーサーを正しい位置に残すという具体的な要件をパッチ案に与えられます。
レビューでは、ポインターの参照先と呼び出し側が再開すべき位置を区別します。もっともらしい復号名だけでは、次のフィールドを正しく読める証拠になりません。途切れたケースと有効なケースのテストを実行し、最終オフセットを調べ、採用前に周囲のパーサーの結果を比較してください。
対応するOpenAI互換またはAnthropicのエンドポイントが提供する、拒否抑制を解除したAIモデルを選べます。必要なら認証情報を設定します。応答の制限、ツール、コンテキストの上限は引き続きモデルとサーバーに依存します。LabelFenはプロジェクトの検討を支援し、利用者のレビューとプロトコルのテストデータがソフトウェア上の判断の証拠になります。
呼び出し側がそのオフセットで次のフィールドを読む場合があるためです。名前が正しくても再開位置が誤れば、パケットの残りの解釈を壊します。後続フィールドをテストデータに含め、両方の結果を明示的に確認してください。
文書化した契約が対応する形式だけを受け付けてください。範囲を広げる前に、そのサブセットと実装を比較します。整理によってプロトコルの受け入れ規則が黙って変わらないよう、新たに受け付ける入力を特定するよう依頼してください。
不完全なポインターやラベルなど、意味のある境界で終わり、期待する拒否を指定したものです。利用できないバイトを消費する前にパーサーが失敗するか調べ、周囲のリーダーがエラーをどう扱うか確認してください。
はい。エンドポイントとツールの設定によります。機密情報を除いたバイト列のテストデータを優先し、キャプチャを共有する前に送信先を確認してください。ローカルモデルサーバーを別途動かしても、接続した調査ツールや外部サービスがすべてローカルになるわけではありません。
LabelFen · 更新日 2026-10-25