İkili Dosya Karşılaştırma

İki dosya bırakın ve bu sayfa onları tarayıcınızın içinde bayt bayt karşılaştırır: her farklı konum, çevresindeki bağlamla onaltılık fark, bir fark yoğunluk haritası ve hangi bitlerin değiştiğini gösteren bit düzeyinde analiz. Ayrı bir blok hizalı mod, bir dosyanın ortasındaki eklemeleri ve silmeleri algılar — düz bayt farkının hizalayamadığı durum. Sonuçlar TXT ve CSV olarak dışa aktarılır. Hiçbir şey bir yere yüklenmez. Karşılaştırmak yerine baytları düzenlemek için onaltılık düzenleyiciye, metin için ise Metin Farkı aracına bakın.
DOSYA A
İlk dosyayı buraya bırakın veya seçmek için tıklayın
200 MB'a kadar. Bu makinede kalır.
DOSYA B
İkinci dosyayı buraya bırakın veya seçmek için tıklayın
Dosya A ile karşılaştırıldı.
Her farkın etrafındaki onaltılık bağlam:  — 16 bayttan daha yakın komşu farklar tek bir blok olarak gösterilir.
İki dosya da seçilip karşılaştırıldığında karşılaştırma özeti burada görünür.
Bayt bayt fark, N konumunu N konumuyla hizalar. Bir dosyanın ortasına bayt eklendiyse veya silindiyse, o noktadan sonrası kayar ve düz fark kuyruğun tamamını farklı olarak bildirir. Bu mod 1 KB'lık blokları özetler, dosyalar arasında eşleştirir ve sonucu kopyala / ekle / sil işlemleri olarak bildirir — xdelta gibi delta araçlarının bir değişikliği gördüğü biçimde. Her iki dosya da 64 MB veya daha küçük olduğunda kullanılabilir.
Gizlilik: her iki dosya da tarayıcının kendi FileReader'ı ile okunur ve bu sekmede karşılaştırılır — sunucu yok, yükleme yok, depolama yok. Büyük dosyalar 1 MB dilimler halinde karşılaştırılır, bu yüzden 200 MB'lık girdiler bile aynı anda belleğin tamamında tutulmaz (blok hizalı görünümü çalıştırmadığınız sürece; o, çalışırken iki dosyayı da yükler).

İkili dosya karşılaştırma nedir?

Bir ikili karşılaştırma, iki dosyayı 0. baytta yan yana koyar ve ileri yürüyerek baytların farklı olduğu her konumu bildirir — klasik cmp -l komutunun tarayıcıdaki karşılığı. Metin fark araçları bunu yapamaz: ya yazdırılamayan baytlarda takılırlar ya da dosyayı sessizce bir karakter kodlamasıyla yeniden yorumlarlar. İkili karşılaştırma iki dosyayı da tam olarak ne oldukları gibi ele alır, yani bayt dizileri olarak; firmware görüntüleri, disk dökümleri, veritabanı dosyaları, şifrelenmiş bloblar veya biçimini bilmediğiniz herhangi bir dosya için istediğiniz budur.

Üç soru üç farklı derinlikte yanıtlanır. “Aynılar mı?” bir sağlama toplamı sorusudur — araç bunu en hızlı yanıtlar, ama yalnızca evet ya da hayır. “Nerede farklılar?” bu sayfadaki bayt farkıdır: konumlar, değerler ve hangi bitlerin çevrildiği. “Ne tür bir değişiklik?” blok hizalı görünümün eklediğidir — farkın yerinde bir düzenleme mi, eklenmiş bir parça mı yoksa silinmiş bir parça mı olduğunu.

Bayt farkı ile blok hizalama — neden iki görünüm?

