diff --git a/tools/rest_api_examples/clone_page b/tools/rest_api_examples/clone_page new file mode 100644 index 000000000..bbf1509b6 --- /dev/null +++ b/tools/rest_api_examples/clone_page @@ -0,0 +1,75 @@ +#!/usr/bin/env ruby +# clone_page - Example BeEF RESTful API script +# Clone a web page and mount it locally +# Refer to the wiki for info: https://github.com/beefproject/beef/wiki/BeEF-RESTful-API +## +require 'rest_client' +require 'json' +require 'optparse' +require 'pp' +require './lib/string' # colored strings +require './lib/print' # print wrappers +require './lib/beef_rest_api' # API + +if ARGV.length == 0 + puts "#{$0}:" + puts "| Example BeEF RESTful API script" + puts "| Use --help for help" + puts "|_ Use verbose mode (-v) and debug mode (-d) for more output" + exit 1 +end + +# API config +proto = 'http' +host = '127.0.0.1' +port = '3000' +user = 'beef' +pass = 'beef' + +# Command line options +@debug = false +@verbose = false +OptionParser.new do |opts| + opts.on('-h', '--help', 'Shows this help screen') do + puts opts + exit 1 + end + opts.on('--host HOST', "Set BeEF host (default: #{host})") do |h| + host = h + end + opts.on('--port PORT', "Set BeEF port (default: #{port})") do |p| + port = p + end + opts.on('--user USERNAME', "Set BeEF username (default: #{user})") do |u| + user = u + end + opts.on('--pass PASSWORD', "Set BeEF password (default: #{pass})") do |p| + pass = p + end + opts.on('--ssl', 'Use HTTPS') do + proto = 'https' + end + opts.on('-v', '--verbose', 'Enable verbose output') do + @verbose = true + end + opts.on('-d', '--debug', 'Enable debug output') do + @debug = true + end +end.parse! + +@api = BeefRestAPI.new proto, host, port, user, pass + +# Retrieve the RESTful API token +print_status "Authenticating to: #{proto}://#{host}:#{port}" +@api.auth + +# Retrieve BeEF version +@api.version + +# Clone http://localhost/ and mount to / +url = 'http://localhost/' +path = '/' +use_existing = false +dns_spoof = false +@api.clone_page(url, path, use_existing, dns_spoof) +