Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Tripcode breaker kot v2
  3. // @description Breaks weak tripcodes on 4chan.
  4. // @include https://kotchan.org/chat/*
  5. // @grant GM_xmlhttpRequest
  6. // ==/UserScript==
  7.  
  8.  
  9. function showTrip (e) {
  10. var tnode = document.evaluate("./text()", e.target, null, XPathResult.ANY_TYPE, null).iterateNext();
  11. if (tnode != null) tnode.nodeValue = e.target.getAttribute("trip");
  12. }
  13.  
  14. function showPWD (e) {
  15. var tnode = document.evaluate("./text()", e.target, null, XPathResult.ANY_TYPE, null).iterateNext();
  16. if (tnode != null) tnode.nodeValue = e.target.getAttribute("pwd");
  17. }
  18.  
  19. function setName (e) {
  20. var nameMatches = document.getElementsByName("chat_name");
  21. if ( nameMatches.length > 0 ){
  22. var namePath = "ancestor-or-self::output[@class='trip_code']/preceding-sibling::span[@class='chat_name']/descendant::text()";
  23. var namemode = document.evaluate(namePath, e.target, null, XPathResult.ANY_TYPE, null).iterateNext();
  24. var name = ( nameNode != null ) ? nameNode.nodeValue : "";
  25. for (var i = 0; i < name.length; i++) {
  26. if (name.charAt(i) == "\u202B" || name.charAt(i) == "\u202E") {
  27. name = name.substr(0, name.length - 1);
  28. } else {
  29. break;
  30. }
  31. }
  32. nameMatches[0].value = name + e.target.getAttribute("pwd");
  33. }
  34. }
  35.  
  36. function lookUp (trips) {
  37. console.log("Looking up trips.");
  38. for (var i = 0; i < trips.snapshotLength; i++){
  39. var tripNode = trips.snapshotItem(i);
  40. var trip = tripNode.nodeValue;
  41. var parts = trip.match(/([^!]*)((\![^!]+)?)((\!\![^!]+)?)/);
  42. var pwd = parts[1];
  43. if (parts[2] != ""){
  44. if (parts[2] in brokenTrips) {
  45. pwd += brokenTrips[parts[2]];
  46. } else {
  47. pwd += parts[2];
  48. }
  49. }
  50. if (parts[4] != "") {
  51. if (parts[4] in brokenTrips) {
  52. if (parts[2] == "") pwd += "#";
  53. pwd += brokenTrips[parts[4]];
  54. } else {
  55. pwd += parts[4];
  56. }
  57. }
  58. if (pwd != trip) {
  59. cracked++;
  60. tripNode.nodeValue = pwd;
  61. tripNode.parentNode.setAttribute("trip", trip);
  62. tripNode.parentNode.setAttribute("pwd", pwd);
  63. tripNode.parentNode.addEventListener("mouseover", showTrip, false);
  64. tripNode.parentNode.addEventListener("mouseout", showPWD, false);
  65. tripNode.parentNode.addEventListener("click", setName, false);
  66. }
  67. }
  68. console.log("Found "+trips.snapshotLength+" trips, cracked "+cracked);
  69. }
  70.  
  71.  
  72.  
  73. function getTrips () {
  74. if ( !localStorage.tripBreak ) {
  75. console.log("Requesting trips");
  76. GM_xmlhttpRequest({
  77. method: "GET",
  78. url: "http://m.uploadedit.com/bbtc/1560488240643.txt",
  79. onload: function (response) {
  80. var lines = response.responseText.split("\r\n");
  81. for (var i = 0; i < lines.length; i++) {
  82. var parts = lines[i].match(/(([^!]+)?)((\![^!]+)?)((\!\![^!]+)?)/);
  83. if (parts[3] != "") brokenTrips[parts[3]] = "#" + parts[1];
  84. if (parts[5] != "") brokenTrips[parts[5]] = "#" + parts[1];
  85. //console.log(brokenTrips.length)
  86. }
  87. }
  88. })
  89. lookUp(trips);
  90. localStorage.brokenTrips = JSON.stringify(brokenTrips);
  91. } else {
  92. console.log("Loading trips from localStorage");
  93. brokenTrips = JSON.parse(localStorage.brokenTrips);
  94. lookUp(trips);
  95. }
  96. console.log(brokenTrips.length,"after");
  97. }
  98.  
  99. var tripPath;
  100. var trips;
  101. var cracked = 0;
  102. var brokenTrips = [];
  103.  
  104. function load() {
  105. tripPath = "descendant::output[@class='trip_code']/descendant-or-self::*[text()!='']/text()";
  106. trips = document.evaluate(tripPath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  107. console.log("Loading tripbreaker");
  108. getTrips();
  109. console.log("Trip breaker fully loaded");
  110.  
  111. }
  112.  
  113. window.onload = function() {setTimeout(function(){load();},8000)}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement