Üst Düzey Ruby Eğitimi #4 (Görsel Programlama)

Bunjo

Uzman üye
14 Ara 2020
1,587
1,883
HTTParty
Ben Bunjo, bu konuda kendim yazmış olduğum projem olan grafiksel arayüzlü "BunjRuter" aracını "Ruby/Tk" ile nasıl kodladığımı anlatmak istiyorum, bu sayede görsel programlamanın temellerini atacağız. Ruby ile GUI (Graphical User Interface - Grafiksel Kullanıcı Arayüzü) programlamaya giriş yapmak için bazı genel kavramlara aşina olmanız önemlidir. İşte temel GUI programlaması kavramları:

  1. Pencere (Window): GUI uygulamalarında kullanıcı arayüzü genellikle bir veya birden fazla pencere içerir. Her pencere, kullanıcının etkileşimde bulunduğu bir bölgeyi temsil eder.
  2. Widget: Widget, kullanıcı arayüzünde bir bileşeni temsil eder. Örneğin, düğmeler, metin kutuları, etiketler gibi kullanıcı arayüzü elemanları widget olarak adlandırılır.
  3. Layout Manager: Bir penceredeki widget'ları düzenlemek ve konumlandırmak için kullanılan araçlardır. Widget'ların penceredeki yerini belirlemek için kullanılır.
  4. Event (Olay): Kullanıcının fareyle tıklaması, bir tuşa basması gibi eylemler olayları oluşturur. Olaylar, GUI uygulamasında belirli bir işlevi tetiklemek için kullanılır.
  5. Callback (Geribildirim): Bir olayın meydana gelmesi durumunda çağrılan bir fonksiyondur. Örneğin, bir düğmeye tıklanıldığında çalıştırılacak fonksiyon bir geribildirim olarak adlandırılabilir.
  6. GUI Kütüphanesi: GUI programlama için kullanılan kütüphaneler, programcılara pencere, widget, olaylar gibi temel öğeleri oluşturma ve yönetme imkanı sağlar. Ruby'de bu kütüphanelerden biri Ruby/Tk, diğeri ise FXRuby'dir.

Not: Program güncelleme ve geliştirme aşamsındadır aynı ismi kullanmak zorunda değilsiniz, sizde burada anlatacaklarım ile kendi grafik arayüzlü hacker toolkitinizi oluşturabilirsiniz.
Project BunjRuter: GitHub - thebunjo/BunjRuter: Bunjruter - Multi-Tool GUI Application


Kütüphaneyi indirelim:

Windows:
Rich (BB code):
gem install tk

Linux:
Rich (BB code):
sudo apt-get install -y tcl-dev tk-de
Rich (BB code):
sudo gem install tk -- --with-tcltkversion=8.6 --with-tcl-lib=/usr/lib/x86_64-linux-gnu --with-tk-lib=/usr/lib/x86_64-linux-gnu --with-tcl-include=/usr/include/tcl8.6 --with-tk-include=/usr/include/tcl8.6 --enable-pthread

1. Pencere Oluşturma:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Pencere" }

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, TkRoot.new ile bir ana pencere oluşturulur ve title metoduyla pencere başlığı belirlenir. Tk.mainloop ile olay döngüsü başlatılır.




2. Düğme Ekleme ve Callback Kullanma:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Düğme Örneği" }

# Düğme ekleyerek bir işlevi tetikle
button = TkButton.new(root) do
  text 'Tıkla!'
  command { Tk.messageBox('message' => 'Düğmeye tıklandı!') }
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir düğme eklenir ve düğmeye tıklanıldığında bir mesaj kutusu görüntülenir. command ile belirtilen blok, düğmeye tıklandığında çalışacak olan işlevi temsil eder.




3. Etiket Ekleme:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Etiket Örneği" }

# Etiket ekleyerek bir metin görüntüle
label = TkLabel.new(root) do
  text 'Merhaba, Ruby/Tk!'
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir etiket eklenir ve pencerede görüntülenecek metin belirlenir.




4. Giriş Kutusu (Entry) Kullanımı:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Giriş Kutusu Örneği" }

# Giriş kutusu ekle
entry = TkEntry.new(root) { width 20 }
entry.pack { padx 15 ; pady 15; side 'left' }

# Düğme ekleyerek giriş kutusundaki metni göster
button = TkButton.new(root) do
  text 'Göster'
  command { Tk.messageBox('message' => "Giriş: #{entry.get}") }
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir giriş kutusu oluşturulur ve bir düğme ile bu giriş kutusundaki metni alarak bir mesaj kutusunda gösterir.




5. Listbox Kullanımı:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Listbox Örneği" }

# Listbox oluştur
listbox = TkListbox.new(root) do
  width 20
  height 5
  pack { padx 15 ; pady 15; side 'left' }
end

# Listbox'a öğeler ekle
['Öğe 1', 'Öğe 2', 'Öğe 3', 'Öğe 4'].each { |item| listbox.insert('end', item) }

# Seçilen öğeyi gösteren düğme
button = TkButton.new(root) do
  text 'Göster'
  command { Tk.messageBox('message' => "Seçilen: #{listbox.get(listbox.curselection)}") if listbox.curselection.size > 0 }
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir Listbox oluşturulur ve Listbox'a öğeler eklenir. Ardından, seçilen öğeyi gösteren bir düğme eklenir.



6. Menü Kullanımı:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Menü Örneği" }

# Menü çubuğu oluştur
menu_bar = TkMenu.new(root)
root.menu(menu_bar)

