]> gitweb.michael.orlitzky.com - charm-bypass.git/commitdiff
index.html.in: support random and user-specified security codes
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 24 Oct 2023 14:10:39 +0000 (10:10 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 24 Oct 2023 14:14:03 +0000 (10:14 -0400)
The security code will now be set at page-load to a random two digit
string with characters taken from the set [0-9A-Z]. I've never
actually seen two consecutive digits (zero through nine) in the
official app; but it's good enough for now.

What's better is that you can pass ?code=YO via URL paramaters to set
the code to "YO". Since the code only changes once every day, a
one-way ticket revealing the code now essentially gets you a day pass.

Note: The resulting codes are not usually centered properly (yet).

index.html.in

index 13a10e350010e8622ba9885abff4f83fbda8bb81..0bec5e720a4efcf39df02f38e87054e7866d37c1 100644 (file)
       window.addEventListener("load", center_ticket);
 
 
+      /*************************/
+      /* Set the security code */
+      /*************************/
+
+      /* All <text> elements produced by inkscape contain a single <tspan>
+       * that itself contains the actual text. */
+      const ct = document.getElementById("codetext");
+
+      /* Get the "code" from the querystring if it's there */
+      let params = new URLSearchParams(document.location.search);
+      if (params.get("code")) {
+        ct.firstChild.textContent = params.get("code");
+      }
+      else {
+        /* Otherwise, use a random code */
+        const bucket = ["0","1","2","3","4","5","6","7","8","9",
+                        "A","B","C","D","E","F","G","H","I","J",
+                        "K","L","M","N","O","P","Q","R","S","T",
+                        "U","V","W","X","Y","Z"];
+
+        /* Two random ints between 0 and 35 */
+        const i1 = Math.floor(Math.random() * 36);
+        const i2 = Math.floor(Math.random() * 36);
+        const d1 = bucket[i1];
+        const d2 = bucket[i2];
+        ct.firstChild.textContent = d1 + d2;
+      }
+
       /*****************************************/
       /* Next, set up the ticket date and time */
       /*****************************************/