Ruby İle XOR Shellcode Encrypter Kodlamak!

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won
6449ti9.gif



kbrn6ph.png


Merhabalar ben Anka Red Team'den Bunjo,
Bu konuda Ruby programlama dilinde "XOR" Shell Code
Encrypter yapmayı anlatacağım.

Bu konu örnek olduğu için giriş seviye de bırakacağım.



Shellcode Nedir?

Shellcode, bilgisayar güvenliği ve yazılım geliştirme alanlarında sıkça kullanılan bir terimdir.
Temel olarak, bir bilgisayarın belleğine yerleştirilerek çalıştırılabilen, genellikle kötü niyetli olan küçük ve optimize edilmiş bir makine kodu parçasını ifade eder.


Shellcode genellikle şu amaçlarla kullanılır:

Saldırılar: Bilgisayar sistemlerine sızma veya zararlı işlemler gerçekleştirme amacıyla kullanılır.
Örneğin, kötü niyetli bir kullanıcı bir güvenlik açığından yararlanmak için shellcode kullanabilir.

Yazılım Geliştirme: Bazı durumlarda, shellcode güvenlik açıklarını tespit etmek ve yamalar oluşturmak için kullanılabilir.
Bu tür shellcode'lar genellikle "exploit" araçlarıyla birlikte kullanılır.

Shellcode'un önemli özellikleri şunlardır:

Küçüklük: Shellcode, olabildiğince küçük olmalıdır çünkü hedef sistem belleğinde sınırlı bir alan kullanır.
Gizlilik: Genellikle shellcode gizli olmalıdır, yani algılanması veya engellenmesi zor olmalıdır.

Makineye Özgü: Shellcode, hedeflenen işletim sistemi ve mimariye göre yazılmalıdır. Örneğin, x86 ve x64 sistemler için farklı shellcode'lar gerekebilir.
Yürütme Yetkisi: Shellcode'un çalışabilmesi için genellikle yürütme yetkisine sahip bir kullanıcı veya süreç gereklidir.


Shellcode genellikle assembly dilinde yazılır ve ardından derlenerek elde edilir. Ancak bazı durumlarda yüksek seviyeli diller veya araçlar da kullanılabilir.
Shellcode'un amacı, hedef sistemde istenilen işlemi gerçekleştirebilecek şekilde makine kodunu temsil etmektir.



rpyj47v.gif

i7ovh1e.png


XOR Nedir?

XOR (İngilizce "exclusive or" kelimesinin kısaltması), iki değer arasında bit düzeyinde "exclusive or" (XOR) mantıksal işlemini gerçekleştiren bir mantıksal operatördür. XOR işlemi, Boolean mantığında yaygın olarak kullanılır ve genellikle şifreleme ve veri işleme gibi alanlarda önemli bir rol oynar.

XOR operatörü şu şekilde çalışır:

İki giriş değeri alır: A ve B.
Her iki girişin de değeri 1 ise, XOR operatörü 0 döndürür.
Her iki girişten biri 1 ise, XOR operatörü 1 döndürür.
Her iki giriş de 0 ise, XOR operatörü 0 döndürür.

XOR operatörü genellikle "⊕" veya "^" sembolleriyle gösterilir. Örneğin, A ve B iki bitlik değerler olduğunda, XOR işlemi şu şekilde gösterilir:

A ⊕ B
A ^ B


XOR operatörünün mantıksal tablosu şöyle görünür:
CoffeeScript:
A   B   A ⊕ B
--------------
0   0     0
0   1     1
1   0     1
1   1     0

XOR operatörü, özellikle şifreleme algoritmalarında kullanılan temel bir operatördür. XOR işlemi, aynı anahtarı kullanarak veriyi şifreleme ve şifreli veriyi anahtarla geri çözme işlemlerinde sıklıkla kullanılır. XOR işlemi, veriye bir anahtar uygularken herhangi bir veri kaybı olmaksızın geri dönüşümlü bir şekilde çalışır,
bu da onu şifreleme ve veri güvenliği alanlarında kullanışlı kılar.

ocgh09a.gif

kbrn6ph.png


Ruby Kodu
Ruby:
#!/usr/bin/env ruby