# Menüler oluştur
file_menu = TkMenu.new(menu_bar)
menu_bar.add(:cascade, menu: file_menu, label: 'Dosya')

# Menü öğeleri ekle
file_menu.add(:command, label: 'Aç', command: proc { Tk.messageBox('message' => 'Aç tıklandı.') })
file_menu.add(:command, label: 'Kaydet', command: proc { Tk.messageBox('message' => 'Kaydet tıklandı.') })
file_menu.add(:separator)
file_menu.add(:command, label: 'Çıkış', command: proc { exit })

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir menü çubuğu ve menüler oluşturulur. Menü öğeleri eklenir ve bu öğeler için işlevler belirlenir.



Vereceğim örnekler bu kadardı şimdi ise asıl konumuza geçelim.

Benim projemdeki dosya arşivim bu şekilde sizde istediğiniz gibi yapabilirsiniz. (Yaptığınız isimlere göre projenizi düzenlemeniz gerecektir.)



Koda geçelim:

Ruby:
$VERBOSE = nil # $VERBOSE = false
require 'tk'

$mutex = Mutex.new

def error_messagebox(message)
  Tk.messageBox(
    'type' => 'error',
    'icon' => 'error',
    'title' => 'BunjRuter Error',
    'message' => message
  )
end

Ruby:
def open_page(folder_path, program_name)
  open_page_thread = Thread.new do
    begin
      system("ruby ./#{folder_path}/#{program_name}")
    rescue Exception => exception_open_page
      open_page_error_message = exception_open_page.message
      Tk.messageBox(
        'type' => 'error',
        'icon' => 'error',
        'title' => 'BunjRuter Error',
        'message' => open_page_error_message
      )
    end
  end
end

Ruby:
class BunjRuterApp
  def bunjruter_main
    begin
      # BunjRuter Main Project
      bunjRuter_main_window = TkRoot.new
      bunjRuter_main_window.title = "Project BunjRuter - Main"
      bunjRuter_main_window.geometry("400x395+730+270")
      bunjRuter_main_window.resizable(false, false)

      bunjRuter_main_icon = TkPhotoImage.new(
        file: './project_bunjruter_contents/project_bunjruter_icons/bunjruter_main.png'
      )
      bunjRuter_main_window.iconphoto(bunjRuter_main_icon)
      bunjRuter_main_window_background_label = TkLabel.new
      bunjRuter_main_window_background_label.place(relwidth: 1, relheight: 1)

      font_name, font_size = "Calibri", 10
      custom_font = TkFont.new(family: font_name, size: font_size)

      # Content

      bunjRuter_main_wallpaper = TkPhotoImage.new(
        file: './project_bunjruter_contents/project_bunjruter_wallpapers/bunjruter.png'
      )

      bunjRuter_main_window_background_label.configure(image: bunjRuter_main_wallpaper)

Ruby:
# Buttons
      button_style = {
        fg: "white",
        bg: "#A30039",
        font: custom_font,
        relief: "raised",
        borderwidth: 1,
        width: 11,
        padx: 10,
        pady: 5,
        compound: 'center'
      }

      background_label = TkLabel.new(bunjRuter_main_window) do
        image bunjRuter_main_wallpaper
        place(relwidth: 1, relheight: 1)
      end

      # Passwords LabelFrame
      bunjRuter_passwords_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Passwords", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjRuter_passwords_label_frame.place(x: 10, y: 5, width: 120, height: 160)

      # Cracking LabelFrame
      bunjRuter_cracking_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Cracking", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjRuter_cracking_label_frame.place(x: 140, y: 5, width: 120, height: 160)

      # Discover LabelFrame
      bunjRuter_discover_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Discover", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjRuter_discover_label_frame.place(x: 270, y: 5, width: 120, height: 160)

Ruby:
bunjruter_creator_label = TkLabel.new(bunjRuter_main_window) do
        text "Written By TheBunjo."
        font custom_font
        width 16
        place(x: 140, y: 370)
      end

      # Passwords Stage

      bunjruter_open_base64_page_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Base64"
        command {
          open_page("bunjruter_base64", "bunjruter_base64.rb")
        }
        place(x: 20, y: 24)
      end

      bunjruter_hash_generator_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Hash Generator"
        command {
          open_page("bunjruter_hash_generator", "bunjruter_hash_generator.rb")
        }
        place(x: 20, y: 57)
      end

      bunjruter_hash_type_scan_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Hash Type Scan"
        place(x: 20, y: 90)
        command {
          open_page("bunjruter_hash_type_scanner", "bunjruter_hash_type_scanner.rb")
        }
      end

      bunjruter_password_generator_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Pass Generator"
        place(x: 20, y: 123)
        command {
          open_page("bunjruter_password_generator", "bunjruter_password_generator.rb")
        }
      end

Ruby:
# Cracking Stage
      bunjruter_cracking_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Cracking", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjruter_cracking_label_frame.place(x: 140, y: 5, width: 120, height: 160)

      bunjruter_ftp_crack_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "FTP Cracker"
        place(x: 150, y: 24)
        command {
          open_page("bunjruter_ftp_cracker", "bunjruter_ftp_cracker.rb")
        }
      end

      bunjruter_ssh_cracker_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "SSH Cracker"
        place(x: 150, y: 57)
        command {
          open_page("bunjruter_ssh_cracker", "bunjruter_ssh.rb")
        }
      end

      bunjruter_telnet_cracker_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Telnet Cracker"
        place(x: 150, y: 90)
        command {
          open_page("bunjruter_telnet_cracker", "bunjruter_telnet_cracker.rb")
        }
      end

      bunjruter_hash_cracker_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Hash Cracker"
        place(x: 150, y: 123)
        command {
          open_page("bunjruter_hash_cracker", "bunjruter_hash_cracker.rb")
        }
      end

