skript.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 card = {".": "", "a": "b", "b": "a", "c": "d", "d": "c", "e": "f", "f": "e", "g": "h", "h": "g", "i": "j", "j": "i", "l": "m", "m": "l", "n": "o", "o": "n", "p": "q", "q": "p", "r": "s", "s": "r", "t": "u", "u": "t", "v": "y", "y": "v", "x": "z", "z": "x", "0": "1", "1": "0", "2": "3", "3": "2", "4": "5", "5": "4", "6": "7", "7": "6", "8": "9", "9": "8"};
  9. let spacebar = "test";
  10. addCSS = (css) => {
  11. var head, obj;
  12. head = document.getElementsByTagName('head')[0];
  13. if (!head) {
  14. return;
  15. }
  16. obj = document.createElement('style');
  17. obj.type = 'text/css';
  18. obj.innerHTML = css;
  19. head.appendChild(obj);
  20. }
  21. addJS = (js) => {
  22. var head, obj;
  23. head = document.getElementsByTagName('head')[0];
  24. if (!head) {
  25. return;
  26. }
  27. obj = document.createElement('script');
  28. obj.type = 'text/javascript';
  29. obj.innerHTML = js;
  30. head.appendChild(obj);
  31. }
  32. let domain = document.domain;
  33. //console.log("Hello " + domain + ", I'm Key card.");
  34. const convert_card = () => {
  35. let out = "[";
  36. for (let k in card) {
  37. let v = card[k];
  38. if (out != "[") {
  39. out += ",";
  40. }
  41. out += "[\"" + k + "\",\"" + v + "\"]";
  42. }
  43. out += "]";
  44. return out;
  45. }
  46. addCSS(`
  47. .keycardmenu{
  48. position:absolute;
  49. top:55px;
  50. left:-450px;
  51. padding: 0.5em 1em;
  52. margin: 2em 0;
  53. width: 400px;
  54. background: #444444AA;
  55. border: solid 5px #00A182FF;
  56. border-radius: 14px;
  57. margin: 10px;
  58. padding: 10px;
  59. line-height: 1.3;
  60. overflow: auto;
  61. text-align: left;
  62. width: 450px;
  63. height: 130px;
  64. transition-duration: 0.5s;
  65. }
  66. .keycardmenu:hover{
  67. position:absolute;
  68. left:-20px;
  69. }
  70. `);
  71. addJS(`
  72. const card = new Map(${convert_card()});
  73. const spacebar = "${spacebar}";
  74. const copy2Clipboard = (data) => {
  75. navigator.clipboard.writeText(data);
  76. alert("Copied!");
  77. };
  78. const domain_name = "${domain}";
  79. `);
  80. addJS(`
  81. const generate_pass = () => {
  82. let pass = "" + spacebar;
  83. for (let idx in domain_name) {
  84. let c = domain_name.at(idx);
  85. let v = card.get(c.toLowerCase());
  86. if (v) {
  87. pass += v;
  88. }
  89. }
  90. return pass;
  91. };
  92. `);
  93. const my_bod = `
  94. <div class="keycardmenu" oncopy="return false;" onselectstart="return false;" oncontextmenu="return false;">
  95. <h1>Key Card</h1><br>
  96. <p>Domain: ${domain}</p>
  97. <button onclick="copy2Clipboard(generate_pass())">Copy Password</button>
  98. </div>
  99. `;
  100. document.body.innerHTML = my_bod + document.body.innerHTML;