Arşiv
EN

Vaka analizi. Yayımlandı

Siyah bant, PDF'teki bilgiyi siler mi?

Siyah bant kapattı, PDF unutmadı

Bu sözleşmenin yer imlerinde kalan metni ilk yazanlar Civio ve PDF Association. Bu dosyada yapılan, Civio'nun yayınına bağlı tarihsel kopyanın 14 Ekim 2026'da yeniden indirilmesi, iki PDF kütüphanesiyle okunması ve kontrollü bir deney.

CSINT-CASE-2026-020Arşivde aç

Sözleşmenin 14. sayfasından (b) paragrafı. To the extent that the total Cost of Goods exceed sözlerinden sonra satır sonuna kadar siyah bir bant var. İkinci satır da siyah bantla başlıyor ve AstraZeneca shall provide an updated purchase diye sürüyor. Paragrafın sonunda üç siyah bant daha var.
1684 × 432 piksel
Tarihsel kopyanın 14. sayfası, (b) paragrafı. Görüntü PyMuPDF ile PDF'in kendisinden 4 kat ölçekle çizildi; ekran görüntüsü değil. Sözleşme metni Avrupa Komisyonu ve AstraZeneca'ya ait; görüntü tarihsel kopyadan çizildi. Kaynak, DocumentCloud, tarihsel kopya

Tarihsel kopyanın 14

Kayıtların gösterdiği
Sayfa metninde geçmeyen 870 million Euros ifadesi, aynı dosyanın üç yer imi başlığında duruyor ve üçü de 14. sayfaya gidiyor. İki ayrı kütüphane aynı sayıları verdi.
Göstermediği
Siyah bantların altındaki metin. Ödenmiş kesin bir toplam. Kopyayı kimin ve hangi işlemle ürettiği.
Dayanak
Civio'ya bağlı DocumentCloud kopyası: 1.025.010 bayt, SHA-256 değeri 3c79a5de ile başlıyor. 14 Ekim 2026'da indirildi, yerelde PyMuPDF 1.27.2.3 ve pypdf 6.10.0 ile okundu.

İncelenen kayıt

Avrupa Komisyonu, AstraZeneca ile yaptığı aşı ön alım sözleşmesini 29 Ocak 2021'de bazı yerleri siyah bantla kapatılmış olarak yayımladı. Civio aynı gün sözleşmenin bir kopyasına bağlantı verdi. Bakılan soru, sayfada kapatılan bölgelerle ilgili metnin dosyanın başka bir bölümünde kalıp kalmadığı.

Yöntem

Kopya indirildi; boyutu ve SHA-256 değeri kaydedildi. Sayfa metni ve yer imi başlıkları PyMuPDF 1.27.2.3 ile okundu, aynı sayılar pypdf 6.10.0 ile tekrarlandı. Sonra özgün dosya, yalnız yeniden kaydedilmiş bir kontrol kopyası ve yer imi listesi boşaltılmış bir deney kopyası 41 sayfanın tamamında karşılaştırıldı. Hiçbir dosya çevrim içi bir hizmete yüklenmedi.

Hangi kopya

İncelenen dosya, Civio'nun 29 Ocak 2021 yazısına bağlı DocumentCloud kopyası. Komisyonun bugün yayımladığı PDF ayrı ve farklı bir dosya; tarihsel kopyanın yerine konmadı.

Kayıtlı SHA-256 değerleri ve indirme yanıtı

logs/preserved-evidence-manifest.json
  "sources\\apa-civio-documentcloud.pdf": "3c79a5dea75766d9efd7d2516927eae16a4211abde70a84ba966a84ba0ecc9d1",
  "sources\\apa_astrazeneca-current.pdf": "08be8ba71d9fd7b9adcdcf02d00bfd58910f4a02e8541989ffbe977d0c7a0ccd",

sources/apa-civio-documentcloud-download.json
  "url": "https://s3.documentcloud.org/documents/20466651/apa_-_astrazenecapdf.pdf",
  "download_utc": "2026-10-14T16:38:43.0531989Z",
  "status": 200,
    "Content-Length": [
      "1025010"
    ],
    "Last-Modified": [
      "Fri, 29 Jan 2021 15:05:36 GMT"
Satırlar kayıt dosyalarından olduğu gibi alındı; aradaki başka yanıt başlıkları gösterilmedi. Last-Modified sunucunun bildirdiği tarih, belgenin üretim tarihi değil. DocumentCloud, tarihsel kopya
Tarihsel kopyaGüncel resmi PDF
Boyut1.025.010 bayt3.094.193 bayt
SHA-256 başı3c79a5de08be8ba7
Sayfa4142
Yer imi başlığı2540
Çıkarılan sayfa metni88.517 karakter0 karakter
PyMuPDF 1.27.2.3 ile okundu. Güncel dosyanın belge özelliklerinde oluşturucu alanı bir Canon cihaz adı taşıyor. Bu ölçümler, iki dosya arasındaki farkı kimin ve neden yaptığını göstermiyor.

Test 1: sayfa metni

14. sayfanın metin alanı. Üstte on satırlık siyah bantlar, altında (b), (c) ve (d) paragrafları. (b) paragrafında Cost of Goods exceed sözlerinden sonra, (c) paragrafında reasonably expected to exceed sözlerinden sonra altı küçük siyah bant, (d) paragrafında is less sözlerinden sonra beş satırlık siyah bant var.
1880 × 2008 piksel
14. sayfanın metin alanı, aynı yöntemle çizildi. PyMuPDF'e göre sayfada görüntü yok; siyah alanlar 28 dolu çizim. Sözleşme metni Avrupa Komisyonu ve AstraZeneca'ya ait; görüntü tarihsel kopyadan çizildi. Kaynak, DocumentCloud, tarihsel kopya

14

Okunan sayfaGözlem
41
Çıkarılan metinGözlem
88.517 karakter
Metinde 870 geçen sayfaGözlem
0
14. sayfanın açılmış içerik akışında 870 bayt dizisiGözlem
0 eşleşme
Görüntüleyicide (b) paragrafını seçip kopyalamaGözlem
292 karakter, 870 yok
Bayt aramasında bulunmaması, bilginin tamamen silindiğini kanıtlamaz; aynı bilgi başka bir kodlamayla durabilir.

PyMuPDF, 14. sayfanın metni, satır 16 ile 41 arası (analysis/page14-text.txt)

(b) To the extent that the total Cost of Goods exceed 
 
, AstraZeneca shall provide an updated purchase 
and payment schedule to the Commission, which shall state the delivery schedule 
of the Initial Europe Doses and the corresponding amounts payable by the 
Participating Member States, 
 
 
   
(c) If AstraZeneca becomes aware that the estimated Cost of Goods are 
reasonably expected to exceed 
 
 
 
 
 
 then 
AstraZeneca shall notify the Commission of such excess and provide the relevant 
evidence in this respect. Following such notice, AstraZeneca and the Commission 
shall agree to a payment or other mechanism which will result in AstraZeneca 
supplying the Participating Member States with a number of Doses without 
incurring a loss. Such mechanism may include a reduction in the number of Doses 
and/or a further increase in Price Per Dose. 
(d) If following the finalization of the matters contemplated hereby, documentary 
evidence provided by AstraZeneca indicates that the Cost of Goods for the Initial 
Europe Doses sold is less 
Siyah bantların olduğu yerlerde çıkarılan metinde boş satırlar kalıyor. exceed kelimesinden sonra metin virgülle sürüyor.

Test 2: yer imleri

Bir masaüstü PDF görüntüleyicide tarihsel kopya açık. Araç çubuğunda 14 of 41 yazıyor. Solda Table of Contents paneli var; (b) başlığında the estimated amount of 870 million Euros by less than 20%, (c) başlığında expected to exceed 870 million Euros by 20% or more yazıyor. Sağda aynı sayfanın (b) ve (c) paragrafları siyah bantlarla görünüyor.
1360 × 1200 piksel
Ekran kaydından bir kare, 14 Ekim 2026. Sağ taraftaki boş gri alan kırpıldı. İşaretler yalnızca kayıttaki satırların üstünde. Sözleşme metni Avrupa Komisyonu ve AstraZeneca'ya ait; kare, belgenin bir masaüstü görüntüleyicide açık halinin ekran kaydından alındı. Kaynak, DocumentCloud, tarihsel kopya

Ekran kaydından bir kare, 14 Ekim 2026

Nesne 465, PyMuPDF ile okunan /Dest ve /Title alanları (analysis/object-465.txt)

<<
  /Dest [ 48 0 R /XYZ 69 599 0 ]
  /Next 464 0 R
  /Parent 457 0 R
  /Prev 458 0 R
  /Title (\(b\) To the extent that the total Cost of Goods exceed the estimated amount of 870 million Euros by less than 20%, AstraZeneca shall provide an updated purchase and payment schedule to the Commission, which shall state the delivery schedule of the Init...)
>>
Başlık dosyada üç noktayla bitiyor; kısaltma dosyanın kendisinde. /Dest alanındaki 48, 14. sayfanın nesne numarası.
NesneBaşlıktaki ifade/DestSayfa
465(b) exceed the estimated amount of 870 million Euros by less than 20%48 0 R /XYZ 69 59914
464(c) reasonably expected to exceed 870 million Euros by 20% or more48 0 R /XYZ 69 49014
459(d) for the Initial Europe Doses sold is less than 870 million Euros48 0 R /XYZ 69 36814
254 yer imi başlığından 870 geçen üçü. İfadeler başlıklardan aynen alındı. Üç hedef de aynı sayfa nesnesinde, yukarıdan aşağıya (b), (c) ve (d) sırasıyla.

Sayfa metninde (b) paragrafı exceed kelimesinde kesiliyor ve virgülle sürüyor. Aynı paragrafa giden yer imi başlığı o noktada the estimated amount of 870 million Euros by less than 20% diyor. Bu, iki metnin aynı paragrafa ait olduğunu gösteriyor. Siyah bantların altında tam olarak ne yazdığını göstermiyor.

Yer imindeki ifade tahmini maliyetle ilgili bir koşul. Ödenmiş kesin bir toplam değil.

İkinci kütüphane

pypdf 6.10.0, tarihsel kopya (analysis/pypdf-verification.json, seçilmiş satırlar)

  "tool": "pypdf",
  "version": "6.10.0",
    "historical": {
      "pages": 41,
      "bookmarks": 254,
          "xref": 465,
          "destination": "[IndirectObject(48, 0, 2501813762624), '/XYZ', 69, 599, 0]"
          "xref": 464,
          "destination": "[IndirectObject(48, 0, 2501813762624), '/XYZ', 69, 490, 0]"
          "xref": 459,
          "destination": "[IndirectObject(48, 0, 2501813762624), '/XYZ', 69, 368, 0]"
      "page_text_870_hits": [],
Başlık satırları ve sayfa listesi yer kaplamasın diye çıkarıldı; satırlar dosyadaki sırasıyla. pypdf aynı üç nesneyi, aynı sayfa nesnesini ve sayfa metninde sıfır eşleşmeyi buldu.

İki kütüphane bir noktada farklı sayı veriyor: pypdf 77 not sayıyor, PyMuPDF'in sayfa başına not listesi boş. Ek kontrol bunu açıklıyor: 76 bağlantı ve 1 form alanı var, PyMuPDF'in bu listesi bu iki türü saymıyor. Çelişki yok, ama dosyada not olmadığı da söylenemez.

Kontrollü deney

Üç dosya karşılaştırıldı. A, indirilen özgün dosya; hiç değiştirilmedi. B, A'nın pypdf ile yalnız yeniden kaydedilmiş kopyası. C, A'dan yer imi listesi çıkarılıp yeniden kaydedilen kopya. B ve C bu deney için üretildi; tarihsel yayıncı sürümleri değiller.

A, özgünB, yeniden kayıtC, liste boş
Yeniden açılan sayfa414141
Etkin yer imi2542540
870 geçen yer imi başlığı330
Görüntü boyutu, A ilekendisi41/41 aynı41/41 aynı
Ham RGB piksel SHA-256, A ilekendisi41/41 aynı41/41 aynı
Çıkarılan metin, A ilekendisi41/41 aynı41/41 aynı
PDF dosya baytları, A ilekendisifarklıfarklı
Bedeli taşıyan /Title nesnesi3: 459, 464, 4653: 550, 551, 5523: 550, 551, 552
Bu nesnelere dosyanın kökünden ulaşılıyor muevetevethayır
Görüntü ve piksel ölçümü PyMuPDF 1.27.2.3, metin eşitliği ve nesnelere ulaşma pypdf 6.10.0 ile. Her kütüphane kendi çıktısını kendi içinde karşılaştırdı.

C kopyasının işlemleri (analysis/comparison/creation.json)

      "file": "EXPERIMENT-outlines-removed.pdf",
      "role": "experiment: outline deletion plus unreferenced-object cleanup",
      "operations": [
        "clone_document_from_reader(original)",
        "root_object.pop('/Outlines')",
        "compress_identical_objects(remove_duplicates=False, remove_unreferenced=True)",
        "write(new_file)"
      ],
      "bytes": 1107111,
      "sha256": "6bed75bf6cdb11192db05bce7601f14848b1e6c2a9860df85fbc10f9d5b02f37",
      "reopened_pages": 41,
      "catalog_has_outlines": false

C kopyasında kalan başlık nesneleri, pypdf (analysis/comparison/independent-verification.json)

    "outlines_removed_experiment": {
      "pages": 41,
      "outline_count": 0,
      "page_text_870_count": 0,
      "residual_titles": [
          "xref": 550,
          "title_contains_870": true,
          "reachable_from_trailer": false
          "xref": 551,
          "title_contains_870": true,
          "reachable_from_trailer": false
          "xref": 552,
          "title_contains_870": true,
          "reachable_from_trailer": false
Sayfa metni hash listesi ve parantez satırları yer kaplamasın diye çıkarıldı. C'de liste boş, ama bedeli içeren üç Title nesnesi dosyada kopuk olarak duruyor. C güvenli bir karartma tarifi değil; temizlenmiş bir belge de değil.

Paylaşmadan önce bakılacaklar

Bir PDF'in sayfası temiz görünebilir. Sayfa metni, yer imleri, belge özellikleri ve ek dosyalar dosyanın ayrı bölümleri; her birine ayrı bakmak gerekir. Bu kopyada bedelle ilgili ifade yer imlerindeydi.

BölümTarihsel kopyada okunan
Sayfa metni41 sayfa, 88.517 karakter, 870 geçmiyor
Yer imleri254 başlık, üçünde 870 million Euros
Belge özellikleriBaşlık, yazar, oluşturucu, üretici ve tarih alanları boş; XMP verisi 0 karakter
Ek dosyalar0
PyMuPDF 1.27.2.3 ile okundu. Boş bir alan, dosyada başka gizli veri olmadığını göstermez.

Neyi bulduk, neyi bulmadık

BuldukBulmadık
Sayfa metninde 870 yok; üç yer imi başlığında 870 million Euros var.Siyah bantların altındaki metni açmadık, silinmiş sayfa metnini geri getirmedik.
Üç başlığın hedefi de 14. sayfa; iki kütüphane aynı sonucu verdi.Ödenmiş kesin bir toplam bulmadık; ifade tahmini maliyetle ilgili bir koşul.
Liste boşaltılınca üç başlık nesnesi dosyada kopuk olarak kaldı.Kopyanın kim tarafından ve hangi işlemle üretildiğini bulmadık.

Kanıtın göstermediği

  • Yer imindeki ifade tahmini maliyetle ilgili bir koşul; ödenmiş kesin toplam değil.
  • Silinmiş sayfa metnini geri getirmedik. Siyah alanların altındaki metni açmadık.
  • Tarihsel kopyanın kim tarafından ve hangi işlemle üretildiğini bu ölçümler kanıtlamaz.
  • Kopyanın özgünlüğü, üçüncü taraf kaynak zincirine bağlı.
  • Belge çevrim içi bir hizmete yüklenmedi; inceleme yerelde PyMuPDF 1.27.2.3 ve pypdf 6.10.0 ile yapıldı.

Çalışma kaydı. Bir PDF'i paylaşmadan önce yalnız sayfaya değil, dosyanın öteki bölümlerine de bak. Hangi kopyayı okuduğunu da yaz.

Video

Kaynaklar

Yayımlayan Ahmet Göker. Kayıtlarda görünen ajan ve araç katkıları Çalışma kaydı bölümünde. Belge, görüntü ve fotoğrafların hakları asıl sahiplerinde. Kişiler gösterilmiyor ya da bulanıklaştırıldı.