기억의 습작

소스코드 반출 방법 본문

Software/JAVA

소스코드 반출 방법

뿌사리다 2021. 8. 26. 20:47

외주 개발시 작성한 소스코드는 내가 작성한 소스코드이며 내 자산이기 때문에 타 프로젝트시 분명 참고가 될만한 소스코드가 많이 내포되어 있을 것이다. 또한 유지보수 차원에서 소장하고 있다면 발빠른 대처가 가능하기도 하다. 하지만 대부분 보안을 이유로 외부 반출이 금지 되어 있으며 유출시 기록에 남기 때문에 강행하기도 망설여 진다.

방법은 여러가지가 있지만 그 중 두 가지를 소개 한다.

  1. QR코드로 사진 촬영 후 이동
  2. jpg 및 pdf 파일에 몰래 숨겨서 정식 철자를 밟고 승인 후 빼돌리기. (파일안에 교묘하게 잘 숨겨야한다)

 

우선 1번에 해당하는 QR코드 사진촬영 방법은 유출하기 위한 소스코드를 최대한 압축율 좋게 압축한다.

압축 파일은 아래와 같이  binary 형태로 되어있을 것이다.

PK  ?딭,?賃 >)  settings.xmlz? ? 휹m뤭6??<@f[J?Wl]{M陵붙 需衝湧뷻쌱ITE?m퓓!%J鈗軸KEcS乭p^?z浚CY댙j?剌?쯕Ufr]m퓷~?3z玹r2Y?>??UV敭?J\????쾂?i?:????浿a*51? l??}?X(삙먞F쯗U?B쵓”璞7략?땷.??_??캚[q0枯?숂쇜B?Ja朗춍?윱>6z퍀?*8?戮?O?캅L?찬렑騶G’? ~

생략..

 

해당 binary를 16진수 코드로 변환하여 String 으로 출력한다.

377ABCAF271C0003CED002AE23630000000000002400000000000000310921CBE1C78E5D965D0038184899CD1775240812B8C9941973D1A7603AA64BA624756E012F8440E00780DACC190BF8219CD13BB5BE6361907677F120E2A79053BEC0EF4563A9F8AA4D3F20AC7EE1FCA7FE253A85F6C71FEACCE9880119A0A358FD21

생략..

아마 어마어마한 16진수 코드가 나올 것이다. 약 2048 글자씩 끊어서 해당 문자를 QR코드로 생성한다.

16바이트 데이터를  QR코드로 생성

필자가 테스트 할 당시 25Kbyte (0.025Mb) 용량은 25장이 QR코드가 필요했다 (QR코드는 약 7000 자 까지 수용이 가능하다고 나와 있었으나 java코드를 생성하려고 하면 너무 크다고 생성이 안되었음)
뽑아낸 QR코드를 모두 모니터에 띄운 후 휴대폰 QR코드 인식기로 촬영하여 16진수 값을 얻어낸다.
얻어낸 16진수값 String을 카톡이나 메일을 통해 전송해둔다.

 

 

소스를 착출할 곳에서의 작업은 여기까지.


이하 작업은 소스를 옮길곳에서 작업할 내용이다.

 

전송해 뒀던 16진수 값들을 하나의 txt 파일로 합친다.

16진수 String을 다시 binary로 변환한 후 파일로 적장한다.

private byte[] hexToByte(String s) {
    int len = s.length();
    byte[] data = new byte[len/2];
    for (int i=0; i<data.length; i++) {
        int index = i*2;
        int v = Integer.parseInt(s.substring(index, index+2), 16);
        data[i] = (byte)v;
    }
    return data;
}

이제 파견지에서 가져오고 싶었던 소스코드(압축파일) 를 내 PC에서 확인 할 수 있다.

장점: 사진촬영만 가능하다면 언제든지 유출이 가능한다.
단점: 용량이 많으면 사진을 많이 찍어야 하기 때문에 힘들다.

 

2번 방법은 다음 글에서 추가 하겠습니다..

728x90
반응형
LIST