Metinden onaltılığa

Bir bellek dökümünü okumak, bir protokolün hatta gerçekte ne bıraktığını denetlemek, bir CTF sorusunu sökmek: er ya da geç bir dizenin arkasındaki baytlara ihtiyaç duyarsınız. Metni yapıştırın, bu dönüştürücü onu bayt bayt onaltılık olarak geri versin; ister hexdump gibi boşluklu (48 65 6c 6c 6f), ister tek parça hâlinde (48656c6c6f). Modu değiştirdiğinizde yön tersine döner: yapıştırdığınız onaltılık yeniden okunabilir metne dönüşür.

Dönüştürücü nasıl çalışıyor

  1. 1

    Yönü seçin

    Metinden onaltılığa yazdığınızı kodlar. Onaltılıktan metne ise onu tekrar karakterlere döndürür.

  2. 2

    Ayırıcıyı seçin

    Kodlarken baytlar arasında tek bir boşluk ya da hiçbir şey. Seçenekler bu ikisidir.

  3. 3

    Girdinizi yapıştırın

    Metin UTF-8 olarak okunur. Onaltılık, 0x veya \x ön ekleriyle, virgüllerle, boşluklarla ya da satır sonlarıyla gelebilir: bunlar sizin için temizlenir.

  4. 4

    Dönüştürün ve kopyalayın

    Sonuç aşağıda bir kopyalama düğmesiyle belirir. Hiçbir şey indirilmez.

Neden onaltılık, neden onluk değil

Bir onaltılık basamak tam olarak 4 biti kapsar, dolayısıyla iki basamak her seferinde tam olarak bir baytı kapsar. Onluk sistemde bir değerin hâlâ sığıp sığmadığını anlamak için hesap yapmanız gerekir (128 aralıkta mı? peki 256?), onaltılık ise bunu doğrudan gösterir: 00 en küçük bayt, ff en büyüğüdür ve aradaki her bayt iki karakter genişliğindedir. Bellek dökümlerinin, paket yakalamalarının, dosya imzalarının ve renk kodlarının onaltılık yazılmasının nedeni bu hizadır.

Bu dönüştürücü gerçekte ne üretiyor

  • Her zaman küçük harf. Kodlayıcı 6c yazar, asla 6C değil. Onaltılık büyük küçük harf ayrımı yapmaz, yani hiçbir şey kaybolmaz; ama hedef biçiminiz büyük harf istiyorsa çıktıyı bir büyük küçük harf dönüştürücüsünden geçirin.
  • Bayt başına her zaman iki basamak. Sekme karakteri 9 değil 09 olur, böylece bayt sınırları sayılabilir kalır.
  • Boşluk ya da hiçbir şey. Yalnızca bu iki ayırıcı vardır. Kodlama tarafında 0x veya \x ön eki eklenmez; C ya da Python kaçış dizileri gerekiyorsa bunları kendi düzenleyicinizde ekleyin.
  • Baştan sona UTF-8. Metin karakterle değil baytla ölçülür.

Onaltılık ve Unicode

H UTF-8 içinde bir bayt tutar, bu yüzden 48 olur. Saf ASCII dışındaki her şey daha fazlasını tutar:

Karakter UTF-8 onaltılık Bayt
A 41 1
é c3 a9 2
€ e2 82 ac 3
🚀 f0 9f 9a 80 4

Yani Hello, 48 65 6c 6c 6f olarak kodlanır: beş karakter ve beş bayt. Buna karşılık café, 63 61 66 c3 a9 olarak kodlanır: dört karakter, ama beş bayt, çünkü é iki bayt ister. Türkçe harfler de aynı şekilde davranır, ş iki bayttır (c5 9f), ğ de öyle (c4 9f). Kısa bir dize beklediğinizden fazla onaltılık çift üretiyorsa neden genellikle budur.

Çözücü neyi kabul ediyor

Şunlardan herhangi birini yapıştırın, geri Hello alırsınız:

  • 48 65 6c 6c 6f, hexdump biçiminde
  • 48656c6c6f, ham ve ayırıcısız
  • 0x48656c6c6f, tamsayı sabiti biçiminde
  • \x48\x65\x6c\x6c\x6f, C ve Python kaçış dizileri
  • 48,65,6C,6C,6F, virgülle ayrılmış ve büyük küçük harf karışık

Ön ekler, virgüller, boşluklar, sekmeler ve satır sonları çözmeden önce kaldırılır. Geri kalanlar kaldırılmaz: 48-65 içindeki bir tire, bir renk kodunun önündeki # ya da f harfinden sonraki bir harf çözümü durdurur; tek sayıda basamak da öyle, çünkü yarım bayt karaktere dönüşemez. Bu durumlarda araç yarım bir sonucu tahmin etmek yerine hiçbir şey döndürmez. Çıktı alanı boş kalıyorsa aranacak neden budur.

Onaltılık renkler aynı gösterimi kullanır, aynı içeriği değil

#ff8800 aynı 16 tabanlı sistemi kullanır, ama o üç bayt karakterleri değil kırmızı, yeşil ve mavi kanallarını tanımlar. # işaretini kaldırıp burada çözerseniz okunabilir metin oluşturmayan üç ham bayt elde edersiniz. Bunun için bir renk seçici daha uygundur.

Sık Sorulan Sorular

Evet. Onaltılık ve base16 aynı sistemin iki adıdır: her biri 4 bit taşıyan on altı basamak (0 ile 9 arası ve a ile f arası).

Bu araçtan alamazsınız. Kodlayıcı her zaman küçük harf yazar. Onaltılık büyük küçük harf ayrımı yapmadığı için 4f ile 4F aynı bayttır; biçiminiz gerektiriyorsa sonucu herhangi bir büyük küçük harf dönüştürücüsünden geçirin. Çözücü her iki biçimi de sorunsuz okur.

Çözücü, 0x ve \x ön eklerini, virgülleri ve boşlukları temizledikten sonra yalnızca 0 ile 9 ve a ile f arasındaki basamakları, çift sayıda kabul eder. Bir tire, bir #, f harfinden sonraki bir harf ya da eksik tek bir basamak girdiyi geçersiz kılar ve araç yanlış bir sonuç yerine boş sonucu tercih eder. Basamakları sayın ve araya karışmış noktalama işaretlerini arayın.

Emojilerin çoğu Unicode’un ek düzlemlerinde bulunur ve UTF-8 bunları dört baytta saklar. Saf ASCII karakterleri bayt başına bir karakterde kalır; İngilizce metnin karakter başına bir çift vermesinin, Türkçe metnin ise vermemesinin nedeni budur.

Hayır. Burası bir metin alanı, dolayısıyla yazabildiğiniz ya da yapıştırabildiğiniz şeyleri işler. İkili veriler için base64 hem daha derli toplu hem de taşıması daha kolaydır.

Evet. Dönüştürme sunucumuzda çalışır, yani yapıştırdığınız şey istekle birlikte gider ve sonuç geri döner. Yalnızca işlemi ve seçtiğiniz ayarları kaydediyoruz, metnin kendisini asla; metin yanıttan sonra saklanmaz. Gerçekten gizli içerik için kendi bilgisayarınızda çevrimdışı çalışan bir dönüştürücü kullanın.

İlgili Araçlar

Araç diğer dillerde mevcuttur