computer science

2023. 10. 11. 21:19Study/beginner

320x100
320x100

컴퓨터 과학

-: 컴퓨터를 이용한 모든 작업과 그 기반 이론을 연구하는 학문

 

해킹

-: 컴퓨터 과학 지식을 응용하여 프로그램이나 시스템의 취약점을 발견하고 공격하는 행위

 

진법

-: 임의의 숫자 혹은 문자를 사용하여 수를 표현하는 체계

- 10진법(0~9), 2진법(0,1), 16진법(0~9, A~F)

 

bit: 컴퓨터에서 사용하는 데이터의 최소 단위

byte: 8개의 비트로 구성된 단위, 메모리에 저장되는 최소 단위

- 1 byte == 2^8 => 0~255(10진수) == 00000000~11111111(2진수) == 00~FF(16진수)

 

- MSB: 최상위 비트: 여러 개의 비트로 구성된 이진 데이터에서 가장 왼쪽에 있는 비트

- LSB: 최하위 비트: 가장 오른쪽에 있는 비트

- 가장 왼쪽에 있는 비트가 숫자의 크기에 가장 큰 영향을 미침

- MSB==0: 양수, MSB==1: 음수

 

byte ordering

- 빅 엔디안

--: 큰(==가장 왼쪽에 있는) 바이트부터 메모리의 낮은 주소에 저장

-- 네트워크 상에서 데이터를 전송할 때

-- SPARC CPU

- 리틀 엔디안

--: 작은(==가장 오른쪽에 있는) 바이트부터 메모리의 낮은 주소에 저장

-- Intel x86, x86-64 CPU

 

논리 연산

-: 참 또는 거짓 값으로 연산을 수행, 겨로가로 참(1), 거짓(0)을 반환

x || y 둘 중 하나라도 참이면 참 (OR)
x && y 둘다 참이면 참 (AND)
!x 참이면 거짓, 거짓이면 참 (NOT)

 

비트 연산자

-: 비트 단위로 논리 연산을 수행. 참(1), 거짓(0)

x | y 두 비트 중 하나라도 1이면 1 (OR)
x & y 두 비트 모두 1이면 1 (AND)
x ^ y 두 비트가 같으면 0, 다르면 1 (XOR)
~x 비트가 0이면 1, 1이면 0 (NOT)

 

시프트 연산자

-: 비트를 특정 값만큼 왼쪽 혹은 오른쪽으로 이동

- n만큼 시프트한 결과는 2^n으로 곱하거나 나눈 값과 같음

x << n 비트를 n만큼 왼쪽으로 이동
오른쪽 빈 칸은 모두 0
== x * (2^n)
x >> n
(산술 시프트)
비트를 n만큼 오른쪽으로 이동
왼쪽 빈칸은 MSB와 동일한 비트 값으로 채움(부호 유지)
== x / (2^n)
x >>> n
(논리 시프트)
비트를 n만큼 오른쪽으로 이동
왼쪽 빈칸은 모두 0
(음수는 부호가 유지되지 않음)

 

bit masking

-: 어떤 데이터가 존재할 때, 특정 위치의 비트만 표시하거나 가리는 연산

 

XOR 연산 암호화

- 비트 값이 같으면 0 반환(자기 자신과 XOR 연산하면 0)

- 같은 값에 어떤 값을 2번 XOR하면 원래의 값과 동일해짐

 

encoding

-: 데이터를 특정한 형식으로 변환하는 것

- 데이터의 크기를 줄이거나, 컴퓨터가 이해하기 쉽게 변환할 때 사용

 

decoding

-: 인코딩된 데이터를 원래의 값으로 구하는 것

 

ascii

-: 문자를 숫자로 변환하는 encoding의 표준

- 정보 교환을 위한 미국 표준 코드

- 아스키 문자 1개는 1바이트 크기, 7비트로 문자를 표현, 1비트는 오류 체크를 위해 사용

 

unicode

-: 전세계 모든 언어의 문자에 고유한 번호를 부여하는 국제 표준 코드

- 최대 32비트로 문자 1개 표현

- 유니코드 ⊃ 아스키코드

- 유니코드를 사용하는 인코딩 형식: UTF-8, UTF-16, UTF-32

 

URL 인코딩(퍼센트 인코딩)

-: 웹 브라우저로부터 받은 URP 문자열을 유효한 형식으로 변환하는 것

- 문자열을 인터넷으로 전송 가능한 형식으로 변환 => 전송 중에 문자가 수정되거나 의도와 다르게 해석되는 것을 막을 수 있음

- 인코딩이 필요한 특수문자 : / ? # [ ] @ ! $ & ' ( ) * + , ; = % 공백

Welcome, Dreamhack Beginners! :)
~~URL encoding~~
Welcome%2C%20Dreamhack%20Beginners%21%20%3A%29

 

base64 인코딩

-: 이진 데이터를 아스키 문자를 나열한 텍스트로 변환하는 인코딩 방식

- 6비트로 1개의 문자 표현

- 이진 데이터를 네트워크를 통해 전송하거나 텍스트 파일에 포함할 때, 텍스트 형식으로 나타내기 위해 사용

- 8비트로 이루어진 원본 이진 데이터를 6비트로 나눈다(개수가 안맞으면 0을 추가하여 6의 배수로) > 각 6비트를 10진수 값으로 변환 > base64 테이블에서 10진수 값에 해당하는 문자로 변환 > 비트 수가 8의 배수가 되도록 문자(패딩)를 추가

SGFwcHkgRHJlYW1oYWNrLCBIYXBweSBIYWNraW5nIQ==
~~base64 encoding~~
Happy Dreamhack, Happy Hacking!

 

인코딩 도구

cyber chef    https://tools.dreamhack.games/cyberchef

base64 encode   https://emn178.github.io/online-tools/base64_encode.html

encoding tools   https://encoding.tools/

320x100
320x100

'Study > beginner' 카테고리의 다른 글

nc(netcat)  (0) 2023.10.30
linux 사용법 (3)  (0) 2023.10.13
linux 사용법 (2)  (0) 2023.10.12
linux 사용법 (1)  (0) 2023.10.12
OS  (0) 2023.10.11