Ruby:
 # Discover Stage

      bunjruter_host_to_ip_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Host To IP"
        place(x: 280, y: 24)
        command {
          open_page("bunjruter_host_to_ip", "bunjruter_host2ip.rb")
        }
      end

      bunjruter_whois_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Whois"
        place(x: 280, y: 57)
        command {
          open_page("bunjruter_whois", "bunjruter_whois.rb")
        }
      end

      bunjruter_port_scanner_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Port Scanner"
        place(x: 280, y: 90)
        command {
          open_page("bunjruter_port_scan", "bunjruter_port_scanner.rb")
        }
      end

      bunjruter_banner_grabber_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Banner Grabber"
        place(x: 280, y: 123)
        command {
          open_page("bunjruter_banner_grabber", "bunjruter_banner_grabber.rb")
        }
      end

      # Info Stage

      bunjruter_info_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Information"
        width 7
        command {
          open_page("bunjruter_information_page", "bunjruter_info_page.rb")
        }
        place(x: 160, y: 330)
      end

      Tk.mainloop
    rescue StandardError => mainfunc_an_error_message
      error_messagebox(mainfunc_an_error_message.message)
    end
  end
end

if __FILE__ == $0
  bunjruter_app_main = BunjRuterApp.new
  bunjruter_app_main.bunjruter_main
end

Gençler size bu eğitimi hazırlamak yaklaşık 2.5 saatimi aldı :D, konuyu beğenirseniz ve projeme yıldız verirseniz çok memnun olurum. Teşekkür ederim.
 
Son düzenleme:

Çokgen

Katılımcı Üye
4 Eyl 2023
412
196
Ben Bunjo, bu konuda kendim yazmış olduğum projem olan grafiksel arayüzlü "BunjRuter" aracını "Ruby/Tk" ile nasıl kodladığımı anlatmak istiyorum, bu sayede görsel programlamanın temellerini atacağız. Ruby ile GUI (Graphical User Interface - Grafiksel Kullanıcı Arayüzü) programlamaya giriş yapmak için bazı genel kavramlara aşina olmanız önemlidir. İşte temel GUI programlaması kavramları:

  1. Pencere (Window): GUI uygulamalarında kullanıcı arayüzü genellikle bir veya birden fazla pencere içerir. Her pencere, kullanıcının etkileşimde bulunduğu bir bölgeyi temsil eder.
  2. Widget: Widget, kullanıcı arayüzünde bir bileşeni temsil eder. Örneğin, düğmeler, metin kutuları, etiketler gibi kullanıcı arayüzü elemanları widget olarak adlandırılır.
  3. Layout Manager: Bir penceredeki widget'ları düzenlemek ve konumlandırmak için kullanılan araçlardır. Widget'ların penceredeki yerini belirlemek için kullanılır.
  4. Event (Olay): Kullanıcının fareyle tıklaması, bir tuşa basması gibi eylemler olayları oluşturur. Olaylar, GUI uygulamasında belirli bir işlevi tetiklemek için kullanılır.
  5. Callback (Geribildirim): Bir olayın meydana gelmesi durumunda çağrılan bir fonksiyondur. Örneğin, bir düğmeye tıklanıldığında çalıştırılacak fonksiyon bir geribildirim olarak adlandırılabilir.
  6. GUI Kütüphanesi: GUI programlama için kullanılan kütüphaneler, programcılara pencere, widget, olaylar gibi temel öğeleri oluşturma ve yönetme imkanı sağlar. Ruby'de bu kütüphanelerden biri Ruby/Tk, diğeri ise FXRuby'dir.

Not: Program güncelleme ve geliştirme aşamsındadır aynı ismi kullanmak zorunda değilsiniz, sizde burada anlatacaklarım ile kendi grafik arayüzlü hacker toolkitinizi oluşturabilirsiniz.
Project BunjRuter: GitHub - thebunjo/BunjRuter: Bunjruter - Multi-Tool GUI Application


Kütüphaneyi indirelim:

Windows:
Rich (BB code):
gem install tk

Linux:
Rich (BB code):
sudo apt-get install -y tcl-dev tk-de
Rich (BB code):
sudo gem install tk -- --with-tcltkversion=8.6 --with-tcl-lib=/usr/lib/x86_64-linux-gnu --with-tk-lib=/usr/lib/x86_64-linux-gnu --with-tcl-include=/usr/include/tcl8.6 --with-tk-include=/usr/include/tcl8.6 --enable-pthread

1. Pencere Oluşturma:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Pencere" }

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, TkRoot.new ile bir ana pencere oluşturulur ve title metoduyla pencere başlığı belirlenir. Tk.mainloop ile olay döngüsü başlatılır.




2. Düğme Ekleme ve Callback Kullanma:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Düğme Örneği" }

# Düğme ekleyerek bir işlevi tetikle
button = TkButton.new(root) do
  text 'Tıkla!'
  command { Tk.messageBox('message' => 'Düğmeye tıklandı!') }
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir düğme eklenir ve düğmeye tıklanıldığında bir mesaj kutusu görüntülenir. command ile belirtilen blok, düğmeye tıklandığında çalışacak olan işlevi temsil eder.




3. Etiket Ekleme:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Etiket Örneği" }