class XorCrypter
  def initialize
    @plaintext = nil
  end

  def encrypt(data, key)
    data.bytes.map.with_index do |byte, b2|
      current_key = key[b2 % key.size]
      (current_key.ord ^ byte).to_s(16)
    end
  end

  def format_output(ciphertext)
    '{ 0x' + ciphertext.join(', 0x') + ' };'
  end

  def main
    begin
      @plaintext = open(ARGV[0], "rb").read
    rescue Exception => exception
      puts(exception.message)
      exit(1)
    end

    encryption_key = "BunjoRuby"
    ciphertext = encrypt(@plaintext, encryption_key)
    puts(format_output(ciphertext))
  end
end

crypter = XorCrypter.new
crypter.main

lfn9r51.gif

i7ovh1e.png


Kod Açıklaması

#!/usr/bin/env ruby: Bu satır, Unix/Linux işletim sistemlerinde bu Ruby programının nasıl çalıştırılacağını belirtir.


class XorCrypter: Bu satırda XorCrypter adında bir sınıf tanımlanır. Bu sınıf, XOR şifrelemesi yapabilen metodları içerir.

def initialize: Bu metod, sınıfın başlatıcı metodudur. @plaintext adında bir değişkeni nil değeriyle başlatır. Bu değişken, şifrelenecek metni temsil eder.

def encrypt(data, key): Bu metod, veriyi XOR şifrelemesi kullanarak şifreler. data parametresi şifrelenecek olan veriyi, key parametresi ise XOR işlemi için kullanılacak anahtarı temsil eder.

data.bytes.map.with_index do |byte, b2|: Veriyi baytlara ayırır ve her bir baytla birlikte indeks bilgisini (b2) kullanarak döngü başlatır.

current_key = key[b2 % key.size]: Anahtarın boyutuna bağlı olarak döngü içinde kullanılacak olan anahtar parçasını belirler.

(current_key.ord ^ byte).to_s(16): Baytları ve anahtarı XOR işlemine tabi tutar, sonucu onaltılık (hexadecimal) formata dönüştürür ve bir dizi olarak döndürür.

def format_output(ciphertext): Bu metod, şifrelenmiş veriyi C dilindeki dizi formatında düzenler. ciphertext parametresi şifrelenmiş metni temsil eder.
'{ 0x' + ciphertext.join(', 0x') + ' };': Şifrelenmiş metni bir dizi olarak formatlar ve başına { 0x, sonuna }; ekler.

def main: Bu metod, programın ana işlevini içerir. Kullanıcıdan alınan dosyayı (ARGV[0]) okur, şifreler ve şifrelenmiş metni formatlayarak ekrana yazdırır.

@plaintext = open(ARGV[0], "rb").read: Kullanıcı tarafından sağlanan dosyayı binary modda okur ve @plaintext değişkenine atar.

encryption_key = "BunjoRuby": Şifreleme için kullanılacak sabit bir anahtar belirlenir.

ciphertext = encrypt(@plaintext, encryption_key): encrypt metodunu kullanarak metni şifreler.

puts(format_output(ciphertext)): Şifrelenmiş metni C dilindeki dizi formatında ekrana yazdırır.


crypter = XorCrypter.new ve crypter.main: Kodun en alt kısmında ise XorCrypter sınıfından bir nesne oluşturulur ve main metodunu çağırarak programın çalışması sağlanır.


ovca0xc.gif


kbrn6ph.png


Örnek Kullanım


imcu51f.png

CoffeeScript:
{ 0x0, 0x20, 0x20, 0x20, 0x20, 0x58, 0x27, 0x37, 0x3b, 0x1b, 0x7f, 0x3a, 0x2f, 0x3c, 0x6, 0x7f, 0x20, 0x2b, 0x3, 0x23, 0x21, 0x4a, 0x3d, 0x17, 0x23, 0x27, 0x2b, 0x11, 0x30, 0x4e, 0x2b, 0x3b, 0x6, 0x3c, 0x2c, 0x58, 0x48, 0x21, 0x3b, 0x38, 0x24, 0x1a, 0x34, 0x21, 0x32, 0x16, 0x30, 0x2f, 0x27, 0x65, 0x1b, 0x55, 0x23, 0x34, 0x62, 0x3d, 0x2f, 0x29, 0x24, 0x17, 0x27, 0x42, 0x21, 0x6, 0x31, 0x64, 0x3e, 0x2a, 0x1, 0x21, 0x42, 0x3d, 0xd, 0x26, 0x37, 0x2b, 0x3c, 0x1b, 0x7f, 0x30, 0x3c, 0x14, 0x30, 0x3c, 0x39, 0x2a, 0x72, 0xb1, 0xd2, 0xba, 0xc5, 0xb1, 0xde, 0x24, 0x4f, 0x10, 0x34, 0xa7, 0xe7, 0x3, 0x27, 0x27, 0x26, 0x2e, 0x0, 0x7f };

Anlatacaklarım buraya kadardı.

Foruma kazandırmış olduğum "Ruby" kategorisini elimden geldiğince doldurup öğrenmek isteyenler için gönüllü olarak Türkçe bir kaynak
sağlamaya çalışıyorum,
bu esnada konuları beğenip güzel bir yorum atarak destek çıkabilirsiniz. Binlerce kişi okuyor fakat pek bir dönüt gelmiyor maalesef.

Okuyan herkese teşekkür ederim.

İyi forumlar..


 
Moderatör tarafında düzenlendi:

ACE Veen

Uzman üye
4 Şub 2023
1,111
563
Belirsiz
6449ti9.gif



kbrn6ph.png


Merhabalar ben Anka Red Team'den Bunjo,
Bu konuda Ruby programlama dilinde "XOR" Shell Code
Encrypter yapmayı anlatacağım.

Bu konu örnek olduğu için giriş seviye de bırakacağım.



Shellcode Nedir?

Shellcode, bilgisayar güvenliği ve yazılım geliştirme alanlarında sıkça kullanılan bir terimdir.
Temel olarak, bir bilgisayarın belleğine yerleştirilerek çalıştırılabilen, genellikle kötü niyetli olan küçük ve optimize edilmiş bir makine kodu parçasını ifade eder.


Shellcode genellikle şu amaçlarla kullanılır:

Saldırılar: Bilgisayar sistemlerine sızma veya zararlı işlemler gerçekleştirme amacıyla kullanılır.
Örneğin, kötü niyetli bir kullanıcı bir güvenlik açığından yararlanmak için shellcode kullanabilir.

Yazılım Geliştirme: Bazı durumlarda, shellcode güvenlik açıklarını tespit etmek ve yamalar oluşturmak için kullanılabilir.
Bu tür shellcode'lar genellikle "exploit" araçlarıyla birlikte kullanılır.

Shellcode'un önemli özellikleri şunlardır:

Küçüklük: Shellcode, olabildiğince küçük olmalıdır çünkü hedef sistem belleğinde sınırlı bir alan kullanır.
Gizlilik: Genellikle shellcode gizli olmalıdır, yani algılanması veya engellenmesi zor olmalıdır.

Makineye Özgü: Shellcode, hedeflenen işletim sistemi ve mimariye göre yazılmalıdır. Örneğin, x86 ve x64 sistemler için farklı shellcode'lar gerekebilir.
Yürütme Yetkisi: Shellcode'un çalışabilmesi için genellikle yürütme yetkisine sahip bir kullanıcı veya süreç gereklidir.


Shellcode genellikle assembly dilinde yazılır ve ardından derlenerek elde edilir. Ancak bazı durumlarda yüksek seviyeli diller veya araçlar da kullanılabilir.
Shellcode'un amacı, hedef sistemde istenilen işlemi gerçekleştirebilecek şekilde makine kodunu temsil etmektir.



rpyj47v.gif

i7ovh1e.png


XOR Nedir?

XOR (İngilizce "exclusive or" kelimesinin kısaltması), iki değer arasında bit düzeyinde "exclusive or" (XOR) mantıksal işlemini gerçekleştiren bir mantıksal operatördür. XOR işlemi, Boolean mantığında yaygın olarak kullanılır ve genellikle şifreleme ve veri işleme gibi alanlarda önemli bir rol oynar.

XOR operatörü şu şekilde çalışır:

İki giriş değeri alır: A ve B.
Her iki girişin de değeri 1 ise, XOR operatörü 0 döndürür.
Her iki girişten biri 1 ise, XOR operatörü 1 döndürür.
Her iki giriş de 0 ise, XOR operatörü 0 döndürür.

XOR operatörü genellikle "⊕" veya "^" sembolleriyle gösterilir. Örneğin, A ve B iki bitlik değerler olduğunda, XOR işlemi şu şekilde gösterilir:

A ⊕ B
A ^ B


XOR operatörünün mantıksal tablosu şöyle görünür:
CoffeeScript:
A   B   A ⊕ B
--------------
0   0     0
0   1     1
1   0     1
1   1     0

XOR operatörü, özellikle şifreleme algoritmalarında kullanılan temel bir operatördür. XOR işlemi, aynı anahtarı kullanarak veriyi şifreleme ve şifreli veriyi anahtarla geri çözme işlemlerinde sıklıkla kullanılır. XOR işlemi, veriye bir anahtar uygularken herhangi bir veri kaybı olmaksızın geri dönüşümlü bir şekilde çalışır,
bu da onu şifreleme ve veri güvenliği alanlarında kullanışlı kılar.

ocgh09a.gif

kbrn6ph.png


Ruby Kodu
Ruby:
#!/usr/bin/env ruby

class XorCrypter
  def initialize
    @plaintext = nil
  end

  def encrypt(data, key)
    data.bytes.map.with_index do |byte, b2|
      current_key = key[b2 % key.size]
      (current_key.ord ^ byte).to_s(16)
    end
  end

  def format_output(ciphertext)
    '{ 0x' + ciphertext.join(', 0x') + ' };'
  end

  def main
    begin
      @plaintext = open(ARGV[0], "rb").read
    rescue Exception => exception
      puts(exception.message)
      exit(1)
    end

    encryption_key = "BunjoRuby"
    ciphertext = encrypt(@plaintext, encryption_key)
    puts(format_output(ciphertext))
  end
end

crypter = XorCrypter.new
crypter.main

lfn9r51.gif

i7ovh1e.png


Kod Açıklaması

#!/usr/bin/env ruby: Bu satır, Unix/Linux işletim sistemlerinde bu Ruby programının nasıl çalıştırılacağını belirtir.


class XorCrypter: Bu satırda XorCrypter adında bir sınıf tanımlanır. Bu sınıf, XOR şifrelemesi yapabilen metodları içerir.

def initialize: Bu metod, sınıfın başlatıcı metodudur. @plaintext adında bir değişkeni nil değeriyle başlatır. Bu değişken, şifrelenecek metni temsil eder.

def encrypt(data, key): Bu metod, veriyi XOR şifrelemesi kullanarak şifreler. data parametresi şifrelenecek olan veriyi, key parametresi ise XOR işlemi için kullanılacak anahtarı temsil eder.

data.bytes.map.with_index do |byte, b2|: Veriyi baytlara ayırır ve her bir baytla birlikte indeks bilgisini (b2) kullanarak döngü başlatır.

current_key = key[b2 % key.size]: Anahtarın boyutuna bağlı olarak döngü içinde kullanılacak olan anahtar parçasını belirler.

(current_key.ord ^ byte).to_s(16): Baytları ve anahtarı XOR işlemine tabi tutar, sonucu onaltılık (hexadecimal) formata dönüştürür ve bir dizi olarak döndürür.

def format_output(ciphertext): Bu metod, şifrelenmiş veriyi C dilindeki dizi formatında düzenler. ciphertext parametresi şifrelenmiş metni temsil eder.
'{ 0x' + ciphertext.join(', 0x') + ' };': Şifrelenmiş metni bir dizi olarak formatlar ve başına { 0x, sonuna }; ekler.

def main: Bu metod, programın ana işlevini içerir. Kullanıcıdan alınan dosyayı (ARGV[0]) okur, şifreler ve şifrelenmiş metni formatlayarak ekrana yazdırır.

