The challenge is a crackme, it asks for an argument of 32 chars and gives it to
a check
function.
This check
function fork the program multiple times and redirect the stdout of
the child to /dev/null
.
const allWords = ["BUNCH","TABLE","GUEST","WATCH","SALES","OFTEN","MORAL","BENCH","MAYOR","STARE","LABOR","CLASS","STILL","WOMAN","REPLY","ENJOY","CLEAN","SOUTH","SAUCE","BRAIN","QUICK","WHERE","SHAKE","VALUE","NERVE","MAYBE","LIGHT","KNIFE","SPORT","WRITE","GRAVE","TASTE","CREAM","SOUND","TRACK","APPLE","JOINT","ADMIT","TROOP","POUND","GIVEN","AWARE","STAIR","FLESH","THERE","DRESS","THROW","ASIDE","HEART","BRUSH","SMOKE","LUNCH","GUARD","EVENT","BRAND","PAUSE","RIGHT","ANGER","STYLE","PROVE","CHEAP","GLOVE","MOUNT","MONTH","SALAD","TERMS","TODAY","ORDER","GRADE","TOUGH","COACH","SWING","MATCH","WOULD","BOARD","TEACH","MODEL","SOLID","FIFTH","GRASS","PIANO","BLOCK","SHELF","FAITH","CHILD","STAFF","NOVEL","TIRED","YOUNG","REACT","ADAPT","DRINK","ALBUM","CIVIL","CHART","QUOTE","STRIP","FUNNY","YOURS","WORLD","ALIVE","WHEEL","TRIAL","WHOLE","EARTH","RIFLE","IDEAL","CRACK","SCOPE","CLEAR","NAKED","PLANT","HUMAN","FIGHT","WORTH","YOUTH","DOZEN","AFTER","WATER","SUPER","SOLVE","LATER","FIELD","PLACE","PLANE","DRAMA |
// Decode the response from the server | |
function decode(plain) { | |
return String.fromCharCode(...[...plain].map((c) => (c.charCodeAt(0) + 113) % 126)) | |
} |
$ clang -Wall -Wextra -g3 ./main.c -o main && ./main | |
deadbeef |
#include <iostream> | |
#include <stdexcept> | |
#include <vector> | |
#include <string> | |
template <class T> struct size_of { | |
static const int size = sizeof(T); | |
}; | |
template <> struct size_of<void> { |
#include <unistd.h> | |
#include <signal.h> | |
#include <assert.h> | |
#include <stdio.h> | |
#include <sys/wait.h> | |
void handle_sender(pid_t receiver) { | |
for (int i = 0; i < 10; i++) { | |
usleep(100); | |
puts("Signal sent"); |
Every command is done under a nix-shell opened with the following command.
$ nix-shell -p gcc SDL2 steam-run
First thing compile the executable to debug controller hot plugging.
$ gcc ./main.c -o ./main -lSDL2
#include <iostream> | |
#include <vector> | |
class Item { | |
private: | |
char identifier; | |
public: | |
Item(char identifier) : identifier(identifier) { | |
std::cout << "Item's " << identifier << " constructor called" << std::endl; |