deCloudflare/tool/block_cloudflare_mitm_fx/src/stop_cf_mitm.js

188 lines
56 KiB
JavaScript
Raw Normal View History

/**
* <<< Detect Cloudflare MiTM Attack >>>
* by Sw
* why? because...
* https://trac.torproject.org/projects/tor/ticket/24351
* http://www.crimeflare.com/
*/
2017-12-30 22:03:16 +00:00
var cfaddon_isdone=0;
var cf_ignore=[];
var cf_history=[];
var cf_dstarray={};
var wl_autoclean=0;
var stop_incapsula=0;
var stop_gshield=0;
var stop_sucuri=0;
2018-01-02 04:42:22 +00:00
var ign_thirdparty=0;
var do_markwhitelistsite=0;
2018-01-02 04:42:22 +00:00
var do_reaction=0;
var cfblockscreen='';
var cf_blocked_img='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgAAACwAAAAAAQABAAACAkQBADs=';
var cf_template_blocked='PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT48bWV0YSBjaGFyc2V0PSJ1dGYtOCI+DQo8bGluayBpZD0iZmF2aWNvbiIgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFFQUVCQUFBQUVBSUFCb0JBQUFGZ0FBQUNnQUFBQVFBQUFBSUFBQUFBRUFJQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3prNE9LcE1Ta3E2VUU5UHVsUlRVN3BYVjFlNlcxdGJ1bDFkWGJwYlcxdTZXRmhZdWxWVlZicFRVMU82VUZCUXVreE1UTG90TFMyYkFBQUFPelkwTko3WTNOei92OXpoLzhIZTQvL0Q0ZWIveHVUcC84am02Ly9JNU9uL3grUG8vOGJqNmYvRTRlZi93dC9sLzhIZDQvKy8yZC8vM04vZi94a1pHWVUyTlRXZDJON2UveGVreGY4V3VlRC9GcnJoL3hhNzRmOFVyOVAvSWl3dS95SXNMdjhXczkvL0Y3RGUveGVyM1A4WHB0ci9JSlM2Lzk3ZzRmOFpHUm1DQUFBQVY5SFEwTzkxczd6L0Y4SGoveGJDNC84V3crVC9GTGJWL3lBckxmOGdLeTMvRnJyaC94YTEzLzhYc043L0ZxYlYvNUczdmYreHNiSFVBQUFBUlFBQUFDNW9aMmVWMk43Zi95V3R2LzhYeXViL0Zzcm0veGJKNXY4WnE4Zi9HYXZIL3hiQTQvOFd1K0gvRnJYZi96V2d1Zi9aMmRuL0x5OHZlQUFBQUJ3QUFBQUFBQUFBU3NiRnhkMmd5ODcvS3RUbS94blU2djhXME9qL0ZFSkkveFJDU1A4V3hlWC9Gci9qL3hXdzAvK3N3c1AvazVPVHRnQUFBRG9BQUFBQUFBQUFBQUFBQUNGRlJVVis2ZXZyL3pxMXZ2OHc1UEgvSjkvdi95SWlJdjhpSWlML0Zzcm0veGJFNVA5WHE3bi8xOWZYK0JrWkdXMEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFQcmUydHNuQTN1RC9MTnJqL3kvbzh2OHJLeXYvS3lzci95dmI3djhtdmREL3hNL1AvM2QzZDZBQUFBQTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlViR3h0dDhQRHcrRnJBdy84dTdQUC9ORFEwL3pRME5QOHczZS8vZ0x1Ly84akl5T2dBQUFCUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5KMmRuYlRTNCtUL0tkRFYvelE4UFA4MFFFSC9OTDNKLzlYWjJmOVdWbGFMQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0FBQUJYMzkvZjczM0V4djh0NXZIL0xkcnAvNXJCdy8rMnRyYlVBQUFBUlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTG0xdGJaWGY1dWIvTExuRC8wUzd4UC9kM2QzL01URXhlQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkt4OGZIM2JIUDBmKzh6TTMvbDVlWHRnQUFBRG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVEl5TW5hK3ZyN1RycTZ1eVJrWkdXMEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkFBQUFSQUFBQUQ0QUFBQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOEFBSUFCQUFBQUFBQUFBQUFBQUlBQkFBQ0FBd0FBd0FNQUFPQUhBQURnQndBQThBOEFBUEFQQUFENEh3QUErRDhBQVB3L0FBRCtmd0FBLy84QUFBPT0iPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IS0tQG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udG
var cf_template_wlnotify='PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5Hb29kIENvbm5lY3Rpb248L3RpdGxlPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCEtLUBuYW1lc3BhY2UgaHRtbCAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7QG5hbWVzcGFjZSB4dWwgImh0dHA6Ly93d3cubW96aWxsYS5vcmcva2V5bWFzdGVyL2dhdGVrZWVwZXIvdGhlcmUuaXMub25seS54dWwiOyp8Kjpyb290ey0taW4tY29udGVudC1wYWdlLWNvbG9yOiM0MjRlNWE7LS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZDojZmJmYmZiOy0taW4tY29udGVudC10ZXh0LWNvbG9yOiMzMzM7LS1pbi1jb250ZW50LXNlbGVjdGVkLXRleHQ6I2ZmZjstLWluLWNvbnRlbnQtaGVhZGVyLWJvcmRlci1jb2xvcjojYzhjOGM4Oy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZDojZmZmOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1vZGQ6I2YzZjZmYTstLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXI6I2ViZWJlYjstLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlOiNkYWRhZGE7LS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3I6I2MxYzFjMTstLWluLWNvbnRlbnQtaXRlbS1ob3ZlcjpyZ2JhKDAsMTQ5LDIyMSwwLjI1KTstLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZDojMDA5NWRkOy0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0OiNmZjk1MDA7LS1pbi1jb250ZW50LWJvcmRlci1mb2N1czojMDA5NWRkOy0taW4tY29udGVudC1ib3JkZXItY29sb3I6I2MxYzFjMTstLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dDojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXM6MXB4IGRvdHRlZCAjZmZmOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0LXNlbGVjdGVkOiNmMmYyZjI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQ6IzQyNGY1YTstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1ob3ZlcjojNWU2OTcyOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWFjdGl2ZTojMzQzZjQ4Oy0taW4tY29udGVudC10YWItY29sb3I6IzQyNGY1YTstLWluLWNvbnRlbnQtbGluay1jb2xvcjojMDA5NWRkOy0taW4tY29udGVudC1saW5rLWNvbG9yLWhvdmVyOiMxNzhjZTU7LS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlOiNmZjk1MDA7LS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZDojNTUxYThiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kOiMwMDk1ZGQ7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IzAwOGFjYjstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1hY3RpdmU6IzAwNmI5ZDstLWluLWNvbnRlbnQtdGFibGUtYm9yZGVyLWRhcmstY29sb3I6I2QxZDFkMTstLWluLWNvbnRlbnQtdGFibGUtaGVhZGVyLWJhY2tncm91bmQ6IzAwOTVkZH1odG1sfGh0bWwseHVsfHBhZ2UseHVsfHdpbmRvd3tmb250Om1lc3NhZ2UtYm94Oy1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtcGFnZS1jb2xvcil9aHRtbHxib2R5e2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW46MH1odG1sfGgxe2ZvbnQtc2l6ZToyLjVlbTtmb250LXdlaWdodDpsaWdodGVyO2xpbmUtaGVpZ2h0OjEuMjtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO21hcmdpbjowO21hcmdpbi1ib3R0b206LjVlbX1odG1sfGhye2JvcmRlci1zdHlsZTpzb2xpZCBub25lIG5vbmUgbm9uZTtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItY29sb3IpfXh1bHxjYXB0aW9uey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjowfXh1bHxjYXB0aW9uPnh1bHxjaGVja2JveCx4dWx8Y2FwdGlvbj54dWx8bGFiZWx7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjIycHh9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHttYXJnaW46MCFpbXBvcnRhbnR9KnwqLm1haW4tY29udGVudHtwYWRkaW5nLXRvcDo0MHB4O3BhZGRpbmctaW5saW5lLWVuZDo0NHB4O3BhZGRpbmctYm90dG9tOjQ4cHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6NDhweDtvdmVyZmxvdzphdXRvfXh1bHxwcmVmcGFuZT54dWx8Ki5jb250ZW50LWJveHtvdmVyZmxvdzp2aXNpYmxlfXh1bHxncm91cGJveHstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDttYXJnaW46MTVweCAwIDA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MDtwYWRkaW5nLWlubGluZS1lbmQ6MDtmb250LXNpemU6MS4yNXJlbX14dWx8Z3JvdXBib3ggeHVsfGxhYmVsOm5vdCgubWVudS1hY2NlbCk6bm90KC5tZW51LXRleHQpOm5vdCguaW5kZW50KSx4dWx8Z3JvdXBib3ggeHVsfGRlc2NyaXB0aW9ue21hcmdpbi1pbmxpbmUtc3RhcnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWlubGluZS1lbmQ6MCFpbXBvcnRhbnR9eHVsfHRhYnBhbmVsc3stbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoyMnB4O2JvcmRlcjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXR9eHVsfHRhYnN7bWFyZ2luLWJvdHRvbToxNXB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kKX14dWx8Ki50YWJzLWxlZnQseHVsfCoudGFicy1yaWdodHtib3JkZXItYm90dG9tOjB9eHVsfHRhYnstbW96LWFwcGVhcmFuY2U6bm9uZTttYXJnaW4tdG9wOjA7cGFkZGluZzo0cHggMjBweDttaW4taGVpZ2h0OjQ0cHg7Y29sb3I6dmFyKC0taW4tY29udGVudC10Y
2018-01-02 04:42:22 +00:00
function onError(e){console.log(`CFMITM Error:${e}`);}
2017-12-30 22:03:16 +00:00
function whitelist_reload(){browser.storage.local.get().then(function(w){
//WHITELIST
if (w.myset_cfwhite){
2017-12-30 22:03:16 +00:00
var tmp_whitelist=w.myset_cfwhite;tmp_whitelist=tmp_whitelist.split("\n").filter(v=>v!='');
cf_ignore=tmp_whitelist;
}else{cf_ignore=[];}
//ADVANCED
if (w.myset_xautoclean=='y'){wl_autoclean=1;}else{wl_autoclean=0;}
if (w.myset_xincapsula=='y'){stop_incapsula=1;}else{stop_incapsula=0;}
if (w.myset_xgshield=='y'){stop_gshield=1;}else{stop_gshield=0;}
if (w.myset_xsucuri=='y'){stop_sucuri=1;}else{stop_sucuri=0;}
2018-01-02 04:42:22 +00:00
if (w.myset_xign3p=='y'){ign_thirdparty=1;}else{ign_thirdparty=0;}
if (w.myset_xwhitemark=='y'){do_markwhitelistsite=1;}else{do_markwhitelistsite=0;}
2018-01-02 04:42:22 +00:00
//ACTION
if (w.myset_xsimplewarn){switch(w.myset_xsimplewarn){
case 1:do_reaction=1;break;
case 2:do_reaction=2;break;
default:do_reaction=0;break;
}}else{do_reaction=0;}
2017-12-30 22:03:16 +00:00
},onError);}
2018-01-02 04:42:22 +00:00
function is_domain_ignored(w){
if (cf_ignore.includes(w)){return true;}
var dotSTXfound=0;for(var f=0;f<cf_ignore.length;f++){
var _fv=cf_ignore[f];if (!_fv.startsWith('.')){continue;}
if (w==_fv.replace('.','')||w.endsWith(_fv)){dotSTXfound=1;break;}
}
if (dotSTXfound==1){return true;}
return false;
}
function analyzemydata(res){
2018-01-02 04:42:22 +00:00
if (ign_thirdparty==1){if (res.type!='main_frame'){return;}}
var cflink=document.createElement('a');cflink.setAttribute('href',res.url);
var cf_hostname=cflink.hostname;
var cf_protocol=cflink.protocol;
var cf_gothead=res.responseHeaders;
var cf_tab_id=res.tabId;
cflink=null;
2018-01-02 04:42:22 +00:00
//whitelisted
if (cf_hostname.endsWith('.cloudflare.com')||cf_hostname=='cloudflare.com'){return;}
if (stop_incapsula==1){if (cf_hostname.endsWith('.incapsula.com')||cf_hostname=='incapsula.com'){return;}}
if (stop_gshield==1){if (cf_hostname.endsWith('.withgoogle.com')||cf_hostname.endsWith('.google.com')){return;}}
if (stop_sucuri==1){if (cf_hostname.endsWith('.sucuri.net')||cf_hostname=='sucuri.net'){return;}}
if (cf_protocol!='http:' && cf_protocol!='https:'){return;}
//init array
if (cf_dstarray[cf_tab_id]==undefined){
cf_dstarray[cf_tab_id]=[];
cf_dstarray[cf_tab_id]['cf']='';
cf_dstarray[cf_tab_id]['ok']='';
}
if (cf_hostname.length>=4){
var mitm_is=0;var mitm_cdnname='Cloudflare';
2018-01-02 04:42:22 +00:00
for(var i=0;i<cf_gothead.length;i++){
var cfv=cf_gothead[i];
var cfv_vname=cfv['name'];if (cfv_vname!=undefined){cfv_vname=cfv_vname.toLowerCase();}
var cfv_vvalue=cfv['value'];if (cfv_vvalue!=undefined){cfv_vvalue=cfv_vvalue.toLowerCase();}
//<
//Cloudflare
if (cfv_vname=='cf-ray' && cfv_vvalue!=undefined){mitm_is=1;break;}
if (cfv_vname=='server' && cfv_vvalue.includes("cloudflare")){mitm_is=1;break;}
if (cfv_vname=='cf-cache-status' && cfv_vvalue!=undefined){mitm_is=1;break;}
if (cfv_vname=='set-cookie' && cfv_vvalue.includes("__cfduid")){mitm_is=1;break;}
//Incapsula
if (stop_incapsula==1){
if (cfv_vname.includes("incap_") && cfv_vvalue!=undefined){mitm_is=1;mitm_cdnname='Incapsula';break;}
if (cfv_vname=='x-iinfo' && cfv_vvalue!=undefined){mitm_is=1;mitm_cdnname='Incapsula';break;}
if (cfv_vname=='x-cdn' && cfv_vvalue=='incapsula'){mitm_is=1;mitm_cdnname='Incapsula';break;}
if (cfv_vname=='set-cookie' && cfv_vvalue.includes("visid_incap_")){mitm_is=1;mitm_cdnname='Incapsula';break;}
}
//GPShield
if (stop_gshield==1){
if (cfv_vname=='server' && cfv_vvalue=='shield'){mitm_is=1;mitm_cdnname='Google Project Shield';break;}
if (cfv_vname=='x-shield-request-id' && cfv_vvalue!=undefined){mitm_is=1;mitm_cdnname='Google Project Shield';break;}
}
//Sucuri
if (stop_sucuri==1){
if (cfv_vname=='x-sucuri-cache' && cfv_vvalue!=undefined){mitm_is=1;mitm_cdnname='Sucuri';break;}
if (cfv_vname=='x-sucuri-id' && cfv_vvalue!=undefined){mitm_is=1;mitm_cdnname='Sucuri';break;}
if (cfv_vname=='set-cookie' && cfv_vvalue.includes("sucuri-")){mitm_is=1;mitm_cdnname='Sucuri';break;}
}
//>
}
if (mitm_is==1){
if (is_domain_ignored(cf_hostname)){
if (do_markwhitelistsite==1){do_reaction=1;}else{return;}
}
//add to history (used in gotwhitelistrequest())
if (cf_history.length>=10){cf_history=[];}
if (!cf_history.includes(cf_hostname)){cf_history.push(cf_hostname);}
console.log('SECURITY_WARN: '+mitm_cdnname+' MiTM Detected: '+res.url);
2018-01-02 04:42:22 +00:00
if (do_reaction==0){
if (res.type=='main_frame'){cf_dstarray[cf_tab_id]['cf']=res.url.split('?',2)[0];}
if (cf_dstarray[cf_tab_id]['cf'].length<12){cf_dstarray[cf_tab_id]['cf']='';}//something wrong
if (cf_dstarray[cf_tab_id]['ok'].length<12){cf_dstarray[cf_tab_id]['ok']='https://searxes.danwin1210.me/';}//better than google
cfblockscreen=atob(cf_template_blocked);
cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname);
cfblockscreen=cfblockscreen.replace('%%CF_PRODNAME%%',mitm_cdnname);
cfblockscreen=cfblockscreen.replace('%%CF_WHITEPAIR%%',cf_hostname+'?'+btoa(cf_hostname));
cfblockscreen=cfblockscreen.replace('%%CF_URL_LASTOK%%',cf_dstarray[cf_tab_id]['ok']);
cfblockscreen=cfblockscreen.replace('%%CF_URL_ITSME%%',cf_dstarray[cf_tab_id]['cf']);
cfblockscreen='document.documentElement.innerHTML=atob(\''+btoa(cfblockscreen)+'\');window.stop();';
var blockingCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});blockingCFnow.then(()=>{return {cancel: true};},onError);
2018-01-02 04:42:22 +00:00
}
if (do_reaction==1){
cfblockscreen='if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){var orig_dt=document.title;var orig_lh=\''+cf_hostname+'\';setInterval(function(){if (orig_lh==location.hostname){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);document.body.style="border: 4px dashed #f0d000";if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}}},2500);}';
var warningCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});warningCFnow.then(function(){},onError);
2018-01-02 04:42:22 +00:00
}
if (do_reaction==2){
if (res.type=='image'){return {redirectUrl: cf_blocked_img};}else{if (res.type=='main_frame'){return {redirectUrl: 'https://0.0.0.0/'};}else{return {cancel: true};}}
}
}else{// not mitm
if (res.type=='main_frame'){
if (do_reaction==0){cf_dstarray[cf_tab_id]['ok']=res.url;}//used by warning page
if (cf_ignore.includes(cf_hostname) && cf_gothead.length>3){if (wl_autoclean==1){
cfblockscreen=atob(cf_template_wlnotify);
cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname);
cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname);
cfblockscreen='document.documentElement.innerHTML=atob(\''+btoa(cfblockscreen)+'\');window.stop();';
var nomoreCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});nomoreCFnow.then(()=>{
console.log('SECURITY_INFO: Removing from whitelist: '+cf_hostname);
var _wi=cf_ignore.indexOf(cf_hostname);if (_wi>-1){cf_ignore.splice(_wi,1);}
browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")});
return {cancel: true};
},onError);
}}
}
}
}
return;
}
function gotwhitelistrequest(r){
var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2);if (v_whitelist.length==2){
if (v_whitelist[0]=='viewexceptions' && v_whitelist[1]=='now'){browser.runtime.openOptionsPage().then(function(){},onError);}
if (v_whitelist[0]=='reload' && v_whitelist[1]=='now'){browser.tabs.reload({bypassCache:true});}
if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){//cfinfection?originhash
2018-01-02 04:42:22 +00:00
if (cf_history.includes(v_whitelist[0])){if (!cf_ignore.includes(v_whitelist[0])){// found in history and rule not found
console.log('CFMITM: Adding to whitelist: '+v_whitelist[0]);
2018-01-02 04:42:22 +00:00
cf_ignore.push(v_whitelist[0]);
browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")}).then(function(){browser.tabs.executeScript({code: 'location.reload();'});},onError);
}}
}
2018-01-02 04:42:22 +00:00
}
return {cancel: true};
}
if (cfaddon_isdone==0){cfaddon_isdone=1;whitelist_reload();}
browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls:["http://*/*","https://*/*"]},["blocking","responseHeaders"]);
browser.webRequest.onBeforeRequest.addListener(gotwhitelistrequest,{urls:["https://0.0.0.0/cfmitm_addon/*"]},["blocking"]);
2017-12-30 22:03:16 +00:00
browser.runtime.onMessage.addListener(function(r,s,sr){if (r.relnow!=undefined){whitelist_reload();sr({response: 'ok'});};return true;});
browser.browserAction.onClicked.addListener(function(t){browser.runtime.openOptionsPage().then(function(){},onError);});
browser.tabs.onRemoved.addListener(function(t,r){cf_dstarray[t]=[];delete cf_dstarray[t];});