67 lines
1.7 KiB
Ruby
67 lines
1.7 KiB
Ruby
#
|
|
# Copyright (c) 2006-2015 Wade Alcorn - wade@bindshell.net
|
|
# Browser Exploitation Framework (BeEF) - http://beefproject.com
|
|
# See the file 'doc/COPYING' for copying permission
|
|
#
|
|
|
|
module BeEF
|
|
module Core
|
|
module Rest
|
|
class Logs < BeEF::Core::Router::Router
|
|
|
|
config = BeEF::Core::Configuration.instance
|
|
|
|
before do
|
|
error 401 unless params[:token] == config.get('beef.api_token')
|
|
halt 401 if not BeEF::Core::Rest.permitted_source?(request.ip)
|
|
headers 'Content-Type' => 'application/json; charset=UTF-8',
|
|
'Pragma' => 'no-cache',
|
|
'Cache-Control' => 'no-cache',
|
|
'Expires' => '0'
|
|
end
|
|
|
|
#
|
|
# @note Get all global logs
|
|
#
|
|
get '/' do
|
|
logs = BeEF::Core::Models::Log.all()
|
|
logs_to_json(logs)
|
|
end
|
|
|
|
#
|
|
# @note Get hooked browser logs
|
|
#
|
|
get '/:session' do
|
|
hb = BeEF::Core::Models::HookedBrowser.first(:session => params[:session])
|
|
error 401 unless hb != nil
|
|
|
|
logs = BeEF::Core::Models::Log.all(:hooked_browser_id => hb.id)
|
|
logs_to_json(logs)
|
|
end
|
|
|
|
private
|
|
|
|
def logs_to_json(logs)
|
|
logs_json = []
|
|
count = logs.length
|
|
|
|
logs.each do |log|
|
|
logs_json << {
|
|
'id' => log.id.to_i,
|
|
'date' => log.date.to_s,
|
|
'event' => log.event.to_s,
|
|
'type' => log.type.to_s
|
|
}
|
|
end
|
|
|
|
{
|
|
'logs_count' => count,
|
|
'logs' => logs_json
|
|
}.to_json if not logs_json.empty?
|
|
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end |