레지스트리를 보다보면 아래 이미지와 같은 데이터 타입들을 보았을 것이다.

[그림 1 - 데이터 타입]

레지스트리에는 여러가지 데이터 타입들이 존재하는데 이번 글에서는 레지스트리의 데이터 타입을 알아 볼 것이다.

아래는 타입을 정리해놓은 목록표이다.

[그림 2 - 데이터 타입 목록표]

참고로 알아두어야 할 사항이 있다.

HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist 아래에 있는 서브키들은 value를 ROT-13 방식으로 저장한다.

레지스트리에서 해당 키의 서브키들만 이러한 방식을 사용한다.

[그림 3 - UserAssist 서브키의 ROT-13 저장 방식]

Zvpebfbsg.Jvaqbjf.PbagebyCnary 이 값은 해당 서브키에 저장되어 있던 값이다.

이 값을 예전에 직접 작성했던 ROT-13 스크립트로 풀어보면 다음과 같다.

 [그림 4 - ROT-13 Decode]

Zvpebfbsg.Jvaqbjf.PbagebyCnary 이 값은 우리가 알아볼 수 있는 평문으로 디코딩 하면 Microsoft.Windows.ControlPanel 이라는 글자가 된다.

ROT-13은 현대 암호들과 비교해보면 암호라고 할수도 없지만 이러한 방법이 있다는 것을 모른다면 UserAssist 서브키들의

값을 보았을 때 이 값이 무엇을 의미하는지 모를 것이다. 

'[+] Forensic' 카테고리의 다른 글

Registry (7)  (0) 2012.01.04
Registry (6)  (0) 2012.01.04
Registry (5)  (0) 2012.01.04
Registry (4)  (0) 2012.01.03
Registry (3)  (0) 2012.01.03
포렌식 공부 중 레지스트리에 어떠한 값이 ROT-13으로 인코딩되어 있다는 구문을 보고 한번 만들어 봤다.

알려진 ROT-13 기본알고리즘을 바탕으로 스크립트 코딩 했다.


#ROT13.py
#Made By MaJ3stY
#기본 ROT-13 사용

import sys

rot13 = {'a':'n', 'b':'o', 'c':'p', 'd':'q', 'e':'r', 'f':'s', 'g':'t', 'h':'u',
          'i':'v', 'j':'w', 'k':'x', 'l':'y', 'm':'z', 'n':'a', 'o':'b', 'p':'c',
          'q':'d', 'r':'e', 's':'f', 't':'g', 'u':'h', 'v':'i', 'w':'j', 'x':'k',
          'y':'l', 'z':'m', 'A':'N', 'B':'O', 'C':'P', 'D':'Q', 'E':'R', 'F':'S',
          'G':'T', 'H':'U', 'I':'V', 'J':'W', 'K':'X', 'L':'Y', 'M':'Z', 'N':'A',
          'O':'B', 'P':'C', 'Q':'D', 'R':'E', 'S':'F', 'T':'G', 'U':'H', 'V':'I',
          'W':'J', 'X':'K', 'Y':'L', 'Z':'M', ' ':' '}

def Encode(strings):
    e_result = ''

    for s in strings:
        for key, value in rot13.items():
            if key == s:
                e_result += value

    return e_result


def Decode(strings):
    d_result = ''

    for s in strings:
        for key, value in rot13.items():
            if value == s:
                d_result += key

    return d_result

def Main():
    print ''' You Want to Service Choice number
              1. ROT-13 Encode
              2. ROT-13 Decode
              3. Exit \n'''

    ch = input("Choice Number >>> ")

    if ch == 1:
        e_str = raw_input("Input Strings >>> ")
        print "Encode(%s) >>> " % e_str + Encode(e_str)
    elif ch == 2:
        d_str = raw_input("Input Strings >>> ")
        print "Decode(%s) >>> " % d_str + Decode(d_str)
    elif ch == 3:
        print "Bye, See you again!"
        sys.exit
    else:
        print "Invalied Number!"
        Main()


if __name__ == '__main__':
    Main()

 

'[+] 유틸리티' 카테고리의 다른 글

Sqlite Viewer  (3) 2012.01.24
Registry (9)에서 쓰였던 python 스크립트  (0) 2012.01.06
ROT-13 Script  (0) 2011.12.15
Hash Script  (0) 2011.12.14
BozoCrack  (0) 2011.12.02

+ Recent posts