# Etiket ekleyerek bir metin görüntüle
label = TkLabel.new(root) do
  text 'Merhaba, Ruby/Tk!'
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir etiket eklenir ve pencerede görüntülenecek metin belirlenir.




4. Giriş Kutusu (Entry) Kullanımı:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Giriş Kutusu Örneği" }

# Giriş kutusu ekle
entry = TkEntry.new(root) { width 20 }
entry.pack { padx 15 ; pady 15; side 'left' }

# Düğme ekleyerek giriş kutusundaki metni göster
button = TkButton.new(root) do
  text 'Göster'
  command { Tk.messageBox('message' => "Giriş: #{entry.get}") }
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir giriş kutusu oluşturulur ve bir düğme ile bu giriş kutusundaki metni alarak bir mesaj kutusunda gösterir.




5. Listbox Kullanımı:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Listbox Örneği" }

# Listbox oluştur
listbox = TkListbox.new(root) do
  width 20
  height 5
  pack { padx 15 ; pady 15; side 'left' }
end

# Listbox'a öğeler ekle
['Öğe 1', 'Öğe 2', 'Öğe 3', 'Öğe 4'].each { |item| listbox.insert('end', item) }

# Seçilen öğeyi gösteren düğme
button = TkButton.new(root) do
  text 'Göster'
  command { Tk.messageBox('message' => "Seçilen: #{listbox.get(listbox.curselection)}") if listbox.curselection.size > 0 }
  pack { padx 15 ; pady 15; side 'left' }
end

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir Listbox oluşturulur ve Listbox'a öğeler eklenir. Ardından, seçilen öğeyi gösteren bir düğme eklenir.



6. Menü Kullanımı:​


Ruby:
require 'tk'

# Pencere oluştur
root = TkRoot.new { title "Ruby/Tk Menü Örneği" }

# Menü çubuğu oluştur
menu_bar = TkMenu.new(root)
root.menu(menu_bar)

# Menüler oluştur
file_menu = TkMenu.new(menu_bar)
menu_bar.add(:cascade, menu: file_menu, label: 'Dosya')

# Menü öğeleri ekle
file_menu.add(:command, label: 'Aç', command: proc { Tk.messageBox('message' => 'Aç tıklandı.') })
file_menu.add(:command, label: 'Kaydet', command: proc { Tk.messageBox('message' => 'Kaydet tıklandı.') })
file_menu.add(:separator)
file_menu.add(:command, label: 'Çıkış', command: proc { exit })

# Tk.mainloop ile olay döngüsünü başlat
Tk.mainloop

Bu örnekte, bir menü çubuğu ve menüler oluşturulur. Menü öğeleri eklenir ve bu öğeler için işlevler belirlenir.



Vereceğim örnekler bu kadardı şimdi ise asıl konumuza geçelim.

Benim projemdeki dosya arşivim bu şekilde sizde istediğiniz gibi yapabilirsiniz. (Yaptığınız isimlere göre projenizi düzenlemeniz gerecektir.)



Koda geçelim:

Ruby:
$VERBOSE = nil # $VERBOSE = false
require 'tk'

$mutex = Mutex.new

def error_messagebox(message)
  Tk.messageBox(
    'type' => 'error',
    'icon' => 'error',
    'title' => 'BunjRuter Error',
    'message' => message
  )
end

Ruby:
def open_page(folder_path, program_name)
  open_page_thread = Thread.new do
    begin
      system("ruby ./#{folder_path}/#{program_name}")
    rescue Exception => exception_open_page
      open_page_error_message = exception_open_page.message
      Tk.messageBox(
        'type' => 'error',
        'icon' => 'error',
        'title' => 'BunjRuter Error',
        'message' => open_page_error_message
      )
    end
  end
end

Ruby:
class BunjRuterApp
  def bunjruter_main
    begin
      # BunjRuter Main Project
      bunjRuter_main_window = TkRoot.new
      bunjRuter_main_window.title = "Project BunjRuter - Main"
      bunjRuter_main_window.geometry("400x395+730+270")
      bunjRuter_main_window.resizable(false, false)

      bunjRuter_main_icon = TkPhotoImage.new(
        file: './project_bunjruter_contents/project_bunjruter_icons/bunjruter_main.png'
      )
      bunjRuter_main_window.iconphoto(bunjRuter_main_icon)
      bunjRuter_main_window_background_label = TkLabel.new
      bunjRuter_main_window_background_label.place(relwidth: 1, relheight: 1)

      font_name, font_size = "Calibri", 10
      custom_font = TkFont.new(family: font_name, size: font_size)

      # Content

      bunjRuter_main_wallpaper = TkPhotoImage.new(
        file: './project_bunjruter_contents/project_bunjruter_wallpapers/bunjruter.png'
      )

      bunjRuter_main_window_background_label.configure(image: bunjRuter_main_wallpaper)

Ruby:
# Buttons
      button_style = {
        fg: "white",
        bg: "#A30039",
        font: custom_font,
        relief: "raised",
        borderwidth: 1,
        width: 11,
        padx: 10,
        pady: 5,
        compound: 'center'
      }

      background_label = TkLabel.new(bunjRuter_main_window) do
        image bunjRuter_main_wallpaper
        place(relwidth: 1, relheight: 1)
      end

      # Passwords LabelFrame
      bunjRuter_passwords_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Passwords", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjRuter_passwords_label_frame.place(x: 10, y: 5, width: 120, height: 160)

      # Cracking LabelFrame
      bunjRuter_cracking_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Cracking", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjRuter_cracking_label_frame.place(x: 140, y: 5, width: 120, height: 160)

      # Discover LabelFrame
      bunjRuter_discover_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Discover", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjRuter_discover_label_frame.place(x: 270, y: 5, width: 120, height: 160)

