From 8625c57d1a0d20b236d5e962d3ee89c309738ffc Mon Sep 17 00:00:00 2001 From: Julien CLEMENT Date: Wed, 3 May 2023 01:49:47 +0200 Subject: [PATCH] working on picasso wu Signed-off-by: Julien CLEMENT --- .../writeups/fcsc_2023/brachiosaure.md | 5 +- jujure/content/writeups/fcsc_2023/picasso.md | 442 ++++++++++++++++++ jujure/static/picasso/allowed_moves.c | 131 ++++++ jujure/static/picasso/cube_indexes.png | Bin 0 -> 90076 bytes jujure/static/picasso/cube_init.png | Bin 0 -> 76652 bytes jujure/static/picasso/main.c | 71 +++ jujure/static/picasso/meme.jpg | Bin 0 -> 61137 bytes jujure/static/picasso/permutations.c | 37 ++ jujure/static/picasso/permutations_array.c | 56 +++ jujure/static/picasso/picasso | Bin 0 -> 15168 bytes jujure/static/picasso/slide.c | 67 +++ jujure/static/picasso/slide_solver.rs | 194 ++++++++ jujure/static/picasso/starting_grid.png | Bin 0 -> 15602 bytes jujure/static/picasso/swaps.png | Bin 0 -> 20862 bytes jujure/static/picasso/target_grid.png | Bin 0 -> 15606 bytes 15 files changed, 1002 insertions(+), 1 deletion(-) create mode 100644 jujure/content/writeups/fcsc_2023/picasso.md create mode 100644 jujure/static/picasso/allowed_moves.c create mode 100644 jujure/static/picasso/cube_indexes.png create mode 100644 jujure/static/picasso/cube_init.png create mode 100644 jujure/static/picasso/main.c create mode 100644 jujure/static/picasso/meme.jpg create mode 100644 jujure/static/picasso/permutations.c create mode 100644 jujure/static/picasso/permutations_array.c create mode 100755 jujure/static/picasso/picasso create mode 100644 jujure/static/picasso/slide.c create mode 100644 jujure/static/picasso/slide_solver.rs create mode 100644 jujure/static/picasso/starting_grid.png create mode 100644 jujure/static/picasso/swaps.png create mode 100644 jujure/static/picasso/target_grid.png diff --git a/jujure/content/writeups/fcsc_2023/brachiosaure.md b/jujure/content/writeups/fcsc_2023/brachiosaure.md index 783797f..4353083 100644 --- a/jujure/content/writeups/fcsc_2023/brachiosaure.md +++ b/jujure/content/writeups/fcsc_2023/brachiosaure.md @@ -1,6 +1,6 @@ --- title: "Inverting a bunch of matrices because reverse engineering or something | Brachiosaure @ FCSC 2023" -date: "2023-04-30 18:00:00" +date: "2023-05-01 18:00:00" author: "Juju" tags: ["Reverse", "Writeup", "fcsc"] toc: true @@ -30,6 +30,9 @@ Author: `\J` [brachiosaure](/brachiosaure/brachiosaure) +# Writeup + + ## Overview As we can guess from the challenge description, this binary will take images diff --git a/jujure/content/writeups/fcsc_2023/picasso.md b/jujure/content/writeups/fcsc_2023/picasso.md new file mode 100644 index 0000000..d0a8be4 --- /dev/null +++ b/jujure/content/writeups/fcsc_2023/picasso.md @@ -0,0 +1,442 @@ +--- +title: "Scripting reverse challenges is overrated anyway | Picasso @ FCSC 2023" +date: "2023-05-01 18:00:00" +author: "Juju" +tags: ["Reverse", "Writeup", "fcsc"] +toc: true +--- + +# Intro + +Yes, this is yet another puzzle reversing challenge from `\J` for the FCSC 2023, +yes I swear I'm also able to flag other types of challenges too, I can't help I +like algorithms too much. I will try to make lower level content soon :tm: +:eyes:. + +Yes I also know that `face0xff` already did a +[writeup](https://ctf.0xff.re/2023/fcsc-2023/picasso) on this, but I still want +to writeup it because I liked the challenge and even though my solution is kind +of overengineered compared to the one of `face0xff`, I really enjoyed writing +the solver algorithm for the first puzzle (and my way of solving the last puzzle +was ... experimental to says the least). + +{{< image src="/picasso/meme.jpg" style="border-radius: 8px;" >}} + + +## Challenge description + +`reverse` | `482 pts` `8 solves` `:star::star::star:` + +``` +Trouvez une entrée permettant d'afficher le message de réussite, et envoyez-la +sur le service distant pour récupérer le flag. + +nc challenges.france-cybersecurity-challenge.fr 2251 + +SHA256(picasso) = +f3d6aafce2c069fdf486fce75112ccc09593ddd54452407d4cf066be12daf7fd. +``` + +Author: `\J` + +## Given files + +[picasso](/picasso/picasso) + +# Writeup + +## Reverse + +### Overview + +OK, nothing magic you know how this works: it's a puzzle, we need to find the +input that solves said puzzle. Now the twist is that knowing how `\J` writes his +challenges, the problem is either NP-complete, obfuscated with 50+ nanomites or +put together with 12 other puzzles that must be solved together with the same +input. Make your bet, which one is it this time ? + +So I open up my decompiler and I find a single function, the whole thing holds +in a single function in less than `0x200` bytes of machine code. Let's look this +up. + +{{< code file="/static/picasso/main.c" language="c" >}} + +So I cleared everything so you can understand the structure of the code. It is +really simple: + +- First the program copies `0x36` bytes from the init_state array to a local array +- It then prompts for the password, asking for a maximum of 24 bytes +- Initialize an index that will be used to iterate over the input in an infinite loop +- We have 2 clear parts in this loop: + - The first one when we are done iterating on the input: We will go back to what this does later but we can clearly see that it performs the final check and prints us the flag if we are good. + - The second one is the part that iterates on the input, so the one that is executed first. We can also see that it matches the characters from ou input against lower case letters, instantly exiting the program if it isn't one + +A first look at the init state shows us that it only contains only numbers +between 0x0 and 0xf, a good hint that it may be used to index an array of `0x10` +elements. + +### Permutations on the state + +Let's start by looking inside that `else` block since it is the one doing stuff +with our input. + +Ok so first thing you need to notice: you may think that characters is matched +on all lowercase letters but if you look closely, the `'i'` and the `'o'` +are missing, thus giving us an alphabet of 24 elements. + +I know what you are thinking `"But that's also the total size of the input, so +characters from the input are used to index said input"`, yeah that could have +been a good idea, but it does't and it is simply a coincidence. + +So anyway we recover the index of the character in the alphabet and divide it +by 4. The remainder is kept for later and the quotient is used to index +a permutations matrix, which holds 6 permutaion tables of 0x36 elements each. + +The permutation matrix is linearized though so I already redefined the dimesions +so that's why it's showing really nicely in the code below. But to know the +dimensions I basically saw that the permutation matrix was indexed by `(pos / 4) * 0x36` since our alphabet holds 24 characters, that gives us `24 / 4 == 6` arrays of size `0x36` in the matrix. We can confirm the 0x36 is we will iterate over `0x36` elements of the permutation array right after this. + +We then copy the state and apply the permutations to it given by the fetched +permutation array. We repeat this process N times, N being `pos % 4`. We do not +actually really care about the copy, it is simply there as temporary buffer so +that permutations don't cancel each other or erase data in the state, it is +juste an implementation detail. + +So to sum this up, each character from our input will chose a permutation array +to apply to our state and how many times to apply the permutation. They are 6 +permutations table possibles, and we can apply the same permutation between 0 +and 3 times with a single input character. + +So basically our input controls how we will shuffle the initial state. + +You can also see right bellow the code a sample of the permutations matrix, +values seem really arbitrary but let's see if you can already get a feeling of +what this is doing, I will explain it after understanding the entire `if` block +containing the final check. + +{{< code file="/static/picasso/permutations.c" language="c" >}} + +And here a sample of the permutation matrix, telling you where each index of the +state is going to be moved. + +{{< code file="/static/picasso/permutations_array.c" language="c" >}} + + +### State checker + +OK so the first part shuffled the state, so now I guess this simply checks if +the resulting shuffled state is valid. + +This one may be kind of tricky if you want to understand the implementations +details, if you don't care you can just skip right when I will recap what the +puzzle actually is. + +So I already renamed everything to keep it clear, I invite you to follow the +code and its explanations a bit lower in parallel. + + +{{< code file="/static/picasso/slide.c" language="c" >}} + +Basically you start with a board represented as an `uint64_t` intialized at +`0x3da8e0915f2c4b67`. For now, view this board as an array of 16 elements, each element being 4 bits (`4 * 16 = 64`). + +As you know bits is a single hexadecimal digit, so actually each hexadecimal +digit from this board is an element, so in the initial state the board is: +`[3, d, a, 8, e, 0, 9, 1, 5, f, 2, c, 4, b, 6, 7]` + +You may have noticed that every element is unique, they represent the entire +range of numbers between 0x0 and 0xf, this is no coincidence. + +We then create some variables that we will ignore for now, and an index (`i`) +that will be used to iterate over the state that was shuffled in the first part. + +While iterating on the state, we fetch the current byte from the state, extended +to 64 bits. Remember how we told that state only held values between `0` and `0xf` at the beginning ? Good, you are starting to see a pattern. + +We crate a pointer a variable I called `allowed_moves`, it is once again a two +dimensionnal array because we iterate over it in a nested loop. I knew its +dimensions because this is the part to go to the next sub-array: + +```c +allowed_moves += 0x28; +``` + +So I knew each sub-array is `0x28` bytes, and I saw that the index used to +iterrate the outer loop is the `shifter` variable, initialized to `0x3c` and +decremented by `4` each loop until it is strictly negative, so a total of `0x10` +iterations. We then have a matrix containing `0x10` arrays of `0x28`. + +I also knew that the `0x28` bytes corresponded to 5 `uint64_t` since the inner +loop iterate over an `uint64_t *` + +I pasted the entire content of this matrix below so you can have a look, you +will see that every element of this matrix has a single bit set to 1, and bits that are all sets at a position of `0 % 4` for that matter. + +Okay let's take a look at the `shifter`. it is initialized to `0x3c` and is used +to shift the `board`, before keeping only the lowest weight hex-digit with the +`& 0xf`. The hex digit is then compared against the byte we fetched from our +state. If they differ, we basically skip this loop, decrementing the `shifter` +by 4 (meaning that on the next iteration we will select the next hex digit of +the board), and go to the next array in the `allowed_moves` matrix. + +So to recap this, if you consider the `board` as an array of 4 bits elements, +`shifter` is actually an index used to iterate over this array. So we are +iterating to find at which index is the byte from the `state` inside the +`board`. `allowed_moves` will follow the same iterations, meaning that we will +select an `allowed_moves` sub-array based on where the `state` byte is located +in the `board`. + +Good, so once we find out `state` byte inside `board` we start iterating over +the `allowed_moves`, basically the move is multiplied by `0xf`, which will effectively set the 4 bits corresponding to the single bit in the initial move, this will now be used as a mask on the board. + +So this move simply selects an hex digit from the board actually, if the +selected byte is NOT 0, then we continue the loop, skipping the move, but it is +0, then we exit the loop. Final check to see if the move itself was not, if it +is then we go back to trying the next `shifter` and `allowed_moves`, if not then +gg we selected a move. If at the end, no move was selected we go out of +the loop and basically lose. + +So whatever this means, a valid move from a certain position in the board, must +match with the `0` digit from the `board` being at certain indexes, which, for now since we did dig up the `allowed_moves` matrix yet, feel kind of arbitrary. + +Feeling confused ? Don't worry it will soon make sense. + +{{< code file="/static/picasso/allowed_moves.c" language="c" >}} + + +Great, we now have a `move` which is the index of the `0` element of the board, +a `shifter`, being the index of the byte from our `state` in the same board. The +previous paragraph was meant to make sure this move/shifter association is +valid. + +Let's talk about the `swapper` now, it is composed of 2 parts: + +- `c << shifter`: so it will be the representation of the board as if only `c` +was on it +- `c * move`: the representation of the board as if `c` was at the +position indicated by the move, and no other element on the board. + +We then compute the next board by `xoring` the current on with the swapper. +This will have the effect to `xor` the current element of the `state` AND the +current `0` from the board with the current element of the `state`. This will +have the effect to actually swap the `0` and our element of the `state`. + +And after that we simply go the next `state` byte, until we have done all `0x36` +of them. + +Let's recap: + +- each character from the `state` selects the corresponding hex digit in the +board. + +- According to its position in the board, we will try to find a valid move, +being a move that have `0` as destination, but only certains positions of `0` +are allowed according to were the hex digit was in the board. + +- If a valid move was found, then we swap the `0` and the `state` byte. + +FINALLY, there is the final check, after all the moves from the state have been applied, the board must be `0x123456789abcdf0`. + +Great, now let's look at the `allowed_moves`. + +So what I did to understand what all those valid moves were was to take a pen, +drew and array of 16 elements, and for each element I drew an arrow to every +valid moves from that position. So just ignore that there has to be a `0` at +these positions for now, it's simply a matter of "if there was a 0 there, could +I move here ?". And it started looking like this for the first few elements: + +{{< image src="/picasso/swaps.png" style="border-radius: 8px;" >}} + +What you need to notice is that every move can be inverted, so you can back to your position after moving. MOST tiles can go to the tiles right next to them or to the tiles that are 4 tiles farther. For example, tile at index 1 can go either at 0, 2, or 5. You are probably starting to understand, let's just put +the final touch: 3 cannot go to 4 and vise-versa. + +So this is simply a flattened 4 * 4 grid, where you can only move to the +adjacent tiles. Let's now replace the indexes I put in the diagram above with +the actual values of the initial board (`0x3da8e0915f2c4b67`) we have: + +{{< image src="/picasso/starting_grid.png" style="border-radius: 8px;" >}} + +I know you understood everything but let's just see the target board +(`0x123456789abcdef0`): + +{{< image src="/picasso/target_grid.png" style="border-radius: 8px;" >}} + +So we need to get from one to the other in `0x36` moves exactly, each move swapping the 0 with an adjacent tile. + +Cool, all of this simply for a slide puzzle. Each element of the state corresponds to the tile that we must push on the `0` (which represent the empty tile in the slide puzzle). Let's go and solve th... + + +### But wait there was a first step + +I hope you did not forgot that the state used to select which tiles are moved in +which order was shuffled by the first step 1 according to our input. + +Maybe it's time to understand how this shuffle work. + +OK so I got this one super fast actually, let's just get you the context back: + +- 6 permutations tables possibles +- each can be applied `[0;4[` times each time +- `0x36 == 54` elements in the state + +If you are a puzzle fan you already what this is I don't even need to show you +the permutation matrix again but hey: + +```c +char permutations[0x6][0x36] = +{ + [0x0] = + { + [0x00] = 0x09 + [0x01] = 0x01 + [0x02] = 0x02 + [0x03] = 0x0c + [0x04] = 0x04 + [0x05] = 0x05 + [0x06] = 0x0f + [0x07] = 0x07 + [0x08] = 0x08 + [0x09] = 0x2d + ... + [0x34] = 0x34 + [0x35] = 0x35 + } + [0x1] = + { + [0x00] = 0x00 + [0x01] = 0x01 + ... +``` + +Literally what I did is I saw the first permutation table, noticed that only 1 +element out of 3 were moving (so I though this was a 3 * 3 array) and that the +first ones were moving 9 tiles further than there original location (so probaly +a 3 * 3 * 3 cube), oh wait did I say cube ? 6 faces ? can be rotated up to 3 times ? 54 elements ? yeah ok you got it aswell. + +It's a rubiks cube. + +Each permutation table is a counter-clockwise rotation of a face of the cube. + +The process of mapping the cube in its flattened representation and to know +which permutations corresponds to which face is just teadious so I will juste +give you this one out. + +Do keep in mind that I was not familiar with standard rubiks cube notations, so +I named a move by the color of the face that is rotating instead of the usual +U,F,... it felt more intuitive to me. + + +Here are the indexes of each cube tile on the flatenned state: + +{{< image src="/picasso/cube_indexes.png" style="border-radius: 8px;" >}} + +I attributed colors to faces arbitrarily as long as it respected the usual cube configuration, but as long as I keep to this representation I will do fine. + +With the above cube, fold it back and see how the first permutation array indeed performs a counter-clockwise rotation of the red face. + +Here is the initial state of the cube: + +{{< image src="/picasso/cube_init.png" style="border-radius: 8px;" >}} + + +## Solving the slide puzzle + +### Recap everything + +So know we are done with the reversing part, with our input, the program will: + +- Consider each character as a move on a rubiks cube, applying said move +- Consider the flatenned shuffled cube as a list of slide puzzle moves + +Basically we need to solve a rubik's cube in order to ordonate a slide puzzle +solution. + +To solve this, we will need to take one problem at a time, first find a solutions to the slide puzzle, then map the solution to a cube which we will consider as the solved cube, then map the color of the solved cube back to +the starting cube in order to solve it. + +### Naive backtracking + +So to start I want to say that I am really impressed that the solver of +`face0xff` found a solution this fast, I was really convinced that without the +little tricks that I will show you, it would take too long to search for a 54 +moves solutions, but hey seems like it works if you implement every slide puzzle +heuristics you may think of. + +So my approach was a backtracking algorithm, however you can clearly see why +backtracking 54 moves is not a good solution so we will need to add some +heuristics to narrow down the search for valid moves. + +Basically the algorithm works as follow given a current state of the grid: + +- If the puzzle is solved it's won +- If you have no move left it's lost +- generate all possible moves +- try each move by applying the move and recursively calling this procedure +- if the recursive call returned true then it's won +- else cancel the move and try the next +- if no move returned true there is no solution + + +### Slide puzzle heuristics + +Okay this algorithm will take way too long, we need to cancel some search paths +early so that we will not further go down the calls if we can already know that we cannot solve anymore from a given grid. + + +#### Cannot cancel previous move + +This heuristic takes the assumption that you cannot play the same move as the +previous one, because otherwise you will go back to same state as the previous +move, effectively doing 2 moves for nothing. + +Okay this heuristic is not exactly 100% reliable, since actually the puzzle is +also solvable this way, simply with useless moves. But I was convinced that 54 +was the optimal solution, I don't imagine that `\J` would have asked us to solve +a puzzle in a non-optimal way. + +#### Last move + +Since the tile in bottom right needs to be `0`, this means that the last move needs to be `f` or `c`, so if at any point, both of these tiles do not have anymore moves remaining moves while the puzzle isn't already solved then you can already tell it's unsolvable. + +Oh I didn't talk about the limited number of moves per tiles ? don't worry I'll +explain in a minute. + +### Rubik's cube heuristics + +#### Face centers + +In a rubik's cube the center tile of each face CANNOT move, this means that since we know the starting position of the cube, we already know that: + +- Move `4` will be `f` +- Move `d` will be `2` +- Move `16` will be `c` +- Move `1f` will be `a` +- Move `28` will be `a` +- Move `31` will be `4` + +#### Move counts and manhattan distance + +Of course I kept the best one for the end, this is by far the most effective +one and it is probably enough to solve the whole thing by itself. + +This heuristic is based on the fact that we can only shuffle the cube, we can +never add or remove moves, therefore we can know how many times a tile will be +moved. For example there are 4 `1` on the cube, so this means that the `1` tile +of the slide puzzle must be played exactly 4 times, no more no less. + +So know, knowing this, while backtracking, we can keep track of how many times a tile has moved by decrementing its move counter. + +Then, we can compute the manhattan distance of the tile to its supposed +location, which is the minimum number of moves that would be required for the +tile to go to that location if there were no other tile on the grid. For example +tile `f` placed in the top left corner will have a manhattan distance of 5 to +its supposed location. + +So whenever the move counter of a tile becomes lower than its manhattant distance to its suppose location, you know that you will never be able to place the tile back to where it is supposed to be. + + +### Solver + +So I implemented this in rust because I wanted this to be fast: + +{{< code file="/static/picasso/slide_solver.rs" language="rust" >}} \ No newline at end of file diff --git a/jujure/static/picasso/allowed_moves.c b/jujure/static/picasso/allowed_moves.c new file mode 100644 index 0000000..3bf3a9a --- /dev/null +++ b/jujure/static/picasso/allowed_moves.c @@ -0,0 +1,131 @@ +uint64_t allowed_moves[0x10][0x5] = +{ + [0x0] = + { + [0x0] = 0x0100000000000000 + [0x1] = 0x0000100000000000 + [0x2] = 0x0000000000000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x1] = + { + [0x0] = 0x1000000000000000 + [0x1] = 0x0010000000000000 + [0x2] = 0x0000010000000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x2] = + { + [0x0] = 0x0100000000000000 + [0x1] = 0x0001000000000000 + [0x2] = 0x0000001000000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x3] = + { + [0x0] = 0x0010000000000000 + [0x1] = 0x0000000100000000 + [0x2] = 0x0000000000000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x4] = + { + [0x0] = 0x1000000000000000 + [0x1] = 0x0000010000000000 + [0x2] = 0x0000000010000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x5] = + { + [0x0] = 0x0100000000000000 + [0x1] = 0x0000100000000000 + [0x2] = 0x0000001000000000 + [0x3] = 0x0000000001000000 + [0x4] = 0x0000000000000000 + } + [0x6] = + { + [0x0] = 0x0010000000000000 + [0x1] = 0x0000010000000000 + [0x2] = 0x0000000100000000 + [0x3] = 0x0000000000100000 + [0x4] = 0x0000000000000000 + } + [0x7] = + { + [0x0] = 0x0001000000000000 + [0x1] = 0x0000001000000000 + [0x2] = 0x0000000000010000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x8] = + { + [0x0] = 0x0000100000000000 + [0x1] = 0x0000000001000000 + [0x2] = 0x0000000000001000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0x9] = + { + [0x0] = 0x0000010000000000 + [0x1] = 0x0000000010000000 + [0x2] = 0x0000000000100000 + [0x3] = 0x0000000000000100 + [0x4] = 0x0000000000000000 + } + [0xa] = + { + [0x0] = 0x0000001000000000 + [0x1] = 0x0000000001000000 + [0x2] = 0x0000000000010000 + [0x3] = 0x0000000000000010 + [0x4] = 0x0000000000000000 + } + [0xb] = + { + [0x0] = 0x0000000100000000 + [0x1] = 0x0000000000100000 + [0x2] = 0x0000000000000001 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0xc] = + { + [0x0] = 0x0000000010000000 + [0x1] = 0x0000000000000100 + [0x2] = 0x0000000000000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0xd] = + { + [0x0] = 0x0000000001000000 + [0x1] = 0x0000000000001000 + [0x2] = 0x0000000000000010 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0xe] = + { + [0x0] = 0x0000000000100000 + [0x1] = 0x0000000000000100 + [0x2] = 0x0000000000000001 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } + [0xf] = + { + [0x0] = 0x0000000000010000 + [0x1] = 0x0000000000000010 + [0x2] = 0x0000000000000000 + [0x3] = 0x0000000000000000 + [0x4] = 0x0000000000000000 + } +} diff --git a/jujure/static/picasso/cube_indexes.png b/jujure/static/picasso/cube_indexes.png new file mode 100644 index 0000000000000000000000000000000000000000..76204c591aa8dd6fe89a7ec0604d7744b2bd2d43 GIT binary patch literal 90076 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 BcD4Wj literal 0 HcmV?d00001 diff --git a/jujure/static/picasso/cube_init.png b/jujure/static/picasso/cube_init.png new file mode 100644 index 0000000000000000000000000000000000000000..e954d5010392b2c3786e214208d742d190092c23 GIT binary patch literal 76652 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 RSpfg-H8nTM*md&i{{t*wXu|*i literal 0 HcmV?d00001 diff --git a/jujure/static/picasso/main.c b/jujure/static/picasso/main.c new file mode 100644 index 0000000..d1235fa --- /dev/null +++ b/jujure/static/picasso/main.c @@ -0,0 +1,71 @@ +char init_state[0x36] = +{ + 0x0d, 0x03, 0x02, 0x0e, 0x0f, 0x09, 0x07, 0x0e, 0x0d, 0x06, 0x03, 0x02, 0x07, 0x02, 0x08, 0x0e, + 0x07, 0x04, 0x04, 0x03, 0x0d, 0x04, 0x0c, 0x03, 0x0f, 0x02, 0x0a, 0x05, 0x09, 0x01, 0x06, 0x0a, + 0x0b, 0x02, 0x05, 0x0c, 0x0e, 0x0b, 0x0d, 0x01, 0x0a, 0x01, 0x05, 0x09, 0x01, 0x0f, 0x06, 0x0e, + 0x04, 0x04, 0x0b, 0x04, 0x0b, 0x0f, 0x00 +}; + + +int32_t main(int32_t argc, char** argv, char** envp) +{ + char* const init_state_ptr = &init_state; + char state[0x36]; + char* state_ptr = &state; + for (int64_t size = 0x36; size != 0; size -= 1) + { + *state_ptr = *init_state_ptr; + state_ptr += 1; + init_state_ptr += 1; + } + + printf("Password: ", init_state_ptr); + fflush(stdout); + + char input[0x18]; + scanf("%24s", &input); + + int64_t state_index = 0; + + while (true) + { + if (strlen(&input) <= state_index) + { + // Cutting everything that happens + ... + if (check == OK) + { + puts("Win!"); + FILE file = fopen("flag.txt", &rb); + if (file != NULL) + { + char flag[0x46]; + fread(&flag, 1, 0x46, file); + fclose(file); + puts(flag); + return 0; + } + else + puts("Send your input on the remote se…"); + } + else + puts("Nope!"); + break; + } + else + { + char* pos_ptr = strchr("abcdefghjklmnpqrstuvwxyz", input[state_index]); + if (pos_ptr != NULL) + { + // Do stuff iterating on the state + ... + state_index += 1; + continue; + } + } + puts("Nope!"); + break; + } + exit(1); + /* no return */ +} diff --git a/jujure/static/picasso/meme.jpg b/jujure/static/picasso/meme.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6ae84bd2e4fff802fc5a0b3033008988ee969ca GIT binary patch literal 61137 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 Ap#T5? literal 0 HcmV?d00001 diff --git a/jujure/static/picasso/slide.c b/jujure/static/picasso/slide.c new file mode 100644 index 0000000..9094fa4 --- /dev/null +++ b/jujure/static/picasso/slide.c @@ -0,0 +1,67 @@ +if (strlen(&input) <= state_index) +{ + int64_t board = 0x3da8e0915f2c4b67; + int64_t next_board; + int64_t i = 0; + uint64_t move; + while (true) + { + uint64_t c = state[i]; + void* allowed_moves = &allowed_moves; + int32_t shifter = 0x3c; + do + { + if (c == ((board >> shifter) & 0xf)) + { + uint64_t* moves = allowed_moves; + do + { + move = *moves; + + if (move == 0) + break; + + moves += 1; + } while (((move * 0xf) & board) != 0); + + if (move != 0) + break; + } + shifter -= 4; + allowed_moves += 0x28; + } while (shifter != 0xfffffffc); + + if (c != ((board >> shifter) & 0xf) || move == 0) + break; + + int64_t swapper = ((c * move) ^ (c << shifter)); + next_board = (board ^ swapper); + if (board == swapper) + break; + + i += 1; + + if (i == 0x36) + break; + + board = next_board; + } + if (next_board == 0x123456789abcdef0) + { + puts("Win!"); + FILE file = fopen("flag.txt", &rb); + if (file != NULL) + { + char flag[0x46]; + fread(&flag, 1, 0x46, file); + fclose(file); + puts(flag); + return 0; + } + else + puts("Send your input on the remote se…"); + } + else + puts("Nope!"); + break; +} diff --git a/jujure/static/picasso/slide_solver.rs b/jujure/static/picasso/slide_solver.rs new file mode 100644 index 0000000..7bb79ae --- /dev/null +++ b/jujure/static/picasso/slide_solver.rs @@ -0,0 +1,194 @@ +use std::collections::HashMap; + +struct Board { + board: [usize; 0x10], + moves: Vec, + max_moves: usize, + move_number: usize, + + empt_idx: usize, + + + solved_grid: [usize; 0x10], + + fixed_moves: HashMap, + + move_limit: [isize; 0x10] +} + +impl Board { + pub fn new(board: [usize; 0x10]) -> Self { + let empt_idx: usize = board.iter().position(|&r| r == 0).unwrap().try_into().unwrap(); + let all_moves: [usize; 0x36] = [ + 0x0d, 0x03, 0x02, 0x0e, 0x0f, 0x09, 0x07, 0x0e, 0x0d, 0x06, 0x03, 0x02, 0x07, 0x02, 0x08, 0x0e, + 0x07, 0x04, 0x04, 0x03, 0x0d, 0x04, 0x0c, 0x03, 0x0f, 0x02, 0x0a, 0x05, 0x09, 0x01, 0x06, 0x0a, + 0x0b, 0x02, 0x05, 0x0c, 0x0e, 0x0b, 0x0d, 0x01, 0x0a, 0x01, 0x05, 0x09, 0x01, 0x0f, 0x06, 0x0e, + 0x04, 0x04, 0x0b, 0x04, 0x0b, 0x0f + ]; + let solved_grid: [usize; 0x10] = [1,2,3,4,5,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0]; + + let mut fixed_moves: HashMap = HashMap::new(); + + for i in vec![4, 0xd, 0x16, 0x1f, 0x28, 0x31] { + fixed_moves.insert(i, all_moves[i]); + } + + let mut move_limit: [isize; 0x10] = [0; 0x10]; + + for mv in all_moves.iter() { + move_limit[*mv] += 1; + } + + Board { + board: board, + moves: Vec::new(), + max_moves: 0x36, + move_number: 0, + empt_idx: empt_idx, + solved_grid: solved_grid, + fixed_moves: fixed_moves, + move_limit: move_limit, + } + } + + pub fn solved(&self) -> bool { + self.board == self.solved_grid + } + + pub fn get_move(&self, off: Vec) -> Option { + let empt_idx: isize = self.empt_idx.try_into().unwrap(); + let empt_i: isize = empt_idx / 4; + let empt_j: isize = empt_idx % 4; + let src_i: isize = empt_i + off[0]; + let src_j: isize = empt_j + off[1]; + if src_i < 4 && src_i >= 0 && src_j < 4 && src_j >= 0 { + let idx: usize = (src_i * 4 + src_j).try_into().unwrap(); + return Some(self.board[idx]) + } + None + } + + pub fn generate_moves(&self) -> Vec { + let mut moves: Vec = Vec::new(); + + for off in vec![vec![-1, 0], vec![1, 0], vec![0, -1], vec![0, 1]] { + let maybe_move = self.get_move(off); + if let Some(mv) = maybe_move { + moves.push(mv); + } + } + + moves + } + + pub fn apply_move(&mut self, mv: usize, undo: bool) { + let i: usize = self.board.iter().position(|&x| x == mv).unwrap(); + let tmp: usize = self.board[i]; + self.board[i] = self.board[self.empt_idx]; + self.board[self.empt_idx] = tmp; + self.empt_idx = i; + if undo { + self.move_number -= 1; + self.moves.pop(); + self.move_limit[mv] += 1; + } + else { + self.move_number += 1; + self.moves.push(mv); + self.move_limit[mv] -= 1; + } + } + + pub fn manhattan_distance(&self, mv: usize) -> isize { + let mv_idx: isize = self.board.iter().position(|&x| x == mv).unwrap().try_into().unwrap(); + let mv_i: isize = mv_idx / 4; + let mv_j: isize = mv_idx % 4; + + let supposed_idx: isize = (mv - 1).try_into().unwrap(); + let supposed_i: isize = supposed_idx / 4; + let supposed_j: isize = supposed_idx % 4; + + let manhattan: isize = (supposed_j - mv_j).abs() + (supposed_i - mv_i).abs(); + + manhattan + } + + pub fn solve(&mut self) -> bool { + + // GG + if self.solved() { + return true; + } + + // No more moves + if self.move_number >= self.max_moves { + return false; + } + + // Last move need to be 0xc or 0xf + if self.move_limit[0xc] <= 0 && self.move_limit[0xf] <= 0 { + return false; + } + + let last_move: Option = self.moves.last().copied(); + + if let Some(mv) = last_move { + // Tile cannot possibly go back to its supposed location + let man: isize = self.manhattan_distance(mv); + if self.move_limit[mv] < man { + return false + } + } + + // Generate possible moves from current grid + let mut moves: Vec = self.generate_moves(); + + // Cannot apply same move twice + if let Some(mv) = last_move { + moves = moves.iter().filter(|&x| *x != mv).cloned().collect(); + } + + // Filter fixed moves from the cube center tiles + if self.fixed_moves.contains_key(&self.move_number) { + let mv: usize = *self.fixed_moves.get(&self.move_number).unwrap(); + moves = moves.iter().filter(|&x| *x == mv).cloned().collect(); + } + + + for mv in moves { + // Apply move + self.apply_move(mv, false); + // Recursive call + let solved: bool = self.solve(); + // GG + if solved { + return true; + } + // Undo move + self.apply_move(mv, true); + } + + false + } +} + + +fn solve() { + let arr: [usize; 0x10] = [ + 3, 0xd, 0xa, 8, + 0xe, 0, 9, 1, + 5, 0xf, 2, 0xc, + 4, 0xb, 6, 7 + ]; + + let mut board: Board = Board::new(arr); + + board.solve(); + + println!("{:x?}", board.moves); + println!("{}", board.moves.len()) +} + +fn main() { + solve() +} diff --git a/jujure/static/picasso/starting_grid.png b/jujure/static/picasso/starting_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..129319c7a669c0e396a4ac3b992aca47659a211b GIT binary patch literal 15602 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 literal 0 HcmV?d00001 diff --git a/jujure/static/picasso/target_grid.png b/jujure/static/picasso/target_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..88cea4cbd104d6552eff9a9173762f545755e82f GIT binary patch literal 15606 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 literal 0 HcmV?d00001