C 语言密码验证程序分析及解密代码
#include<stdlib.h>\n#include<stdio.h>\n#include<pthread.h>\n\n#define\ FLAG_LEN\ 20\n\nvoid\ *checking(void\ *arg)\ {\n\tchar\ *result\ =\ malloc(sizeof(char));\n\tchar\ *argument\ =\ (char\ )arg;\n\tresult\ =\ (argument[0]+argument[1])\ ^\ argument[2];\n\treturn\ result;\n}\n\nint\ highly_optimized_parallel_comparsion(char\ *user_string)\n{\n\tint\ initialization_number;\n\tint\ i;\n\tchar\ generated_string[FLAG_LEN\ +\ 1];\n\tgenerated_string[FLAG_LEN]\ =\ '\0';\n\n\twhile\ ((initialization_number\ =\ random()) >=\ 64);\n\t\n\tint\ first_letter;\n\tfirst_letter\ =\ (initialization_number\ %\ 26)\ +\ 97;\n\n\tpthread_t\ thread[FLAG_LEN];\n\tchar\ differences[FLAG_LEN]\ =\ {0,\ -11,\ -9,\ -1,\ 13,\ -13,\ -4,\ -11,\ -9,\ -1,\ -7,\ 6,\ -13,\ 13,\ 3,\ 9,\ -13,\ -11,\ 6,\ -7};\n\tchar\ arguments[20];\n\tfor\ (i\ =\ 0;\ i\ <\ FLAG_LEN;\ i++)\ {\n\t arguments[i]\ =\ (char\ )malloc(3sizeof(char));\n\t arguments[i][0]\ =\ first_letter;\n\t arguments[i][1]\ =\ differences[i];\n\t arguments[i][2]\ =\ user_string[i];\n\n\t pthread_create((pthread_t)(thread+i),\ NULL,\ checking,\ arguments[i]);\n\t}\n\n\tvoid\ result;\n\tint\ just_a_string[FLAG_LEN]\ =\ {115,\ 116,\ 114,\ 97,\ 110,\ 103,\ 101,\ 95,\ 115,\ 116,\ 114,\ 105,\ 110,\ 103,\ 95,\ 105,\ 116,\ 95,\ 105,\ 115};\n\tfor\ (i\ =\ 0;\ i\ <\ FLAG_LEN;\ i++)\ {\n\t pthread_join((thread+i),\ &result);\n\t generated_string[i]\ =\ *(char\ *)result\ +\ just_a_string[i];\n\t free(result);\n\t free(arguments[i]);\n\t}\n\n\tint\ is_ok\ =\ 1;\n\tfor\ (i\ =\ 0;\ i\ <\ FLAG_LEN;\ i++)\ {\n\t if\ (generated_string[i]\ !=\ just_a_string[i])\n\t return\ 0;\n\t}\n\n\treturn\ 1;\n}\n\nint\ main()\n{\n\tchar\ *user_string\ =\ (char\ *)calloc(FLAG_LEN+1,\ sizeof(char));\n\tfgets(user_string,\ FLAG_LEN+1,\ stdin);\n\tint\ is_ok\ =\ highly_optimized_parallel_comparsion(user_string);\n\tif\ (is_ok)\n\t printf("You\ win!\n");\n\telse\n\t printf("Wrong!\n");\n\treturn\ 0;\n}\n
原文地址: https://www.cveoy.top/t/topic/pXFn 著作权归作者所有。请勿转载和采集!