Ruby:
bunjruter_creator_label = TkLabel.new(bunjRuter_main_window) do
        text "Written By TheBunjo."
        font custom_font
        width 16
        place(x: 140, y: 370)
      end

      # Passwords Stage

      bunjruter_open_base64_page_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Base64"
        command {
          open_page("bunjruter_base64", "bunjruter_base64.rb")
        }
        place(x: 20, y: 24)
      end

      bunjruter_hash_generator_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Hash Generator"
        command {
          open_page("bunjruter_hash_generator", "bunjruter_hash_generator.rb")
        }
        place(x: 20, y: 57)
      end

      bunjruter_hash_type_scan_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Hash Type Scan"
        place(x: 20, y: 90)
        command {
          open_page("bunjruter_hash_type_scanner", "bunjruter_hash_type_scanner.rb")
        }
      end

      bunjruter_password_generator_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Pass Generator"
        place(x: 20, y: 123)
        command {
          open_page("bunjruter_password_generator", "bunjruter_password_generator.rb")
        }
      end

Ruby:
# Cracking Stage
      bunjruter_cracking_label_frame = TkLabelFrame.new(bunjRuter_main_window, text: "Cracking", font: custom_font, relief: 'raised', borderwidth: 1)
      bunjruter_cracking_label_frame.place(x: 140, y: 5, width: 120, height: 160)

      bunjruter_ftp_crack_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "FTP Cracker"
        place(x: 150, y: 24)
        command {
          open_page("bunjruter_ftp_cracker", "bunjruter_ftp_cracker.rb")
        }
      end

      bunjruter_ssh_cracker_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "SSH Cracker"
        place(x: 150, y: 57)
        command {
          open_page("bunjruter_ssh_cracker", "bunjruter_ssh.rb")
        }
      end

      bunjruter_telnet_cracker_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Telnet Cracker"
        place(x: 150, y: 90)
        command {
          open_page("bunjruter_telnet_cracker", "bunjruter_telnet_cracker.rb")
        }
      end

      bunjruter_hash_cracker_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Hash Cracker"
        place(x: 150, y: 123)
        command {
          open_page("bunjruter_hash_cracker", "bunjruter_hash_cracker.rb")
        }
      end

Ruby:
 # Discover Stage

      bunjruter_host_to_ip_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Host To IP"
        place(x: 280, y: 24)
        command {
          open_page("bunjruter_host_to_ip", "bunjruter_host2ip.rb")
        }
      end

      bunjruter_whois_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Whois"
        place(x: 280, y: 57)
        command {
          open_page("bunjruter_whois", "bunjruter_whois.rb")
        }
      end

      bunjruter_port_scanner_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Port Scanner"
        place(x: 280, y: 90)
        command {
          open_page("bunjruter_port_scan", "bunjruter_port_scanner.rb")
        }
      end

      bunjruter_banner_grabber_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Banner Grabber"
        place(x: 280, y: 123)
        command {
          open_page("bunjruter_banner_grabber", "bunjruter_banner_grabber.rb")
        }
      end

      # Info Stage

      bunjruter_info_button = TkButton.new(bunjRuter_main_window, button_style) do
        text "Information"
        width 7
        command {
          open_page("bunjruter_information_page", "bunjruter_info_page.rb")
        }
        place(x: 160, y: 330)
      end

      Tk.mainloop
    rescue StandardError => mainfunc_an_error_message
      error_messagebox(mainfunc_an_error_message.message)
    end
  end
end

if __FILE__ == $0
  bunjruter_app_main = BunjRuterApp.new
  bunjruter_app_main.bunjruter_main
end

Gençler size bu eğitimi hazırlamak yaklaşık 2.5 saatimi aldı :D, konuyu beğenirseniz ve projeme yıldız verirseniz çok memnun olurum. Teşekkür ederim.
Ellerinize sağlık
 

Joe101

Junior Hunter
23 Haz 2023
23
12
Eline sağlık ancak attığın kütüphaneyi indirirken sorun yaşadım acaba güncelleme yapar mısın.(Linux deb)
 

Joe101

Junior Hunter
23 Haz 2023
23
12
Merhaba, hata mesajını atar mısınız?
Tabi.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package tk-de
Bu ilki için.Bu ikincisi için:
Building native extensions with: '--with-tcltkversion=8.6 --with-tcl-lib=/usr/lib/x86_64-linux-gnu --with-tk-lib=/usr/lib/x86_64-linux-gnu --with-tcl-include=/usr/include/tcl8.6 --with-tk-include=/usr/include/tcl8.6 --enable-pthread'
This could take a while...
ERROR: Error installing tk:
ERROR: Failed to build gem native extension.

