본문 바로가기

전체 글121

[디지털 포렌식] 디지털 증거 디지털 증거증거와 증명증거: 사실 관계를 확인하기 위해 사용되는 자료증명: 증거에 의해 사실 관계를 확인증거법의 기본 원칙은 증거재판주의형사소송법 제307조 제1항 "사실의 인정은 증거에 의하여야 한다."형사소송법 제307조 제2항 "범죄사실의 인정은 합리적인 의심이 없는 정도의 증명에 이르러야 한다."디지털 증거의 정의컴퓨터 또는 기타 디지털 저장 매체에 저장되고나 네트워크를 통해 전송되는 자료로서 법정에서 신뢰할 수 있으며 증거 가치가 있는 정보디지털 형태로 저장되거나 전송되는 것으로 법정에서 신뢰할 수 있는 정보 (IOCE 정의)디지털 형태로 저장되거나 전송되는 증거 가치가 있는 정보 (미국 SWGDE 정의)디지털 증거의 종류속성에 따른 분류내용물 (문서 내용 등)특성 정보 (파일명, 해시 등)생성.. 2025. 6. 18.
[디지털 포렌식] 디지털 기기와 저장 매체 디지털 저장 매체반도체 이용ROM전원이 공급되지 않아도 내용이 사라지지 않는 비휘발성 메모리BIOS: 운영체제와 하드웨어 사이의 입출력을 담당하는 저수준의 SW와 드라이브로 구성된 펌웨어포렌식 관점에서 여기에 저장된 시간이 정확한지, 변경되었는지 확인 필요최근에는 UEFI로 대체RAM전원이 공급되지 않으면 데이터가 사라지는 휘발성 메모리전원이 공급되어 있다면 RAM을 통해 컴퓨터의 상태를 가장 잘 알 수 있음Flash Memory전기적으로 데이터를 지우고 재기록이 가능한 비휘발성 메모리휴대성이 좋아 쉽게 은닉 가능, 수사 대상 시스템에서 사용 흔적 조사쓰기 방지 장치를 통해 데이터 무결성 유지USB: 컴퓨터와 주변기기를 연결하고 통신하기 위한 표준 인터페이스메모리 카드 (CF, SD, SM, XD, Me.. 2025. 6. 18.
[디지털 포렌식] 디지털 데이터 표현 수 체계, 문자 등은 다른 곳에서도 다루었기 때문에 여기서는 시간 표현, 파일 구조에 대해 다룹니다.시간 정보의 표현 방식디지털 포렌식에서의 시간 정보는 범죄가 발생한 시점을 가늠하는 잣대이므로 매우 중요한 정보현재 협정 세계시는 UTC, 대한민국의 현지 시간Local Time은 UTC+9 Seoul 정확한 수사를 위해 시간 정보를 UTC에서 현지 시간으로 변환MS-DOS Date/TimeMS-DOS, Windows FAT 파일 시스템에서 사용된 시간 저장 형식컴퓨터의 현재 날짜와 시간Local Time을 각각 2바이트로 저장FILETIMEWindows NTFS 파일 시스템에서 사용UTC를 사용하기 때문에 현지 시간으로 변환 필요time_tUNIX에서 시간을 저장하는 표준 형식1970년 1월 1일 자정.. 2025. 6. 18.
[디지털 포렌식] 디지털 포렌식 개요 디지털 포렌식 개요디지털 포렌식의 정의과학 수사: 사건의 정확한 진상 규명을 위해 현대적인 기술, 시설, 장비와 과학적 기술, 지식을 활용하는 수사로카르트의 교환 법칙접촉하는 두 물체 간에는 반드시 흔적이 남는다물리적 세계에서 범죄자는 반드시 흔적을 남긴다 - 흔적은 지문, 혈흔, 발자국, 사진, 영상, 디지털 데이터 등 다양한 형태로 존재디지털 포렌식: 디지털 기기를 매개체로 하여 발생한 특정 행위의 사실 관계를 법정에서 규명하고 증명하기 위한 절차와 방법디지털 포렌식 (DFRWS 정의): 범죄 현장에서 확보한 컴퓨터 시스템이나 전자 장비에서 수집할 수 있는 디지털 증거물에 대해 보존, 수집, 확인, 식별, 분석, 해석, 기록, 현출 등을 과학적으로 도출되고 검증된 방법으로 수행하는 일련의 과정디지털 .. 2025. 6. 18.
[OS] 프로세스와 스레드 관리 개요중앙처리장치 (CPU) : 컴퓨터 자원 중 가장 중요한 자원CPU 스케줄링 : 프로세스들에게 CPU를 할당하기 위한 정책을 설정하는 것프로세스 스케줄링 : ready 상태에 있는 프로세스 중 어느 것을 CPU에 할당시킬 것인지 결정하는 것CPU 스케줄링의 목적CPU 효율 및 처리율의 최대화반환시간의 최소화프로세스 관리프로세스 : 주기억장치에 저장된 프로그램이 CPU에 의해 실행되거나 실행 준비 상태가 된 것프로세스의 다양한 정의실행중인 프로그램PCB(Process Control Block)를 지닌 프로그램프로그램 카운터를 지닌 프로그램능동적 객체로, 순차적으로 수행하는 프로그램운영체제의 프로세스 관리 관련 기능사용자 프로세스와 시스템 프로세스의 생성과 삭제프로세스의 일시 중지(suspend)와 재수행.. 2025. 4. 30.
[OS] 운영체제 개요 운영체제운영체제 정의컴퓨터 하드웨어와 컴퓨터 사용자 간의 매개체 역할을 하는 소프트웨어사용자 프로그램을 수행할 수 있는 환경 제공운영체제 목적편의성 (Convenience for human) – 컴퓨터 시스템을 편리하게 이용효율성 (effieciency for device) – 컴퓨터 하드웨어를 효율적으로 관리운영체제에 대한 관점자원 할당자컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 어떻게 자원을 할당할 것인지 결정다양한 입출력장치와 사용자 프로그램의 통제자 (제어 프로그램)제어 프로그램은 사용자 프로그램을 통제하여 오류나 컴퓨터의 부적절한 사용 방지운영체제 유형1. 일괄 처리 시스템 (batch processing system)CPU의 유휴 상태(idle state)의 시간을 없애기 위해 작업 순.. 2025. 4. 30.
[C++] 클래스와 객체 1. 클래스와 객체객체지향 프로그래밍에서는 클래스와 객체의 개념이 등장합니다.객체지향 특징 중 캡슐화를 구현하기 위해 나온 개념인데, 하나의 데이터형을 추상화하기 위해 사용됩니다.쉽게 말하면 이렇게 됩니다.클래스 : 붕어빵 틀객체 : 붕어빵클래스라는 붕어빵 틀을 이용해, 객체라는 붕어빵을 필요한 만큼 만들어내는 것입니다.클래스를 구성하려면, 이 데이터형이 어떤 동작을 하는지 구성하고, 이를 추상화 할 필요가 있습니다.자동차로 예를 들어 보겠습니다.Class Car {속성 :색상배기량속도…기능 :시동 걸기시동 끄기가속하기…}이런 식으로 클래스를 구성하게 됩니다. 이 Car 클래스를 이용해서 세단, SUV, 트럭… 등 실제 자동차(객체)를 만들게 됩니다.이를 C++ 문법으로 작성한 코드입니다.class Ca.. 2025. 4. 30.
[C++] C++의 기본 (2) 1. Inline FunctionC언어에서는 동작을 정의할 수 있는 방법으로 매크로와 함수가 존재합니다.#define ADD(x,y) ((x)+(y)) // x와 y를 더함 int main() { ADD(3, 5);}위 코드는 매크로로 ADD 연산을 정의했습니다.매크로는 전처리 단계에서 해당 내용을 통째로 치환한 뒤 컴파일이 진행됩니다.이로 인해 매크로 내용이 길면 파일 크기가 커질 수 있습니다.ex) 위 코드에서 ADD(3, 5)는 ((3) + (5))로 치환되어 컴파일반면 함수의 경우 다음과 같이 사용합니다.int add(int x, int y) { return x + y;} int main() { add(3, 5);}add() 함수를 정의한 모습입니다. 매크로와 달리, 함수의 경우 해당 함수의 주소.. 2025. 4. 30.
[C++] C++의 기본 (1) C언어와 C++언어의 큰 차이점이라고 한다면,C언어는 절차 지향 프로그래밍 언어이고 C++는 객체 지향 프로그래밍 언어입니다.객체 지향 프로그래밍 언어의 특징은 다음과 같습니다.캡슐화 (Encapsulation)상속성 (Inheritance)다형성 (Polymorphism)1번의 경우 class로 이를 구현하며, class의 기능을 물려받아 또 다른 class를 정의한다는 것이 2번의 개념입니다.function overloading이나 overriding에 관련된 것들은 3번이며, 이 역시 class와 관련된 것들이 있습니다.이번 글과 다음 글에서는 C++만이 가지고 있는 기본적인 사항들을 다룰 것입니다.1. 표준 입출력C++에서는 다음 함수를 통해 표준 입출력을 처리합니다.cin : 입력, cout :.. 2025. 4. 30.
[C++] C언어 살펴보기 이 글은 C++ 프로그램을 작성할 때 반드시 알아야 할 C언어 특징을 정리한 글입니다.1. 표준 입출력C언어에서의 입출력 함수는 다음과 같습니다.출력 : printf(), 입력 : scanf()#include int main() { int n1, n2; print("두 수 입력 : "); scanf("%d %d" , &n1, &n2); print("두 수의 합 : %d\n", n1 + n2); return 0;}2. 배열C언어에서 배열을 선언하는 방법입니다.#include int main() { int arr[5]; int arr[5] = {1, 2, 3, 4, 5}; int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; int arr[1][1] = 1; // 1행 1열 값 변.. 2025. 4. 30.