diff --git a/modules/slowscan.js b/modules/slowscan.js deleted file mode 100644 index b3545b4..0000000 --- a/modules/slowscan.js +++ /dev/null @@ -1,196 +0,0 @@ -var helper = require("./helper.js") -var async = require("async"); -var sanitizeHtml = require("sanitize-html"); -var tesseract = require("node-tesseract-ocr"); -var sanitizeHtml = require("sanitize-html"); -var firefox = require("selenium-webdriver/firefox"); -var { - Builder, - By, - Key -} = require("selenium-webdriver"); -var tmp = require("tmp"); -var fs = require("fs"); - -async function find_username_advanced(req) { - const time = new Date(); - const functions = []; - helper.parsed_sites.forEach((site) => { - if ("status" in site) { - if (site.status == "bad") { - return Promise.resolve(); - } - } - if (site.selected == "true" && site.detections.length > 0) { - functions.push(find_username_site.bind(null, req.body.uuid, req.body.string, req.body.option, site)); - } - }); - const results = await async.parallelLimit(functions, 8); - helper.verbose && console.log(`Total time ${new Date() - time}`); - return results.filter(item => item !== undefined) -} - -async function find_username_site(uuid, username, options, site) { - return new Promise(async (resolve, reject) => { - helper.log_to_file_queue(uuid, "[Checking] " + helper.get_site_from_url(site.url)) - let driver = undefined - if (helper.grid_url == "") { - driver = new Builder() - .forBrowser("firefox") - .setFirefoxOptions(new firefox.Options().headless().windowSize({ - width: 640, - height: 480 - })) - .build(); - } else { - driver = new Builder() - .forBrowser("firefox") - .setFirefoxOptions(new firefox.Options().headless().windowSize({ - width: 640, - height: 480 - })) - .usingServer(helper.grid_url) - .build(); - } - - try { - - var timeouts = { - implicit: 0, - pageLoad: 5000, - script: 5000 - }; - - var timeout = (site.timeout != 0) ? site.timeout * 1000 : 5000; - var implicit = (site.implicit != 0) ? site.implicit * 1000 : 0; - - timeouts = { - implicit: implicit, - pageLoad: timeout, - script: timeout - }; - - helper.verbose && console.log(timeouts) - - var source = ""; - var data = ""; - var language = "unavailable" - var text_only = "unavailable"; - var title = "unavailable"; - var temp_profile = { - "found": 0, - "image": "", - "link": "", - "rate": "", - "title": "", - "language": "", - "text": "", - "type": "" - }; - var link = site.url.replace("{username}", username); - await driver.manage().setTimeouts(timeouts); - await driver.get(link);; - source = await driver.getPageSource(); - data = await driver.takeScreenshot(); - title = await driver.getTitle(); - text_only = await driver.findElement(By.tagName("body")).getText(); - await driver.quit() - if (options.includes("ShowUserProfilesSlow")) { - temp_profile["image"] = "data:image/png;base64,{image}".replace("{image}", data); - } - if (site.selected == "true" && site.detections.length > 0 && options.includes("FindUserProfilesSlow")) { - await Promise.all(site.detections.map(async detection => { - try { - if ("status" in detection) { - if (detection.status == "bad") { - return; - } - } - var temp_found = "false" - if (detection.type == "ocr" && data != "") { - tmpobj = tmp.fileSync(); - fs.writeFileSync(tmpobj.name, Buffer.from(data, "base64")); - await tesseract.recognize(tmpobj.name, { - lang: "eng", - oem: 1, - psm: 3, - }) - .then(text => { - text = text.replace(/[^A-Za-z0-9]/gi, ""); - detection.string = detection.string.replace(/[^A-Za-z0-9]/gi, ""); - if (text != "") { - if (text.toLowerCase().includes(detection.string.toLowerCase())) { - temp_found = "true"; - } - if (detection.return == temp_found) { - //console.log(text); - //console.log(detection.string," > Found ocr"); - temp_profile.found += 1; - } - } - }) - .catch(error => { - helper.verbose && console.log(error.message); - }) - tmpobj.removeCallback(); - } else if (detection.type == "normal" && source != "") { - if (source.toLowerCase().includes(detection.string.replace("{username}", username).toLowerCase())) { - temp_found = "true"; - } - if (detection.return == temp_found) { - //console.log(detection.string," > normal"); - temp_profile.found += 1 - } - } else if (detection.type == "advanced" && text_only != "") { - if (text_only.toLowerCase().includes(detection.string.replace("{username}", username).toLowerCase())) { - temp_found = "true"; - } - if (detection.return == temp_found) { - //console.log(detection.string," > normal"); - temp_profile.found += 1 - } - } - - } catch (err) { - - } - })); - } - if (temp_profile.found > 0 || temp_profile.image != "") { - - try{ - language = helper.get_language_by_parsing(source) - if (language == "unavailable"){ - language = helper.get_language_by_guessing(text_only) - } - } - catch(err){ - helper.verbose && console.log(err); - } - - temp_profile.text = sanitizeHtml(text_only); - temp_profile.title = sanitizeHtml(title); - temp_profile.language = language - temp_profile.rate = "%" + ((temp_profile.found / site.detections.length) * 100).toFixed(2); - temp_profile.link = site.url.replace("{username}", username); - temp_profile.type = site.type - resolve(temp_profile); - } else { - resolve(undefined) - } - } catch (err) { - if (driver !== undefined) { - try { - await driver.quit() - } catch (err) { - helper.verbose && console.log("Driver Session Issue") - } - } - resolve(undefined) - } - }); -} - -module.exports = { - find_username_advanced -}