Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2018
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function decrypt(data, password, success, error) {
  2.  
  3.     var modes = [ new Crypto.mode.CBC(Crypto.pad.iso10126), new Crypto.mode.OFB(Crypto.pad.iso7816), new Crypto.mode.CBC(Crypto.pad.NoPadding), new Crypto.mode.CBC(Crypto.pad.ZeroPadding)];
  4.  
  5.     for (var mi = 0; mi < modes.length; ++mi) {
  6.         var mode = modes[mi];
  7.                
  8.         for (var i = 10; i < 20; ++i) {                        
  9.             try {
  10.                 var decoded = Crypto.AES.decrypt(data, password, { mode: mode, iterations : i });
  11.  
  12.                 if (decoded != null && decoded.length > 0) {
  13.                     if (success(decoded)) {
  14.                         return decoded;
  15.                     };
  16.                 };
  17.             } catch (e) {
  18.                 console.log(e);
  19.             }
  20.         }
  21.    
  22.         for (var i = 0; i < 10; ++i) {             
  23.             try {
  24.                 var decoded = Crypto.AES.decrypt(data, password, { mode: mode, iterations : i });
  25.  
  26.                 if (decoded != null && decoded.length > 0) {                                                   
  27.                     if (success(decoded)) {
  28.                         return decoded;
  29.                     };
  30.                 };
  31.             } catch (e) {
  32.                 console.log(e);
  33.             }
  34.         }
  35.     }
  36.  
  37.     if (error != null)
  38.         error();
  39.    
  40.     return null;
  41. }
  42.  
  43. function do_decrypt() {
  44.     try {
  45.        document.getElementById('error').innerHTML = '';
  46.    
  47.        var encrypted = document.getElementById('enc-json').value;
  48.  
  49.        if (encrypted == null || encrypted.length == 0)
  50.             throw 'You must copy and paste your encrypted backup into the first text area';
  51.  
  52.         var password = document.getElementById('password').value;
  53.  
  54.         if (password == null || password.length == 0) {
  55.             throw 'You must enter a password';
  56.         }
  57.  
  58.         var decrypted = decrypt(encrypted, password, function(decrypted) {
  59.             try {                              
  60.                 obj = JSON.parse(decrypted);
  61.                
  62.                 return (obj != null);
  63.             } catch (e) {
  64.                 console.log(e);
  65.                 return false;
  66.             };
  67.         });
  68.  
  69.         if (decrypted == null || decrypted.length == 0)
  70.             throw 'No backup returned';
  71.        
  72.         var obj = JSON.parse(decrypted);
  73.        
  74.         if (obj.double_encryption) {
  75.             var pass = prompt("Please enter your second password", null);  
  76.            
  77.             for (var i = 0; i < obj.keys.length; ++i) {
  78.                 obj.keys[i].priv = decrypt(obj.keys[i].priv, obj.sharedKey + pass, isBase58);
  79.             }
  80.            
  81.             decrypted = JSON.stringify(obj);
  82.         }
  83.        
  84.         var ul = document.getElementById('ul-keys');
  85.         for (var i = 0; i < obj.keys.length; ++i) {
  86.             var li = document.createElement('li');
  87.             li.innerHTML = '<b>'+ obj.keys[i].addr + '</b>      -       ' + obj.keys[i].priv;
  88.             ul.appendChild(li);
  89.         }
  90.        
  91.         document.getElementById('plain-json').value = decrypted;
  92.              
  93.     } catch(e) {
  94.         console.log(e);
  95.  
  96.         document.getElementById('error').innerHTML = 'Unable to decrypt backup ' + e;
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement