16'lık HEX Dönüşüm Betiği-Bash Shell-

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15606
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2708 kez
Teşekkür edildi: 5625 kez

16'lık HEX Dönüşüm Betiği-Bash Shell-

Mesaj gönderen TRWE_2012 »

Merhabalar
Resim
Betiği İçeriği :

Kod: Tümünü seç

#!/bin/bash
#
# convert.sh - Metin <-> Hexadecimal dönüştürücü
#
# Kullanım:
#   ./convert.sh -e "metin"        -> metni hex'e çevirir
#   ./convert.sh -d "hex_ifade"    -> hex'i metne çevirir
#

# Kullanım mesajı
usage() {
    echo "Kullanım: $0 [-e | -d] <string>"
    echo "  -e : Metni hexadecimal gösterime çevir"
    echo "  -d : Hexadecimal gösterimi metne çevir"
    echo ""
    echo "Örnekler:"
    echo "  $0 -e \"Merhaba Dünya\""
    echo "  $0 -d \"4d6572686162612044c3bc6e7961\""
    exit 1
}

# Parametre sayısı kontrolü
if [ $# -ne 2 ]; then
    usage
fi

option="$1"
input="$2"

case "$option" in
    -e)
        # Metni hex'e çevir: xxd -p (plain hex), sonunda satır sonu ekleme
        echo -n "$input" | xxd -p | tr -d '\n'
        echo
        ;;
    -d)
        # Hex'i metne çevir: xxd -r -p (reverse plain hex)
        # Geçersiz hex girdisi durumunda xxd hata verecektir; isteğe bağlı kontroller eklenebilir.
        # Örneğin girdinin sadece 0-9, A-F, a-f içerdiğini kontrol edebiliriz.
        if [[ ! "$input" =~ ^[0-9A-Fa-f]+$ ]]; then
            echo "Hata: Hexadecimal ifade sadece 0-9, A-F, a-f karakterlerini içermelidir." >&2
            exit 2
        fi
        # Çift sayıda karakter olup olmadığını kontrol et (isteğe bağlı)
        if [ $(( ${#input} % 2 )) -ne 0 ]; then
            echo "Hata: Hexadecimal ifadenin uzunluğu çift sayıda olmalıdır." >&2
            exit 3
        fi
        echo "$input" | xxd -r -p
        echo
        ;;
    *)
        usage
        ;;
esac

exit 0

Çalışma Mantığı


Kodlama (-e) :

xxd -p komutu, girdiyi ham (plain) hexadecimal formata dönüştürür.
tr -d '\n' ile oluşan satır sonları temizlenir, böylece tek bir satırda hex elde edilir.

Kod çözme (-d) :

xxd -r -p komutu, hexadecimal veriyi geri metne dönüştürür.
Betik ayrıca girdinin sadece geçerli hex karakterleri içerip içermediğini ve uzunluğunun çift olup olmadığını kontrol eder; bu sayede hatalı girişlerde anlamlı uyarı verir.

Notlar

1.Türkçe karakterler (ğ, ü, ş, ı, ö, ç vb.) UTF-8 kodlamasıyla doğru şekilde işlenir.
2.Girdi metni tırnak içine alınmalıdır (boşluk ve özel karakterler için).

xxd komutu genellikle vim paketiyle birlikte gelir, sisteminizde yüklü değilse

Kod: Tümünü seç

sudo apt install xxd
(Debian/Ubuntu) veya

Kod: Tümünü seç

sudo yum install vim-common
(RHEL) ile kurabilirsiniz.
Cevapla

“Programlama ve Script dilleri” sayfasına dön