Binary, Hex ve Veri Birimleri Açıklandı
Programlama, ağ iletişimi ve adli analiz çalışmalarında kullanılan ikili, onaltılık ve veri birimi kurallarının pratik bir sözlüğü.
Bir hex editöründe incelediğiniz her bayt, hesapladığınız her subnet maskesi, bir aracın bildirdiği her dosya boyutu bir dizi sayı sistemi ve birim kuralına bağlıdır. Bunları yanlış anlarsa, bir buffer boyutunu yanlış değerlendirirsiniz, bir bellek dökümünü yanlış okursunuz veya bir meslektaşınızla 1 KB'nin 1000 mu yoksa 1024 bayt mı olduğu konusunda tartışırsınız.
Binary: bilgisayarın gerçekten konuştuğu taban
Binary tabandır 2 — sadece 0 ve 1. Tek bir binary basamağı bir bit'tir. 8 bit'i bir araya getirirseniz bir byte elde edersiniz; bu 256 farklı değeri temsil edebilir (işaretsiz olarak 0 ile 255 arası veya işaretli iki'nin tamamlayıcısı olarak -128 ile 127 arası).
01001000 gördüğünüzde, bu onluk sistemde 72'dir ve 'H' için ASCII kodudur. El ile dönüştürme, en sağdaki bit'ten başlayarak 2'nin kuvvetlerini toplamaktan ibarettir: 2^6 + 2^3 = 64 + 8 = 72. python3 -c "print(bin(72))" veya bir dosya üzerinde xxd gibi araçlar bunu anında yapar, ancak bir bitmask'ı tersine mühendislik yaparken veya TCP başlığında flag değerlerini çözerken matematiği anlamak önemlidir.
Hexadecimal: binary'nin kısaltması
Hex tabandır 16, 0-9 ve A-F kullanır. Var olmasının nedeni, binary büyük ölçekte okunamaz ve decimal bayt sınırlarına temiz bir şekilde eşlenmemesidir. Bir hex basamağı tam olarak 4 bit'i temsil eder; bu nedenle iki hex basamağı tam bir baytı temsil eder — 0x00 ile 0xFF arasında hiçbir boşluk olmaksızın tüm 256 bayt değerini kapsar.
Bu nedenle hex dökümleri xxd, hexdump -C veya bir disassembler'ın bellek görünümü gibi araçlarda varsayılan seçenektir. Bir dosyanın başında 0x4D 0x5A gördüğünüzde, bu bir Windows PE çalıştırılabilirini tanımlayan MZ başlığıdır. Bellek adresleri, renk kodları (#FF5733), MAC adresleri ve IPv6 adresleri, alttaki bayt ve nibble yapısına bu kadar temiz bir şekilde eşlenmeleri nedeniyle geleneksel olarak hex'te yazılır.
Hex'ten onluğa dönüştürme: 0x4D = (4 × 16) + 13 = 77. Python'da, int('4D', 16) size el ile matematikten kaçınmayı sağlar ve hex(77) diğer yöne gider.
Binary, onlu ve hex pratikte gerçekten nerede buluşur?
IP adresleri üç tarafın da çarpışmasının iyi bir örneğidir. 192.168.1.1 gibi bir IPv4 adresi gerçekten dört bayttır: binary'de 11000000.10101000.00000001.00000001 veya hex'te C0.A8.01.01. Subnetting matematik — iki adresin aynı ağda olup olmadığını belirleme — temelde bir subnet maskesine karşı binary AND işlemleridir; her ne kadar her şeyi kolaylık sağlaması için noktalı onlu biçimde yazsak da.
Digital adli analiz ve kötü amaçlı yazılım analizinde, bu gösterimler arasında sürekli çeviri yaparsınız. Bir disassembler, opcodes'ları hex'te gösterir, ancak CPU ham binary'yi yürütür ve yazmaç değerleri bağlama bağlı olarak sıklıkla onlu yer değerleri veya ASCII dizeleri olarak yorumlanır. 0x41 değerinin hem 65 sayısı hem de 'A' ASCII karakteri olduğunu bilmek, manuel analizin hızını önemli ölçüde arttıran tür desenli tanımaadır.
Veri birimleri: 1000'e karşı 1024 sorunu
Bu, gerçekten insanları yanıltır. Depolama üreticileri, dosya sistemleri ve işletim sistemleri bir
AI yardımıyla yazıldı, Michal Pilch (CISSP), Korra Studio tarafından incelendi ve yayınlandı.
Bu, Korra Studio bilgi tabanından bir nottur — platform her konuyu 1-to-1 mentoring ile eşleştirir.
Ücretsiz başlaarrow_forward