@plaintext = open(ARGV[0], "rb").read: Kullanıcı tarafından sağlanan dosyayı binary modda okur ve @plaintext değişkenine atar.

encryption_key = "BunjoRuby": Şifreleme için kullanılacak sabit bir anahtar belirlenir.

ciphertext = encrypt(@plaintext, encryption_key): encrypt metodunu kullanarak metni şifreler.

puts(format_output(ciphertext)): Şifrelenmiş metni C dilindeki dizi formatında ekrana yazdırır.


crypter = XorCrypter.new ve crypter.main: Kodun en alt kısmında ise XorCrypter sınıfından bir nesne oluşturulur ve main metodunu çağırarak programın çalışması sağlanır.


ovca0xc.gif


kbrn6ph.png


Örnek Kullanım


imcu51f.png

CoffeeScript:
{ 0x0, 0x20, 0x20, 0x20, 0x20, 0x58, 0x27, 0x37, 0x3b, 0x1b, 0x7f, 0x3a, 0x2f, 0x3c, 0x6, 0x7f, 0x20, 0x2b, 0x3, 0x23, 0x21, 0x4a, 0x3d, 0x17, 0x23, 0x27, 0x2b, 0x11, 0x30, 0x4e, 0x2b, 0x3b, 0x6, 0x3c, 0x2c, 0x58, 0x48, 0x21, 0x3b, 0x38, 0x24, 0x1a, 0x34, 0x21, 0x32, 0x16, 0x30, 0x2f, 0x27, 0x65, 0x1b, 0x55, 0x23, 0x34, 0x62, 0x3d, 0x2f, 0x29, 0x24, 0x17, 0x27, 0x42, 0x21, 0x6, 0x31, 0x64, 0x3e, 0x2a, 0x1, 0x21, 0x42, 0x3d, 0xd, 0x26, 0x37, 0x2b, 0x3c, 0x1b, 0x7f, 0x30, 0x3c, 0x14, 0x30, 0x3c, 0x39, 0x2a, 0x72, 0xb1, 0xd2, 0xba, 0xc5, 0xb1, 0xde, 0x24, 0x4f, 0x10, 0x34, 0xa7, 0xe7, 0x3, 0x27, 0x27, 0x26, 0x2e, 0x0, 0x7f };

Anlatacaklarım buraya kadardı.

Foruma kazandırmış olduğum "Ruby" kategorisini elimden geldiğince doldurup öğrenmek isteyenler için gönüllü olarak Türkçe bir kaynak
sağlamaya çalışıyorum,
bu esnada konuları beğenip güzel bir yorum atarak destek çıkabilirsiniz. Binlerce kişi okuyor fakat pek bir dönüt gelmiyor maalesef.

Okuyan herkese teşekkür ederim.

İyi forumlar..


güzel konu
 

Butcherb3y

Uzman üye
1 Eyl 2022
1,612
1,196
Anıtkabir
6449ti9.gif



kbrn6ph.png


Merhabalar ben Anka Red Team'den Bunjo,
Bu konuda Ruby programlama dilinde "XOR" Shell Code
Encrypter yapmayı anlatacağım.

Bu konu örnek olduğu için giriş seviye de bırakacağım.



Shellcode Nedir?

Shellcode, bilgisayar güvenliği ve yazılım geliştirme alanlarında sıkça kullanılan bir terimdir.
Temel olarak, bir bilgisayarın belleğine yerleştirilerek çalıştırılabilen, genellikle kötü niyetli olan küçük ve optimize edilmiş bir makine kodu parçasını ifade eder.


Shellcode genellikle şu amaçlarla kullanılır:

Saldırılar: Bilgisayar sistemlerine sızma veya zararlı işlemler gerçekleştirme amacıyla kullanılır.
Örneğin, kötü niyetli bir kullanıcı bir güvenlik açığından yararlanmak için shellcode kullanabilir.

Yazılım Geliştirme: Bazı durumlarda, shellcode güvenlik açıklarını tespit etmek ve yamalar oluşturmak için kullanılabilir.
Bu tür shellcode'lar genellikle "exploit" araçlarıyla birlikte kullanılır.

Shellcode'un önemli özellikleri şunlardır:

Küçüklük: Shellcode, olabildiğince küçük olmalıdır çünkü hedef sistem belleğinde sınırlı bir alan kullanır.
Gizlilik: Genellikle shellcode gizli olmalıdır, yani algılanması veya engellenmesi zor olmalıdır.

Makineye Özgü: Shellcode, hedeflenen işletim sistemi ve mimariye göre yazılmalıdır. Örneğin, x86 ve x64 sistemler için farklı shellcode'lar gerekebilir.
Yürütme Yetkisi: Shellcode'un çalışabilmesi için genellikle yürütme yetkisine sahip bir kullanıcı veya süreç gereklidir.


Shellcode genellikle assembly dilinde yazılır ve ardından derlenerek elde edilir. Ancak bazı durumlarda yüksek seviyeli diller veya araçlar da kullanılabilir.
Shellcode'un amacı, hedef sistemde istenilen işlemi gerçekleştirebilecek şekilde makine kodunu temsil etmektir.



rpyj47v.gif

i7ovh1e.png


XOR Nedir?

XOR (İngilizce "exclusive or" kelimesinin kısaltması), iki değer arasında bit düzeyinde "exclusive or" (XOR) mantıksal işlemini gerçekleştiren bir mantıksal operatördür. XOR işlemi, Boolean mantığında yaygın olarak kullanılır ve genellikle şifreleme ve veri işleme gibi alanlarda önemli bir rol oynar.

XOR operatörü şu şekilde çalışır:

İki giriş değeri alır: A ve B.
Her iki girişin de değeri 1 ise, XOR operatörü 0 döndürür.
Her iki girişten biri 1 ise, XOR operatörü 1 döndürür.
Her iki giriş de 0 ise, XOR operatörü 0 döndürür.

XOR operatörü genellikle "⊕" veya "^" sembolleriyle gösterilir. Örneğin, A ve B iki bitlik değerler olduğunda, XOR işlemi şu şekilde gösterilir:

A ⊕ B
A ^ B


XOR operatörünün mantıksal tablosu şöyle görünür:
CoffeeScript:
A   B   A ⊕ B
--------------
0   0     0
0   1     1
1   0     1
1   1     0

XOR operatörü, özellikle şifreleme algoritmalarında kullanılan temel bir operatördür. XOR işlemi, aynı anahtarı kullanarak veriyi şifreleme ve şifreli veriyi anahtarla geri çözme işlemlerinde sıklıkla kullanılır. XOR işlemi, veriye bir anahtar uygularken herhangi bir veri kaybı olmaksızın geri dönüşümlü bir şekilde çalışır,
bu da onu şifreleme ve veri güvenliği alanlarında kullanışlı kılar.

ocgh09a.gif

kbrn6ph.png


Ruby Kodu
Ruby:
#!/usr/bin/env ruby

class XorCrypter
  def initialize
    @plaintext = nil
  end

  def encrypt(data, key)
    data.bytes.map.with_index do |byte, b2|
      current_key = key[b2 % key.size]
      (current_key.ord ^ byte).to_s(16)
    end
  end

  def format_output(ciphertext)
    '{ 0x' + ciphertext.join(', 0x') + ' };'
  end

  def main
    begin
      @plaintext = open(ARGV[0], "rb").read
    rescue Exception => exception
      puts(exception.message)
      exit(1)
    end

    encryption_key = "BunjoRuby"
    ciphertext = encrypt(@plaintext, encryption_key)
    puts(format_output(ciphertext))
  end
end

crypter = XorCrypter.new
crypter.main

lfn9r51.gif

i7ovh1e.png


Kod Açıklaması

#!/usr/bin/env ruby: Bu satır, Unix/Linux işletim sistemlerinde bu Ruby programının nasıl çalıştırılacağını belirtir.


class XorCrypter: Bu satırda XorCrypter adında bir sınıf tanımlanır. Bu sınıf, XOR şifrelemesi yapabilen metodları içerir.

def initialize: Bu metod, sınıfın başlatıcı metodudur. @plaintext adında bir değişkeni nil değeriyle başlatır. Bu değişken, şifrelenecek metni temsil eder.

def encrypt(data, key): Bu metod, veriyi XOR şifrelemesi kullanarak şifreler. data parametresi şifrelenecek olan veriyi, key parametresi ise XOR işlemi için kullanılacak anahtarı temsil eder.

data.bytes.map.with_index do |byte, b2|: Veriyi baytlara ayırır ve her bir baytla birlikte indeks bilgisini (b2) kullanarak döngü başlatır.

current_key = key[b2 % key.size]: Anahtarın boyutuna bağlı olarak döngü içinde kullanılacak olan anahtar parçasını belirler.

(current_key.ord ^ byte).to_s(16): Baytları ve anahtarı XOR işlemine tabi tutar, sonucu onaltılık (hexadecimal) formata dönüştürür ve bir dizi olarak döndürür.

def format_output(ciphertext): Bu metod, şifrelenmiş veriyi C dilindeki dizi formatında düzenler. ciphertext parametresi şifrelenmiş metni temsil eder.
'{ 0x' + ciphertext.join(', 0x') + ' };': Şifrelenmiş metni bir dizi olarak formatlar ve başına { 0x, sonuna }; ekler.

def main: Bu metod, programın ana işlevini içerir. Kullanıcıdan alınan dosyayı (ARGV[0]) okur, şifreler ve şifrelenmiş metni formatlayarak ekrana yazdırır.

@plaintext = open(ARGV[0], "rb").read: Kullanıcı tarafından sağlanan dosyayı binary modda okur ve @plaintext değişkenine atar.

encryption_key = "BunjoRuby": Şifreleme için kullanılacak sabit bir anahtar belirlenir.

ciphertext = encrypt(@plaintext, encryption_key): encrypt metodunu kullanarak metni şifreler.

puts(format_output(ciphertext)): Şifrelenmiş metni C dilindeki dizi formatında ekrana yazdırır.


crypter = XorCrypter.new ve crypter.main: Kodun en alt kısmında ise XorCrypter sınıfından bir nesne oluşturulur ve main metodunu çağırarak programın çalışması sağlanır.


ovca0xc.gif


kbrn6ph.png


Örnek Kullanım


imcu51f.png

CoffeeScript:
{ 0x0, 0x20, 0x20, 0x20, 0x20, 0x58, 0x27, 0x37, 0x3b, 0x1b, 0x7f, 0x3a, 0x2f, 0x3c, 0x6, 0x7f, 0x20, 0x2b, 0x3, 0x23, 0x21, 0x4a, 0x3d, 0x17, 0x23, 0x27, 0x2b, 0x11, 0x30, 0x4e, 0x2b, 0x3b, 0x6, 0x3c, 0x2c, 0x58, 0x48, 0x21, 0x3b, 0x38, 0x24, 0x1a, 0x34, 0x21, 0x32, 0x16, 0x30, 0x2f, 0x27, 0x65, 0x1b, 0x55, 0x23, 0x34, 0x62, 0x3d, 0x2f, 0x29, 0x24, 0x17, 0x27, 0x42, 0x21, 0x6, 0x31, 0x64, 0x3e, 0x2a, 0x1, 0x21, 0x42, 0x3d, 0xd, 0x26, 0x37, 0x2b, 0x3c, 0x1b, 0x7f, 0x30, 0x3c, 0x14, 0x30, 0x3c, 0x39, 0x2a, 0x72, 0xb1, 0xd2, 0xba, 0xc5, 0xb1, 0xde, 0x24, 0x4f, 0x10, 0x34, 0xa7, 0xe7, 0x3, 0x27, 0x27, 0x26, 0x2e, 0x0, 0x7f };

Anlatacaklarım buraya kadardı.

Foruma kazandırmış olduğum "Ruby" kategorisini elimden geldiğince doldurup öğrenmek isteyenler için gönüllü olarak Türkçe bir kaynak
sağlamaya çalışıyorum,
bu esnada konuları beğenip güzel bir yorum atarak destek çıkabilirsiniz. Binlerce kişi okuyor fakat pek bir dönüt gelmiyor maalesef.

Okuyan herkese teşekkür ederim.

İyi forumlar..


Elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.