---
title: 'Protokol Çözümleyicileri'
source: 'https://academia.sh/tr/kurslar/sizma-testi/protokol-cozumleyicileri'
course: 'Güvenlik Araçları ve Sızma Testi'
language: tr
updated: '2026-08-17T18:08:40+00:00'
license: 'CC BY-SA 4.0'
---

# Protokol Çözümleyicileri

Uygulama katmanı incelemesinin görünürlük cinsinden ölçülmesi: on akışta tanımlı 30 uygulama alanının yalnız 16'sının okunabilmesi, iki akışın taşıma numarasına bakan çözümleyici tarafından yanlış etiketlenmesi, 91 iddia adayının 43'ünün kanıt ve 48'inin meta veriden yapılan çıkarım olması, beş şifreli akışın üçünde anahtar malzemesine erişimin kurum içinde bulunması ve pasif çözümlemenin hedefte sıfır kayıt bırakması.

Önceki ders alanları üretenine göre sınıflandırdı ve şifreli akışları tek satırla geçti: yük
görünmez, sunucu adı alanı görünür. Kurgu ölçüm ağındaki en çok iş taşıyan akışlar tam olarak
şifreli olanlardır. Çözümlemenin bu akışlarda eli boş kaldığı doğru değildir; eli başka türlü
doludur ve bu dersin konusu o "başka türlü"nün ne kadar ettiğidir.

**Protokol çözümleyici**, yakalanan baytları uygulama katmanı alanlarına ayırır. İki iş yapar:
bir **biçim varsayar** ve o biçime göre alanları adlandırır. İkisi de kanıt üretmez; birincisi bir
tahmindir, ikincisi tahmin doğruysa alan okur. Ölçülen şey bu iki adımın kaç akışta tuttuğudur.

## Görünürlük İki Sütundur

Bir akışta iki ayrı alan kümesi vardır. **Uygulama alanları** yalnız şifreleme kalkarsa ve biçim
doğru bilinirse okunur. **Meta alanları** her koşulda üretilir: uç adresleri, taşıma numarası, yön
dizisi, paket boyut dizisi, zamanlama aralığı, akış süresi. Şifreli oturumlarda buna el sıkışma
parametreleri ve sunucu adı alanı eklenir — şifreleme bu iki alanı kapatmaz.

Meta veri (metadata) kendi sorularına kanıt düzeyinde yanıt verir: akış ne kadar sürdü, hacmi neydi,
düzenli aralıklı mı. Bunlar yakalama noktasının kendi gözlemidir. Sorun, meta verinin **başka
soruların yanıtı gibi** kullanılmasında başlar. Boyut dizisine bakıp "işlem başarılı oldu", yön
dizisine bakıp "bu bir yazma işlemiydi" demek bir **vekil çıkarımdır**: alan okunmadan alanın
yanıtı tahmin edilir. Bu çıkarımlar sık sık doğrudur ve kanıt değildir.

- **AA8.** Biçim kataloğu, akış listesi ve iddia listesi **modeldir**; gerçek bir yakalama yok.
- **AA9.** Çözümleyici biçimi **taşıma numarasından** varsayar. Varsayım yanlışsa alanları okuyamaz
  ve akışı yanlış etiketler. Gerçek çözümleyiciler içerik imzasına da bakar; bu model yalnız
  numaraya bakar ve yanlış etiket sayısını üst sınır olarak verir.
- **AA10.** Metin tabanlı bir biçim yanlış etiketlendiğinde ham metin parçası görünür sayılır;
  ikili biçimde hiçbir şey görünmez.
- **AA11.** Şifreli akışta uygulama alanı okunmaz; meta alanları eksiksiz üretilir.
- **AA12.** Bir iddia, dayanağı okunmuş uygulama alanından geliyorsa **kanıttır**; meta türü
  iddialar meta alanından karşılandığında da kanıttır. Vekil alandan karşılanan alan türü iddia
  **çıkarımdır**.
- **AA13.** Anahtar malzemesine erişim kurumun kendi ucunda bir ajanla sağlanıyorsa `uc-ajani`,
  sağlanamıyorsa `yok` yazılır.
- **AA14.** Pasif çözümleme hedefte kayıt üretmez; araya girerek çözme aktif bir adımdır.

```js
// prot/cozum.mjs — protokol cozumleyici gorunurlugu MODELIDIR. Gercek bir yakalama,
// gercek adres ve gercek kurum yok. Bir cozumleyici, tasima bilgisinden bir bicim VARSAYAR;
// varsayim yanlissa alanlari okuyamaz ve akisi yanlis etiketler.
export const BICIM = {
  'metin-istek':     { metin: true,  alan: ['istek-satiri', 'baslik-alanlari', 'govde', 'durum-kodu', 'oturum-kimligi', 'kullanici-alani'] },
  'olcum-protokolu': { metin: false, alan: ['islev-kodu', 'kayit-adresi', 'deger-alani', 'birim-kimligi'] },
  'dosya-aktarimi':  { metin: true,  alan: ['komut-adi', 'dosya-adi', 'kullanici-alani', 'boyut-alani'] },
  'ad-cozumleme':    { metin: true,  alan: ['sorgu-adi', 'kayit-turu', 'yanit-kodu'] },
  'ikili-senkron':   { metin: false, alan: ['islem-kodu', 'kayit-sayisi', 'zaman-damgasi'] },
  'sifreli-oturum':  { metin: false, alan: [] },
};

// Cozumleyicinin tasima numarasindan yaptigi bicim varsayimi.
export const VARSAYIM = { 80: 'metin-istek', 443: 'sifreli-oturum', 502: 'olcum-protokolu',
  21: 'dosya-aktarimi', 53: 'ad-cozumleme', 8080: 'metin-istek' };

// Sifreleme kalksa da kalan alanlar: cozumleyici bunlari her akista uretir.
export const META = ['uc-adresleri', 'tasima-numarasi', 'yon-dizisi', 'paket-boyut-dizisi',
  'zamanlama-araligi', 'akis-suresi'];
export const SIFRELI_EK = ['sunucu-adi-alani', 'el-sikisma-parametreleri'];

// satir: akis | tasima numarasi | gercek bicim | sifreli mi | anahtar malzemesine erisim
export const AKIS = `
  s1-ucu>toplayici       502 olcum-protokolu evet uc-ajani
  s2-ucu>toplayici       502 olcum-protokolu evet uc-ajani
  toplayici>dogrulayici  443 sifreli-oturum  evet uc-ajani
  abone-ucu>portal       443 sifreli-oturum  evet yok
  saha-uc>saha-svc      8080 ikili-senkron   hayir yok
  yonetim>toplayici       80 metin-istek     hayir yok
  yonetim>dogrulayici     80 metin-istek     hayir yok
  fatura>dis-uc          443 sifreli-oturum  evet yok
  toplayici>fatura       502 ikili-senkron   hayir yok
  saha-uc>dosya-svc       21 dosya-aktarimi  hayir yok
`.trim().split('\n').map((r) => {
  const [ad, port, bicim, sifreli, anahtar] = r.trim().split(/\s+/);
  return { ad, port: +port, bicim, sifreli: sifreli === 'evet', anahtar };
});

// Cozumleme sonucu: okunan uygulama alani, uretilen meta alan, yanlis etiket.
export function coz(a) {
  const varsayilan = VARSAYIM[a.port];
  const meta = [...META, ...(a.sifreli ? SIFRELI_EK : [])];
  if (a.sifreli) return { okunan: [], meta, etiket: varsayilan, yanlisEtiket: false, derinlik: 'yalniz-meta' };
  if (varsayilan === a.bicim)
    return { okunan: BICIM[a.bicim].alan, meta, etiket: varsayilan, yanlisEtiket: false, derinlik: 'tam' };
  const kismi = BICIM[a.bicim].metin ? ['ham-metin-parcasi'] : [];
  return { okunan: kismi, meta, etiket: varsayilan, yanlisEtiket: true,
    derinlik: kismi.length ? 'kismi' : 'yok' };
}

// Iddia: cozumleyici ciktisindan cikarilan onerme.
// tur 'meta' iddialar dogrudan meta alanindan karsilanir ve kanit sayilir (nokta gozlemi).
// tur 'alan' iddialar yalniz uygulama alanindan kanitlanir; vekil, meta alanindan yapilan
// tahmindir ve CIKARIM sayilir.
export const IDDIA = [
  { ad: 'akis-suresi-ve-hacmi', tur: 'meta', gerek: ['akis-suresi'], vekil: [] },
  { ad: 'duzenli-aralik-var',   tur: 'meta', gerek: ['zamanlama-araligi'], vekil: [] },
  { ad: 'karsi-uc-adi',         tur: 'meta', gerek: ['sunucu-adi-alani'], vekil: [] },
  { ad: 'oturum-parametreleri', tur: 'meta', gerek: ['el-sikisma-parametreleri'], vekil: [] },
  { ad: 'konusulan-bicim',      tur: 'alan', gerek: ['istek-satiri', 'islev-kodu', 'komut-adi', 'islem-kodu', 'sorgu-adi'], vekil: ['tasima-numarasi'] },
  { ad: 'istenen-kaynak',       tur: 'alan', gerek: ['istek-satiri', 'sorgu-adi', 'dosya-adi'], vekil: ['sunucu-adi-alani'] },
  { ad: 'islem-sonucu',         tur: 'alan', gerek: ['durum-kodu', 'yanit-kodu'], vekil: ['paket-boyut-dizisi'] },
  { ad: 'yazma-mi-okuma-mi',    tur: 'alan', gerek: ['islev-kodu', 'islem-kodu', 'komut-adi'], vekil: ['yon-dizisi'] },
  { ad: 'aktarilan-dosya',      tur: 'alan', gerek: ['dosya-adi', 'boyut-alani'], vekil: ['paket-boyut-dizisi'] },
  { ad: 'kayit-sayisi',         tur: 'alan', gerek: ['kayit-sayisi', 'kayit-adresi'], vekil: ['paket-boyut-dizisi'] },
  { ad: 'tasinan-kimlik-alani', tur: 'alan', gerek: ['kullanici-alani', 'oturum-kimligi'], vekil: [] },
  { ad: 'yazilan-olcum-degeri', tur: 'alan', gerek: ['deger-alani'], vekil: [] },
];

// Bir iddianin bir akistaki durumu: kanit | cikarim | karsilanmaz
export function durum(i, c) {
  if (i.gerek.some((g) => c.okunan.includes(g))) return 'kanit';
  if (i.tur === 'meta' && i.gerek.some((g) => c.meta.includes(g))) return 'kanit';
  if (i.vekil.some((g) => c.meta.includes(g))) return 'cikarim';
  return 'karsilanmaz';
}

export function olc() {
  const s = { tanimli: 0, okunan: 0, meta: 0, yanlisEtiket: 0, aday: 0, kanit: 0, cikarim: 0 };
  for (const a of AKIS) {
    const c = coz(a);
    s.tanimli += BICIM[a.bicim].alan.length;
    s.okunan += c.okunan.length;
    s.meta += c.meta.length;
    if (c.yanlisEtiket) s.yanlisEtiket += 1;
    for (const i of IDDIA) {
      const d = durum(i, c);
      if (d !== 'karsilanmaz') { s.aday += 1; s[d] += 1; }
    }
  }
  return s;
}
```

## On Akış, İki Sütun

