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ç

- 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"| Tarihsel kopya | Güncel resmi PDF | |
|---|---|---|
| Boyut | 1.025.010 bayt | 3.094.193 bayt |
| SHA-256 başı | 3c79a5de | 08be8ba7 |
| Sayfa | 41 | 42 |
| Yer imi başlığı | 254 | 0 |
| Çıkarılan sayfa metni | 88.517 karakter | 0 karakter |
Test 1: sayfa metni

- 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
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 Test 2: yer imleri

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...)
>>| Nesne | Başlıktaki ifade | /Dest | Sayfa |
|---|---|---|---|
| 465 | (b) exceed the estimated amount of 870 million Euros by less than 20% | 48 0 R /XYZ 69 599 | 14 |
| 464 | (c) reasonably expected to exceed 870 million Euros by 20% or more | 48 0 R /XYZ 69 490 | 14 |
| 459 | (d) for the Initial Europe Doses sold is less than 870 million Euros | 48 0 R /XYZ 69 368 | 14 |
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": [],İ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ün | B, yeniden kayıt | C, liste boş | |
|---|---|---|---|
| Yeniden açılan sayfa | 41 | 41 | 41 |
| Etkin yer imi | 254 | 254 | 0 |
| 870 geçen yer imi başlığı | 3 | 3 | 0 |
| Görüntü boyutu, A ile | kendisi | 41/41 aynı | 41/41 aynı |
| Ham RGB piksel SHA-256, A ile | kendisi | 41/41 aynı | 41/41 aynı |
| Çıkarılan metin, A ile | kendisi | 41/41 aynı | 41/41 aynı |
| PDF dosya baytları, A ile | kendisi | farklı | farklı |
| Bedeli taşıyan /Title nesnesi | 3: 459, 464, 465 | 3: 550, 551, 552 | 3: 550, 551, 552 |
| Bu nesnelere dosyanın kökünden ulaşılıyor mu | evet | evet | hayır |
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": falseC 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": falsePaylaş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üm | Tarihsel kopyada okunan |
|---|---|
| Sayfa metni | 41 sayfa, 88.517 karakter, 870 geçmiyor |
| Yer imleri | 254 başlık, üçünde 870 million Euros |
| Belge özellikleri | Başlık, yazar, oluşturucu, üretici ve tarih alanları boş; XMP verisi 0 karakter |
| Ek dosyalar | 0 |
Neyi bulduk, neyi bulmadık
| Bulduk | Bulmadı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
- DocumentCloud, apa_-_astrazenecapdf.pdfİncelenen tarihsel kopya, 14 Ekim 2026'da indirildi
- CivioKopyanın bağlı olduğu yayın, 29 Ocak 2021
- PDF Association, Michael KarbeAynı sözleşmenin karartma incelemesi, 9 Şubat 2021
- European Commission, apa_astrazeneca.pdfGüncel resmi PDF, ayrı ve farklı bir dosya
- Chris Zabriskie, Cylinder EightVideodaki müzik, CC BY 4.0. Değişiklikler: kesit seçimi, seviye ayarı, giriş ve çıkış geçişi
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ı.
