#include #include #include "hide.h" #include "extract.h" /* * * header : * pixel 1 : taille du lsb dans les 3 derniers bits de R * puis 32 bits de taille de la donnée suivant le lsb * puis 8 bits bonus * */ int main(int argc, char *argv[]) { srand((unsigned int) time(NULL)); if (argc > 1) { if (!strncmp(argv[1], "-h", 2) && argc >= 5) { hide_lsb(argv[2], argv[3], argv[4], (byte) ((argc == 6) ? ((byte) argv[5][0] - 48) & 7u : 0)); return OK; } if (!strncmp(argv[1], "-e", 2) && argc >= 4) { extract(argv[2], argv[3]); return OK; } if (!strncmp(argv[1], "-c", 2) && argc >= 4) { clean(argv[2], argv[3]); return OK; } if (!strncmp(argv[1], "-i", 2) && argc >= 3) { byte lsb = 0; u32 length = 0; string ext = "BKMG"; get_info(&lsb, &length, argv[2]); u32 human = length; while (human > 1000) { human /= 1000; ext++; } printf("%d bytes (%d%c) hidden in %d bit%s/channel (%d bits/px)\n", length, human, *ext, lsb, (lsb > 1) ? "s" : "", lsb * 3); return OK; } } printf("DIP - a tool to hide things in PNG pictures\nwritten by astequ\n\nUsage :\n\t- hiding :" " %s -h \n\t- extracting : %s -e \n\t- cleaning" " : %s -c \n", argv[0], argv[0], argv[0]); return COMMON_ERROR; }