cevoaustralia / aws-google-auth

Provides AWS STS credentials based on Google Apps SAML SSO auth (what a jumble!)
MIT License
537 stars 181 forks source link

Google Prompt 2FA broken. "raise ValueError(response)" in google.py check_extra_step() #68

Closed FrederikNJS closed 6 years ago

FrederikNJS commented 6 years ago

I just tested out 0.0.23 and 0.0.22, but I receive an error when I get to the 2-factor step.

First the CLI asks me for my google password, then it responds with an error:

Failed to import U2F libraries, U2F login unavailable. Other methods can still continue.
Google Password:
This extra step shows that it’s really you trying to sign in
Traceback (most recent call last):
  File "/usr/local/bin/aws-google-auth", line 11, in <module>
    load_entry_point('aws-google-auth==0.0.22', 'console_scripts', 'aws-google-auth')()
  File "/usr/local/lib/python3.6/site-packages/aws_google_auth/__init__.py", line 54, in main
    cli(sys.argv[1:])
  File "/usr/local/lib/python3.6/site-packages/aws_google_auth/__init__.py", line 159, in cli
    google_client.do_login()
  File "/usr/local/lib/python3.6/site-packages/aws_google_auth/google.py", line 127, in do_login
    self.check_extra_step(response_page)
  File "/usr/local/lib/python3.6/site-packages/aws_google_auth/google.py", line 163, in check_extra_step
    raise ValueError(response)
ValueError: {Some HTML}

I tried dumping the html to a file and opening it, which resulted in this:

image

So it seems that 0.0.22 has broken the "Google Prompt" 2-factor challenge. I have not tested other 2FA methods.

I tested out 0.0.22, which shows the same issue. 0.0.21 does not suffer from the same problem though.

stevemac007 commented 6 years ago

Doh! I'll have a look at the cause of this later tonight unless someone gets to it before me.

stevemac007 commented 6 years ago

My account with token based 2FA works as expected, I'll have to setup a GooglePrompt version somehow to test the other modes. My guess is this is part of changes to fix #52.

If you have some sample HTML you can attach, I'll put together some workflow to cover this scenario.

FrederikNJS commented 6 years ago

Sure, here you go:

<!DOCTYPE doctype html>
<html dir="ltr" lang="en-GB"><head><base href="https://accounts.google.com/"/><script data-id="_gd" nonce="uD14JYo8YNSHH75bBIJ1O56pRlY">window.WIZ_global_data = {"OewCAd":"%.@.\"xsrf\",\"AFoagUWP3B0c-WStPmxpfMiyWSSaODTwwA:1523344703563\",[\"103586122422894783603\"]\n,\"AFoagUUACJ2NwHL5qcnGyxK21U_Xzt2WKA:1523344703563\"]\n","thykhd":"AMCz6bRZbyu-MPS-7ygejDmBJ44TxgiR4jaQPeCtnDTEKCgAquPg95gdwkw-cgFgJQUZaWHzgRxX8sQH7zAjfFsP6SIq5Nbd7icU2nGP","w2btAe":"%.@.null,null,\"\",false]\n"};</script><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><link href="//www.google.com/favicon.ico" rel="shortcut icon"/><script nonce="uD14JYo8YNSHH75bBIJ1O56pRlY">(function(H) {H.className="CMgTXc";})(document.documentElement);</script><meta content="width=300, initial-scale=1" name="viewport"/><meta content="noindex" name="robots"/><meta content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs" name="google-site-verification"/><title>Google Accounts</title><script nonce="uD14JYo8YNSHH75bBIJ1O56pRlY" type="text/javascript">(function(){var f=this,aa=function(){},ba=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b},h=Date.now||function(){return+new Date},t=function(a,b){function c(){}c.prototype=b.prototype;a.w=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.u=function(a,c,g){for(var e=Array(arguments.length-2),d=2;d<arguments.length;d++)e[d-2]=arguments[d];return b.prototype[c].apply(a,e)}};var u=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,u);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))};t(u,Error);u.prototype.name="CustomError";var v=function(a,b){a=a.split("%s");for(var c="",e=a.length-1,d=0;d<e;d++)c+=a[d]+(d<b.length?b[d]:"%s");u.call(this,c+a[e])};t(v,u);v.prototype.name="AssertionError";var ca=function(a,b,c){if(!a){var e="Assertion failed";if(b){e+=": "+b;var d=Array.prototype.slice.call(arguments,2)}throw new v(""+e,d||[]);}};var y={};var da=function(a,b){if(null===b)return!1;if("contains"in a&&1==b.nodeType)return a.contains(b);if("compareDocumentPosition"in a)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a};var ea=function(a,b){return function(c){c||(c=window.event);return b.call(a,c)}},z=function(a){a=a.target||a.srcElement;!a.getAttribute&&a.parentNode&&(a=a.parentNode);return a},A="undefined"!=typeof navigator&&/Macintosh/.test(navigator.userAgent),fa="undefined"!=typeof navigator&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),ha={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},ia=function(a){return(a=a.changedTouches&&a.changedTouches[0]||a.touches&&a.touches[0])?{clientX:a.clientX,
clientY:a.clientY,screenX:a.screenX,screenY:a.screenY}:null},ma=function(a){var b={};b.originalEventType=a.type;b.type="click";for(var c in a){var e=a[c];"type"==c||"srcElement"==c||"function"==ba(e)||(b[c]=e)}b.timeStamp=h();b.defaultPrevented=!1;b.preventDefault=ka;b._propagationStopped=!1;b.stopPropagation=la;if(a=ia(a))b.clientX=a.clientX,b.clientY=a.clientY,b.screenX=a.screenX,b.screenY=a.screenY;return b},na=function(){this._mouseEventsPrevented=!0},ka=function(){this.defaultPrevented=!0},la=
function(){this._propagationStopped=!0},oa={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,TAB:0,TREE:13,TREEITEM:13},qa=function(a){return(a.getAttribute("type")||a.tagName).toUpperCase()in pa},sa=function(a){return(a.getAttribute("type")||a.tagName).toUpperCase()in ra},pa={CHECKBOX:!0,OPTION:!0,RADIO:!0},ra={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,
MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0},ta={A:!0,AREA:!0,BUTTON:!0,DIALOG:!0,IMG:!0,INPUT:!0,LINK:!0,MENU:!0,OPTGROUP:!0,OPTION:!0,PROGRESS:!0,SELECT:!0,TEXTAREA:!0};var ua=function(){this.m=[];this.a=[];this.i=[];this.l={};this.c=null;this.j=[];this.s=aa},B,va,wa="undefined"!=typeof navigator&&/iPhone|iPad|iPod/.test(navigator.userAgent),xa=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")},ya=/\s*;\s*/,C=null,Ba=function(a,b){return function(c){var e=b;if("click"==e&&(A&&c.metaKey||!A&&c.ctrlKey||2==c.which||null==c.which&&4==c.button||"auxclick"==c.type||c.shiftKey))e="clickmod";else{var d=c.which||
c.keyCode||c.key;fa&&3==d&&(d=13);if(13!=d&&32!=d)d=!1;else{var g=z(c);var k=(g.getAttribute("role")||g.type||g.tagName).toUpperCase();var m;(m="keydown"!=c.type)||("getAttribute"in g?(m=(g.getAttribute("role")||g.tagName).toUpperCase(),m=!sa(g)&&("COMBOBOX"!=m||"INPUT"!=m)&&!g.isContentEditable):m=!1,m=!m);(m=m||c.ctrlKey||c.shiftKey||c.altKey||c.metaKey||qa(g)&&32==d)||((m=g.tagName in ha)||(m=g.getAttributeNode("tabindex"),m=null!=m&&m.specified),m=!(m&&!g.disabled));m?d=!1:(g="INPUT"!=g.tagName.toUpperCase()||
g.type,m=!(k in oa)&&13==d,d=(0==oa[k]%d||m)&&!!g)}d&&(e="clickkey")}g=c.srcElement||c.target;d=D(e,c,g,"",null);for(k=g;k&&k!=this;k=k.__owner||k.parentNode){var l=k;b:{var w,r=l;var n=e;m=c;var p=r.__jsaction;if(!p){p=null;"getAttribute"in r&&(p=r.getAttribute("jsaction"));if(w=p){if(p=y[w],!p){p={};for(var K=w.split(ya),L=0,Ga=K?K.length:0;L<Ga;L++){var x=K[L];if(x){var M=x.indexOf(":"),ja=-1!=M,Ha=ja?xa(x.substr(0,M)):"click";x=ja?xa(x.substr(M+1)):x;p[Ha]=x}}y[w]=p}}else p=za;r.__jsaction=p}"clickkey"==
n?n="click":"click"!=n||p.click||(n="clickonly");w=null;if(p.click){r=Aa(r,m,p);if(!r){n={f:n,action:"",event:null,o:!0};break b}r!=m&&(w=r,n=r.type)}n={f:n,action:p[n]||"",event:w,o:!1}}if(n.o||n.action)break}n&&(d=D(n.f,n.event||c,g,n.action||"",l,d.timeStamp));d&&"touchend"==d.eventType&&(d.event._preventMouseEvents=na);if(n&&n.action){if(k="clickkey"==e)k=z(c),k=(k.type||k.tagName).toUpperCase(),(k=32==(c.which||c.keyCode||c.key)&&"CHECKBOX"!=k)||(k=z(c),g=(k.getAttribute("role")||k.tagName).toUpperCase(),
k=k.tagName.toUpperCase()in ta&&"A"!=g&&!qa(k)&&!sa(k)||"BUTTON"==g);k&&(c.preventDefault?c.preventDefault():c.returnValue=!1);if("mouseenter"==e||"mouseleave"==e)if(k=c.relatedTarget,!("mouseover"==c.type&&"mouseenter"==e||"mouseout"==c.type&&"mouseleave"==e)||k&&(k===l||da(l,k)))d.action="",d.actionElement=null;else{e={};for(var q in c)"function"!==typeof c[q]&&"srcElement"!==q&&"target"!==q&&(e[q]=c[q]);e.type="mouseover"==c.type?"mouseenter":"mouseleave";e.target=e.srcElement=l;e.bubbles=!1;d.event=
e;d.targetElement=l}}else d.action="",d.actionElement=null;l=d;a.c&&(q=D(l.eventType,l.event,l.targetElement,l.action,l.actionElement,l.timeStamp),"clickonly"==q.eventType&&(q.eventType="click"),a.c(q,!0));if(l.actionElement){"A"!=l.actionElement.tagName||"click"!=l.eventType&&"clickmod"!=l.eventType||l.actionElement.hasAttribute("data-unjs")&&null==a.c||(c.preventDefault?c.preventDefault():c.returnValue=!1);if(a.c)a.c(l);else{a.s(l);if((q=f.document)&&!q.createEvent&&q.createEventObject)try{var N=
q.createEventObject(c)}catch(Pa){N=c}else N=c;l.event=N;a.j.push(l)}"touchend"==l.event.type&&l.event._mouseEventsPrevented&&(C=ma(l.event))}}},D=function(a,b,c,e,d,g){return{eventType:a,event:b,targetElement:c,action:e,actionElement:d,timeStamp:g||h()}},za={},Aa=function(a,b,c){if("click"==b.type||b.targetTouches&&1<b.targetTouches.length)return b;var e=B,d=b.target;if(d&&Ca(d))return b;d=ia(b);if("touchstart"!=b.type||c.touchstart||c.touchend)if("touchend"==b.type&&e&&e.node==a)if(b.defaultPrevented||
d&&4<Math.abs(d.clientX-e.x)+Math.abs(d.clientY-e.y))B=null;else{C=a=ma(b);b.stopPropagation();b.preventDefault();document.createEvent?(b=document.createEvent("MouseEvent"),b.initMouseEvent(a.type,!0,!0,window,a.detail||1,a.screenX||0,a.screenY||0,a.clientX||0,a.clientY||0,a.ctrlKey||!1,a.altKey||!1,a.shiftKey||!1,a.metaKey||!1,a.button||0,a.relatedTarget||null)):(ca(document.createEventObject),b=document.createEventObject(),b.type=a.type,b.clientX=a.clientX,b.clientY=a.clientY,b.button=a.button,
b.detail=a.detail,b.ctrlKey=a.ctrlKey,b.altKey=a.altKey,b.shiftKey=a.shiftKey,b.metaKey=a.metaKey);b.v=a.timeStamp;b._fastclick=!0;a.target.dispatchEvent(b);if(!b.defaultPrevented){if(document.activeElement&&document.activeElement!=b.target&&Ca(document.activeElement))try{document.activeElement.blur()}catch(g){}try{window.getSelection().removeAllRanges()}catch(g){}}return null}else"touchmove"==b.type&&e&&d&&4<Math.abs(d.clientX-e.x)+Math.abs(d.clientY-e.y)&&(B=null);else return B={node:a,x:d?d.clientX:
0,y:d?d.clientY:0},C=null,clearTimeout(va),va=setTimeout(Da,400),null;return b},Ca=function(a){a=a.tagName||"";return"TEXTAREA"==a||"INPUT"==a||"SELECT"==a||"OPTION"==a},Da=function(){B=null},E=function(a){if(!a._fastclick){var b=C;if(b)if(800<h()-b.timeStamp)C=null;else{var c=4>=Math.abs(a.clientX-b.clientX)+Math.abs(a.clientY-b.clientY);b.target==a.target||c?(a.stopPropagation(),a.preventDefault(),"click"==a.type&&(C=null)):C=null}}},Ea=function(a,b){return function(c){var e=a,d=b,g=!1;"mouseenter"==
e?e="mouseover":"mouseleave"==e&&(e="mouseout");if(c.addEventListener){if("focus"==e||"blur"==e||"error"==e||"load"==e)g=!0;c.addEventListener(e,d,g)}else c.attachEvent&&("focus"==e?e="focusin":"blur"==e&&(e="focusout"),d=ea(c,d),c.attachEvent("on"+e,d));return{f:e,g:d,capture:g}}},F=function(a,b){if(!a.l.hasOwnProperty(b)){var c=Ba(a,b),e=Ea(b,c);a.l[b]=c;a.m.push(e);for(c=0;c<a.a.length;++c){var d=a.a[c];d.h.push(e.call(null,d.b))}"click"==b&&F(a,"keydown");"click"==b&&(F(a,"touchstart"),F(a,"touchend"),
F(a,"touchmove"),document.addEventListener&&(document.addEventListener("click",E,!0),document.addEventListener("mouseup",E,!0),document.addEventListener("mousedown",E,!0)))}};ua.prototype.g=function(a){return this.l[a]};var Fa=function(a){var b=G,c=a.b;wa&&(c.style.cursor="pointer");for(c=0;c<b.m.length;++c)a.h.push(b.m[c].call(null,a.b))},Ja=function(){this.b=Ia;this.h=[]};Ja.prototype.containsNode=function(a){for(var b=this.b;b!=a&&a.parentNode;)a=a.parentNode;return b==a};
var La=function(){for(var a=H,b=Ka,c=0;c<b.length;++c)if(b[c].b!=a.b&&b[c].containsNode(a.b))return!0;return!1};var Ma=window,G=new ua,Na=Ma||window,Ia=Na.document.documentElement,I=new Ja,J;a:{for(var O=0;O<G.a.length;O++)if(G.a[O].containsNode(Ia)){J=!0;break a}J=!1}
if(J)G.i.push(I);else{Fa(I);G.a.push(I);for(var Ka=G.i.concat(G.a),P=[],Q=[],R=0;R<G.a.length;++R){var H=G.a[R];if(La()){P.push(H);for(var S=H,T=0;T<S.h.length;++T){var U=S.b,V=S.h[T];U.removeEventListener?U.removeEventListener(V.f,V.g,V.capture):U.detachEvent&&U.detachEvent("on"+V.f,V.g)}S.h=[]}else Q.push(H)}for(R=0;R<G.i.length;++R)H=G.i[R],La()?P.push(H):(Q.push(H),Fa(H));G.a=Q;G.i=P}F(G,"blur");F(G,"click");F(G,"focus");F(G,"focusin");F(G,"focusout");F(G,"keydown");F(G,"keypress");F(G,"load");
F(G,"mouseover");F(G,"mouseout");F(G,"mouseenter");F(G,"mouseleave");F(G,"submit");F(G,"touchstart");F(G,"touchend");F(G,"touchmove");F(G,"change");F(G,"input");F(G,"keyup");F(G,"mousedown");F(G,"mouseup");F(G,"touchcancel");F(G,"transitionend");F(G,"webkitTransitionEnd");
var Oa=function(a){return{trigger:function(b){var c=a.g(b.type);c||(F(a,b.type),c=a.g(b.type));var e=b.target||b.srcElement;c&&c.call(e.ownerDocument.documentElement,b)},bind:function(b){a.c=b;a.j&&(0<a.j.length&&b(a.j),a.j=null)}}}(G),W=["ID_wizbind"],X=Na||f;W[0]in X||"undefined"==typeof X.execScript||X.execScript("var "+W[0]);for(var Y;W.length&&(Y=W.shift());){var Z;if(Z=!W.length)Z=void 0!==Oa;Z?X[Y]=Oa:X=X[Y]&&X[Y]!==Object.prototype[Y]?X[Y]:X[Y]={}};}).call(this);
</script><style nonce="uD14JYo8YNSHH75bBIJ1O56pRlY">@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 300;
  src: local('Open Sans Light'), local('OpenSans-Light'), url(//fonts.gstatic.com/s/opensans/v15/mem5YaGs126MiZpBA-UN_r8OUuhs.ttf) format('truetype');
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(//fonts.gstatic.com/s/opensans/v15/mem8YaGs126MiZpBA-UFVZ0e.ttf) format('truetype');
}
</style><link href="https://ssl.gstatic.com/accounts/static/_/ss/k=gaia.gaiafe_signin.1njpce5wcec8a.L.X.O/am=AggAEAAQIAIE/d=0/rs=ABkqax2rChFos35v7ieZvr4Er-XOk4hizg" rel="stylesheet" type="text/css"/><script nonce="uD14JYo8YNSHH75bBIJ1O56pRlY" type="text/javascript">window['cssLoaded'] = true;</script><script async="" id="base-js" nonce="uD14JYo8YNSHH75bBIJ1O56pRlY" src="https://ssl.gstatic.com/accounts/static/_/js/k=gaia.gaiafe_signin.en_GB.KPDM41uNPqo.O/m=signin,signin_challenge/am=AggAEAAQIAIE/rt=j/d=1/rs=ABkqax3dpfUHtWcly3OlFSiXpekqanEx0Q"></script><script nonce="uD14JYo8YNSHH75bBIJ1O56pRlY">var AF_initDataKeys = ["ds:0"]
; var AF_dataServiceRequests = {'ds:0' : {id: 1.02163051E8 }}; var AF_initDataChunkQueue = []; var AF_initDataCallback; var AF_initDataInitializeCallback; if (AF_initDataInitializeCallback) {AF_initDataInitializeCallback(AF_initDataKeys, AF_initDataChunkQueue, AF_dataServiceRequests);}if (!AF_initDataCallback) {AF_initDataCallback = function(chunk) {AF_initDataChunkQueue.push(chunk);};}</script></head><body id="yDmH0d"><div class="s2h6df"><div class="JYXKFb IA6off"><div class="ql1pVb ZnXjYc EaNIqc"><div aria-label="Google" class="omTHz"></div></div></div><div class="RgEUV ZnXjYc EaNIqc JhUD8d"><div><div class="glT6eb"><div jsname="IDL96d"><h1>2-step Verification</h1></div><div jsname="jqgtP"><h2>This extra step shows that it’s really you trying to sign in</h2></div></div></div><div data-devices='%.@.["Oneplus One"]
,[]
,[]
,null,true,true]
' jsmodel="qvHqZ"><div class="uUNkEc qnfQjf" id="signInRestart" jscontroller="adrjLb" jsname="tALZ7c"><form action="/signin/challenge" data-challengeentry="2" method="POST"><input name="subAction" type="hidden" value="startChallenge"/><input name="challengeId" type="hidden" value="2"/><input name="challengeType" type="hidden" value="4"/><input name="continue" type="hidden" value="https://accounts.google.com/o/saml2/initsso?idpid=C019ti8in&amp;spid=759970038732&amp;forceauthn=false&amp;from_login=1&amp;as=xanr5rC71PHzt2DArU7Eng"/><input name="scc" type="hidden" value="1"/><input name="sarp" type="hidden" value="1"/><input name="checkedDomains" type="hidden" value="youtube"/><input name="pstMsg" type="hidden" value="0"/><input name="TL" type="hidden" value="AHnYQLy4gHuwARIuCagkfN_1fWXb4tK1azYtx9ZwvnN99bVs7bpC8gvyfwGbChqKv3sDMRjQI0kUiF6YNhi45l8Msj5dsIys6a_vzQnNbdLP-6hWe68zTF5w1UlWEepD1p0eiOapHi_Qb3opoOLGCf48XxP6gQFIAA"/><input id="gxf" name="gxf" type="hidden" value="AFoagUWHE3DqwxDr4EgJ69tKvqGqbftA2A:1523344703560"/>Didn't get the prompt? <button class="g1C42c" id="HmIokf" jsaction="click:JngxIb" jsname="klqQrb" type="submit">Resend it</button></form></div><div class="ZNgtu"><div class="LJtPoc" data-api-key="AIzaSyCp406mobx24ph_NgrsN9Qp4wrgWJrDL54" data-context="TWO_STEP_VERIFICATION" data-gapi-url="https://apis.google.com/js/base.js" data-tx-id="CkcKIwgBEAIaCLnAcdrzZq8yKhCV2hxXJjQ9e-Jjgqd8oMHDMgEDEiDPPMv4ggtcLvIDmPDCPYtEMNDndpRYO9jml0QouiR_3BIge-i2LBltZUMa8T1SoCi_KmCr05g-rQm-gR465CtTc-8=" data-tx-lifetime="180000" jsaction="rcuQ6b:v3IXJe,GGqNFf" jscontroller="Q6ivzf" jsname="Ki8mld"><form action="/signin/challenge/az/2" id="challenge" jsaction="submit:zbvklb" jscontroller="HNBfvc" jsname="rzWj5" jsshadow="" method="POST"><content><input id="challengeId" name="challengeId" type="hidden" value="2"/><input id="challengeType" name="challengeType" type="hidden" value="4"/><input name="continue" type="hidden" value="https://accounts.google.com/o/saml2/initsso?idpid=C019ti8in&amp;spid=759970038732&amp;forceauthn=false&amp;from_login=1&amp;as=xanr5rC71PHzt2DArU7Eng"/><input name="scc" type="hidden" value="1"/><input name="sarp" type="hidden" value="1"/><input name="checkedDomains" type="hidden" value="youtube"/><input name="pstMsg" type="hidden" value="0"/><input name="TL" type="hidden" value="AHnYQLy4gHuwARIuCagkfN_1fWXb4tK1azYtx9ZwvnN99bVs7bpC8gvyfwGbChqKv3sDMRjQI0kUiF6YNhi45l8Msj5dsIys6a_vzQnNbdLP-6hWe68zTF5w1UlWEepD1p0eiOapHi_Qb3opoOLGCf48XxP6gQFIAA"/><input id="gxf" name="gxf" type="hidden" value="AFoagUWHE3DqwxDr4EgJ69tKvqGqbftA2A:1523344703560"/><div jsname="KrwUDc"><div jsname="wsPcPe"><img alt="" class="JC07Dd" jsname="TqVmm" src="//ssl.gstatic.com/accounts/marc/authzen_signin.gif"/><div class="EGmPD" jsname="BCqkPb">Unlock your Oneplus One</div><div class="VnJmLc" jsname="NhJ5Dd"><div class="H16gm" id="azApprovalMsg">Google sent a notification to your Oneplus One. Tap <strong>Yes</strong> on the notification to continue.<div class="x8yCrf qnfQjf" jsname="XmIfSd"><img class="mBKf9e" src="//ssl.gstatic.com/ui/v1/activityindicator/loading.svg"/></div></div><div class="yqiuZb"></div></div><input id="authzenToken" jsname="iFpmR" name="token" type="hidden"/><input id="azAction" name="action" type="hidden" value="VERIFY"/><noscript>You appear to have Javascript disabled.Once you've finished on your phone, press the button below.<button class="MK9CEd MVpUfe" formnovalidate="" id="nojssubmit" jsaction="aJAbCd:zbvklb" jscontroller="rrJN5c" jsname="M2UYVd" type="submit" value="submit">I have responded from my phone</button></noscript><div class="ARshqb"><input checked="" class="aCOJmf" id="trustDevice" name="TrustDevice" type="checkbox"/><span>Remember this computer for 30 days</span><div class="Bfmfyc" role="tooltip"><div class="x7qQqf"></div><div class="hzC8Lb">For your convenience, keep this ticked. On shared devices, additional precautions are recommended. <a href="https://support.google.com/accounts/?p=securesignin&amp;hl=en_GB" target="_blank">Learn more</a></div></div></div></div></div></content></form></div></div><div class=" KSYbxc "><form action="/signin/challenge/skip" method="POST"><input name="challengeId" type="hidden" value="2"/><input name="continue" type="hidden" value="https://accounts.google.com/o/saml2/initsso?idpid=C019ti8in&amp;spid=759970038732&amp;forceauthn=false&amp;from_login=1&amp;as=xanr5rC71PHzt2DArU7Eng"/><input name="scc" type="hidden" value="1"/><input name="sarp" type="hidden" value="1"/><input name="checkedDomains" type="hidden" value="youtube"/><input name="pstMsg" type="hidden" value="0"/><input name="TL" type="hidden" value="AHnYQLy4gHuwARIuCagkfN_1fWXb4tK1azYtx9ZwvnN99bVs7bpC8gvyfwGbChqKv3sDMRjQI0kUiF6YNhi45l8Msj5dsIys6a_vzQnNbdLP-6hWe68zTF5w1UlWEepD1p0eiOapHi_Qb3opoOLGCf48XxP6gQFIAA"/><input id="gxf" name="gxf" type="hidden" value="AFoagUWHE3DqwxDr4EgJ69tKvqGqbftA2A:1523344703560"/><input class="g1C42c" id="skipChallenge" jsname="rwR6T" type="submit" value="Try another way to sign in"/></form></div><div class="M0leCe"><span jsname="tODuDc">fs@blackwoodseven.com</span><a class="vHOx3b" href="https://accounts.google.com/AccountChooser?continue=https%3A%2F%2Faccounts.google.com%2Fo%2Fsaml2%2Finitsso%3Fidpid%3DC019ti8in%26spid%3D759970038732%26forceauthn%3Dfalse%26from_login%3D1%26as%3Dxanr5rC71PHzt2DArU7Eng&amp;sarp=1">Use a different account</a></div></div></div><div class="zOB73"><div class="SEK88d ZnXjYc EaNIqc"><ul id="footer-list"><li>Google</li><li><a href="https://accounts.google.com/TOS?loc=DK&amp;hl=en-GB&amp;privacy=true" target="_blank">Privacy</a></li><li><a href="https://accounts.google.com/TOS?loc=DK&amp;hl=en-GB" target="_blank">Terms</a></li></ul><div id="lang-vis-control" jsaction="change:iktSbe" jscontroller="fBrDlb"><span class="KQh9Y" id="lang-chooser-wrap"><label for="lang-chooser"><img alt="Change language" src="//ssl.gstatic.com/images/icons/ui/common/universal_language_settings-21.png"/></label><select class="BTDeVb" id="lang-chooser" jsname="J2uaq" name="lang-chooser"><option value="af">‪Afrikaans‬</option><option value="az">‪azərbaycan‬</option><option value="ca">‪català‬</option><option value="cs">‪Čeština‬</option><option value="da">‪Dansk‬</option><option value="de">‪Deutsch‬</option><option value="et">‪eesti‬</option><option selected="selected" value="en-GB">‪English (United Kingdom)‬</option><option value="en">‪English (United States)‬</option><option value="es">‪Español (España)‬</option><option value="es-419">‪Español (Latinoamérica)‬</option><option value="eu">‪euskara‬</option><option value="fil">‪Filipino‬</option><option value="fr-CA">‪Français (Canada)‬</option><option value="fr">‪Français (France)‬</option><option value="gl">‪galego‬</option><option value="hr">‪Hrvatski‬</option><option value="in">‪Indonesia‬</option><option value="zu">‪isiZulu‬</option><option value="is">‪íslenska‬</option><option value="it">‪Italiano‬</option><option value="sw">‪Kiswahili‬</option><option value="lv">‪latviešu‬</option><option value="lt">‪lietuvių‬</option><option value="hu">‪magyar‬</option><option value="ms">‪Melayu‬</option><option value="nl">‪Nederlands‬</option><option value="no">‪norsk‬</option><option value="pl">‪polski‬</option><option value="pt">‪Português (Brasil)‬</option><option value="pt-PT">‪Português (Portugal)‬</option><option value="ro">‪română‬</option><option value="sk">‪Slovenčina‬</option><option value="sl">‪slovenščina‬</option><option value="fi">‪Suomi‬</option><option value="sv">‪Svenska‬</option><option value="vi">‪Tiếng Việt‬</option><option value="tr">‪Türkçe‬</option><option value="el">‪Ελληνικά‬</option><option value="bg">‪български‬</option><option value="mn">‪монгол‬</option><option value="ru">‪Русский‬</option><option value="sr">‪српски‬</option><option value="uk">‪Українська‬</option><option value="ka">‪ქართული‬</option><option value="hy">‪հայերեն‬</option><option value="iw">‫עברית‬‎</option><option value="ur">‫اردو‬‎</option><option value="ar">‫العربية‬‎</option><option value="fa">‫فارسی‬‎</option><option value="am">‪አማርኛ‬</option><option value="ne">‪नेपाली‬</option><option value="mr">‪मराठी‬</option><option value="hi">‪हिन्दी‬</option><option value="bn">‪বাংলা‬</option><option value="gu">‪ગુજરાતી‬</option><option value="ta">‪தமிழ்‬</option><option value="te">‪తెలుగు‬</option><option value="kn">‪ಕನ್ನಡ‬</option><option value="ml">‪മലയാളം‬</option><option value="si">‪සිංහල‬</option><option value="th">‪ไทย‬</option><option value="lo">‪ລາວ‬</option><option value="my">‪မြန်မာ‬</option><option value="km">‪ខ្មែរ‬</option><option value="ko">‪한국어</option><option value="zh-HK">‪中文(香港)</option><option value="ja">‪日本語</option><option value="zh-CN">‪简体中文</option><option value="zh-TW">‪繁體中文</option></select></span></div></div></div></div></body></html><div class="lDwpOe"></div><script nonce="uD14JYo8YNSHH75bBIJ1O56pRlY">AF_initDataCallback({key: 'ds:0', isError:  false , hash: '1', data:function(){return [[[["Afghanistan (\u202bافغانستان\u202c\u200e)","AF"]
,["Åland Islands (Åland)","AX"]
,["Albania (Shqipëri)","AL"]
,["Algeria","DZ"]
,["American Samoa","AS"]
,["Andorra","AD"]
,["Angola","AO"]
,["Anguilla","AI"]
,["Antigua \u0026 Barbuda","AG"]
,["Argentina","AR"]
,["Armenia (Հայաստան)","AM"]
,["Aruba","AW"]
,["Australia","AU"]
,["Austria (Österreich)","AT"]
,["Azerbaijan (Azərbaycan)","AZ"]
,["Bahamas","BS"]
,["Bahrain (\u202bالبحرين\u202c\u200e)","BH"]
,["Bangladesh (বাংলাদেশ)","BD"]
,["Barbados","BB"]
,["Belarus (Беларусь)","BY"]
,["Belgium","BE"]
,["Belize","BZ"]
,["Benin (Bénin)","BJ"]
,["Bermuda","BM"]
,["Bhutan (འབྲུག)","BT"]
,["Bolivia","BO"]
,["Bosnia \u0026 Herzegovina (Bosna i Hercegovina)","BA"]
,["Botswana","BW"]
,["Brazil (Brasil)","BR"]
,["British Indian Ocean Territory","IO"]
,["British Virgin Islands","VG"]
,["Brunei","BN"]
,["Bulgaria (България)","BG"]
,["Burkina Faso","BF"]
,["Burundi (Uburundi)","BI"]
,["Cambodia (កម្ពុជា)","KH"]
,["Cameroon (Cameroun)","CM"]
,["Canada","CA"]
,["Cape Verde (Kabu Verdi)","CV"]
,["Caribbean Netherlands","BQ"]
,["Cayman Islands","KY"]
,["Central African Republic (République centrafricaine)","CF"]
,["Chad (Tchad)","TD"]
,["Chile","CL"]
,["China (中国)","CN"]
,["Christmas Island","CX"]
,["Cocos (Keeling) Islands (Kepulauan Cocos (Keeling))","CC"]
,["Colombia","CO"]
,["Comoros (\u202bجزر القمر\u202c\u200e)","KM"]
,["Congo - Brazzaville (Congo-Brazzaville)","CG"]
,["Congo - Kinshasa (Jamhuri ya Kidemokrasia ya Kongo)","CD"]
,["Cook Islands","CK"]
,["Costa Rica","CR"]
,["Côte d’Ivoire","CI"]
,["Croatia (Hrvatska)","HR"]
,["Cuba","CU"]
,["Curaçao","CW"]
,["Cyprus (Κύπρος)","CY"]
,["Czechia (Česko)","CZ"]
,["Denmark (Danmark)","DK"]
,["Djibouti","DJ"]
,["Dominica","DM"]
,["Dominican Republic (República Dominicana)","DO"]
,["Ecuador","EC"]
,["Egypt (\u202bمصر\u202c\u200e)","EG"]
,["El Salvador","SV"]
,["Equatorial Guinea (Guinea Ecuatorial)","GQ"]
,["Eritrea (ኤርትራ)","ER"]
,["Estonia (Eesti)","EE"]
,["Ethiopia","ET"]
,["Falkland Islands (Islas Malvinas)","FK"]
,["Faroe Islands (Føroyar)","FO"]
,["Fiji","FJ"]
,["Finland (Suomi)","FI"]
,["France","FR"]
,["French Guiana (Guyane française)","GF"]
,["French Polynesia (Polynésie française)","PF"]
,["Gabon","GA"]
,["Gambia","GM"]
,["Georgia (საქართველო)","GE"]
,["Germany (Deutschland)","DE"]
,["Ghana (Gaana)","GH"]
,["Gibraltar","GI"]
,["Greece (Ελλάδα)","GR"]
,["Greenland (Kalaallit Nunaat)","GL"]
,["Grenada","GD"]
,["Guadeloupe","GP"]
,["Guam","GU"]
,["Guatemala","GT"]
,["Guernsey","GG"]
,["Guinea (Guinée)","GN"]
,["Guinea-Bissau (Guiné-Bissau)","GW"]
,["Guyana","GY"]
,["Haiti","HT"]
,["Honduras","HN"]
,["Hong Kong (香港)","HK"]
,["Hungary (Magyarország)","HU"]
,["Iceland (Ísland)","IS"]
,["India (भारत)","IN"]
,["Indonesia","ID"]
,["Iran (\u202bایران\u202c\u200e)","IR"]
,["Iraq (\u202bالعراق\u202c\u200e)","IQ"]
,["Ireland","IE"]
,["Isle of Man","IM"]
,["Israel (\u202bישראל\u202c\u200e)","IL"]
,["Italy (Italia)","IT"]
,["Jamaica","JM"]
,["Japan (日本)","JP"]
,["Jersey","JE"]
,["Jordan (\u202bالأردن\u202c\u200e)","JO"]
,["Kazakhstan (Казахстан)","KZ"]
,["Kenya","KE"]
,["Kiribati","KI"]
,["Kuwait (\u202bالكويت\u202c\u200e)","KW"]
,["Kyrgyzstan (Кыргызстан)","KG"]
,["Laos (ລາວ)","LA"]
,["Latvia (Latvija)","LV"]
,["Lebanon (\u202bلبنان\u202c\u200e)","LB"]
,["Lesotho","LS"]
,["Liberia","LR"]
,["Libya (\u202bليبيا\u202c\u200e)","LY"]
,["Liechtenstein","LI"]
,["Lithuania (Lietuva)","LT"]
,["Luxembourg","LU"]
,["Macau (澳門)","MO"]
,["Macedonia (FYROM) (Република Македонија)","MK"]
,["Madagascar (Madagasikara)","MG"]
,["Malawi","MW"]
,["Malaysia","MY"]
,["Maldives","MV"]
,["Mali","ML"]
,["Malta","MT"]
,["Marshall Islands","MH"]
,["Martinique","MQ"]
,["Mauritania (\u202bموريتانيا\u202c\u200e)","MR"]
,["Mauritius (Moris)","MU"]
,["Mayotte","YT"]
,["Mexico (México)","MX"]
,["Micronesia","FM"]
,["Moldova (Republica Moldova)","MD"]
,["Monaco","MC"]
,["Mongolia (Монгол)","MN"]
,["Montenegro (Crna Gora)","ME"]
,["Montserrat","MS"]
,["Morocco","MA"]
,["Mozambique (Moçambique)","MZ"]
,["Myanmar (Burma) (မြန်မာ)","MM"]
,["Namibia (Namibië)","NA"]
,["Nauru","NR"]
,["Nepal (नेपाल)","NP"]
,["Netherlands (Nederland)","NL"]
,["New Caledonia (Nouvelle-Calédonie)","NC"]
,["New Zealand","NZ"]
,["Nicaragua","NI"]
,["Niger (Nijar)","NE"]
,["Nigeria","NG"]
,["Niue","NU"]
,["Norfolk Island","NF"]
,["Northern Mariana Islands","MP"]
,["North Korea (북한)","KP"]
,["Norway (Norge)","NO"]
,["Oman (\u202bعُمان\u202c\u200e)","OM"]
,["Pakistan (\u202bپاکستان\u202c\u200e)","PK"]
,["Palau","PW"]
,["Palestine (\u202bفلسطين\u202c\u200e)","PS"]
,["Panama (Panamá)","PA"]
,["Papua New Guinea","PG"]
,["Paraguay","PY"]
,["Peru (Perú)","PE"]
,["Philippines","PH"]
,["Poland (Polska)","PL"]
,["Portugal","PT"]
,["Puerto Rico","PR"]
,["Qatar (\u202bقطر\u202c\u200e)","QA"]
,["Réunion (La Réunion)","RE"]
,["Romania (România)","RO"]
,["Russia (Россия)","RU"]
,["Rwanda (U Rwanda)","RW"]
,["Samoa","WS"]
,["San Marino","SM"]
,["São Tomé \u0026 Príncipe (São Tomé e Príncipe)","ST"]
,["Saudi Arabia (\u202bالمملكة العربية السعودية\u202c\u200e)","SA"]
,["Senegal (Senegaal)","SN"]
,["Serbia (Србија)","RS"]
,["Seychelles","SC"]
,["Sierra Leone","SL"]
,["Singapore","SG"]
,["Sint Maarten","SX"]
,["Slovakia (Slovensko)","SK"]
,["Slovenia (Slovenija)","SI"]
,["Solomon Islands","SB"]
,["Somalia (Soomaaliya)","SO"]
,["South Africa","ZA"]
,["South Korea (대한민국)","KR"]
,["South Sudan (\u202bجنوب السودان\u202c\u200e)","SS"]
,["Spain (España)","ES"]
,["Sri Lanka (ශ්\u200dරී ලංකාව)","LK"]
,["St Helena (St. Helena)","SH"]
,["St Kitts \u0026 Nevis (St. Kitts \u0026 Nevis)","KN"]
,["St Lucia (St. Lucia)","LC"]
,["St Martin (Saint-Martin)","MF"]
,["St Pierre \u0026 Miquelon (Saint-Pierre-et-Miquelon)","PM"]
,["St Vincent \u0026 Grenadines (St. Vincent \u0026 Grenadines)","VC"]
,["Sudan (\u202bالسودان\u202c\u200e)","SD"]
,["Suriname","SR"]
,["Svalbard \u0026 Jan Mayen (Svalbard og Jan Mayen)","SJ"]
,["Swaziland","SZ"]
,["Sweden (Sverige)","SE"]
,["Switzerland (Schweiz)","CH"]
,["Syria (\u202bسوريا\u202c\u200e)","SY"]
,["Taiwan (台灣)","TW"]
,["Tajikistan (Тоҷикистон)","TJ"]
,["Tanzania","TZ"]
,["Thailand (ไทย)","TH"]
,["Timor-Leste","TL"]
,["Togo","TG"]
,["Tokelau","TK"]
,["Tonga","TO"]
,["Trinidad \u0026 Tobago","TT"]
,["Tunisia","TN"]
,["Turkey (Türkiye)","TR"]
,["Turkmenistan","TM"]
,["Turks \u0026 Caicos Islands","TC"]
,["Tuvalu","TV"]
,["Uganda","UG"]
,["Ukraine (Україна)","UA"]
,["United Arab Emirates (\u202bالإمارات العربية المتحدة\u202c\u200e)","AE"]
,["United Kingdom","GB"]
,["United States","US"]
,["Uruguay","UY"]
,["US Virgin Islands (U.S. Virgin Islands)","VI"]
,["Uzbekistan (Oʻzbekiston)","UZ"]
,["Vanuatu","VU"]
,["Vatican City (Città del Vaticano)","VA"]
,["Venezuela","VE"]
,["Vietnam (Việt Nam)","VN"]
,["Wallis \u0026 Futuna","WF"]
,["Yemen (\u202bاليمن\u202c\u200e)","YE"]
,["Zambia","ZM"]
,["Zimbabwe","ZW"]
]
]
]
}});</script>

This is exactly what was printed in my terminal.

FrederikNJS commented 6 years ago

I finally got around to testing this out, and it works flawlessly now, Thanks!