Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Mr. David Miles,
- This is addressed to you and any other people interested in keeping GrayKey product secure and not available to the wide public.
- We are a "business group" looking forward to bring into your attention the fact that we HAVE obtained the source code for your product GrayKey and would appreciate any donation above 2 BTC sent to 1Cg61mVzMCvs2ZP148VeoBnQnv8rHxAZES if you consider that keeping this information secure is crucial.
- Below BTC address will be monitored in the next 7 days waiting for any given donations. After the countdown ends, security on the available source code cannot be anymore assured by our group. You cannot contact us in any other form, rather than donation. Once donation is received, we'll contact you david@grayshift.com with further details.
- Any other wild bidders are welcomed to join the donation race to 1BqFDiNKjAKBopdr37Mw7vM2oG8pgWvzNL if you want full information to be publicly released.
- And yeah...just to make things clear from the beginning, let us state we're talking real deal. Take a quick peek at some juicy stuff extracts we have and think if they ring the bell.
- Day 1 passed, we'll burn the first file...Tomorrow the next one and so on, until the end.
- We'll burn the exploit the last, just for fun.
- ........> [Day1]
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <title>GrayKey</title>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="shortcut icon" href="/static/favicon.ico" />
- <script type="text/javascript" src="/static/js/jquery-3.3.1.min.js"></script>
- <link rel="stylesheet" type="text/css" href="/static/css/bootstrap.css" />
- <script type="text/javascript" src="/static/js/bootstrap.min.js"></script>
- <script type="text/javascript" src="/static/js/utility.js"></script>
- <link rel="stylesheet" type="text/css" href="/static/css/style.css" />
- <style>
- /* show small logo image when screen is small */
- @media screen and (max-width: 767px) {
- #headerImage {
- content: url("/static/img/graykey-logo-small.png");
- }
- }
- </style>
- <script type="text/javascript">
- var callbackTime = 5000;
- // 5 seconds between status callbacks
- var deviceIsSeen = true;
- function seenDevice(currentlySeen) {
- /* * if a device was previously seen and is now not seen, show the * waiting page */
- if (deviceIsSeen && !currentlySeen) {
- // hide the main block
- $("#mainBlock").addClass('hidden');
- // show the waiting section
- $("#waitingSection").removeClass('hidden');
- // let any child pages handle whatever they need to do on hide
- if (typeof handleDeviceIsDown === 'function') {
- handleDeviceIsDown(true);
- }
- }
- /* * if a device was previously not seen and is now seen, * redirect to the main app page */
- if (!deviceIsSeen && currentlySeen) {
- var bRedirect = true;
- // let any child pages handle whatever they need to do before we redirect
- if (typeof handleDeviceIsDown === 'function') {
- bRedirect = handleDeviceIsDown(false);
- }
- if (bRedirect) {
- window.location.href = '/';
- }
- } /* update the state */
- deviceIsSeen = currentlySeen;
- }
- function handleStatus(obj) {
- console.log("handleStatus", obj);
- /* handle the info portion of the status */
- if (obj.info) { /* build the version string for the footer */
- var versionStr = 'OS Version: ' + obj.info.device.swVersion;
- if (obj.info.applogic) {
- versionStr += ', App Bundle: ' + obj.info.applogic.version;
- }
- $(".deviceVersion").text(versionStr);
- /* if any license info, fill it in here as well */
- if (obj.info.license) {
- if (obj.info.license.messages) {
- var inner = '';
- for (var i = 0; i < obj.info.license.messages.length; i++) {
- inner += "<p class='headerMessage'>" + obj.info.license.messages[i] + "</p>\n";
- }
- $(".licenseInfo").html(inner);
- }
- }
- }
- /* if an os update is pending, handle it here... */
- if (obj.osupdate && obj.osupdate.pendingUpdate) {
- /* * an update is pending *
- * if the user has not already entered a pin then just refresh the main
- * app and let it redirect to the osupdate_prep template.
- * if the user *has* already entered a pin, then we need to handle it
- * in the header portion */
- if (obj.info.pinentered) {
- /* handle in header portion */
- console.log("pendingUpdate and a pin was entered");
- } else {
- /* redirect to main app */
- console.log("pendingUpdate and no pin entered");
- window.location.href = '/';
- }
- }
- /* allow any derived pages to also handle the status */
- if (typeof handleStatusReceived === 'function') {
- handleStatusReceived(obj);
- }
- }
- function getStatus() { /* IE fix */
- $.ajaxSetup({
- cache: false
- });
- $.ajax({
- url: "/status",
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) { //
- console.log("" + Date.now() + ": getStatus: ajax done"); //
- console.log('done', data); /* device is up, mark that we've seen it */
- seenDevice(true); /* handle the version response */
- handleStatus(data);
- }).fail(function(xhr, textStatus, errorThrown) { //
- console.log("" + Date.now() + ": getStatus: ajax fail"); //
- console.log('fail', xhr);
- /* the version ajax request failed, device has probably rebooted or turned off */
- seenDevice(false);
- }).always(function(dataOrXhr, textStatus, xhrOrError) { //
- console.log("" + Date.now() + ": getStatus: ajax always"); //
- console.log('always', dataOrXhr);
- // reinstall the status callback
- setTimeout(getStatus, callbackTime);
- }).catch(function(e) { //
- console.log("" + Date.now() + ": getStatus: ajax promise catch"); //
- console.log('catch', e);
- });
- }
- $(document).ready(function() {
- // if IE or Edge set the image as a gif so it animates
- setImageIfIEorEdge("#waitImage", "/static/img/ripple.gif");
- // get the initial status getStatus(); });
- </script>
- <style>
- #applogicFrame {
- width: 100%;
- min-height: 700px;
- /* set a reasonable minimum height */
- height: 700px;
- border: 0px;
- /* turn off scrollbars */
- overflow: hidden;
- }
- #auxProgressLabel {
- line-height: 1;
- float: left;
- }
- #auxProgressContainer {
- padding-left: 0.5em;
- overflow: auto;
- }
- </style>
- <script>
- var applogicAlreadyRunning = false;
- function getIframeURL() {
- return window.location.protocol + "//" + window.location.hostname + ":8081/";
- }
- function showInstallingUI(title, notice) {
- // hide the auxillary header message stuff
- $('#auxHeaderMessageContainer').addClass('hidden');
- // hide the iframe
- $('#applogicFrame').addClass('hidden');
- // show the installing section and populate the title and notice
- $('#installingSection').removeClass('hidden');
- $('#installingTitleMessage').html(title);
- $('#installingNotice').html(notice);
- }
- function showInstallingOSUpdateUI(status) {
- var title = "Installing OS Update";
- var notice = "Installing new OS update";
- if (status.downloadState && status.downloadState.version) {
- notice += " version " + status.downloadState.version;
- }
- notice += ". This will take a few minutes. The device will reboot when done.";
- showInstallingUI(title, notice);
- }
- function showInstallingApplogicUI(status) {
- var title = "Installing App Bundle Update";
- var notice = "Installing new App Bundle";
- if (status.downloadState && status.downloadState.version) {
- notice += " version " + status.downloadState.version;
- }
- notice += ". This will take a few minutes.";
- showInstallingUI(title, notice);
- }
- function showDownloadingUI(status, title) {
- if (!status.downloadState) {
- return;
- /* no download state? abort */
- }
- /* calculate the download percent */
- var percent = (status.downloadState.downloaded / status.downloadState.size) * 100;
- if (percent < 0) {
- percent = 0;
- }
- if (percent > 100) {
- percent = 100;
- }
- /* make the stat message */
- var percentStr = percent.toFixed() + "%";
- var statMsg = title + " " + status.downloadState.version + ":"
- /* update the elements */
- $('#auxHeaderMessageContainer').removeClass('hidden');
- $('#auxProgress').addClass('progress-bar-success');
- $('#auxProgress').removeClass('active');
- $('#auxProgress').css('width', percentStr).attr('aria-valuenow', percent);
- $('#auxProgressMessage').html(statMsg);
- // ensure the iframe is visible
- $('#applogicFrame').removeClass('hidden');
- }
- function showWaitingUI(status, title) {
- // show the aux message container
- $('#auxHeaderMessageContainer').removeClass('hidden');
- // set the progress bar to 100% gray and active
- $('#auxProgress').removeClass('progress-bar-success');
- $('#auxProgress').addClass('active');
- $('#auxProgress').css('width', '100%').attr('aria-valuenow', 100);
- // display the message
- var statMsg = title + " " + status.downloadState.version + " install pending:"
- $('#auxProgressMessage').html(statMsg);
- // ensure the iframe is visible
- $('#applogicFrame').removeClass('hidden');
- }
- function showMainUI() {
- // applogic is now running, hide the progress div
- $('#auxHeaderMessageContainer').addClass('hidden');
- // reset the progress bar to gray and 100%
- $('#auxProgress').removeClass('progress-bar-success');
- $('#auxProgress').css('width', '100%').attr('aria-valuenow', 100);
- // hide the installing section
- $('#installingSection').addClass('hidden');
- // if applogic isn't already running then go ahead and reset // the iframe's source
- if (!applogicAlreadyRunning) {
- // hide the iframe so this doesn't cause a flicker
- $('#applogicFrame').addClass('hidden');
- // set the source to something else entirely
- $('#applogicFrame').attr("src", "about:blank");
- // set the source to the correct url
- $('#applogicFrame').attr("src", getIframeURL());
- } // unhide the iframe
- $('#applogicFrame').removeClass('hidden');
- }
- function handleStatusReceived(status) {
- // when a status is received, check to see if any
- // downloads are ongoing, if so, display it
- if (status.osupdate && status.osupdate.pendingUpdate) {
- // handle osupdate UI - an osupdate is occuring
- var osupdate = status.osupdate;
- if (osupdate.installing) {
- // osupdate is finished downloading
- showInstallingOSUpdateUI(osupdate);
- } else if (osupdate.finishedDownloading) {
- // done downloading but not installing yet, show the waiting ui
- showWaitingUI(osupdate, "OS");
- } else { // osupdate is downloading, show the download ui
- showDownloadingUI(osupdate, "Downloading OS Update");
- }
- } else if (status.applogicupdate) {
- var applogic = status.applogicupdate;
- if (applogic.running) {
- // applogic is running, show the main ui
- console.log("applogic running, showing main ui");
- showMainUI();
- // first time we see that its running, set the flag that // applogic has already started
- applogicAlreadyRunning = true;
- } else if (applogic.installing) {
- // applogic is finished downloading, show the installation ui
- showInstallingApplogicUI(applogic);
- } else if (applogic.finishedDownloading) {
- // done downloading but not installing yet, show the waiting ui
- showWaitingUI(applogic, "App Bundle");
- } else if (applogic.downloading) {
- // applogic is still downloading, show the download ui
- showDownloadingUI(applogic, "Downloading App Bundle");
- }
- if (!applogic.running) {
- // as long as applogic isn't running then reset the already
- // running flag
- applogicAlreadyRunning = false;
- }
- } else {
- console.log("no updates, showing main ui");
- showMainUI();
- }
- }
- function handleDeviceIsDown(isDown) {
- if (isDown) {
- // when the device is down, set the iframe src to blank
- // so that it isn't continually trying to do its xhr stuff
- $('#applogicFrame').attr("src", "about:blank");
- }
- return true;
- // allow detect to redirect normally
- }
- function handlePostedMessage(event) {
- var height = event.data['height'];
- if (height) {
- height = parseInt(height);
- console.log("message listener, height: " + height, event);
- height += 100;
- // some padding, seems necessary
- $('iframe').css('height', height + 'px');
- }
- }
- $(document).ready(function() {
- // handle iframe resize events
- window.addEventListener('message', handlePostedMessage);
- // hide the flashes when we are in applogic
- $("#flashcontent").addClass('hidden');
- // show the applogic iframe
- $('#applogicFrame').attr("src", getIframeURL());
- });
- </script>
- <script type="text/javascript">
- </script>
- </head>
- <body>
- <div class="container">
- <div class="row vertical-align" id="header">
- <div id="headerImageColumn" class="col-xs-3 col-sm-6"> <img id="headerImage" src="/static/img/graykey-logo.png" /> </div>
- <div id="headerDetailColumn" class="col-xs-9 col-sm-6 smallNotice">
- <div class="text-right" id="headerMessageContainer">
- <p class="headerMessage deviceSerial">Serial #: 68059dead4412209</p>
- <p class="headerMessage deviceVersion">OS Version: 1.3.20</p>
- <div class="licenseInfo">
- <p class="headerMessage">License expires in 25 days</p>
- </div>
- <div id="auxHeaderMessageContainer" class="hidden">
- <div id="auxProgressLabel"><span id="auxProgressMessage"></span></div>
- <div id="auxProgressContainer">
- <div class="progress skinnyProgress">
- <div id="auxProgress" class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%"> </div>
- </div>
- </div>
- <div style="clear:both"></div>
- </div>
- </div>
- </div>
- </div>
- <div class="row" id="main">
- <div id="flashcontent">
- <!-- Categories: success (green), info (blue), warning (yellow), danger (red) -->
- </div>
- <div id="content">
- <div id='mainBlock'>
- <div id="applogicSection"> <iframe id="applogicFrame" scrolling="no"></iframe> </div>
- <!-- installing UI stuff below -->
- <div class="well hidden" id="installingSection">
- <fieldset>
- <legend id='installingTitleMessage'></legend>
- <div id="installingDiv">
- <div class="row">
- <div class="col-lg-12">
- <div class="smallNotice" id='installingNotice'></div>
- </div>
- </div>
- <div class="row">
- <div class="col-lg-12">
- <div class="progress">
- <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width:100%"> </div>
- </div>
- </div>
- </div>
- </div>
- </fieldset>
- </div>
- <!-- end installing UI stuff -->
- </div>
- <div id='postMainBlock'>
- <!-- waiting section -->
- <div id='waitingSection' class="well text-center hidden">
- <p>Waiting for GrayKey...</p> <img id="waitImage" src="/static/img/ripple.svg"> </div>
- <!-- end waiting section -->
- </div>
- </div>
- </div>
- <!-- row -->
- <div class="row" id="footer">
- <div class="text-center smallNotice">© Copyright 2018 by <a href="http://www.grayshift.com/">Grayshift, LLC</a><br/>
- <a href="http://www.grayshift.com/"><img id="footerLogo" src="/static/img/grayshift-logo.png" /></a>
- </div>
- </div>
- </div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement