QUICKLY SOLVING JIGSAWEXPLORER PUZZLES

2024-03-28

BACKGROUND

I was contacted this week by a geocacher called Dominik who, like me, loves
geocaching.... but hates it when the coordinates for a cache are hidden behind
a virtual jigsaw puzzle.

A popular online jigsaw tool used by lazy geocache owners is Jigidi: I've come
up with several techniques for bypassing their puzzles or at least making them
easier.

Dominik had been looking at a geocache hidden last week in Eastern France and
had discovered that it used JigsawExplorer, not Jigidi, to conceal the
coordinates. Let's take a look...
I experimented with a few ways to work-around the jigsaw, e.g. dramatically
increasing the "snap range" so dragging a piece any distance would result in
it jumping to a neighbour, and extracting original image URLs from
localStorage. All were good, but none were perfect.

For a while, making pieces "snap" at any range seemed to be the best hacky
workaround.

Then I realised that - unlike Jigidi, where there can be a congratulatory
"completion message" (with e.g. geocache coordinates in) - in JigsawExplorer
the prize is seeing the completed jigsaw.
Let's work on attacking that bit of functionality. After all: if we can bypass
the "added challenge" we'll be able to see the finished jigsaw and, therefore,
the geocache coordinates. Like this:

HACKAROUND

Here's how it's done. Or keep reading if you just want to follow the
instructions!
* Open a jigsaw and try the "box cover" button at the top. If you get the
message "This puzzle's box top preview is disabled for added challenge.",
carry on.
* Open your browser's debug tools (F12) and navigate to the Sources tab.
* Find the jigex-prog.js file. Right-click and select Override Content (or Add
Script Override).
* In the overridden version of the file, search for the string -
e&&e.customMystery?tt.msgbox("This puzzle's box top preview is disabled for
added challenge."): - this code checks if the puzzle has the "custom mystery"
setting switched on and if so shows the message, otherwise (after the :) shows
the box cover.
* Carefully delete that entire string. It'll probably appear twice.
* Reload the page. Now the "box cover" button will work.

The moral, as always, might be: don't put functionality into the client-side
JavaScript if you don't want the user to be able to bypass it.

Or maybe the moral is: if you're going to make a puzzle geocache, put some
work in and do something clever, original, and ideally with fieldwork rather
than yet another low-effort "upload a picture and choose the highest number of
jigsaw pieces to cut it into from the dropdown".

LINKS
Jigidi
My first effort at defeating Jigidi
My second effort at defeating Jigidi
New geocache GCAN2YC, which Dominick identified
JigsawExplorer