current directory: /var/lib/gems/3.1.0/gems/tk-0.5.0/ext/tk
/usr/bin/ruby3.1 -I /usr/lib/ruby/vendor_ruby -r ./siteconf20231116-90996-iip9ut.rb extconf.rb --with-tcltkversion\=8.6 --with-tcl-lib\=/usr/lib/x86_64-linux-gnu --with-tk-lib\=/usr/lib/x86_64-linux-gnu --with-tcl-include\=/usr/include/tcl8.6 --with-tk-include\=/usr/include/tcl8.6 --enable-pthread
Configure options for Ruby/Tk may be updated.
So, delete files which depend on old configs.
check functions.checking for ruby_native_thread_p() in ruby.h... yes
checking for rb_errinfo() in ruby.h... yes
checking for rb_hash_lookup() in ruby.h... yes
checking for rb_proc_new() in ruby.h... yes
checking for rb_sourcefile() in ruby.h... yes
checking for rb_thread_alive_p() in ruby.h... no
checking for rb_thread_check_trap_pending() in ruby.h... yes
checking for ruby_enc_find_basename() in ruby.h... yes
check libraries.checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for dlopen() in -ldl... yes
checking for log() in -lm... yes
Specified Tcl/Tk version is ["8.6", "8.6"]
Use ActiveTcl libraries (if available).
Search tclConfig.sh (in /usr/lib/x86_64-linux-gnu) and tkConfig.sh (in /usr/lib/x86_64-linux-gnu).
Fail to find [tclConfig.sh, tkConfig.sh]
Use X11 libraries (or use TK_XINCLUDES/TK_XLIBSW information on tkConfig.sh).
checking for XOpenDisplay() in -lX11... yes
Search tcl.h
checking for tcl.h... no
Search tk.h
checking for tk.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/$(RUBY_BASE_NAME)3.1
--enable-shared
--with-tk-old-extconf
--without-tk-old-extconf
--with-tk-old-extconf
--without-tk-old-extconf
--with-ActiveTcl
--without-ActiveTcl
--with-tk-shlib-search-path
--without-tk-shlib-search-path
--with-tcltkversion
--with-tcl-build-dir
--without-tcl-build-dir
--with-tk-build-dir
--without-tk-build-dir
--with-tcl-config
--without-tcl-config
--with-tk-config
--without-tk-config
--with-tclConfig-dir
--without-tclConfig-dir
--with-tkConfig-dir
--without-tkConfig-dir
--with-tclConfig-file
--without-tclConfig-file
--with-tkConfig-file
--without-tkConfig-file
--with-tcllib
--without-tcllib
--with-tklib
--without-tklib
--with-tcl-dir
--without-tcl-dir
--with-tk-dir
--without-tk-dir
--with-tcl-include
--with-tk-include
--with-tcl-lib
--with-tk-lib
--with-tcltk-framework
--without-tcltk-framework
--with-tcl-framework-dir
--without-tcl-framework-dir
--with-tk-framework-dir
--without-tk-framework-dir
--with-tcl-framework-header
--without-tcl-framework-header
--with-tk-framework-header
--without-tk-framework-header
--with-X11
--without-X11
--with-X11-dir
--without-X11-dir
--with-X11-include
--without-X11-include
--with-X11-lib
--without-X11-lib
--enable-tcltk-stubs
--disable-tcltk-stubs
--enable-tcl-h-ver-check
--disable-tcl-h-ver-check
--enable-tk-h-ver-check
--disable-tk-h-ver-check
--enable-mac-tcltk-framework
--disable-mac-tcltk-framework
--enable-tcltk-framework
--disable-tcltk-framework
--enable-pthread
--enable-tcl-thread
--disable-tcl-thread
--enable-space-on-tk-libpath
--disable-space-on-tk-libpath
--with-nsl-dir
--without-nsl-dir
--with-nsl-include
--without-nsl-include=${nsl-dir}/include
--with-nsl-lib
--without-nsl-lib=${nsl-dir}/lib
--with-nsllib
--without-nsllib
--with-socket-dir
--without-socket-dir
--with-socket-include
--without-socket-include=${socket-dir}/include
--with-socket-lib
--without-socket-lib=${socket-dir}/lib
--with-socketlib
--without-socketlib
--with-dl-dir
--without-dl-dir
--with-dl-include
--without-dl-include=${dl-dir}/include
--with-dl-lib
--without-dl-lib=${dl-dir}/lib
--with-dllib
--without-dllib
--with-m-dir
--without-m-dir
--with-m-include
--without-m-include=${m-dir}/include
--with-m-lib
--without-m-lib=${m-dir}/lib
--with-mlib
--without-mlib
--with-tcl-build-dir
--without-tcl-build-dir
--with-tk-build-dir
--without-tk-build-dir
--with-tcltkversion
--with-ActiveTcl
--without-ActiveTcl
--enable-space-on-tk-libpath
--disable-space-on-tk-libpath
--enable-tcltk-stubs
--disable-tcltk-stubs
--with-tcltk-stubs
--without-tcltk-stubs
--with-tcl-dir
--without-tcl-dir
--with-tcl-include=${tcl-dir}/include
--with-tcl-lib=${tcl-dir}/lib
--with-tk-dir
--without-tk-dir
--with-tk-include=${tk-dir}/include
--with-tk-lib=${tk-dir}/lib
--with-tclConfig-file
--without-tclConfig-file
--with-tkConfig-file
--without-tkConfig-file
--with-tclConfig-dir
--without-tclConfig-dir
--with-tkConfig-dir
--without-tkConfig-dir
--with-tk-shlib-search-path
--without-tk-shlib-search-path
--with-tklib
--without-tklib
--with-tcllib
--without-tcllib
--with-X11
--without-X11
--with-X11-dir
--without-X11-dir
--with-X11-include
--without-X11-include=${X11-dir}/include
--with-X11-lib
--without-X11-lib=${X11-dir}/lib
--with-X11-lib
--without-X11-lib
--with-X11lib
--without-X11lib
--enable-tcl-h-ver-check
--disable-tcl-h-ver-check
--enable-tk-h-ver-check
--disable-tk-h-ver-check
Can't find "tcl.h".
Can't find "tk.h".

Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
If you have Tcl/Tk libraries on your environment, you may be able to use them with configure options (see ext/tk/README.tcltklib).
At present, Tcl/Tk8.6 is not supported. Although you can try to use Tcl/Tk8.6 with configure options, it will not work correctly. I recommend you to use Tcl/Tk8.5 or 8.4.

