DOOT

Telegram clientside aes

  1. // ==UserScript==
  2. // @name DOOT
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.32
  5. // @description Telegram clientside aes
  6. // @author MrKleiner
  7. // @match https://web.telegram.org/
  8. // @icon https://www.google.com/s2/favicons?domain=telegram.org
  9. // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. /*
  14. Disclaimer: Yes, I know that Telegram uses AES by default.
  15. The point of this shit is to make sure that there's no PHYSICAL way to intercept the "message access password".
  16. With this method - NOTHING password-related is being tossed into the network. All the decryptions and encryptions are completely client-side.
  17.  
  18. So even if there's a malicious FBI lizard with linux laptop sitting next to your house and monitoring all the traffic - he won't see any actual messages.
  19. Altough this doesnt mean that he won't fuck you in the ass if he wanted to.
  20.  
  21. I mean, this should theoretically protect you from your Telegram password being stolen by MITM attack or something.
  22. */
  23.  
  24. // ====================================================
  25. // ====================================================
  26. // API DOCUMENTATION
  27. // ====================================================
  28. // ====================================================
  29.  
  30.  
  31. // liz3 cookie config is an array, where
  32. /*
  33.  
  34. 0 - global enable
  35. 1 - local mute
  36. 2 - darkmode
  37. 3 - group igonre
  38. 4 - decrypt only
  39. */
  40.  
  41.  
  42.  
  43.  
  44.  
  45. /*
  46.  
  47. function release_compiler()
  48. {
  49. var all_css_compile = btoa($('#user-css').html());
  50.  
  51. var what_to_copy = 'var liz3_css_64 = "' + all_css_compile + '";';
  52. // console.log(what_to_copy)
  53. var $temp = $("<input>");
  54. $("body").append($temp);
  55. $temp.val(what_to_copy).select();
  56. document.execCommand("copy");
  57. $temp.remove();
  58. }
  59.  
  60. */
  61.  
  62.  
  63. var liz3_css_64 = "PHN0eWxlPi8qCkBpbXBvcnQgdXJsKCJodHRwczovL2RsLmRyb3Bib3guY29tL3MvdHVrMXQ4bnR2bjg0Mzc1L2RhcmsuY3NzP2RsPTAiKTsKKi8KCgouZGVkMgp7CiAgZGlzcGxheTogbm9uZTsKfQoKCgoKCi8qCj09PT09PT09PT09PT09PT09PT09PT09PT0KQmxlbmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09CiovCgo6cm9vdAp7CgktLWJlbW51X2JnOiByZ2JhKDMxLCAzMSwgMzEsIDAuOTM3KTsKCS0tYm1lbnVfb3V0bGluZV9jb2w6ICMxOTE5MUE7CgktLWJtZW51X291dGxpbmU6IDFweCBzb2xpZCAjMTkxOTFBOwoJLS1ibWVudV9ob3ZlcjogIzU2ODBDMjsKCS0tYm1lbnVfaXRlbV90ZXh0OiAjRTZFNkU2OwoJLS1ibWVudV9oZWFkZXJfZGltOiAjYTNhM2EzOwoJLS1ibWVudV9zaGFkb3c6IDBweCAxcHggM3B4IDBweCByZ2JhKDAsMCwwLDAuOSk7CgktLWJtZW51X2JvcmRlcl9yYWRpdXM6IDZweDsKCS0tYm1lbnVfdGV4dF9maWVsZF9iZzogIzU5NTk1OTsKCS0tYm1lbnVfdGV4dF9maWVsZF9iZ19ob3ZlcjogIzgwODA4MDsKCS0tYm1lbnVfdGV4dF9maWVsZF9ib3JkZXI6IDFweCBzb2xpZCAjNDQ0NDQ0OwoJLS1ibGVuZGVyX3RleHRfc2hhZG93OiAwcHggMXB4IDJweCAjMjYyNjI2OwoJLS1ibWVudV9idXR0b25fZGVmX2JsdTogIzUwNzZiMjsKCS0tYmxlbmRlcl90ZXh0X3NlbGVjdDogIzE5MTkxOTsKCS0tYmxlbmRlcl90b29sdGlwOiByZ2JhKDI1LCAyNSwgMjYsIDAuOTM3MjU1KTsKfQoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PQpCbGVuZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09Ck1lbnUKPT09PT09PT09PT09PT09PT09PT09PT09PQoqLwpAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Sb2JvdG86d2dodEAxMDAmZGlzcGxheT1zd2FwJyk7CgpAaW1wb3J0IHVybCgiaHR0cHM6Ly9kbC5kcm9wYm94LmNvbS9zL3Iza2hteXA0a2pwb3ltaS9kcm9pZHNhbnMudHRmP2RsPTAiKTsKCkBmb250LWZhY2UgCnsKCWZvbnQtZmFtaWx5OiAiYmxlbmRlciI7CglzcmM6IHVybCgiaHR0cHM6Ly9kbC5kcm9wYm94LmNvbS9zL3Iza2hteXA0a2pwb3ltaS9kcm9pZHNhbnMudHRmP2RsPTAiKTsKfQoKLmNsYXNzX2hpZGRlbgp7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5ub3NlbGVjdAp7Cgktd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwoJLW1vei11c2VyLXNlbGVjdDogbm9uZTsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwp9CgouZmxpcF94CnsKCS13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwoJdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwp9CgouZWxlbV9ob3Zlcjpob3Zlcgp7CglmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTsKfQoKCi5ibWVudV9yb290CnsKCXotaW5kZXg6IDk5OTk5OTsKCXBvc2l0aW9uOiBmaXhlZDsKCS8qIHdpZHRoOiAyMDBweDsqLwoJbWluLXdpZHRoOiAxOTBweDsKCW1heC13aWR0aDogMjcwcHg7CglkaXNwbGF5OiBmbGV4OwoJY29sb3I6ICNFNkU2RTY7Cglmb250LWZhbWlseTogJ2JsZW5kZXInLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMnB4Owp9CgouYm1lbnVfbWVudQp7CglkaXNwbGF5OiBmbGV4OwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYmFja2dyb3VuZDogcmdiYSgzMSwgMzEsIDMxLCAwLjkzNyk7Cglib3JkZXI6IDFweCBzb2xpZCAjMTkxOTFBOwoJYm9yZGVyLXJhZGl1czogNnB4OwoJcGFkZGluZzogNXB4IDFweCA1cHggMXB4OwoKCgktd2Via2l0LWJveC1zaGFkb3c6IDBweCAxcHggM3B4IDBweCByZ2JhKDAsMCwwLDAuOSk7IAoJYm94LXNoYWRvdzogMHB4IDFweCAzcHggMHB4IHJnYmEoMCwwLDAsMC45KTsKfQoKLmJtZW51X2VudHJ5CnsKCS8qCQoJcGFkZGluZzogMnB4IDBweCAycHggMzBweDsKCQoJcGFkZGluZzogMnB4IDBweCAycHggMHB4OwogICovCglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luLXRvcDogMnB4Owp9CgouYm1lbnVfZW50cnlfbGVmdF9zaWRlCnsKCXdpZHRoOiAzMHB4OwoJZGlzcGxheTogZmxleDsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5ibWVudV9lbnRyeTpob3Zlcgp7CgliYWNrZ3JvdW5kOiAjNTY4MEMyOwp9CgouYm1lbnVfaGVhZGVyCnsKCXBhZGRpbmc6IDBweCAwcHggMnB4IDEwcHg7CglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luLXRvcDogMnB4OwoJY29sb3I6ICNhNWE1YTU7Cn0KCi5ibWVudV9oZWFkX3NlcGFyYXRvcgp7CgloZWlnaHQ6IDFweDsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW46IDNweCAwcHggM3B4IDBweDsKCWJhY2tncm91bmQ6ICMzOTM5Mzk7Cn0KCi5ibWVudV9zZXBhcmF0b3IKewoJaGVpZ2h0OiAxcHg7CglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luOiA3cHggMHB4IDVweCAwcHg7CgliYWNrZ3JvdW5kOiAjMzkzOTM5Owp9CgouZGlzYWJsZWRzIHsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBkZWZhdWx0Owp9CgoKLmJtZW51X2NoZWNrYm94X2NoZWNrZWRfYmcgCnsKICAgIGJhY2tncm91bmQ6ICM1Mzc5YjQgIWltcG9ydGFudDsKfQoKLmJtZW51X2NoZWNrYm94IAp7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgd2lkdGg6IDEycHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiAjNjY2NjY2OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzM3MzczNzsKfQoKCi5ibWVudV9jaGVja2JveF9jaGVja21hcmsgCnsKICAgIHdpZHRoOiAycHg7CiAgICBoZWlnaHQ6IDdweDsKICAgIGJhY2tncm91bmQ6IG5vbmU7CglvcGFjaXR5OiAxOwoJdHJhbnNmb3JtOiByb3RhdGUoCgkJNDVkZWcKCSk7Cglib3JkZXI6IHNvbGlkIHdoaXRlOwoJYm9yZGVyLXdpZHRoOiAwIDJweCAycHggMDsKCW1hcmdpbi1ib3R0b206IDJweDsKfQoKCi5ibWVudV9tZW51ICoKewogIC13ZWJraXQtYm94LXNpemluZzogdW5zZXQ7Cn0KCgoKCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGJtZW51IHBzd2Qgc2V0dGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoKCi5wc3dkX2VkaXRvciAqCnsKICAgIHBhZGRpbmc6IDBweDsKICAgIG1hcmdpbjogMHB4OwogICAgZm9udC1mYW1pbHk6ICdibGVuZGVyJywgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHRleHQtc2hhZG93OiAwcHggMXB4IDJweCAjMjYyNjI2OwogICAgY29sb3I6IHdoaXRlOwp9CgouaG92ZXJfZWRpdG9yXzFfcm9vdCAKewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzAwcHg7CiAgICAvKiBoZWlnaHQ6IDEwMHB4OyAqLwogICAgYmFja2dyb3VuZDogIzE1MTUxNWUwOwogICAgLyogbWFyZ2luLXRvcDogLTExMHB4OyAqLwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgcGFkZGluZy1ib3R0b206IDEzcHg7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zIAp7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgd2lkdGg6IDgwJTsKICAgIC8qIGJhY2tncm91bmQ6ICM3OTllZDc7ICovCiAgICBiYWNrZ3JvdW5kOiAjNTA3NmIyOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjNmM2Y7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKCi5ob3Zlcl9lZGl0b3JfMV9pbnB1dF9jb250YWluZXIgCnsKCWRpc3BsYXk6IGZsZXg7Cgl3aWR0aDogODAlOwoJaGVpZ2h0OiAyMHB4OwoJb3V0bGluZTogMHB4OwoJY29sb3I6IHdoaXRlOwoJbWFyZ2luOiAxMHB4IDVweCAxcHggNXB4Owp9CgoKLmhvdmVyX2VkaXRvcl8xX2J0bnMgCnsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICB3aWR0aDogODAlOwogICAgLyogYmFja2dyb3VuZDogIzc5OWVkNzsgKi8KICAgIGJhY2tncm91bmQ6ICM1MDc2YjI7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgIzNmM2YzZjsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9CgouaG92ZXJfZWRpdG9yXzFfaW5wdXQgCnsKICAgIGFsbDogdW5zZXQ7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMjBweDsKICAgIG91dGxpbmU6IDBweDsKICAgIGJhY2tncm91bmQ6ICM1OTU5NTk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxcHggOHB4IDFweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDQ0NDQ0Owp9CgouaG92ZXJfZWRpdG9yXzFfYnRuczphY3RpdmUgCnsKICAgIGJhY2tncm91bmQ6ICM1MDc2YjI7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zOmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiAjNzk5ZWQ3Owp9CgouaG92ZXJfZWRpdG9yXzFfaW5wdXQ6aG92ZXIgCnsKICAgIGJhY2tncm91bmQ6ICM4MDgwODA7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zOmFjdGl2ZSAKewogICAgYmFja2dyb3VuZDogIzUwNzZiMjsKfQoKCi8qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgYm1lbnUgcHN3ZCBzZXR0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCgoKCi5saXozX2FsdF9tc2dfaW5wdXQKewogIGxlZnQ6IC0xN3B4OyAKICB3aWR0aDogY2FsYygxMDAlICsgMzRweCk7IAogIHBhZGRpbmctbGVmdDogMTlweDsgCiAgcGFkZGluZy1yaWdodDogNDVweDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7Cn0KCgovKiBzcGFtbWVyIAp0b2RvOiA6cm9vdCByZXVzZQoqLwoKCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGJtZW51IGNyZWF0b3IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCi5ibWVudV9jcmVhdG9yX3Jvb3QgKgp7CglwYWRkaW5nOiAwcHg7CgltYXJnaW46IDBweDsKfQoKCi5ub3NlbGVjdAp7CiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9CgouYm1lbnVfY3JlYXRvcl9yb290CnsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiA5OTk5OTk5OwoJZGlzcGxheTogZmxleDsKCXdpZHRoOiAzMzBweDsKCWJhY2tncm91bmQ6IHZhcigtLWJlbW51X2JnKTsKCWJvcmRlcjogdmFyKC0tYm1lbnVfb3V0bGluZSk7Cglib3gtc2hhZG93OiB2YXIoLS1ibWVudV9zaGFkb3cpOwoJYm9yZGVyLXJhZGl1czogdmFyKC0tYm1lbnVfYm9yZGVyX3JhZGl1cyk7CgkKCWNvbG9yOiB2YXIoLS1ibWVudV9oZWFkZXJfZGltKTsKCWZvbnQtZmFtaWx5OiAnYmxlbmRlcicsIHNhbnMtc2VyaWY7Cglmb250LXNpemU6IDEycHg7CgkKCXRleHQtc2hhZG93OiB2YXIoLS1ibGVuZGVyX3RleHRfc2hhZG93KTsKfQoKLmJtZW51X2NyZWF0b3Jfcm9vdCAqOjpzZWxlY3Rpb24KewoJYmFja2dyb3VuZDogdmFyKC0tYmxlbmRlcl90ZXh0X3NlbGVjdCk7Cn0KCi5ibWVudV9jcmVhdG9yCnsKCWRpc3BsYXk6IGZsZXg7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1ncm93OiAxOwoJcGFkZGluZy1ib3R0b206IDVweDsKfQoKLmJtZW51X2NyZWF0b3JfaGVhZGVyCnsKCWNvbG9yOiB2YXIoLS1ibWVudV9oZWFkZXJfZGltKTsKCW1hcmdpbi10b3A6IDExcHg7CgltYXJnaW4tbGVmdDogOHB4Owp9CgouYm1lbnVfY3JlYXRvcl9ib2R5CnsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tdG9wOiA3cHg7Cn0KCi5ibWVudV9jcmVhdG9yX2JvZHlfbGVmdAp7CglkaXNwbGF5OiBmbGV4OwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXdpZHRoOiA0NSU7Cn0KCi5ibWVudV9jcmVhdG9yX2xfcm93CnsKCWRpc3BsYXk6IGZsZXg7CglhbGlnbi1pdGVtczogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCWhlaWdodDogMjJweDsKCW1hcmdpbjogM3B4IDBweCAzcHggMHB4OwoJcGFkZGluZy1yaWdodDogMTBweDsKCXBhZGRpbmctbGVmdDogMTBweDsKCgl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCW92ZXJmbG93OiBoaWRkZW47Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouYm1lbnVfY3JlYXRvcl9ib2R5X3JpZ2h0CnsKCWRpc3BsYXk6IGZsZXg7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1ncm93OiAxOwp9CgouYm1lbnVfY3JlYXRvcl9yX3Jvdwp7CglkaXNwbGF5OiBmbGV4OwoJaGVpZ2h0OiAyMnB4OwoJbWFyZ2luOiAzcHggMHB4IDNweCAwcHg7CglwYWRkaW5nLXJpZ2h0OiA3cHg7Cn0KCi5ibWVudV9yb3dfdGV4dF9pbnB1dCAKewoJCiAgICBhbGw6IHVuc2V0OwoJZGlzcGxheTogZmxleDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJTsKCWhlaWdodGQ6IDEwMCU7CiAgICBvdXRsaW5lOiAwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibWVudV90ZXh0X2ZpZWxkX2JnKTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDBweCA4cHggMHB4IDhweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1cnNvcjogZS1yZXNpemU7CiAgICBib3JkZXI6IHZhcigtLWJtZW51X3RleHRfZmllbGRfYm9yZGVyKTsKfQoKLmJtZW51X3Jvd190ZXh0X2lucHV0OmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibWVudV90ZXh0X2ZpZWxkX2JnX2hvdmVyKTsKfQoKLmJtZW51X2NvbmZpcm1fYnRuIAp7Cgljb2xvcjogd2hpdGU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiAyMHB4OwoJd2lkdGg6IDEwMCU7CiAgICAvKiBiYWNrZ3JvdW5kOiAjNzk5ZWQ3OyAqLwogICAgYmFja2dyb3VuZDogdmFyKC0tYm1lbnVfYnV0dG9uX2RlZl9ibHUpOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjNmM2Y7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKLmJtZW51X2NvbmZpcm1fYnRuOmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiAjNzk5ZWQ3Owp9CgouYWxpZ25fc2VsZl9jZW50ZXIKewoJYWxpZ24tc2VsZjogY2VudGVyOwp9CgouY29uZmlybV9pbGx1bWluYXRpCnsKCXBhZGRpbmc6IDBweCA3cHggMHB4IDdweDsKfQoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBibWVudSBjcmVhdG9yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoKCgoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBibGVuZGVyIHRvb2x0aXBzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoubXJrX2VjdF90b29sdGlwX2JveAp7Cgl6LWluZGV4OiA5OTk5OTk5OTk5OwoJd2hpdGUtc3BhY2U6IHByZTsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tdG9wOiAyNXB4OwoJYmFja2dyb3VuZDogdmFyKC0tYmxlbmRlcl90b29sdGlwKTsKCWJvcmRlci1yYWRpdXM6IHZhcigtLWJtZW51X2JvcmRlcl9yYWRpdXMpOwoJYm9yZGVyOiB2YXIoLS1ibWVudV9vdXRsaW5lKTsKCWNvbG9yOiB3aGl0ZTsKCWZvbnQtZmFtaWx5OiAnYmxlbmRlcicsIHNhbnMtc2VyaWY7Cglmb250LXNpemU6IDExcHg7CglwYWRkaW5nOiA5cHg7CiAgdGV4dC1zaGFkb3c6IHZhcigtLWJsZW5kZXJfdGV4dF9zaGFkb3cpOwogIGJveC1zaGFkb3c6IHZhcigtLWJtZW51X3NoYWRvdyk7Cn0KCgoKCgoKCgoKCgoKCgoKCgoKCgo8L3N0eWxlPg==";
  64.  
  65. window.bmenu_spammer_html =
  66. `
  67. <div class="bmenu_creator_root illuminati_place class_hidden">
  68. <div class="bmenu_creator">
  69. <div class="bmenu_creator_header noselect">Toybox message spammer</div>
  70. <div class="bmenu_creator_body">
  71. <div class="bmenu_creator_body_left">
  72. <div class="bmenu_creator_l_row noselect">Message</div>
  73. <div class="bmenu_creator_l_row noselect">Interval</div>
  74. <div class="bmenu_creator_l_row noselect">Total count</div>
  75. <div class="bmenu_creator_l_row noselect">Notification frequency</div>
  76. </div>
  77. <div class="bmenu_creator_body_right">
  78. <div class="bmenu_creator_r_row">
  79. <input mrk_ect_tooltip="Message to send." value="lol" class="bmenu_row_text_input illuminati_msg"></input>
  80. </div>
  81. <div class="bmenu_creator_r_row">
  82. <input mrk_ect_tooltip="Interval between each message in seconds. Fractional values allowed." value="1" class="bmenu_row_text_input illuminati_int"></input>
  83. </div>
  84. <div class="bmenu_creator_r_row">
  85. <input mrk_ect_tooltip="Total number of messages to send." value="10" class="bmenu_row_text_input illuminati_count"></input>
  86. </div>
  87. <div class="bmenu_creator_r_row">
  88. <input mrk_ect_tooltip="Log the amount of sent messages in console every nth message." value="5" class="bmenu_row_text_input illuminati_info_freq"></input>
  89. </div>
  90. </div>
  91. </div>
  92. <div class="confirm_illuminati">
  93. <div class="bmenu_confirm_btn noselect align_self_center illuminati_confirm">OK</div>
  94. <div class="bmenu_confirm_btn noselect align_self_center cancel_illuminati">Cancel</div>
  95. </div>
  96. </div>
  97. </div>
  98. `;
  99.  
  100. window.liz3_pswd_changer_html =
  101. `
  102. <div id="global_password_changer" class="hover_editor_1_root pswd_editor class_hidden">
  103. <div class="hover_editor_1_btns pswd_editor_btns pswd_editor_btn_apply">OK</div>
  104. <div class="hover_editor_1_input_container pswd_editor_input_container">
  105. <input class="hover_editor_1_input pswd_editor_input" value="">
  106. </div>
  107. <div class="hover_editor_1_btns pswd_editor_btns pswd_editor_btn_cancel">Cancel</div>
  108. </div>
  109. `;
  110.  
  111.  
  112. window.liz3_blender_menu =
  113. `
  114. <div class="bmenu_root">
  115. <div class="bmenu_menu">
  116. <div class="bmenu_header noselect">Sex Toys</div>
  117. <div class="bmenu_head_separator"></div>
  118. <div bmenu_opt="bmenu_imgflip" class="bmenu_entry noselect">
  119. <div class="bmenu_entry_left_side"></div>
  120. <div class="bmenu_entry_right_side">Flip image</div>
  121. </div>
  122. <div bmenu_opt="decrypt_pswd_changer" class="bmenu_entry noselect">
  123. <div class="bmenu_entry_left_side"></div>
  124. <div class="bmenu_entry_right_side">Set Password</div>
  125. </div>
  126. <div class="bmenu_separator"></div>
  127. <div bmenu_ischeckbox="1" bmenu_opt="enable_liz3" class="bmenu_entry noselect">
  128. <div class="bmenu_entry_left_side"></div>
  129. <div class="bmenu_entry_right_side">Enable liz3</div>
  130. </div>
  131. <div bmenu_ischeckbox="1" bmenu_opt="liz3_quick_mute" class="bmenu_entry noselect">
  132. <div class="bmenu_entry_left_side"></div>
  133. <div class="bmenu_entry_right_side">Liz3 quick mute</div>
  134. </div>
  135. <div bmenu_ischeckbox="1" bmenu_opt="liz3_group_ignore" class="bmenu_entry noselect">
  136. <div class="bmenu_entry_left_side"></div>
  137. <div class="bmenu_entry_right_side">Liz3 group ignore</div>
  138. </div>
  139. <div bmenu_ischeckbox="1" bmenu_opt="liz3_decrypt_only" class="bmenu_entry noselect">
  140. <div class="bmenu_entry_left_side"></div>
  141. <div class="bmenu_entry_right_side">Liz3 decrypt only</div>
  142. </div>
  143. <div class="bmenu_separator"></div>
  144. <div bmenu_ischeckbox="1" bmenu_opt="liz3_dark_theme_menu_call" class="bmenu_entry noselect">
  145. <div class="bmenu_entry_left_side"></div>
  146. <div class="bmenu_entry_right_side">Dark mode</div>
  147. </div>
  148. <div bmenu_opt="toybox_msg_spammer" class="bmenu_entry noselect">
  149. <div class="bmenu_entry_left_side"></div>
  150. <div class="bmenu_entry_right_side">Spammer</div>
  151. </div>
  152. </div>
  153. </div>
  154. `;
  155.  
  156.  
  157. // cbid = selector for the checkbox, state = set the checkbox state to... 1 = true, 0 = false
  158. function checkbox_activator(cbid, cstate)
  159. {
  160. // var current_cbox = $("#" + cbid).closest(".disaster_checkbox_row");
  161. // var current_cbox_state = $(current_cbox).find(".disaster_checkbox_checkmark").attr("mgh_checkbox_checked");
  162. if ( cstate == "toggle" )
  163. {
  164. console.log('toggle command');
  165. if ( $(cbid).find('.bmenu_checkbox_checkmark').attr('bmenu_checkbox_checked') == "1" )
  166. {
  167. $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "0");
  168. $(cbid).removeClass("bmenu_checkbox_checked_bg");
  169. $(cbid).find(".bmenu_checkbox_checkmark").addClass("class_hidden");
  170. }else{
  171. // if ( $(cbid).find('.bmenu_checkbox_checkmark').attr('bmenu_checkbox_checked') == "0" )
  172.  
  173. $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "1");
  174. $(cbid).addClass("bmenu_checkbox_checked_bg");
  175. $(cbid).find(".bmenu_checkbox_checkmark").removeClass("class_hidden");
  176. }
  177. }else{
  178. if (parseInt(cstate) > 0)
  179. {
  180. $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "1");
  181. $(cbid).addClass("bmenu_checkbox_checked_bg");
  182. $(cbid).find(".bmenu_checkbox_checkmark").removeClass("class_hidden");
  183. }
  184.  
  185. if (parseInt(cstate) == 0)
  186. {
  187. $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "0");
  188. $(cbid).removeClass("bmenu_checkbox_checked_bg");
  189. $(cbid).find(".bmenu_checkbox_checkmark").addClass("class_hidden");
  190. }
  191. }
  192.  
  193.  
  194. }
  195.  
  196. function setCookie(cname, cvalue, exdays) {
  197. var d = new Date();
  198. d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  199. var expires = "expires="+d.toUTCString();
  200. document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  201. }
  202.  
  203. function getCookie(cname) {
  204. var name = cname + "=";
  205. var ca = document.cookie.split(';');
  206. for(var i = 0; i < ca.length; i++) {
  207. var c = ca[i];
  208. while (c.charAt(0) == ' ') {
  209. c = c.substring(1);
  210. }
  211. if (c.indexOf(name) == 0) {
  212. return c.substring(name.length, c.length);
  213. }
  214. }
  215. return "";
  216. }
  217.  
  218. function checkCookie(cookie_name) {
  219. var user = getCookie(cookie_name);
  220. if (user != "") {
  221. console.log('detected cookie "' + cookie_name + '" ' + 'with a value of ' + user);
  222. return false;
  223. } else {
  224. console.log('no cookie with the name "' + cookie_name + '" detected');
  225. return true;
  226. }
  227. }
  228.  
  229.  
  230.  
  231. // setTimeout(function() { big_msngr_observer(); }, 5000);
  232. $(document).ready(function(){
  233.  
  234. window.mrk_ect_timer; // create container for tolltip timer
  235. window.mrk_ect_tooltip_timeout = 500; // tooltip timeout
  236. // check if we have config
  237. if ( checkCookie('liz3_config') )
  238. {
  239. setCookie('liz3_config', '1-0-0-0', 420);
  240. console.log('no liz3 config detected, falling back to defaults');
  241. window.liz3_system_enabled = 1;
  242. window.liz3_quick_mute = 0;
  243. window.liz3_dark_mode = 0;
  244. window.liz3_group_ignore_var = 0;
  245. window.liz3_decrypt_only_v = 0;
  246. }
  247.  
  248. window.liz3_current_session_password = getCookie('liz3_cur_pswd');
  249. window.liz3_current_config = getCookie('liz3_config').split('-');
  250.  
  251. window.liz3_system_enabled = parseInt(liz3_current_config[0]);
  252. window.liz3_quick_mute = parseInt(liz3_current_config[1]);
  253. window.liz3_dark_mode = parseInt(liz3_current_config[2]);
  254. window.liz3_group_ignore_var = parseInt(liz3_current_config[3]);
  255. window.liz3_decrypt_only_v = parseInt(liz3_current_config[4]);
  256. // window.liz3_quick_mute = 1;
  257.  
  258. window.initializer_timeout = 0;
  259. window.tg_msg_edit_mode = 0;
  260.  
  261. $("body").append(liz3_blender_menu);
  262. $('body').append(liz3_pswd_changer_html);
  263. look_at_telegram()
  264. console.log(getCookie('liz3_config'));
  265. liz3_dark_theme_page_load()
  266. $('body').append('<div id="liz3_required_css">' + atob(liz3_css_64) + '</div>');
  267. $('body').append('<div class="mrk_ect_tooltip_box noselect class_hidden">tolltip is nil</div>');
  268. // $('body').append('<div class="bmenu_creator_root illuminati_place class_hidden"> <div class="bmenu_creator"> <div class="bmenu_creator_header noselect">Toybox message spammer</div> <div class="bmenu_creator_body"> <div class="bmenu_creator_body_left"> <div class="bmenu_creator_l_row noselect">Message</div> <div class="bmenu_creator_l_row noselect">Interval</div> <div class="bmenu_creator_l_row noselect">Total count</div> <div class="bmenu_creator_l_row noselect">Notification frequency</div> </div> <div class="bmenu_creator_body_right"> <div class="bmenu_creator_r_row"> <input value="lol" class="bmenu_row_text_input illuminati_msg"></input> </div> <div class="bmenu_creator_r_row"> <input value="1" class="bmenu_row_text_input illuminati_int"></input> </div> <div class="bmenu_creator_r_row"> <input value="10" class="bmenu_row_text_input illuminati_count"></input> </div> <div class="bmenu_creator_r_row"> <input value="5" class="bmenu_row_text_input illuminati_info_freq"></input> </div> </div> </div> <div class="confirm_illuminati"> <div class="bmenu_confirm_btn noselect align_self_center illuminati_confirm">OK</div><div class="bmenu_confirm_btn noselect align_self_center cancel_illuminati">Cancel</div> </div> </div> </div>');
  269. $('body').append(bmenu_spammer_html);
  270. window.wtf_fuck_js_bmenu_root_height = $('.bmenu_root').outerHeight( true );
  271. });
  272.  
  273. function liz3_set_config()
  274. {
  275. checkbox_activator($('.bmenu_entry[bmenu_opt="enable_liz3"] .bmenu_checkbox'), liz3_current_config[0]);
  276. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_quick_mute"] .bmenu_checkbox'), liz3_current_config[1]);
  277. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_dark_theme_menu_call"] .bmenu_checkbox'), window.liz3_dark_mode);
  278. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_group_ignore"] .bmenu_checkbox'), window.liz3_group_ignore_var);
  279. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_decrypt_only"] .bmenu_checkbox'), window.liz3_decrypt_only_v);
  280. }
  281.  
  282. function look_at_telegram()
  283. {
  284. // Try to locate the mini messenger message grid. Got better solution for more accurate selector? Email us at "weylandyutani@ark.gal"
  285. if($('form .composer_rich_textarea').length > 0 && $('.im_history_message_wrap').closest('.im_history_messages_peer').length > 0 )
  286. {
  287. window.initializer_timeout = 1;
  288. // celebrate. Important info log
  289. console.log('found text field');
  290. // trigger message decryptor
  291. if ( liz3_system_enabled == 1 )
  292. {
  293. if ( window.liz3_decrypt_only_v == 0 )
  294. {
  295. init2();
  296. }
  297.  
  298. tg_msgs_observer();
  299. }
  300.  
  301. }else{
  302. // important info log, which informs us that no messenger presented on a page
  303. console.log('We aint found shit');
  304. // check if we've reached the timeout. If we've reached the timeout - it means that the page is done loading, but mini-messenger window did not appear
  305. if ( initializer_timeout == 0 )
  306. {
  307. // If we got here, then we havent found the messenger. Try again
  308. setTimeout( look_at_telegram, 250 );
  309. }
  310.  
  311. }
  312.  
  313. }
  314.  
  315. function init2()
  316. {
  317. $('.composer_rich_textarea').addClass('ded2 tg_original_msg_input');
  318. $('.im_send_field_wrap.hasselect').append('<textarea type="text" class="composer_rich_textarea liz3_alt_msg_input" dir="auto" placeholder="Write a message..."></textarea>');
  319.  
  320. // setTimeout( tg_msgs_observer, 1500 );
  321. $(".liz3_alt_msg_input").on('keydown', function (e) {
  322. if (e.key === 'Enter' || e.keyCode === 13) {
  323. if($('.liz3_alt_msg_input').val().length > 0)
  324. {
  325. if( e.shiftKey && e.key === 'Enter' )
  326. {
  327. console.log('thats gonna be a line break')
  328. }else{
  329. console.log("input is full and we want to send");
  330. if ( window.liz3_quick_mute == 1 )
  331. {
  332. message_mitm_copier(0)
  333.  
  334. }else{
  335. if ( window.liz3_system_enabled == 1 && window.liz3_decrypt_only_v == 0)
  336. {
  337. if ( window.liz3_group_ignore_var == 1 )
  338. {
  339. if ( window.location.href.split('?p=')[1].charAt(0) == "u" || window.location.href.split('?p=')[1].charAt(0) == "@" )
  340. {
  341. message_mitm_copier(1)
  342. }else{
  343. // replace this command with a function !
  344. message_mitm_copier(0)
  345. }
  346. }else{
  347. message_mitm_copier(1)
  348. }
  349.  
  350. }else{
  351. message_mitm_copier(0)
  352. }
  353.  
  354. }
  355.  
  356. $('.im_submit').trigger('mousedown');
  357. $('.liz3_alt_msg_input').val('');
  358. setTimeout( make_input_great_again, 100 );
  359. console.log('is it what Im thinking about');
  360. // $('.liz3_alt_msg_input').focus();
  361.  
  362. /*
  363. setTimeout(() => {
  364. console.log('focus');
  365. $('.liz3_alt_msg_input').blur();
  366. $('.liz3_alt_msg_input').focus();
  367. }, 10);
  368. */
  369. console.log('pre return');
  370. return false;
  371.  
  372. }
  373. }else{
  374. console.log("input is empty");
  375. return false;
  376. }
  377. }
  378.  
  379. if (e.key === 'ArrowUp')
  380. {
  381. if($('.liz3_alt_msg_input').val().length > 0)
  382. {
  383. console.log('we have text in input - dont edit last msg');
  384. }else{
  385.  
  386. var se = jQuery.Event("keydown");
  387. se.keyCode = 38;
  388. $('.tg_original_msg_input').trigger(se);
  389.  
  390. setTimeout(() => {
  391. $('.liz3_alt_msg_input').val($('.tg_original_msg_input').text());
  392. }, 15);
  393. setTimeout( make_input_great_again, 100 );
  394.  
  395. }
  396. }
  397. });
  398.  
  399. $('.icon.icon-slash').closest('.composer_command_btn').remove();
  400. }
  401.  
  402. function tg_msgs_observer()
  403. {
  404. let tg_msgs_feed_observer = new MutationObserver(function(mutation) {
  405. // log that there were changes
  406. console.log("msg list change logged");
  407. setTimeout( liz3_tg_decrypt_all_msgs, 25 );
  408.  
  409. })
  410.  
  411. let observerConfig = {
  412. attributes: true,
  413. childList: true,
  414. attributeOldValue: true,
  415. characterData: true,
  416. subtree: true
  417. }
  418.  
  419.  
  420. let tg_msgs_feed_container = $('.im_history.im_history_selectable .im_history_messages');
  421.  
  422. for (i = 0; i < tg_msgs_feed_container.length; i++)
  423. {
  424. tg_msgs_feed_observer.observe(tg_msgs_feed_container[i], observerConfig);
  425. }
  426. }
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434. // =================================================
  435. //
  436. // MENU
  437. //
  438. // =================================================
  439.  
  440.  
  441. // img flip mode
  442. window.img_flip_mode = false;
  443.  
  444. // hax init
  445. window.hax_innit = true;
  446.  
  447. //lock menu
  448. window.menu_lock = false;
  449.  
  450. //====================================
  451. // pootis
  452. //====================================
  453. document.addEventListener('mousemove'
  454. , function(e){
  455. var x = e.clientX;
  456. var y = e.clientY
  457. window.cs_x = x + "px";
  458. window.cs_y = y + "px";
  459. });
  460. //====================================
  461. // pootis
  462. //====================================
  463.  
  464.  
  465. function img_flip(selector_fuck)
  466. {
  467. $(selector_fuck).toggleClass("flip_x");
  468. }
  469.  
  470.  
  471.  
  472.  
  473. // innit hax
  474.  
  475. document.addEventListener ("keydown", function (zEvent) {
  476.  
  477. if ( zEvent.keyCode == 27)
  478. {
  479. window.img_flip_mode = false;
  480. window.menu_lock = false;
  481. $("img").removeClass("elem_hover");
  482. }
  483.  
  484. if ( zEvent.altKey && zEvent.keyCode == 87 ) { // case sensitive
  485. if (hax_innit)
  486. {
  487. //
  488. // TODO: GET RID OF THE FUCKING INIT STAGE. IT'S USELESS TRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  489. // OR REMOVE THE CLASS_HIDDEN BEFORE MEASURING HEIGHT, AT LEAST
  490. //
  491. // ALSO THINK OF APPROPRIATE ORDER NO MATTER WHAT
  492. //
  493.  
  494. window.hax_innit = false;
  495. console.log("hax_created");
  496.  
  497. $('.bmenu_entry[bmenu_ischeckbox="1"] .bmenu_entry_left_side').append(' <div class="bmenu_checkbox bmenu_checkbox_checked_bg"> <div class="bmenu_checkbox_checkmark" bmenu_checkbox_checked="1"></div> </div>');
  498. $('.bmenu_entry[bmenu_ischeckbox="1"]').removeAttr('bmenu_ischeckbox');
  499. liz3_set_config()
  500.  
  501. $(".bmenu_root").removeClass("class_hidden");
  502. console.log($('.bmenu_root').outerHeight( true ));
  503. var calc_menu_y = cs_y;
  504. var calc_menu_x = cs_x;
  505.  
  506. if (parseInt(cs_y) > ( window.innerHeight - $('.bmenu_root').outerHeight( true ) ) )
  507. {
  508. var calc_menu_y = parseInt(cs_y) - ((parseInt(cs_y) + $('.bmenu_root').outerHeight( true )) - window.innerHeight) - 20;
  509. console.log('calc y is=' + calc_menu_y + ' original y is=' + cs_y);
  510. }
  511.  
  512. if (parseInt(cs_x) > ( window.innerWidth - $('.bmenu_root').outerWidth( true ) ) )
  513. {
  514. var calc_menu_x = parseInt(cs_x) - ((parseInt(cs_x) + $('.bmenu_root').outerWidth( true )) - window.innerWidth) - 20;
  515. console.log('calc x is ' + calc_menu_x + ' original x is ' + cs_x);
  516. }
  517. $(".bmenu_root")
  518. .css({
  519. left: calc_menu_x,
  520. top: calc_menu_y,
  521. });
  522.  
  523. }else{
  524.  
  525. if (menu_lock)
  526. {
  527. console.log("menu_locked");
  528. }else{
  529.  
  530. // DOES IT ACTUALLY MAKE ANY SENSE TO MEASURE THIS DYNAMICALLY ?????????????????????????????????????????????????????
  531. $(".bmenu_root").removeClass("class_hidden");
  532. var calc_menu_y = cs_y;
  533. var calc_menu_x = cs_x;
  534.  
  535. if (parseInt(cs_x) > ( window.innerWidth - $('.bmenu_root').outerWidth( true ) ) )
  536. {
  537. var calc_menu_x = parseInt(cs_x) - ((parseInt(cs_x) + $('.bmenu_root').outerWidth( true )) - window.innerWidth) - 20;
  538. console.log('calc x is ' + calc_menu_x + ' original x is ' + cs_x);
  539. }
  540.  
  541. if (parseInt(cs_y) > ( window.innerHeight - $('.bmenu_root').outerHeight( true ) ) )
  542. {
  543. var calc_menu_y = parseInt(cs_y) - ((parseInt(cs_y) + $('.bmenu_root').outerHeight( true )) - window.innerHeight) - 20;
  544. console.log('calc is ' + calc_menu_y + ' original is ' + cs_y);
  545. }
  546.  
  547. console.log('calc is ' + calc_menu_y + 'original is ' + cs_y);
  548.  
  549. $(".bmenu_root")
  550. .css({
  551. left: calc_menu_x,
  552. top: calc_menu_y,
  553. });
  554.  
  555. }
  556.  
  557. }
  558.  
  559. }
  560.  
  561. // Cancel edit on ctrl + q
  562. if ( zEvent.ctrlKey && zEvent.keyCode == 81)
  563. {
  564. console.log("ctrl + q");
  565. $('.liz3_alt_msg_input').val('');
  566. $('.im_send_reply_cancel').trigger('mousedown');
  567. setTimeout( make_input_great_again, 100 );
  568. }
  569.  
  570. });
  571.  
  572.  
  573.  
  574. // hax
  575. document.addEventListener('click', event => {
  576. // console.log("click_registered");
  577.  
  578.  
  579. // Close hax if clicked outside
  580. const bmenu_close = event.target.closest('.bmenu_menu');
  581. if (bmenu_close)
  582. {
  583. console.log("clicked_a_menu");
  584. }else{
  585. // console.log("clicked_not_menu");
  586. $(".bmenu_root").addClass("class_hidden");
  587. }
  588.  
  589.  
  590. // Menu entries processor. Thanks to shitty eval() we now don't have to create a new if attr check
  591. const bmenu_entry = event.target.closest('.bmenu_entry');
  592. if (bmenu_entry)
  593. {
  594. console.log("clicked_on_an_entry");
  595. eval($(bmenu_entry).attr("bmenu_opt"))()
  596. }
  597.  
  598.  
  599. // built-in image alter
  600. const questionable_img = event.target.closest('img');
  601. if (img_flip_mode)
  602. {
  603.  
  604. if (questionable_img)
  605. {
  606. img_flip(questionable_img);
  607. window.img_flip_mode = false;
  608. window.menu_lock = false;
  609. $("img").removeClass("elem_hover");
  610. }
  611.  
  612. }
  613.  
  614. const pswd_changer_cancel = event.target.closest('.pswd_editor_btn_cancel');
  615. if (pswd_changer_cancel)
  616. {
  617. $('#global_password_changer').addClass('class_hidden');
  618. $('#global_password_changer input').val('');
  619. }
  620.  
  621.  
  622. const pswd_changer_apply = event.target.closest('.pswd_editor_btn_apply');
  623. if (pswd_changer_apply)
  624. {
  625. setCookie('liz3_cur_pswd', CryptoJS.MD5($('#global_password_changer input').val()), 420)
  626. $('#global_password_changer').addClass('class_hidden');
  627. $('#global_password_changer input').val('');
  628. }
  629.  
  630.  
  631. // edit button. Make it copy the message to our shit
  632. const msg_btn_selective_edit = event.target.closest('.btn.btn-primary.im_edit_reply_btn[ng-click="selectedEdit()"]');
  633. if (msg_btn_selective_edit)
  634. {
  635. setTimeout(() => {
  636. $('.liz3_alt_msg_input').val($('.tg_original_msg_input').text());
  637. }, 15);
  638. }
  639.  
  640. const toybox_spammer_conf = event.target.closest('.illuminati_confirm');
  641. if (toybox_spammer_conf)
  642. {
  643. if( $('.illuminati_msg').val().length > 0 && $('.illuminati_int').val().length > 0 && $('.illuminati_count').val().length > 0 && $('.illuminati_info_freq').val().length > 0)
  644. {
  645. $('.illuminati_place').addClass('class_hidden');
  646. super_msg_spammer($('.illuminati_msg').val(), $('.illuminati_int').val(), $('.illuminati_count').val(), $('.illuminati_info_freq').val())
  647. $('.illuminati_msg').val('lol');
  648. $('.illuminati_int').val('1');
  649. $('.illuminati_count').val('10');
  650. $('.illuminati_info_freq').val('5');
  651. }else{
  652. console.log('spammer config invalid!');
  653. }
  654. }
  655.  
  656. const bmenu_input_autoselect = event.target.closest('.bmenu_row_text_input');
  657. if (bmenu_input_autoselect)
  658. {
  659. $(bmenu_input_autoselect).select();
  660. $('.mrk_ect_tooltip_box').addClass('class_hidden');
  661. }
  662.  
  663. const bmenu_cancel_illuminati = event.target.closest('.cancel_illuminati');
  664. if (bmenu_cancel_illuminati)
  665. {
  666. $('.illuminati_place').addClass('class_hidden');
  667. $('.illuminati_msg').val('lol');
  668. $('.illuminati_int').val('1');
  669. $('.illuminati_count').val('10');
  670. $('.illuminati_info_freq').val('5');
  671. }
  672.  
  673.  
  674. });
  675. // hax
  676.  
  677. document.addEventListener('mouseover', event => {
  678. // ===========================
  679. // Tooltip
  680. // ===========================
  681. const cursor_over_tooltip_obj = event.target.closest('*[mrk_ect_tooltip]');
  682. if (cursor_over_tooltip_obj)
  683. {
  684. mrk_ect_timer = setTimeout(function() {
  685. console.log('delayed call');
  686. $('.mrk_ect_tooltip_box').css({top: cs_y, left: parseInt(cs_x) - 30 + 'px'});
  687. $('.mrk_ect_tooltip_box').removeClass('class_hidden');
  688. $('.mrk_ect_tooltip_box').text($(cursor_over_tooltip_obj).attr('mrk_ect_tooltip'));
  689. }, mrk_ect_tooltip_timeout);
  690. }
  691. // ===========================
  692. // Tooltip
  693. // ===========================
  694. });
  695.  
  696. document.addEventListener('mouseout', event => {
  697. // ===========================
  698. // Tooltip
  699. // ===========================
  700. const cursor_over_tooltip_obj_leave_soon = event.target.closest('*[mrk_ect_tooltip]');
  701. if (cursor_over_tooltip_obj_leave_soon)
  702. {
  703. clearTimeout(mrk_ect_timer);
  704. $('.mrk_ect_tooltip_box').addClass('class_hidden');
  705. }
  706. // ===========================
  707. // Tooltip
  708. // ===========================
  709. });
  710.  
  711.  
  712.  
  713.  
  714.  
  715. function action_if_pizza()
  716. {
  717. glob_hmenu()
  718. console.log('dominos');
  719. }
  720.  
  721.  
  722. function glob_hmenu()
  723. {
  724. $(".bmenu_root").addClass("class_hidden");
  725. }
  726.  
  727.  
  728.  
  729. function bmenu_imgflip()
  730. {
  731. glob_hmenu()
  732. console.log("imgflipped");
  733. window.img_flip_mode = true;
  734. window.menu_lock = true;
  735. $("img").addClass("elem_hover");
  736. }
  737.  
  738.  
  739. function decrypt_pswd_changer()
  740. {
  741. // hide the menu
  742. glob_hmenu()
  743. $("#global_password_changer").removeClass('class_hidden');
  744. $("#global_password_changer")
  745. .css({
  746. left: cs_x,
  747. top: cs_y,
  748. })
  749. $("#global_password_changer input").select();
  750.  
  751. }
  752.  
  753.  
  754. function liz3_tg_decrypt_all_msgs()
  755. {
  756. $('.im_message_text:contains(enc_dat420;)').each(function(){
  757. $(this).html($(this).html().split('enc_dat420;').join(''));
  758. console.log("corrected msg is " + $(this).text());
  759. $(this).text(CryptoJS.AES.decrypt($(this).text(), liz3_current_session_password).toString(CryptoJS.enc.Utf8));
  760. });
  761.  
  762. $('span .im_short_message_text:contains(enc_dat420;)').each(function(){
  763. $(this).html($(this).html().split('enc_dat420;').join(''));
  764. console.log("corrected msg is " + $(this).text());
  765. $(this).text(CryptoJS.AES.decrypt($(this).text(), liz3_current_session_password).toString(CryptoJS.enc.Utf8));
  766. });
  767. }
  768.  
  769.  
  770. function make_input_great_again()
  771. {
  772. console.log('focus');
  773. $('.liz3_alt_msg_input').blur();
  774. $('.liz3_alt_msg_input').focus();
  775. }
  776.  
  777.  
  778. // good cookie reference
  779. function enable_liz3()
  780. {
  781. glob_hmenu()
  782. checkbox_activator($('.bmenu_entry[bmenu_opt="enable_liz3"] .bmenu_checkbox'), "toggle");
  783. window.liz3_system_enabled ^= 1;
  784. liz3_current_config[0] ^= 1;
  785. setCookie('liz3_config', liz3_current_config.join('-'), 420)
  786. }
  787.  
  788. function liz3_quick_mute()
  789. {
  790. glob_hmenu()
  791. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_quick_mute"] .bmenu_checkbox'), "toggle");
  792. window.liz3_quick_mute ^= 1;
  793. liz3_current_config[1] ^= 1;
  794. setCookie('liz3_config', liz3_current_config.join('-'), 420)
  795. }
  796.  
  797. function liz3_dark_theme_menu_call()
  798. {
  799.  
  800. if ( window.liz3_dark_mode == 0 )
  801. {
  802. $('body').append('<style id="liz3_darkmode_css">@import url("https://dl.dropbox.com/s/tuk1t8ntvn84375/dark.css?dl=0");</style>');
  803. }else{
  804. $('#liz3_darkmode_css').remove();
  805. }
  806. glob_hmenu()
  807. window.liz3_dark_mode ^= 1;
  808. liz3_current_config[2] ^= 1;
  809. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_dark_theme_menu_call"] .bmenu_checkbox'), "toggle");
  810. setCookie('liz3_config', liz3_current_config.join('-'), 420)
  811.  
  812. }
  813.  
  814. function liz3_dark_theme_page_load()
  815. {
  816. if ( window.liz3_dark_mode == 1 )
  817. {
  818. $('body').append('<style id="liz3_darkmode_css">@import url("https://dl.dropbox.com/s/tuk1t8ntvn84375/dark.css?dl=0");</style>');
  819. }
  820. }
  821.  
  822.  
  823. function liz3_group_ignore()
  824. {
  825. glob_hmenu()
  826. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_group_ignore"] .bmenu_checkbox'), "toggle");
  827. window.liz3_group_ignore_var ^= 1;
  828. liz3_current_config[3] ^= 1;
  829. setCookie('liz3_config', liz3_current_config.join('-'), 420)
  830. }
  831.  
  832.  
  833.  
  834. function super_msg_spammer(msg, int, count, notify)
  835. {
  836. /*
  837. var message = "lolly"; // spam message
  838. var interval = 0.1 ; // in seconds
  839. var count = 100 ; // number of times to send
  840. var notifyInterval = 5 ; // notify
  841. */
  842. var message = msg; // spam message
  843. var interval = int ; // in seconds
  844. var count = count ; // number of times to send
  845. var notifyInterval = notify ; // notify
  846.  
  847. var i = 0 ;
  848. var timer = setInterval(function(){
  849. document.getElementsByClassName('composer_rich_textarea')[0].innerHTML = message;
  850. $('.im_submit').trigger('mousedown');
  851. i++;
  852. if( i == count )
  853. clearInterval(timer);
  854. if( i % notifyInterval == 0)
  855. console.log(i + ' MESSAGES SENT');
  856. } , interval * 1000 ) ;
  857. }
  858.  
  859.  
  860. function toybox_msg_spammer()
  861. {
  862. glob_hmenu()
  863. $('.illuminati_place').removeClass('class_hidden');
  864.  
  865.  
  866. var calc_menu_y = cs_y;
  867. var calc_menu_x = cs_x;
  868.  
  869. if (parseInt(cs_x) > ( window.innerWidth - $('.illuminati_place').outerWidth( true ) ) )
  870. {
  871. var calc_menu_x = parseInt(cs_x) - ((parseInt(cs_x) + $('.illuminati_place').outerWidth( true )) - window.innerWidth) - 20;
  872. console.log('calc x is ' + calc_menu_x + ' original x is ' + cs_x);
  873. }
  874.  
  875. if (parseInt(cs_y) > ( window.innerHeight - $('.illuminati_place').outerHeight( true ) ) )
  876. {
  877. var calc_menu_y = parseInt(cs_y) - ((parseInt(cs_y) + $('.illuminati_place').outerHeight( true )) - window.innerHeight) - 20;
  878. console.log('calc is ' + calc_menu_y + ' original is ' + cs_y);
  879. }
  880.  
  881.  
  882. $(".illuminati_place")
  883. .css({
  884. left: calc_menu_x,
  885. top: calc_menu_y,
  886. });
  887.  
  888. }
  889.  
  890.  
  891. function liz3_decrypt_only()
  892. {
  893. glob_hmenu()
  894. checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_decrypt_only"] .bmenu_checkbox'), "toggle");
  895. window.liz3_decrypt_only_v ^= 1;
  896. liz3_current_config[4] ^= 1;
  897. setCookie('liz3_config', liz3_current_config.join('-'), 420)
  898. }
  899.  
  900.  
  901. function message_mitm_copier(enc)
  902. {
  903. if ( parseInt(enc) == 1 )
  904. {
  905. var encrypted_beforesend = CryptoJS.AES.encrypt($('.liz3_alt_msg_input').val(), liz3_current_session_password);
  906. $('.tg_original_msg_input').text('enc_dat420;' + encrypted_beforesend);
  907. }else{
  908. $('.tg_original_msg_input').text($('.liz3_alt_msg_input').val());
  909. }
  910. }
  911.  
  912.