Skip to content

Commit

Permalink
You can turn the twitter fake account functionality on/off
Browse files Browse the repository at this point in the history
  • Loading branch information
409H committed Feb 4, 2018
1 parent 1360cf5 commit 70f95a9
Show file tree
Hide file tree
Showing 10 changed files with 92 additions and 117 deletions.
3 changes: 2 additions & 1 deletion EtherSecurityLookup.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ <h4 class="text-center">EtherSecurityLookup</h4>
<input type="checkbox" name="ext-ethersecuritylookup-twitter_whitelist_checkbox" id="ext-ethersecuritylookup-twitter_whitelist_checkbox">
<span>Fake Twitter Account Warning</span>
</label>
<div id="ext-ethersecuritylookup-twitter_stats">
<div class="ext-ethersecuritylookup-stats">
<small>Last Updated: <span id="ext-ethersecuritylookup-twitter_whitelist_last_updated">N/A</span></small>
<br/>
<small>Whitelisted Accounts: <span id="ext-ethersecuritylookup-twitter_whitelist_count">0</span></small>
</div>

<br/>

<div id="footer">
<div class="ext-ethersecuritylookup-center">
<a href="https://etherscamdb.info/" target="_blank">EtherScamDb</a> &mdash;
Expand Down
2 changes: 1 addition & 1 deletion css/EtherSecurityLookup.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion css/EtherSecurityLookup.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion css/EtherSecurityLookup.scss
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
font-size: 10pt;
}

