Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

88 rindas
3.3 KiB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Example</title>
  5. <script type="text/javascript" src="https://cdn.rawgit.com/ricmoo/aes-js/e27b99df/index.js"></script>
  6. <script>
  7. var master_key_enc_real_key = "04a2d6b170354946e39f6d53e8d8d341400c9fce9eb8a766398be99ecfc3bfff";
  8. var org_key_enc_real_key = "15d34714d9853ae918ec53a7fabae45cc9536c210f77ecb0822c275fe6c11b49";
  9. var correct_key_marker = "<!--Correct Key-->"
  10. var initial_counter = 5;
  11. var enc_hex_body = "d3e739429a8408b664023e88700b076cf058d57f6e10cd910c0b7fa4e01ba594b2e2d1a8c226b24022fe3f9ea15942fae2acd6fb70438677cf3925d522780f842a1f05512b3080589ee7148b7905327398df6c1bf8611fe11dd3fc857c0ca10dc5d1e4";
  12. </script>
  13. <script>
  14. function decrypt_page() {
  15. var key_str = document.querySelector('input[name=pwd]').value
  16. var html_name = window.location.pathname;
  17. var allcookies = document.cookie;
  18. cookiearray = allcookies.split(';');
  19. for(var i=0; i<cookiearray.length; i++) {
  20. name = cookiearray[i].split('=')[0].trim();
  21. value = cookiearray[i].split('=')[1];
  22. if (name == html_name)
  23. key_str = value;
  24. if (name == "__master__") {
  25. key_str = value;
  26. break;
  27. }
  28. }
  29. // check key length
  30. if (key_str.length != 16 &&
  31. key_str.length != 24 &&
  32. key_str.length != 32)
  33. {
  34. return;
  35. }
  36. var entered_key = aesjs.utils.utf8.toBytes(key_str);
  37. var enc_bytes = aesjs.utils.hex.toBytes(enc_hex_body)
  38. // check if the user input / loaded cookie is the master key
  39. var aesCtr = new aesjs.ModeOfOperation.ctr(entered_key, new aesjs.Counter(initial_counter))
  40. var master_key_dec_real_key = aesCtr.decrypt(aesjs.utils.hex.toBytes(master_key_enc_real_key))
  41. aesCtr = new aesjs.ModeOfOperation.ctr(master_key_dec_real_key, new aesjs.Counter(initial_counter))
  42. var dec_bytes = aesCtr.decrypt(enc_bytes)
  43. // Convert our bytes back into text
  44. var dec_text = aesjs.utils.utf8.fromBytes(dec_bytes)
  45. if (!dec_text.startsWith(correct_key_marker)) {
  46. // check if it is a regular password
  47. aesCtr = new aesjs.ModeOfOperation.ctr(entered_key, new aesjs.Counter(initial_counter))
  48. var org_key_dec_real_key = aesCtr.decrypt(aesjs.utils.hex.toBytes(org_key_enc_real_key))
  49. aesCtr = new aesjs.ModeOfOperation.ctr(org_key_dec_real_key, new aesjs.Counter(initial_counter))
  50. dec_bytes = aesCtr.decrypt(enc_bytes)
  51. dec_text = aesjs.utils.utf8.fromBytes(dec_bytes)
  52. if (!dec_text.startsWith(correct_key_marker)) {
  53. key_str = "";
  54. return
  55. } else {
  56. // entered correct file key
  57. document.cookie = html_name + "=" + key_str;
  58. }
  59. } else {
  60. // entered correct master key
  61. document.cookie = "__master__=" + key_str;
  62. }
  63. // Convert our bytes back into text
  64. // var dec_text = aesjs.utils.utf8.fromBytes(dec_bytes)
  65. var dec_text = new TextDecoder().decode(dec_bytes)
  66. document.body.innerHTML = dec_text
  67. }
  68. </script>
  69. </head>
  70. <body>
  71. <div style="position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);">
  72. <p id="sd" onclick="decrypt_page()" style="margin: 0 auto;font-size:100px;text-align:center">🔒</p>
  73. <input type="password" id="pwd" name="pwd">
  74. </div>
  75. </body>
  76. </html>