skript.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // ==UserScript==
  2. // @name Key card
  3. // @description Innovative and easy password generation
  4. // @version 1.0
  5. // @grant none
  6. // ==/UserScript==
  7. // Configure me!
  8. let spacebar = "test";
  9. let keys = "ijklmnopqrstuvwxyz0123456789abcdefgh".split("");
  10. // Whoa, below this line is the code, change at your own peril
  11. const basic = "abcdefghijklmnopqrstuvwxyz0123456789".split("");
  12. let card = basic.reduce((c, e, i) => {
  13. c[[e]] = keys[i];
  14. return c;
  15. }, {".": ""});
  16. addCSS = (css) => {
  17. var head, obj;
  18. head = document.getElementsByTagName('head')[0];
  19. if (!head) {
  20. return;
  21. }
  22. obj = document.createElement('style');
  23. obj.type = 'text/css';
  24. obj.innerHTML = css;
  25. head.appendChild(obj);
  26. }
  27. addJS = (js) => {
  28. var head, obj;
  29. head = document.getElementsByTagName('head')[0];
  30. if (!head) {
  31. return;
  32. }
  33. obj = document.createElement('script');
  34. obj.type = 'text/javascript';
  35. obj.innerHTML = js;
  36. head.appendChild(obj);
  37. }
  38. let domain = document.domain;
  39. //console.log("Hello " + domain + ", I'm Key card.");
  40. const convert_card = () => {
  41. let out = "[";
  42. for (let k in card) {
  43. let v = card[k];
  44. if (out != "[") {
  45. out += ",";
  46. }
  47. out += "[\"" + k + "\",\"" + v + "\"]";
  48. }
  49. out += "]";
  50. return out;
  51. }
  52. addCSS(`
  53. .keycardmenu{
  54. position:absolute;
  55. top:55px;
  56. left:-450px;
  57. padding: 0.5em 1em;
  58. margin: 2em 0;
  59. width: 400px;
  60. background: #444444AA;
  61. border: solid 5px #00A182FF;
  62. border-radius: 14px;
  63. margin: 10px;
  64. padding: 10px;
  65. line-height: 1.3;
  66. overflow: auto;
  67. text-align: left;
  68. width: 450px;
  69. height: 130px;
  70. transition-duration: 0.5s;
  71. }
  72. .keycardmenu:hover{
  73. position:absolute;
  74. left:-20px;
  75. }
  76. `);
  77. addJS(`
  78. const card = new Map(${convert_card()});
  79. const spacebar = "${spacebar}";
  80. const copy2Clipboard = (data) => {
  81. navigator.clipboard.writeText(data);
  82. alert("Copied!");
  83. };
  84. const domain_name = "${domain}";
  85. `);
  86. addJS(`
  87. const generate_pass = () => {
  88. let pass = "" + spacebar;
  89. for (let idx in domain_name) {
  90. let c = domain_name.at(idx);
  91. let v = card.get(c.toLowerCase());
  92. if (v) {
  93. pass += v;
  94. }
  95. }
  96. return pass;
  97. };
  98. `);
  99. const my_bod = `
  100. <div class="keycardmenu" oncopy="return false;" onselectstart="return false;" oncontextmenu="return false;">
  101. <h1>Key Card</h1><br>
  102. <p>Domain: ${domain}</p>
  103. <button onclick="copy2Clipboard(generate_pass())">Copy Password</button>
  104. </div>
  105. `;
  106. document.body.innerHTML = my_bod + document.body.innerHTML;