```js
// prot/gorunurluk.mjs — on akis cozumleyiciden gecirilir; alan ile meta ayri sayilir.
import { AKIS, BICIM, IDDIA, coz, durum, olc } from './cozum.mjs';

const y = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd());

const A = [-23, -17, 7, 8, 8, 7, 17, 13];
console.log('1. akis basina cozumleme derinligi');
y(A, 'akis', 'gercek bicim', 'tasima', 'sifreli', 'tanimli', 'okunan', 'etiket', 'derinlik');
for (const a of AKIS) {
  const c = coz(a);
  y(A, a.ad, a.bicim, a.port, a.sifreli ? 'evet' : 'hayir', BICIM[a.bicim].alan.length,
    c.okunan.length, c.etiket, c.derinlik);
}

const B = [-22, 6, 7, 9, 13];
console.log('\n2. iddia turu basina karsilanma (10 akis)');
y(B, 'iddia', 'tur', 'kanit', 'cikarim', 'karsilanmaz');
for (const i of IDDIA) {
  const d = AKIS.map((a) => durum(i, coz(a)));
  y(B, i.ad, i.tur, d.filter((x) => x === 'kanit').length,
    d.filter((x) => x === 'cikarim').length, d.filter((x) => x === 'karsilanmaz').length);
}

const s = olc();
console.log('\n3. toplam');
console.log(`  tanimli uygulama alani     ${s.tanimli}`);
console.log(`  okunan uygulama alani      ${s.okunan}`);
console.log(`  uretilen meta alani        ${s.meta}`);
console.log(`  yanlis etiketlenen akis    ${s.yanlisEtiket} / ${AKIS.length}`);
console.log(`  uretilen iddia adayi       ${s.aday} / ${IDDIA.length * AKIS.length}`);
console.log(`    kanit                    ${s.kanit}`);
console.log(`    cikarim                  ${s.cikarim}`);
console.log(`  bicim cikarimi yanlis olan ${s.yanlisEtiket} akis`);

const sifreli = AKIS.filter((a) => a.sifreli);
console.log('\n4. sifreli akista ici gorme secenekleri');
console.log(`  sifreli akis                          ${sifreli.length} / ${AKIS.length}`);
console.log(`  uc ajaniyla anahtara erisim var       ${sifreli.filter((a) => a.anahtar !== 'yok').length}`);
console.log(`  araya girmeden cozulemez              ${sifreli.filter((a) => a.anahtar === 'yok').length}`);
console.log(`  pasif cozumlemenin hedefte izi        0 kayit`);
console.log(`  araya girmenin hedefte izi            akis basina 1 uyari (aktif adim)`);
```

```
1. akis basina cozumleme derinligi
akis                   gercek bicim      tasima sifreli tanimli okunan           etiket     derinlik
s1-ucu>toplayici       olcum-protokolu      502    evet       4      0  olcum-protokolu  yalniz-meta
s2-ucu>toplayici       olcum-protokolu      502    evet       4      0  olcum-protokolu  yalniz-meta
toplayici>dogrulayici  sifreli-oturum       443    evet       0      0   sifreli-oturum  yalniz-meta
abone-ucu>portal       sifreli-oturum       443    evet       0      0   sifreli-oturum  yalniz-meta
saha-uc>saha-svc       ikili-senkron       8080   hayir       3      0      metin-istek          yok
yonetim>toplayici      metin-istek           80   hayir       6      6      metin-istek          tam
yonetim>dogrulayici    metin-istek           80   hayir       6      6      metin-istek          tam
fatura>dis-uc          sifreli-oturum       443    evet       0      0   sifreli-oturum  yalniz-meta
toplayici>fatura       ikili-senkron        502   hayir       3      0  olcum-protokolu          yok
saha-uc>dosya-svc      dosya-aktarimi        21   hayir       4      4   dosya-aktarimi          tam

2. iddia turu basina karsilanma (10 akis)
iddia                    tur  kanit  cikarim  karsilanmaz
akis-suresi-ve-hacmi    meta     10        0            0
duzenli-aralik-var      meta     10        0            0
karsi-uc-adi            meta      5        0            5
oturum-parametreleri    meta      5        0            5
konusulan-bicim         alan      3        7            0
istenen-kaynak          alan      3        5            2
islem-sonucu            alan      2        8            0
yazma-mi-okuma-mi       alan      1        9            0
aktarilan-dosya         alan      1        9            0
kayit-sayisi            alan      0       10            0
tasinan-kimlik-alani    alan      3        0            7
yazilan-olcum-degeri    alan      0        0           10

3. toplam
  tanimli uygulama alani     30
  okunan uygulama alani      16
  uretilen meta alani        70
  yanlis etiketlenen akis    2 / 10
  uretilen iddia adayi       91 / 120
    kanit                    43
    cikarim                  48
  bicim cikarimi yanlis olan 2 akis

4. sifreli akista ici gorme secenekleri
  sifreli akis                          5 / 10
  uc ajaniyla anahtara erisim var       3
  araya girmeden cozulemez              2
  pasif cozumlemenin hedefte izi        0 kayit
  araya girmenin hedefte izi            akis basina 1 uyari (aktif adim)
```

## Çözümleyicinin Kendi Yorumu

İlk tablonun son iki sütunu bu dersin en sessiz bulgusudur. Tanımlı 30 uygulama alanının yalnız
16'sı okunuyor. Kayıp iki yerden geliyor: beş akış şifreli, iki akış da **yanlış etiketlenmiş**.

Yanlış etiket, aracın bir kusuru değil bir varsayımın sonucudur. Saha eşitlemesi ikili bir biçim
konuşuyor ama alışılmış metin numarasının bir yakınında dinliyor; çözümleyici metin isteği
varsayıyor ve üç tanımlı alandan hiçbirini okuyamıyor. Toplayıcıdan faturalamaya giden akış ölçüm
numarası üzerinden ikili eşitleme yapıyor; çözümleyici ölçüm protokolü etiketi basıyor. İkisinde de
çıktı boş değildir — çıktı **yanlıştır**. Rapora "şu akışta ölçüm protokolü konuşuluyor" satırı
girerse, o satır bir yanlış pozitiftir ve kaynağı hedefteki sistem değil, çözümleyicinin kendisidir.

İkinci tabloda `konusulan-bicim` satırı bunu sayıyla verir: üç akışta biçim gerçekten okunan bir
alandan doğrulanmış, yedi akışta yalnız taşıma numarasından çıkarılmış ve o yedinin **ikisi
yanlış**. Bir çıkarımı kanıta çevirmenin yolu, biçimi ele veren bir alanı gerçekten okumaktır.

Bu iki akışın ikinci bir okuması daha vardır ve savunma tarafına yazılır. Alışılmış numarasının
dışında konuşan bir servis, envanterde kolay gözden kaçar ve numaraya bakarak sınıflandıran her
denetimi aynı biçimde şaşırtır. Değerlendirmenin çözümleyicisini yanıltan şey, savunmanın
sınıflandırıcısını da yanıltır; bulgu "çözümleyici yanıldı" değil, "bu iki akış hiçbir numara
temelli sınıflandırmaya girmiyor" biçiminde yazılır.

## Meta Verinin Söylediği ve Söylemediği

Doksan bir aday üretildi; 43'ü kanıt, 48'i çıkarım. Çıkarım sütunu neredeyse yarıdır ve içeriği
belirgin bir düzen gösteriyor. `kayit-sayisi` on akışın onunda çıkarım, sıfırında kanıt: paket boyut
dizisine bakıp "şu kadar kayıt aktarıldı" demek her akışta mümkündür ve hiçbir akışta kanıt değildir.
`islem-sonucu` sekiz akışta çıkarım — yanıt boyutundan başarı okumak eski bir alışkanlıktır ve
şifreli akışlarda tek seçenek gibi görünür.

Buna karşılık iki satır hiç çıkarım üretmiyor. `tasinan-kimlik-alani` üç akışta kanıt, yedi akışta
karşılanmaz; `yazilan-olcum-degeri` on akışın onunda karşılanmaz. Bu iki satır şifrelemenin
gerçekten tuttuğu yerdir: kimlik alanının içeriği ve yazılan ölçüm değeri meta veriden türetilemez,
vekilleri yoktur. Değerlendirme raporunda "karşılanmaz" yazmak bir eksiklik değil, doğru cevaptır;
çıkarımı kanıt diye yazmak eksikliktir.

