
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 xxdKod: Tümünü seç
sudo yum install vim-common
