문제:

l.pcap



사실 대회가 끝난후에 풀어서

 

정확한 답은 알지 못하고, 우선 푼곳까지 알려드리겠습니다.

 

이번에 주어진 l.pcap 파일을 쭉 훑어보시면 아이피는 크게 세가지 입니다.

 

하나는 자신의 아이피인 192.168.0.10

그리고 의문의 10.20.30.40 과 14.63.214.37이 있습니다

 

그런데 14.63.214.37의 패킷을 훑어보시면 안랩 사이트를 그냥 웹서핑하고있는게 전부입니다.

 

게다가 10.20.30.40....... 딱봐도 수상한 아이피고, 저런아이피는 흔한 아이피도 아닙니다

 

그러므로 10.20.30.40의 패킷을 집중 공략해보면

 

 

 GET /01m07s.reverse

 

라는 요청을 30초마다 하고있습니다.

 

그리고 서버도 그 응답으로 의문의 파일을 보내옵니다.

 

하아..... 그리고 이 파일을 추출해내신다음에

 

이 파일이 뭘까 고민을 해봤는데..

 

파일 확장자가 reverse 네요?????

 

그렇다면?

 

게다가 그 파일의 가장 마지막부분을 보니 GNP 라고 되어있습니다..

 

뒤집는다면 PNG가 되겠죠!

 

뒤집는 프로그램을 만들어봅니다.

 

저는 우선 넷상에 돌아다니는 소스를 살짝 개조해보았습니다.

 

 #include <stdio.h>
#include <stdlib.h>
 
int main()
{
 FILE *fp, *fpp;
 char ch;
 int f_size;
 int i = 0;

  fp = fopen("before_reverse", "rb");   
  fseek(fp, 0L, SEEK_END);
  f_size = ftell(fp);
  fpp = fopen("result.jpg", "wb");
  while ( ++i != (f_size+1))
  {
   fseek(fp, -i, SEEK_END);
   ch = getc(fp);
   putc(ch, fpp);  
  }
  fclose(fp);
  fclose(fpp);

 }

 

before_reverse라는 파일에 인풋값을 써놓으면

그 결과가 result.jpg로 나타나는 소스입니다.

 

소스를 푸시면 QR 코드가 나오고

 

그 QR코드를 찍어보시면 유령다시보기가 나오는데요

 

사실 정답은 모르고.. 스태가노그래피가 정답이 아닐까 합니다만

 

스태가노그래피가 또 다른 힌트일수도 있기떄문에.. ㅋㅋㅋ

 

여기까지입니다.

 

posted by tunz

문제:

m.pcap



사실 전 대회 끝날때까지 못풀어서 정확한 답은 모르지만

그래도 제가 한 내용을 한번 올려봅니다

 

이번 대회에서 주어진 m.pcap 파일을 와이어샤크로 열어보면

 

메일을 3번 주고 받은것을 알수있습니다

 

그리고 그것들은 base64 인코딩으로 되어있는데

base64인코딩, 게다가 짧은 텍스트파일은 그냥 네이버에 "base64 디코딩 사이트" 대충 이런걸 쳐서

들어가셔서 디코딩 하시면 아래와 같은 내용이 나옵니다

 

첫번째 메일은

 

3d 반도체 기술 자료 송부 드립니

안녕하세요.
강병규입니다.

말씀하신 내용 조사해서 회신 드립니다.

감사합니다.

강병규 드림.

 

첨부파일: 어떤 텍스트파일

대충 이런 내용이었고

 

두번째 메일은

 

 안녕하세요.
 진영인입니다.

 이번 휴가 중에 하루 시간이 괜찮아서 같이 수영장에 가요...
 장소를 잘 생각해서 메일 한번 다시 드릴께요.

 그럼..

 

세번째 메일은

 

거기서 뵙는 걸로

 안녕하세요.
 진영인입니다.

 휴가 같이 보내실 수 있으신가요?? ㅎ
 요즘에 이분이 대세더라구요.....
 저도 옷핀이나 주렁주렁 달고 다닐까 하네요 ㅋㅋ

 그럼, 나중에 그곳(?)에서 뵙는 걸로~~

 