#ext-ethersecuritylookup-twitter_stats {
.ext-ethersecuritylookup-stats {
font-size: 10pt;
color: #c2c6c7;
line-height: 10pt;
Expand Down
Binary file added images/esl-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 35 additions & 34 deletions js/TwitterFakeAccount.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,42 +92,43 @@ var objWorker = new Worker(chrome.runtime.getURL('/js/workers/TwitterFakeAccount
var arrCheckedUsers = [];
var intTweetCounter = 0;

console.log("--------- worker");
console.log(objWorker);

observeDOM( document.getElementsByTagName('body')[0] ,function(){
if (document.getElementById("permalink-overlay")) {
var arrTweets = objTwitterFakeAccount.getTweets();

intTweetCounter = arrTweets.length;

var arrTweetData = [];
for(var intCounter=0; intCounter<arrTweets.length; intCounter++) {
var arrTmpTweetData = {
"userId": arrTweets[intCounter].getAttribute("data-user-id"),
"name": arrTweets[intCounter].getAttribute("data-screen-name"),
"tweet_id": arrTweets[intCounter].getAttribute("data-tweet-id")
};

//See if we've already checked the userid
if(arrCheckedUsers.indexOf(arrTmpTweetData.userId) !== -1) {
console.log(arrCheckedUsers[arrTmpTweetData.userId]);
if(arrCheckedUsers[arrTmpTweetData.userId].is_imposter === false) {
console.log(arrTmpTweetData.name +" is ok");
continue;
} else {
objTweetData.similar_to = arrCheckedUsers[arrTmpTweetData.userId].similar_to;
console.log(arrTmpTweetData.name +" is NOT ok");
//objTwitterFakeAccount.doWarningAlert(objTweetData);
continue;
chrome.runtime.sendMessage({func: "getTwitterWhitelistStatus"}, function(objResponse) {
if(objResponse.resp) {
observeDOM( document.getElementsByTagName('body')[0] ,function(){
if (document.getElementById("permalink-overlay")) {
var arrTweets = objTwitterFakeAccount.getTweets();

intTweetCounter = arrTweets.length;

var arrTweetData = [];
for(var intCounter=0; intCounter<arrTweets.length; intCounter++) {
var arrTmpTweetData = {
"userId": arrTweets[intCounter].getAttribute("data-user-id"),
"name": arrTweets[intCounter].getAttribute("data-screen-name"),
"tweet_id": arrTweets[intCounter].getAttribute("data-tweet-id")
};

//See if we've already checked the userid
if(arrCheckedUsers.indexOf(arrTmpTweetData.userId) !== -1) {
console.log(arrCheckedUsers[arrTmpTweetData.userId]);
if(arrCheckedUsers[arrTmpTweetData.userId].is_imposter === false) {
console.log(arrTmpTweetData.name +" is ok");
continue;
} else {
objTweetData.similar_to = arrCheckedUsers[arrTmpTweetData.userId].similar_to;
console.log(arrTmpTweetData.name +" is NOT ok");
//objTwitterFakeAccount.doWarningAlert(objTweetData);
continue;
}
}

arrTweets[intCounter].id = "ext-ethersecuritylookup-tweet-"+arrTweets[intCounter].getAttribute("data-tweet-id");
arrTweetData.push(arrTmpTweetData);
}
}

arrTweets[intCounter].id = "ext-ethersecuritylookup-tweet-"+arrTweets[intCounter].getAttribute("data-tweet-id");
arrTweetData.push(arrTmpTweetData);
}

objWorker.postMessage(JSON.stringify(arrTweetData));
objWorker.postMessage(JSON.stringify(arrTweetData));
}
});
}
});

Expand Down
25 changes: 25 additions & 0 deletions js/api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
var strOption = request.func;
var strResponse = "";

switch(strOption) {
case 'getTwitterWhitelistStatus' :
//This option is enabled by default
if(localStorage.getItem("ext-ethersecuritylookup-twitter_whitelist") === null) {
strResponse = 1;
} else {
var strTwitterWhitelist = localStorage.getItem("ext-ethersecuritylookup-twitter_whitelist");
var objTwitterWhitelist = JSON.parse(strTwitterWhitelist);
strResponse = objTwitterWhitelist.status;
}
break;
default: {
strResponse = "not_supported";
break;
}
}

sendResponse({resp:strResponse});
}
);
46 changes: 21 additions & 25 deletions js/app/EtherSecurityLookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ document.getElementById("ext-manifest_version").innerText = chrome.runtime.getMa

class EslTools {

async getListFromGithub(objTwitterWhitelist)
async getListFromGithub(objRepo)
{
console.log("Getting "+ objRepo.repo);
try {
let objResponse = await fetch(objTwitterWhitelist.repo);
let objResponse = await fetch(objRepo.repo);
return objResponse.json();
} catch(objError) {
console.error("Failed to get Twitter list: "+ objTwitterWhitelist.repo, objError);
console.error("Failed to get Twitter list: "+ objRepo.repo, objError);
}
}

Expand All @@ -33,7 +34,7 @@ class TwitterLists {
{
this.getStats();

setInterval(function() {
window.setInterval(function() {
this.refreshWhitelist();
}.bind(this), 50000);
}
Expand All @@ -54,8 +55,12 @@ class TwitterLists {
"repo": "https://gist.githubusercontent.com/409H/740c10d340ec01e265ba4add2e4430a7/raw/f975cf74174a999292c954eb9e1da7cc70956a49/esl-twitter.whitelist.json",
"users": []
};
this.refreshWhitelist(true);
} else {
var objTwitterWhitelist = JSON.parse(strTwitterWhitelist);
if((Math.floor(Date.now() / 1000)) - 600 >= objTwitterWhitelist.timestamp) {
this.refreshWhitelist(true);
}
}

return objTwitterWhitelist;
Expand All @@ -64,11 +69,20 @@ class TwitterLists {
/**
* Fetches the whitelist json from the repo and puts it in localstorage
*/
refreshWhitelist()
refreshWhitelist(blInit = false)
{
var objEslTools = new EslTools();

var objTwitterWhitelist = this.getWhitelistStructure();
if(blInit) {
var objTwitterWhitelist = {
"status": true,
"timestamp": 0,
"repo": "https://gist.githubusercontent.com/409H/740c10d340ec01e265ba4add2e4430a7/raw/f975cf74174a999292c954eb9e1da7cc70956a49/esl-twitter.whitelist.json",
"users": []
};
} else {
var objTwitterWhitelist = this.getWhitelistStructure();
}

if(objTwitterWhitelist.status) {
objEslTools.getListFromGithub(objTwitterWhitelist).then(function (objList) {
Expand All @@ -86,11 +100,9 @@ class TwitterLists {
*/
getStats()
{
console.log("GET STATS");
var objTwitterWhitelist = this.getWhitelistStructure();
var objEslTools = new EslTools();

console.log(objTwitterWhitelist);
document.getElementById("ext-ethersecuritylookup-twitter_whitelist_checkbox").checked = objTwitterWhitelist.status;
document.getElementById("ext-ethersecuritylookup-twitter_whitelist_last_updated").innerText = objEslTools.timeDifference(Math.floor(Date.now()/1000), objTwitterWhitelist.timestamp);
document.getElementById("ext-ethersecuritylookup-twitter_whitelist_count").innerText = Object.keys(objTwitterWhitelist.users).length;
Expand All @@ -102,37 +114,21 @@ class TwitterLists {
toggleOption()
{
var objTwitterWhitelist = this.getWhitelistStructure();
console.log("Check:"+ document.getElementById('ext-ethersecuritylookup-twitter_whitelist_checkbox').checked);
console.log(typeof document.getElementById('ext-ethersecuritylookup-twitter_whitelist_checkbox').checked);
if(document.getElementById('ext-ethersecuritylookup-twitter_whitelist_checkbox').checked) {
objTwitterWhitelist.status = true;
} else {
objTwitterWhitelist.status = false;
}

console.log(objTwitterWhitelist);
localStorage.setItem("ext-ethersecuritylookup-twitter_whitelist", JSON.stringify(objTwitterWhitelist));
}
}

// Init Twitter lists and add an event listener to the checkbox to toggle it on/off.
var objTwitterLists = new TwitterLists();
var objTwitterWhitelist = document.getElementById('ext-ethersecuritylookup-twitter_whitelist_checkbox');
if(objTwitterWhitelist) {
objTwitterWhitelist.addEventListener('change', function() {
this.toggleOption();
}.bind(objTwitterLists), false);
}

class DomainBlacklist {

constructor()
{
this.refreshBlacklist();
}

refreshBlacklist()
{

}

}
54 changes: 0 additions & 54 deletions js/workers/TwitterFakeAccount.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,60 +82,6 @@ class TwitterFakeAccount
}
}

//Add it to the array so we don't have to do any checks again
this.arrViewWhitelistedUserIds.push(intUserId);
return {
"result":false
};

//Userid is whitelisted!
if ((intUserId in this.objWhitelistedHandles)) {
//Add it to the array so we don't have to do any checks again
this.arrViewWhitelistedUserIds.push(intUserId);
return {
"result":false
};
}

//Userid has already been checked.
if(this.arrViewWhitelistedUserIds.length > 0) {
if(this.arrViewWhitelistedUserIds.indexOf(intUserId) !== -1) {
//console.log(intUserId +" has already been checked.");
return {
"result":false
};
}
}

//The userid has already been tested a positive match
if(this.arrViewBlacklistedUserIds.length > 0) {
if (this.arrViewBlacklistedUserIds.indexOf(intUserId) !== -1) {
return {
"result": true,
"similar_to": this.arrViewBlacklistedUserIds[intUserId].similar_to
};
}
}

//Check the username against the whitelist with levenshtein edit distance
for(var intKey in this.objWhitelistedHandles) {
//console.log(strUsername + " checking against: "+ this.objWhitelistedHandles[intKey]);
var intHolisticMetric = this.levenshtein(strUsername, this.objWhitelistedHandles[intKey]);
if (intHolisticMetric <= this.intMaxEditDistance) {
//Add it to the array so we don't have to do Levenshtein again
this.arrViewBlacklistedUserIds[intUserId] = {
"holistic": intHolisticMetric,
"similar_to": this.objWhitelistedHandles[intKey]
};
return {
"result":true,
"similar_to":this.objWhitelistedHandles[intKey]
};
}
}

//Add it to the array so we don't have to do any checks again
this.arrViewWhitelistedUserIds.push(intUserId);
return {
"result":false
};
Expand Down
6 changes: 6 additions & 0 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@
]
}],

"background": {
"scripts": [
"js/api.js"
]
},

"web_accessible_resources": [
"js/workers/TwitterFakeAccount.js"
],
Expand Down

0 comments on commit 70f95a9

Please sign in to comment.