Forensics/Iphone Forensics

[iOS Forensics] iPhone 캘린더 포렌식

pental 2021. 2. 9. 16:05

iPhone에 저장되어있는 캘린더를 포렌식 해보도록 하겠습니다.

먼저 아이폰의 백업 파일을 추출해서 사용하겠습니다. 상황에 따라 본인에 맡게 사용하시면 될거 같습니다.

백업 파일 추출에 관해서 연락이 많은데, 이 부분에 대해서는 현재 아이폰 포렌식 도구를 만들고 있습니다.

github.com/kim-do-hyeon/iphone-forensics

 

kim-do-hyeon/iphone-forensics

iPhone Forensics Tool. Contribute to kim-do-hyeon/iphone-forensics development by creating an account on GitHub.

github.com

해당 도구를 사용하시면 추출이 가능합니다.


먼저 캘린더가 저장되어 있는 데이터베이스의 위치는 다음과 같습니다.

\HomeDomain\Library\Calendar\Calendar.sqlitedb

해당 위치를 찾아가보면 다음과 같은 파일들이 있습니다.

이중에서도 Calendar.sqlitedb 파일을 사용할 예정입니다. 먼저 DB Browser for SQLite 프로그램을 사용해 확인해 보도록 하겠습니다.

살펴보아야 할 테이블은 CalendarItem 테이블입니다.

summary 컬럼에는 캘린더의 제목, description에는 해당 일자의 설명이 있습니다.

start_date와 end_date는 각각 시작과 끝나는 일정입니다.

다른 부연설명은 하지 않고, 바로 소스를 작성하겠습니다.

def calendar_event_artifact():

    # Calendar Event Artifact
    # C:\Users\pental\Desktop\iphone-forensics\extract_file\HomeDomain\Library\Calendar\Calendar.sqlitedb

    calendar_location = pathlib.Path(str(pathlib.Path(os.getcwd() + "/extract_file/HomeDomain/Library/Calendar")) + "\\Calendar.sqlitedb")
    
    conn = sqlite3.connect(calendar_location)
    cur_calendaritem = conn.cursor()
    cur_calendaritem.execute("SELECT summary, start_date, end_date FROM CalendarItem")
    calendaritem = cur_calendaritem.fetchall()
    calendar = []

    print("\n========== PRINT_TYPE ==========")
    print("'Calendar Item' , 'Start Date & Time', 'End Date & Time'")
    print("================================\n")
    
    for i in range(len(calendaritem)) :
        value = [calendaritem[i][0], util.cocoa_date_to_human_date(calendaritem[i][1]), util.cocoa_date_to_human_date(calendaritem[i][2])]
        print(value)
        calendar.append(value)

start_date와 end_date는 cocoa core date timestamp를 사용하기 때문에 Human 시간으로 변경하는 함수를 작성해서 사용하였습니다.

def cocoa_date_to_human_date(cocoatime) :
    cocoatime = int(cocoatime)
    from datetime import datetime

    unix = datetime(1970, 1, 1)  # UTC
    cocoa = datetime(2001, 1, 1)  # UTC

    delta = cocoa - unix  # timedelta instance

    timestamp = datetime.fromtimestamp(cocoatime) + delta

    value = (timestamp.strftime('%Y-%m-%d %H:%M:%S'))

    return value

읽어 주셔서 감사합니다. 다른 문의나 오탈자는 아래 댓글을 통해서 남겨주시면 감사하겠습니다!