#include <string> #include <vector> #include <map> using namespace std; string solution(vector<string> participant, vector<string> completion) { map<string, int> input; map<string, int>::iterator mit; vector<string>::iterator it; for (it = participant.begin(); it != participant.end(); ++it) { input[*it]++; } for (it = completion.begin(); it != completion.end(); ++it) { input[*it]--; } string answer = ""; for (mit = input.begin(); mit != input.end(); ++mit) { if (mit->second == 1) { answer = mit->first; break; } } return answer; }
가장 쉽게 풀었죠. 30분도 안걸렸던거 같네요. 프로그램을 통해서 암호문의 유효성이 검증되는데요, 역공학을 통해서 암호문을 쉽게 찾을 수 있습니다. 답안 : Snow White and the Seven Dwarfs!. 풀이 : Oracle 함수가 CRC 를 계산하기 위해서는 중간에 평문이 복구될 것으로 보였다 . 제공하는 dll 을 이용하여 Oracle 함수의 입력으로 암호문을 넣은 프로그램을 작성하였다 . IDA 와 Immunity Debugger 를 이용해 프로그램을 역공학하여 얻을 수 있었다 .
댓글
댓글 쓰기