DurumBayt bayt fark diyor kiBlok hizalı görünüm diyor ki
Bir alan yerinde üzerine yazıldı (aynı dosya boyutu) birkaç dağınık farklı konum aynı, artı “geri kalan her şey kopyalanır”
B dosyasının 2000. konumuna 1 KB eklendi 2000'den itibaren her şey “farklı” 0–2000 kopyala, 1 KB ekle, kalanı kopyala
B dosyasının ortasında bir blok silindi o noktadan itibaren her şey “farklı” boşluğa kadar kopyala, N bayt sil, kalanı kopyala
B dosyası, A'nın başına farklı bir başlık eklenmiş hâli tüm dosyalar “farklı” başlığı sil, sonra tek bir uzun kopyalama — yani sabit bir kayma

Bayt farkı her zaman doğrudur — o baytlar gerçekten o konumlarda farklıdır. Değişen, bayt eklendikten veya silindikten sonraki yorumdur, tıpkı bir metin dosyasının başına bir satır eklemenin sonraki her satır numarasını değiştirmesi gibi.

Bit düzeyinde analiz nasıl okunur

Farklı her bayt için sayfa A XOR B hesaplar ve hangi bit konumlarının ayarlandığını sayar. Bu histogram şaşırtıcı derecede anlamlıdır: farkların bit 0'da (her baytın en az anlamlı biti) yoğunlaşması, bir mesajın piksel veya ses örneklerinin düşük bitinin oynatılmasıyla gizlendiği LSB steganografisinin parmak izidir. Tüm sekiz konum üzerinde eşit dağılmış farklar, bütün değerlerin yeniden yazıldığı anlamına gelir. Yalnızca yüksek bitlere dokunan farklar genellikle bir alanın çok farklı büyüklükte bir değerle değiştirildiği anlamına gelir. Hamming mesafesi (çevrilmiş bitlerin toplam sayısı) aynı şeyi tek bir sayıyla ölçer.

Dürüst bir uyarı: rastgele veri herhangi bir baytta 1/256 olasılıkla çakışır, bu yüzden aynı boyuttaki birbiriyle ilgisiz iki dosya bile baytların yaklaşık %0,4'ünde eşleşir. Birkaç kısa fark bloğuyla %99,98 benzerlik bir yama düzeyinde değişikliktir; %0,4 benzerlik ise dosyaların basitçe ilgisiz olduğu anlamına gelir.

Yaygın hatalar

“İlk farktan sonra tüm dosya kırmızı.” — Bu, yukarıda anlatılan kayma etkisidir, gerçek bir bozulma değildir. Blok hizalı görünümü çalıştırın: bir ekleme ve iki uzun kopyalama işlemi bildirirse, dosyalar tam olarak o eklenmiş parçayla farklıdır. “Sağlama toplamları eşleşti ama dosyalar burada farklı.” — SHA-256 özetleri eşleşiyorsa dosyalar farklı değildir; her iki araçta da aynı dosyaları açtığınızı yeniden denetleyin. Buna karşılık bir CRC-32 eşleşmesi kasıtlı bir çarpışmaya karşı hiçbir şey kanıtlamaz. “Benzerlik %0,4, ama yalnızca bir şeyi değiştirdim.” — Düzenlemeniz sıkıştırılmış veya şifrelenmiş bir kapsayıcının içindeyse (ZIP, PNG zTXt, şifreli birim), tek bir mantıksal değişiklik tüm sıkıştırılmış akışı yeniden yazar.

SSS

Boyut sınırı nedir? — Bayt farkı için dosya başına 200 MB, 1 MB dilimler halinde karşılaştırılır. Blok hizalı görünüm iki dosyayı da yükler, bu yüzden taraf başına 64 MB ile sınırlıdır.
Taşınmış parçaları algılar mı? — Hizalayıcı blokları sırayla eşleştirir; farklı bir konuma taşınmış bir parça, aynı içeriğin bir silme ve bir ekleme olarak görünmesiyle ortaya çıkar; bu doğru, ama biraz kaba bir açıklamadır.
Bir yama dosyası üretebilir mi? — Hayır, bu bir analiz aracıdır; CSV ve TXT raporları belgeleme ve gözden geçirme içindir, değişiklikleri uygulamak için değil.
Dosyalarıma ne olur? — Hiçbir şey: sunucu yok, depolama yok, analitik yok; sekmeyi kapatın ve girdinin her baytı gider.