Meta türü dört iddia toplam 30 kanıt üretiyor ve bunların 10'u yalnız şifreli akışlardan geliyor —
sunucu adı alanı ile el sıkışma parametreleri. Şifreleme uygulama alanlarını kapatırken bu iki alanı
açık bırakır ve `istenen-kaynak` iddiasına beş akışta bir vekil sağlar. Şifreli trafik, sorunun
tamamını kapatmaz; hangi tarafla konuşulduğunu ve ne kadar konuşulduğunu söylemeye devam eder.

## Şifrenin İçini Görmenin Bedeli

Beş şifreli akışın üçünde anahtar malzemesine erişim kurumun kendi ucundadır: ölçüm uçları ve
toplayıcı kurumun yönettiği aygıtlardır, uçtaki bir ajan çözümlemeyi kapsam içinde mümkün kılar.
Kalan ikisi abone portalı oturumu ile dış bildirim akışıdır. Birincisinin diğer ucunda bir abone
vardır, ikincisininkinde başka bir kurum. Bu iki akışın içini görmenin tek yolu araya girmektir;
araya girmek pasif olmaktan çıkmak, hedefte kayıt ve uyarı üretmek ve üçüncü tarafın trafiğine
dokunmak demektir. Yazılı yetki ve tanımlı kapsam bunları içermiyorsa bu adım hem yasadışı hem
meslek dışıdır ve iki akış **çözümlenmeden bırakılır**.

Savunmada bırakılan iz de burada ikiye ayrılır. Pasif çözümleme önceki dersteki gibi sıfır kayıt
üretir. Araya girerek çözme akış başına en az bir uyarı üretir — kurulan güven zincirinin
beklenenden farklı olması, uçtaki denetimin göreceği ilk şeydir. Bu, kursta ilk kez sıfır olmayan
iz sütunudur ve nedeni araçların değişmesi değil, adımın **aktif** hale gelmesidir.

## Özet

- On akışta tanımlı 30 uygulama alanının 16'sı okunur; kaybın beş akışlık bölümü şifrelemeden, iki
  akışlık bölümü biçim varsayımının tutmamasından gelir.
- Çözümleyici biçimi taşıma bilgisinden varsayar; iki akış yanlış etiketlenir ve çıktı boş değil
  yanlış olur. Bu, hedeften değil araçtan gelen bir yanlış pozitif kaynağıdır.
- Doksan bir adayın 43'ü kanıt, 48'i meta veriden yapılan vekil çıkarımdır; `kayit-sayisi` on
  akışın onunda çıkarım, sıfırında kanıttır.
- Kimlik alanının içeriği ve yazılan ölçüm değeri hiçbir akışta meta veriden türetilemez;
  şifrelemenin gerçekten tuttuğu yer bu iki satırdır.
- Beş şifreli akışın üçünde anahtara kurum içinden erişilir; ikisi abone ve üçüncü taraf içerdiği
  için çözümlenmeden bırakılır.
- Pasif çözümleme sıfır kayıt bırakır; araya girerek çözme akış başına en az bir uyarı üretir ve
  adımı aktif sınıfa taşır.

## Sonraki Adım

Buraya kadar iki araç da yalnız **bakan** araçlardı: geçen trafiği kaydettiler ve okuyabildikleri
alanları okudular. İkisinin de ortak sınırı şu: bir akışta bir alanın belirli bir değerle geçtiğini
görmek, o alana **başka bir değer** yazıldığında sistemin ne yapacağını söylemez. Bir adayın
gerçekten açık olduğunu göstermek için isteği değiştirip yanıtı görmek gerekir.

Sonraki ders vekil aracı bir doğrulama adımı olarak ele alır ve tek soruyu sorar: bir adayın açık
olduğunu göstermek kaç istek ister. İstekler üç risk sınıfına ayrılır — yalnız gözleyen, hedefte
durum değiştiren ve hizmeti kesme riski taşıyan — ve her adayın doğrulama planı bu sınıflar
cinsinden sayılır. Ayrıca kapsam denetimi ilk kez devreye girer: bazı istekler kapsam dışındaki bir
tarafa dokunduğu için hiç gönderilemez ve o adaylar kanıta dönüşmeden kalır.