첨부파일: oppinstyle.jpg 

 

 

이었습니다.

 

첫번째 메일은 agang과 주고받은 메일이 아니기때문에 무시하고

 

2,3 세번째 메일만 봤을때 중간에 뭔가 사라져서 트위터나 다른걸로 연락한줄 알고 거기만 뒤졌었는데 ....;;;;;;;;;;

결국 그게 아니더군요

 

그리고 힌트가 올라왔습니다. 힌트내용은 "ID3"

ID3는 mp3의 태그입니다.

그리고 전 네트워크 low문제도 대회 끝나고나서 풀었는데, 로우문제를 풀었다면 스태가노그래피 또한 힌트가 될수 있겠죠

 

결국................... oppinstyle.jpg 안에 어떤 mp3 파일이 스태가노그래피로 숨겨져있던 것이었습니다.........

 

우선 oppinstyle.jpg를 받고, base64 디코딩을 합니다.

이 과정에서 좀 헤맸는데

base64 디코딩은 돌아다니는 디코딩 소스를 조금 수정해서 했구요

 

소스는 이렇습니다.

 

#include <stdio.h>
#include <stdlib.h>
#include <string>

static int DecodeMimeBase64[256] = {
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 00-0F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 10-1F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,  /* 20-2F */
    52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,  /* 30-3F */
    -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,  /* 40-4F */
    15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,  /* 50-5F */
    -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,  /* 60-6F */
    41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1,  /* 70-7F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 80-8F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 90-9F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* A0-AF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* B0-BF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* C0-CF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* D0-DF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* E0-EF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1   /* F0-FF */
};

typedef union{
    struct{
        unsigned char c1,c2,c3;
    };
    struct{
        unsigned int e1:6,e2:6,e3:6,e4:6;
    };
} BF;

void base64d(FILE *fp, FILE *result, int *length){
    int i = 0, src_length, blank = 0;
    BF temp;

    src_length = *length;

    while( ++(++(++(++i))) < src_length + 1){
        fseek(fp , i-4 , SEEK_SET);
        temp.e4 = DecodeMimeBase64[getc(fp)];
        fseek(fp , i-3 , SEEK_SET);
        temp.e3 = DecodeMimeBase64[getc(fp)];
        fseek(fp , i-2 , SEEK_SET);
        char c_get = getc(fp);
        if(c_get == '=')
            temp.e2 = 0x00;
        else temp.e2 = DecodeMimeBase64[c_get];
        fseek(fp , i-1 , SEEK_SET);
        char c_get2 = getc(fp);
        if(c_get2 == '=')
            temp.e1 = 0x00;
        else temp.e1 = DecodeMimeBase64[c_get2];

        putc(temp.c3, result);
        putc(temp.c2, result);
        putc(temp.c1, result);
    }
}

int main(void){
    FILE *fp;
    FILE *result;
    int src_size;
   
    fp = fopen("input.txt", "rt");
    fseek(fp , 0L , SEEK_END);
    src_size = ftell(fp);
    result = fopen("result2", "wb");
    base64d(fp,result,&src_size);
    fclose(result);
    fclose(fp);

 

어찌됐든 디코딩을 하고나면 장동건이 나오는 jpg 그림이 나오는데

 

헥사에디터로 열어서 ID3를 검색하면 그 ID3부터 뒤쪽이 쭉 mp3 파일입니다.

 

그부분만 추출해서 뽑아내면 mp3파일이 만들어지는데

 

그 mp3 파일을 실행시키면 뚜뚜뚜 뚜~ 뚜~

 

이런 소리가 들립니다.. 즉 모스부호

 

모스부호를 해석하면

 

37.53480,126.993900

 

위도 경도를 조사해보니, 해밀턴 호텔이 나오네요

 

수영장인줄 알았더니.............

 

해밀턴호텔이 맞는지는 확인을 못했습니다.. 제가 대회시간안에 못풀어서

posted by tunz