// ==UserScript==
// @name TrustScan Update
// @namespace http://www.hackforums.net/member.php?action=profile&uid=1769039
// @version 1.0
// @description Update for Hackforums Trust Scan
// @author LazySoftware
// @match http://www.hackforums.net/trustscan.php?uid=*
// ==/UserScript==
// ======== Fix Table ======== \\
document.getElementsByClassName("thead")[1].colSpan = "3";
document.getElementsByClassName("tborder")[1].insertRow(1).innerHTML = "<td class='tcat' colspan='1' width='76%'><span class='smalltext'><strong><a href=''>Information</a> </strong></span></td><td class='tcat' align='center' ><span class='smalltext'><strong><a href='' rel='nofollow'>Result</a> </strong></span></td><td class='tcat' align='center' width='7%''><span class='smalltext'><strong><a href='' rel='nofollow'>Score</a> </strong></span></td>";
document.getElementsByClassName("tborder")[1].insertRow(document.getElementsByClassName("tborder")[1].rows.length).innerHTML = "<td class='trow1' width='80%'>Trust Score:</td><td class='trow1' align='center'>0%</td><td class='trow1' align='center'>0/0</td>";
for (i=2;i<13;i++){
var newCell = document.getElementsByClassName("tborder")[1].rows[i].insertCell(2);
newCell.innerHTML = "<td class='trow1' align='center'>0/0</td>";
newCell.className = "trow1";
newCell.align = "center";
}
// ======== Gather all data ======== \\
var TrustScan_Header = document.getElementsByClassName("tborder")[1].rows[0];
var Information_Header = document.getElementsByClassName("tborder")[1].rows[1];
var Gauth_Data = document.getElementsByClassName("tborder")[1].rows[2];
var LastEmail_Data = document.getElementsByClassName("tborder")[1].rows[3];
var CountryLogins_Data = document.getElementsByClassName("tborder")[1].rows[4];
var LoginIPs_Data = document.getElementsByClassName("tborder")[1].rows[5];
var UniqueISPs_Data = document.getElementsByClassName("tborder")[1].rows[6];
var MatchingRegistration_Data = document.getElementsByClassName("tborder")[1].rows[7];
var MatchingRegion_Data = document.getElementsByClassName("tborder")[1].rows[8];
var IPMatching_Data = document.getElementsByClassName("tborder")[1].rows[9];
var DealDisputes_Data = document.getElementsByClassName("tborder")[1].rows[10];
var PasswordReset_Data = document.getElementsByClassName("tborder")[1].rows[11];
var IPChangeDate_Data = document.getElementsByClassName("tborder")[1].rows[12];
var TrustScore_Data = document.getElementsByClassName("tborder")[1].rows[13];
// ======== Trust Score Editting ======== \\
function updateScore(rowData, updatedScore, scoreMax) {
rowData.getElementsByTagName("td")[2].innerHTML = updatedScore + "/" + scoreMax;
}
function getData(rowData) {
return rowData.getElementsByTagName("td")[1].innerHTML;
}
// ======== Trust Score Calcularor ======= \\
var totalTrustScore = 0;
var checkHacked = 0;
// Gauth/2FA activation date:
if (getData(Gauth_Data) == "Not Activated") {
updateScore(Gauth_Data, 0, 20);
} else {
updateScore(Gauth_Data, 20, 20);
totalTrustScore += 20;
}
// Last Email Change:
if (getData(LastEmail_Data) == "No Changes") {
updateScore(LastEmail_Data, 10, 10);
totalTrustScore += 10;
} else {
updateScore(LastEmail_Data, 5, 10);
totalTrustScore += 5;
checkHacked += 1;
}
// Number of Unique Country Logins:
if (getData(CountryLogins_Data) == "1") {
updateScore(CountryLogins_Data, 20, 20);
totalTrustScore += 20;
} else if (getData(CountryLogins_Data) == 2) {
updateScore(CountryLogins_Data, 10, 20);
totalTrustScore += 10;
} else if (getData(CountryLogins_Data) > 2) {
updateScore(CountryLogins_Data, 0, 20);
checkHacked += 1;
}
// Number of Unique Login IP's:
updateScore(LoginIPs_Data, "N", "A");
// Number of Unique ISP's:
if (getData(UniqueISPs_Data) == "1") {
updateScore(UniqueISPs_Data, 20, 20);
totalTrustScore += 20;
} else if (getData(UniqueISPs_Data) == 2) {
updateScore(UniqueISPs_Data, 10, 20);
totalTrustScore += 10;
} else if (getData(UniqueISPs_Data) > 2) {
updateScore(UniqueISPs_Data, 0, 20);
checkHacked += 1;
}
// Matching registration and last IP:
updateScore(MatchingRegistration_Data, "N", "A");
// Matching region of registration and latest IP:
updateScore(MatchingRegion_Data, "N", "A");
// Latest IP Matching Other Members:
if (getData(IPMatching_Data) > 0) {
updateScore(IPMatching_Data, 0, 30);
checkHacked += 5;
} else {
updateScore(IPMatching_Data, 30, 30);
totalTrustScore += 30;
}
// Deal Disputes (Claimant/Defendant):
if (getData(DealDisputes_Data).split('/')[1] > 0) {
updateScore(DealDisputes_Data, 0, 100);
} else {
updateScore(DealDisputes_Data, 100, 100);
totalTrustScore += 100;
}
// Password Reset in Last Week:
if (getData(PasswordReset_Data) == "No") {
updateScore(PasswordReset_Data, 50, 50);
totalTrustScore += 50;
} else {
updateScore(PasswordReset_Data, 0, 50);
checkHacked += 5;
}
// Last Login IP Change Date:
updateScore(IPChangeDate_Data, "N", "A");
// Update Trust Score:
updateScore(TrustScore_Data, totalTrustScore, 250);
TrustScore_Data.getElementsByTagName("td")[1].innerHTML = totalTrustScore / 250 * 100 + "%";
// ======== Deal Disputes Warning ======== \\
var DealDisputesCount = getData(DealDisputes_Data).split('/')[1];
if (DealDisputesCount > 0) {
document.getElementsByClassName("tborder")[1].insertAdjacentHTML("beforeBegin", "<div class='red_alert'><b>WARNING:</b>This user has open scam reports!<br></div>");
}
// ======== Add Pro/Con Table ======== \\
document.getElementsByClassName("tborder")[1].insertAdjacentHTML("afterend", "<br><table border='0' cellspacing='1' cellpadding='4' class='tborder'><tbody><tr><td class='thead'><strong>More Information</strong></td></tr><tr><td class='trow1'>Pros;<span style='color: white;'><ul id='pros'></ul></span>Cons;<span style='color: white;'><ul id='cons'></ul></span></td></tr></tbody></table>");
if ((totalTrustScore / 250 * 100) < 70) {
document.getElementById("cons").innerHTML += "This users trust score is below 70%!<br>";
} else {
document.getElementById("pros").innerHTML += "This users trust score is above 70%<br>";
}
if (DealDisputesCount > 0) {
document.getElementById("cons").innerHTML += "This user has an open scam report!<br>";
} else {
document.getElementById("pros").innerHTML += "This user has no open scan reports.<br>";
}
if (checkHacked > 3) {
document.getElementById("cons").innerHTML += "This user may have been hacked recently! (Scored: " + checkHacked + "/18)<br>";
} else {
document.getElementById("pros").innerHTML += "This user seems to have not been hacked.<br>";
}