Ok you have the choice with this kind of chall:
- you can print, cut, and put it back in order by hand, like a jigsaw puzzle,
- or you can code a python script to solve it.
Several algorithms are possible for this:
- The easiest way is to calculate the best Euclidean distance for a definite piece with each others pieces
Piece1 = Get_piece(Puzzle, 1) Border1 = Get_Border(Piece1,'N') #'N = North' for each Piece of Puzzle : Border = Get_Border(Piece,'S') #'S = South' if Euclidian(Piece, Piece1) < Distance (Distance, Match_Piece) = Euclidian(Piece, Piece1) return (Distance, Match_Piece)
I offer you a tool that will help you solve this puzzle 👇
- Clone the tool :
git clone https://github.com/totoiste/CTFPuzzleSolverAssistant
- Run it with these args :
python3 pict_puzzle.py -f puzzle-trouble-easy.jpg -r 8 -c 8
- Guess the top left Corner by searching the best match piece after piece : here it is the piece number 60
- Move it to the left corner then solve line by line and column by column and block piece at the right place with double click