* fixed offline zombie not deleting * Bump jsdoc-to-markdown from 6.0.1 to 7.0.1 (#2161) Bumps [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown) from 6.0.1 to 7.0.1. - [Release notes](https://github.com/jsdoc2md/jsdoc-to-markdown/releases) - [Commits](https://github.com/jsdoc2md/jsdoc-to-markdown/compare/v6.0.1...v7.0.1) --- updated-dependencies: - dependency-name: jsdoc-to-markdown dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bug: Core - 1785 Fixed public hook url configuration settings (#2163) * added spec file for testing changes * added local host getter to configuration class * added default value 0.0.0.0 for local host if it's not set * added port config getter with default * added port config getter with default * fixed spelling errors for port * added public configuration values and validation * removed logic from public port as it was not required * added beef host to configuration class * added beef port to configuration class and removed default http.port logic from public_port * fixed rubocop errors and refactored spec tests * added beef host configuration values used for external resources * added beef url to configuration * added spec file for testing changes * added local host getter to configuration class * added default value 0.0.0.0 for local host if it's not set * added port config getter with default * added port config getter with default * fixed spelling errors for port * added public configuration values and validation * removed logic from public port as it was not required * added beef host to configuration class * added beef port to configuration class and removed default http.port logic from public_port * fixed rubocop errors and refactored spec tests * added beef host configuration values used for external resources * added beef url to configuration * created command spec file * add before statement to load all enabled modules to test command class * add spec to check if configuration instance exists by setting and accessing a config variable * updated http proto for beef host * reverting changes on this file, dev values set * removed some unessessary checks * fixed grammar test now we're only testing one configuration attribute * added hook url for contextual usage * refactoring admin_ui with new code usage * fixed issue with the location of the beef.http.https.public_enabled * refactored powershell module and extension * adding the new config setting for public https beign enabled * refactor qrcode extension * replace video fake plugin refactor * social engineering refactoring * phonegap module refactoring * exploit refactoing * network module refactoing * ipec module refactoring * host module refactoring * debug refactoring * browser refactoring * social engineering extension refactoring * core main server refactoring * core main console banner refactoring * removing dev test * fixed area with location of http.https.enabled * changed the hook url definition to return the hook file path * updated banners to use new configuration getters * updated extensions and modules with the hook url change * added new public.host configuration settings and validations for depicated usage of public * updated to use public.port configuration * added validation for old configuration public_port * updated to use public https configuration setting * updated config with new settings format * fixed get to point to new locations * fixed pointer to hook_file_path * Update extensions/social_engineering/web_cloner/web_cloner.rb Co-authored-by: bcoles <bcoles@gmail.com> * updated enabled to enable * making sure default configuration file does not have preset values Co-authored-by: bcoles <bcoles@gmail.com> * bumped versions to 0.5.2.0 * Usability: #2145. Added user input request for beef update within 'beef' install script (#2162) * added user input request for beef update * swaped git pull from system to backticks * flags added for auto update and timout to input * updated install.txt to reference the update-beef script (#2160) Co-authored-by: Andrew Wheatley <a@andrews-mini.home> Co-authored-by: Isaac Powell <36595182+DeezyE@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: bcoles <bcoles@gmail.com>
92 lines
3.2 KiB
Ruby
92 lines
3.2 KiB
Ruby
#
|
|
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
|
|
# Browser Exploitation Framework (BeEF) - http://beefproject.com
|
|
# See the file 'doc/COPYING' for copying permission
|
|
#
|
|
module BeEF
|
|
module Extension
|
|
module Qrcode
|
|
|
|
module QrcodeGenerator
|
|
|
|
BeEF::API::Registrar.instance.register(BeEF::Extension::Qrcode::QrcodeGenerator, BeEF::API::Server, 'pre_http_start')
|
|
|
|
def self.pre_http_start(http_hook_server)
|
|
require 'uri'
|
|
require 'qr4r'
|
|
|
|
fullurls = []
|
|
|
|
# get server config
|
|
configuration = BeEF::Core::Configuration.instance
|
|
beef_proto = configuration.beef_proto
|
|
beef_host = configuration.beef_host
|
|
beef_port = configuration.beef_port
|
|
|
|
# get URLs from QR config
|
|
configuration.get("beef.extension.qrcode.targets").each do |target|
|
|
# absolute URLs
|
|
if target.lines.grep(/^https?:\/\//i).size > 0
|
|
fullurls << target
|
|
# relative URLs
|
|
else
|
|
# network interfaces
|
|
BeEF::Core::Console::Banners.interfaces.each do |int|
|
|
next if int == "0.0.0.0"
|
|
fullurls << "#{beef_proto}://#{int}:#{beef_port}#{target}"
|
|
end
|
|
# beef host
|
|
unless beef_host == "0.0.0.0"
|
|
fullurls << "#{beef_proto}://#{beef_host}:#{beef_port}#{target}"
|
|
end
|
|
end
|
|
end
|
|
|
|
unless fullurls.empty?
|
|
img_dir = 'extensions/qrcode/images'
|
|
begin
|
|
Dir.mkdir(img_dir) unless File.directory?(img_dir)
|
|
rescue
|
|
print_error "[QR] Could not create directory '#{img_dir}'"
|
|
end
|
|
data = ''
|
|
fullurls.uniq.each do |target|
|
|
fname = ('a'..'z').to_a.shuffle[0,8].join
|
|
qr_path = "#{img_dir}/#{fname}.png"
|
|
begin
|
|
qr = Qr4r::encode(
|
|
target, qr_path, {
|
|
:pixel_size => configuration.get("beef.extension.qrcode.qrsize"),
|
|
:border => configuration.get("beef.extension.qrcode.qrborder")
|
|
})
|
|
rescue
|
|
print_error "[QR] Could not write file '#{qr_path}'"
|
|
next
|
|
end
|
|
print_debug "[QR] Wrote file '#{qr_path}'"
|
|
BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.bind(
|
|
"/#{qr_path}", "/qrcode/#{fname}", 'png')
|
|
data += "#{beef_proto}://#{beef_host}:#{beef_port}/qrcode/#{fname}.png\n"
|
|
data += "- URL: #{target}\n"
|
|
# Google API
|
|
#url = URI.escape(target,Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
|
|
#w = configuration.get("beef.extension.qrcode.qrsize").to_i * 100
|
|
#h = configuration.get("beef.extension.qrcode.qrsize").to_i * 100
|
|
#data += "- Google API: https://chart.googleapis.com/chart?cht=qr&chs=#{w}x#{h}&chl=#{url}\n"
|
|
# QRServer.com
|
|
#url = URI.escape(target,Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
|
|
#w = configuration.get("beef.extension.qrcode.qrsize").to_i * 100
|
|
#h = configuration.get("beef.extension.qrcode.qrsize").to_i * 100
|
|
#data += "- QRServer API: https://api.qrserver.com/v1/create-qr-code/?size=#{w}x#{h}&data=#{url}\n"
|
|
end
|
|
print_info "QR code images available:"
|
|
print_more data
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|