To see why this extension failed to compile, please check the mkmf.log which can be found here:

/var/lib/gems/3.1.0/extensions/x86_64-linux/3.1.0/tk-0.5.0/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/3.1.0/gems/tk-0.5.0 for inspection.
Results logged to /var/lib/gems/3.1.0/extensions/x86_64-linux/3.1.0/tk-0.5.0/gem_make.out
 

Bunjo

Uzman üye
14 Ara 2020
1,587
1,883
HTTParty
Tabi.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package tk-de
Bu ilki için.Bu ikincisi için:
Building native extensions with: '--with-tcltkversion=8.6 --with-tcl-lib=/usr/lib/x86_64-linux-gnu --with-tk-lib=/usr/lib/x86_64-linux-gnu --with-tcl-include=/usr/include/tcl8.6 --with-tk-include=/usr/include/tcl8.6 --enable-pthread'
This could take a while...
ERROR: Error installing tk:
ERROR: Failed to build gem native extension.

current directory: /var/lib/gems/3.1.0/gems/tk-0.5.0/ext/tk
/usr/bin/ruby3.1 -I /usr/lib/ruby/vendor_ruby -r ./siteconf20231116-90996-iip9ut.rb extconf.rb --with-tcltkversion\=8.6 --with-tcl-lib\=/usr/lib/x86_64-linux-gnu --with-tk-lib\=/usr/lib/x86_64-linux-gnu --with-tcl-include\=/usr/include/tcl8.6 --with-tk-include\=/usr/include/tcl8.6 --enable-pthread
Configure options for Ruby/Tk may be updated.
So, delete files which depend on old configs.
check functions.checking for ruby_native_thread_p() in ruby.h... yes
checking for rb_errinfo() in ruby.h... yes
checking for rb_hash_lookup() in ruby.h... yes
checking for rb_proc_new() in ruby.h... yes
checking for rb_sourcefile() in ruby.h... yes
checking for rb_thread_alive_p() in ruby.h... no
checking for rb_thread_check_trap_pending() in ruby.h... yes
checking for ruby_enc_find_basename() in ruby.h... yes
check libraries.checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for dlopen() in -ldl... yes
checking for log() in -lm... yes
Specified Tcl/Tk version is ["8.6", "8.6"]
Use ActiveTcl libraries (if available).
Search tclConfig.sh (in /usr/lib/x86_64-linux-gnu) and tkConfig.sh (in /usr/lib/x86_64-linux-gnu).
Fail to find [tclConfig.sh, tkConfig.sh]
Use X11 libraries (or use TK_XINCLUDES/TK_XLIBSW information on tkConfig.sh).
checking for XOpenDisplay() in -lX11... yes
Search tcl.h
checking for tcl.h... no
Search tk.h
checking for tk.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/$(RUBY_BASE_NAME)3.1
--enable-shared
--with-tk-old-extconf
--without-tk-old-extconf
--with-tk-old-extconf
--without-tk-old-extconf
--with-ActiveTcl
--without-ActiveTcl
--with-tk-shlib-search-path
--without-tk-shlib-search-path
--with-tcltkversion
--with-tcl-build-dir
--without-tcl-build-dir
--with-tk-build-dir
--without-tk-build-dir
--with-tcl-config
--without-tcl-config
--with-tk-config
--without-tk-config
--with-tclConfig-dir
--without-tclConfig-dir
--with-tkConfig-dir
--without-tkConfig-dir
--with-tclConfig-file
--without-tclConfig-file
--with-tkConfig-file
--without-tkConfig-file
--with-tcllib
--without-tcllib
--with-tklib
--without-tklib
--with-tcl-dir
--without-tcl-dir
--with-tk-dir
--without-tk-dir
--with-tcl-include
--with-tk-include
--with-tcl-lib
--with-tk-lib
--with-tcltk-framework
--without-tcltk-framework
--with-tcl-framework-dir
--without-tcl-framework-dir
--with-tk-framework-dir
--without-tk-framework-dir
--with-tcl-framework-header
--without-tcl-framework-header
--with-tk-framework-header
--without-tk-framework-header
--with-X11
--without-X11
--with-X11-dir
--without-X11-dir
--with-X11-include
--without-X11-include
--with-X11-lib
--without-X11-lib
--enable-tcltk-stubs
--disable-tcltk-stubs
--enable-tcl-h-ver-check
--disable-tcl-h-ver-check
--enable-tk-h-ver-check
--disable-tk-h-ver-check
--enable-mac-tcltk-framework
--disable-mac-tcltk-framework
--enable-tcltk-framework
--disable-tcltk-framework
--enable-pthread
--enable-tcl-thread
--disable-tcl-thread
--enable-space-on-tk-libpath
--disable-space-on-tk-libpath
--with-nsl-dir
--without-nsl-dir
--with-nsl-include
--without-nsl-include=${nsl-dir}/include
--with-nsl-lib
--without-nsl-lib=${nsl-dir}/lib
--with-nsllib
--without-nsllib
--with-socket-dir
--without-socket-dir
--with-socket-include
--without-socket-include=${socket-dir}/include
--with-socket-lib
--without-socket-lib=${socket-dir}/lib
--with-socketlib
--without-socketlib
--with-dl-dir
--without-dl-dir
--with-dl-include
--without-dl-include=${dl-dir}/include
--with-dl-lib
--without-dl-lib=${dl-dir}/lib
--with-dllib
--without-dllib
--with-m-dir
--without-m-dir
--with-m-include
--without-m-include=${m-dir}/include
--with-m-lib
--without-m-lib=${m-dir}/lib
--with-mlib
--without-mlib
--with-tcl-build-dir
--without-tcl-build-dir
--with-tk-build-dir
--without-tk-build-dir
--with-tcltkversion
--with-ActiveTcl
--without-ActiveTcl
--enable-space-on-tk-libpath
--disable-space-on-tk-libpath
--enable-tcltk-stubs
--disable-tcltk-stubs
--with-tcltk-stubs
--without-tcltk-stubs
--with-tcl-dir
--without-tcl-dir
--with-tcl-include=${tcl-dir}/include
--with-tcl-lib=${tcl-dir}/lib
--with-tk-dir
--without-tk-dir
--with-tk-include=${tk-dir}/include
--with-tk-lib=${tk-dir}/lib
--with-tclConfig-file
--without-tclConfig-file
--with-tkConfig-file
--without-tkConfig-file
--with-tclConfig-dir
--without-tclConfig-dir
--with-tkConfig-dir
--without-tkConfig-dir
--with-tk-shlib-search-path
--without-tk-shlib-search-path
--with-tklib
--without-tklib
--with-tcllib
--without-tcllib
--with-X11
--without-X11
--with-X11-dir
--without-X11-dir
--with-X11-include
--without-X11-include=${X11-dir}/include
--with-X11-lib
--without-X11-lib=${X11-dir}/lib
--with-X11-lib
--without-X11-lib
--with-X11lib
--without-X11lib
--enable-tcl-h-ver-check
--disable-tcl-h-ver-check
--enable-tk-h-ver-check
--disable-tk-h-ver-check
Can't find "tcl.h".
Can't find "tk.h".

Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
If you have Tcl/Tk libraries on your environment, you may be able to use them with configure options (see ext/tk/README.tcltklib).
At present, Tcl/Tk8.6 is not supported. Although you can try to use Tcl/Tk8.6 with configure options, it will not work correctly. I recommend you to use Tcl/Tk8.5 or 8.4.

To see why this extension failed to compile, please check the mkmf.log which can be found here:

/var/lib/gems/3.1.0/extensions/x86_64-linux/3.1.0/tk-0.5.0/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/3.1.0/gems/tk-0.5.0 for inspection.
Results logged to /var/lib/gems/3.1.0/extensions/x86_64-linux/3.1.0/tk-0.5.0/gem_make.out
apt-get install ruby-dev, apt install ruby-full komutlarını yazınız ve konuda paylaştığım kodu tekrar deneyiniz.
 

Joe101

Junior Hunter
23 Haz 2023
23
12
Bu hata var.
└─# bash install.sh
Get:1 https://dl.google.com/linux/chrome/deb stable InRelease [1,825 B]
Get:2 Index of /repos/code/ stable InRelease [3,569 B]
Get:3 http://repository.spotify.com stable InRelease [3,316 B]
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,084 B]
Get:6 Index of http://download.virtualbox.org/virtualbox/debian bullseye InRelease [7,735 B]
Ign:7 https://pkg.cloudflareclient.com kali-rolling InRelease
Get:8 Index of /repos/code/ stable/main amd64 Packages [21.8 kB]
Get:4 Index of /kali/ kali-rolling InRelease [41.2 kB]
Get:9 Index of /repos/code/ stable/main arm64 Packages [21.9 kB]
Get:10 Index of /repos/code/ stable/main armhf Packages [22.1 kB]
Err:11 https://pkg.cloudflareclient.com kali-rolling Release
404 Not Found [IP: 104.19.237.24 443]
Get:12 http://repository.spotify.com stable/non-free amd64 Packages [1,698 B]
Get:13 Index of /kali/ kali-rolling/main i386 Packages [19.2 MB]
Get:14 Index of http://download.virtualbox.org/virtualbox/debian bullseye/contrib amd64 Packages [1,455 B]
Get:15 Index of http://download.virtualbox.org/virtualbox/debian bullseye/contrib amd64 Contents (deb) [4,064 B]
Get:16 Index of /kali/ kali-rolling/main amd64 Packages [19.4 MB]
Get:17 Index of /kali/ kali-rolling/main i386 Contents (deb) [43.9 MB]
Get:18 Index of /kali/ kali-rolling/main amd64 Contents (deb) [46.0 MB]
Get:19 Index of /kali/ kali-rolling/contrib i386 Packages [104 kB]
Get:20 Index of /kali/ kali-rolling/contrib amd64 Packages [124 kB]
Get:21 Index of /kali/ kali-rolling/contrib amd64 Contents (deb) [297 kB]
Get:22 Index of /kali/ kali-rolling/contrib i386 Contents (deb) [161 kB]
Get:23 Index of /kali/ kali-rolling/non-free amd64 Packages [226 kB]
Get:24 Index of /kali/ kali-rolling/non-free i386 Packages [181 kB]
Get:25 Index of /kali/ kali-rolling/non-free i386 Contents (deb) [866 kB]
Get:26 Index of /kali/ kali-rolling/non-free amd64 Contents (deb) [913 kB]
Reading package lists... Done
E: The repository 'https://pkg.cloudflareclient.com kali-rolling Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
 
Ü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.