**컴퓨터 과학(Computer Science)**은 컴퓨터를 이용한 모든 작업과 그 기반 이론을 연구하는 학문이다. 이는 코딩뿐만 아니라 계산 이론, 알고리즘, 소프트웨어 설계, 네트워크 등 광범위한 영역을 포함한다.
해킹은 이러한 컴퓨터 과학 지식을 응용하여 프로그램이나 시스템의 취약점을 발견하고 공격하는 행위를 가리킨다. 따라서 컴퓨터 시스템, 네트워크, 프로그래밍 언어, 운영 체제 등의 컴퓨터 과학 지식이 요구된다.
**진법(Number System)**은 한 자릿수에 표현할 수 있는 숫자의 개수이다.
n진법은 한 자릿수를 n가지 (0~n-1)의 숫자 혹은 문자로 나타낼 수 있다.
n진법으로 나타낸 수는 n진수라고 한다.
| 10진수 | 2진수 | 16진수 |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 3 | 0011 | 3 |
| 4 | 0100 | 4 |
| 5 | 0101 | 5 |
| 6 | 0110 | 6 |
| 7 | 0111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
| 16 | 0001 0000 | 10 |
비트와 바이트는 컴퓨터의 데이터를 다루는 데 가장 기본이 되는 개념이다.
컴퓨터는 0과 1만으로 데이터를 표현하고 처리한다. 0과 1은 전기 신호와 관련이 있는데, 전기 신호가 통할 때는 1, 아닐 때는 0으로 나타낸다. 이때 0과 1을 나타내는, 컴퓨터에서 사용하는 데이터의 최소 단위를 **1 비트(bit, binary digit)**라고 한다.
8개의 비트로 구성된 더 큰 단위는 **1 바이트(byte)**라고 하고, 이는 메모리에 저장되는 최소 단위이다.
1 바이트는 256가지의 수를 표현 가능하며, 10진수로 0~255, 2진수로 00000000~11111111, 16진수로 00~FF 까지 나타낸다.
16진수 한 자리는 2진수 네 자리로 변환된다. 예를 들어 0x3C는 2진수로 0011 1100이 된다.