728x90

컴퓨터 구조의 필요성

-OS, 어플리케이션 등을 알기 위해서 컴퓨터의 구조와 동작 과정에 대해 먼저 학습이 필요함.

- 특히 키 로거를 구현하기 위해서 입출력 장치에 대해서 이해 필요

 

 

컴퓨터 구조

- CPU : 명령어를 해석하여 제어 신호를 주변 장치에 전달

- 메모리 : 데이터 저장

- 주변 장치 : 입력 장치로 키보드와 마우스, 출력 장치로 모니터와 프린터, 기능 확장을 위한 네트워크/그래픽카드

- 버스 : CPU가 메모리, 주변장치 간 데이터 전송을 위한 통로

 

 

CPU

- ALU Arithmetic Lo : 산술 논리연산 수행

- CU Control Unit : 기억장치로부터 받은 명령어를 해석하여 제어 신호를 보내는 유닛

- 레지스터 : 고속 데이터 저장 장소. 해킹시 레지스터 값 변화를 주시해야함 

- 버스 인터페이스

 

 

메모리

- 프로세서가 수행되는 공간으로 메모리 상의 값을 조작 함

- 논리적 메모리 구조 : 힙, 스택, 코드, 데이터

- ROM, RAM이 존재 

 

 

 

운영체제

- SW, HW를 제어하는 프로그램

- 개발자는 OS가 제공하는 API만 알면 됨

- SW 기능 : 프로세스 생성, 소멸, 동기화, 스케출링 수행, 파일 시스템 관리

- HW 기능 : 주변장치와 CPU, 센서 관리

 

 

프로세스

- OS의 제어를 받는 프로그램의 실행 단위 -> PCB Process Control Block으로 표현

 * PCB 자료구조 구성 : PID, Process Status, Counter, Register, 스케줄링 정보 등

- API 후킹, DLL 인잭션을 하기 위해서 프로세스 동작 이해 필요

 

 

프로세스와 메모리, 해킹

- 프로세스는 데이터를 메모리에 적재하여 수행.

- 메모리에 적재되는 데이터 종류 : 주소, 변수, 객체, 반환값

- 해킹과 메모리 : 소스 코드 인젝션, 버퍼 오버플로우 등은 메모리의 데이터를 변경하여 수행

 

 

논리적인 메모리 구조

- 코드 영역 : 실행 파일들을 이루는 명령어들이 적재되는 공간 -> 함수, 제어문, 상수 등

- 데이터 영역 : 전역 변수, 정적 변수, 구조체 등 적재

- 힙 영역 : 프로세스가 임의로 할당하는 공간(동적 할당). ex) malloc 사용하는 경우

- 스택 영역 : 지역 변수, 함수 호출 정보 저장 공간

 

 

 

네트워크 관련 용어

- 식별자 : 컴퓨터를 구분하기 위한 수단으로 MAC, IP

- 프로토콜 : 데이터를 전송하기 위한 규칙으로 주소, 포트번호 등 정보의 모음을 하나의 프로토콜이라 할 수 있음.

- 라우팅 : 데이터를 빠르게 전송할수 있는 경로를 찾는 기능

 

 

 

OSI 7계층

- Open System Interconnection

- 서로 다른 장치/시스템간에 통신을 수행할수 있도록 하는 표준 모델

- 상위에서 하위 층으로 내려갈때 헤더와 테일이 추가됨

7. 응용계층 : 프로그램에 서비스, API 제공(ex. FTP)

6. 표현 계층 : 데이터 표현 방식을 규정(ex. JPEG, ASCII, UTF-8)

5. 세션 계층 : 데이터를 전송하기 위한 프로세스간 가상의 통신 경로

4. 전송 계층 : 시스템간 연결이 확립되면 데이터를 전송하기 위한 정의(ex. TCP, UDP) 

3. 네트워크 계층 : 서로 다른 시스템이 통신하기 위한 최적의 경로 선정(ex. 라우터, IP, ICMP)

2. 데이터 링크 계층 : 논리적인 연결 정의 (ex. 이더넷, HDLC)

1. 물리 계층 : 물리적인 연결을 정의(ex. 리피터, 허브)

 

 

300x250

'컴퓨터과학 > 통신, 보안' 카테고리의 다른 글

해킹 - 5. 후킹  (0) 2020.07.29
해킹 - 4. 윈도우 어플 해킹 개요  (0) 2020.07.29
해킹 - 2. 해킹 종류  (1) 2020.07.28
해킹 - 1. 해킹 개요  (0) 2020.07.28
Iot 보안  (0) 2020.07.25
728x90

해킹의 종류

- 네트워크 해킹 : 패킷 훔쳐보기나 DOS 공격

- 어플리케이션 해킹 : 악의적 라이브러리 주입

- 웹 해킹 : 웹의 취약점 악용

- 시스템 해킹 : 커널 영역에서 데이터나 루트 권한 취득

 

 

웹해킹

- 가장 흔한 해킹 분야

- 웹의 구성 요소 : 브라우저, 웹서버, DB

- XSS Cross-Site Scripting : 게시글에 악의적 스크립트 삽입하여 정보 추출

- 피싱 phishing : 비슷한 웹사이트를 만들어 정보 취득

- CSRF Cross Site Request Forgery : XSS와 동일하게 악의적 스크립트 삽입. 웹서버 공격

- 파밍 Pharming : DNS를 해킹하여 위장 사이트를 보내는 기술

- SQL 인젝션 : 로그인시 입력 박스의 데이터는 SQL로 조회. 이를 악용.

- 웹 셸 : 파일 업로드를 악용하여 악의적인 파일을 업로드.

 

 

 

 

시스템 해킹

- 컴퓨터 시스템에 들어가 데이터나 권한 등을 탈취하는 행위

- 컴퓨터 시스템의 구성 요소 : HW, OS, 프로세스 -> 서로 인터페이스를 통해 정보를 주고받음. 그 사이를 침투

- 백도어 : 해커가 타인의 PC를 제어하도록하는 프로그램

- 레지스트리 공격 : 레지스트리를 조작하여 비밀번호 초기화, 방화벽 변경 등 공격 수행

- 버퍼 오버플로 buffer overflow : 잘못된 데이터를 입력하여 메모리에 해커가 원하는 데이터를 넣고 실행하는 공격.

- 루트킷 : 루트 권한 획득, 백도어, 위장 등 기능을 가진 프로그램

 

 

 

 

네트워크 해킹

- TCP/IP 프로토콜의 취약점을 악용하는 행위

- 포트 스캐닝 : 서버나 컴퓨터가 열린 포트를 찾는 방법

- 세션 하이재킹 : 세션에 존재하는 정보를 탈취하는 행위

- DoS Denial of Service : 대량의 패킷을 전송하여 서비스 거부를 일으켜 동작 못하게 만드는 기술

- 패킷 스니핑 : 동일한 네트워크에 이동하는 패킷을 훔쳐보기

- 스푸핑 spoofing : PC의 ARP 캐시 테이블을 조작하여 해커에게 정보를 전달하게 만드는 행위

 

 

 

 

어플리케이션 해킹

- 프로그래밍 언어로 만든 SW의 취약점에 접근하여 악용하는 행위

- 메시지 후킹 : 키로거의 경우 키보드 입력 메시지를 가로챔

- DLL 인젝션 : 악의적인 DLL을 어플리케이션에 삽입

- 코드 인젝션 : DLL 대신 악의적인 쉘 코드 삽입

- API 후킹 : 디버깅 프로세스에서 악의적인 코드 삽입

 

300x250

'컴퓨터과학 > 통신, 보안' 카테고리의 다른 글

해킹 - 4. 윈도우 어플 해킹 개요  (0) 2020.07.29
해킹 - 3. 관련 용어  (0) 2020.07.28
해킹 - 1. 해킹 개요  (0) 2020.07.28
Iot 보안  (0) 2020.07.25
네트워크 - 9 전송 계층 프로토콜  (0) 2020.05.18
728x90

해커와 크래커

- 해킹 : 네트워크와 컴퓨터 내부를 돌아다니는 행위

- 크래커 : 악의적인 해킹을 하는 해커

- 화이트 해커 : 크래커로부터 시스템을 보호하는 해커

 

 

해커의 일

- 취약점 점검 : 포트 스캐닝 등 다양한 기법으로 SW, Network, HW 취약점 점검

- 포렌식 : 범죄 증거 찾는 일

- 보안 관제 : 대규모 시스템 관리

- 침투 테스트 : 보호 되어야 하는 네트워크로 접근 가능한지 확인하는 행위

 

 

해킹의 종류

- 네트워크 해킹 : 열린 포트를 찾거나 패킷을 수집 분석(스니핑), 서버로 위장하여 공격(스푸핑)

- 어플리케이션 해킹 : 임의의 라이브러리나 소스 삽입, 키보드 입력 가로채기

- 웹 해킹 : 웹 크롤러, 입력 박스에 오류코드 주입(SQL 인젝션), HTTP 패킷 수정하여 악의적 파일 업로드

- 시스템 해킹 : 해커가 PC를 제어가능한 백도어 작성, 레지스트리 검색 및 수정 등

 

 

300x250

'컴퓨터과학 > 통신, 보안' 카테고리의 다른 글

해킹 - 3. 관련 용어  (0) 2020.07.28
해킹 - 2. 해킹 종류  (1) 2020.07.28
Iot 보안  (0) 2020.07.25
네트워크 - 9 전송 계층 프로토콜  (0) 2020.05.18
네트워크 - 8 라우팅 프로토콜 2  (0) 2020.05.18
728x90

특징점의 필요성

- 대응점 찾기 correspondence나 매칭 문제에서 특징점이 필요

- 입력영상에섯 꼭지점들이 주로 특징점으로 사용됨

- 이러한 특징점들은 영상에서 변환이 일어나도 검출  할 수 있어야 함.

 

지역 특징 local feature

- 구성 요소 : 스케일, 위치, 방향 특징 벡터 등

- 검출 단계에서 스케일과 위치, 기술 단계에서 방향과 특징 벡터를 구함

 

지역 특징의 특성

- 분별력 : 영상의 다른 부분들과 구분 가능해야함

- 반복성 : 비슷 한 영상에서 동일하게 검출가능해야함

- 지역성 : 다른 물체로 가려지는 상황에 대처할 수 있도록 특정 지점에서 지역적이여야 함

- 계산 효율 : 빠른 시간에 수행해야함

 

 

 

 

 

 

 

 

모라벡 알고리즘

- 입력 영상과 마스크(특정 픽셀의 상하좌우 4방향)가 주어질 때, 제곱차합(SSD) S(v, u) 맵 계산

- S(v, u) 맵이 수직이나 수평 방향으로 값을 가진다 -> 에지

- S(v, u) 맵이 모든 방향으로 값이 크다 -> 특징

=> but. 노이즈나 회전시 대각선 방향에서 찾을수 없음

 

 

해리스 코너

- 모라벡 알고리즘에서 노이즈 대처할 수 있도록 가우시안 마스크를 사용.

- 입력 영상과 마스크(가우시안)이 주어질 때 가중치 제곱차합(WSSD)로 S(v,u)맵 계산

- 태일러 전개를 통해 각 방향에 대한 미분 영상 획득

 => 가우시안 마스크와 미분 영상들을 컨볼루션하여 2차 모멘트 행렬 구함

- 2차 모멘트 행렬의 고유치로 특징 여부를 계산 가능

- 아래의 이미지는 opencv의 해리스 코너 검출기로 검출한 특징 결과

 

https://hello-stella.tistory.com/19

 

 

 

 

 

 

 

 

 

 

 

비최대 억제 non-maximum suprresion

- 지역 특징을 제외한 지점들을 억제시키는 방법

- 특징 계산시 : 모라벡 알고리즘, 해리스 알고리즘, LOG 등 선정하여 사용

- 특징 가능성 지도로 특징점 찾기 가능

 

 

 

 

스케일에 강인한 특징

- 원본 영상의 다양한 크기(다중 스케일 영상)에서 검출 가능한 특징 + 다양한 표준 편차로 가우시안 스무딩 적용

- 가우시안 피라미드

https://darkpgmr.tistory.com/137

 

 

그라디언트, 라플라시안, 헤시안

- 그라디언트 : 1함수(영상), 다변수 미분

- 자코비안 : 다함수, 다변수 미분

- 헤시안 : 다함수, 다변수 2차 미분

- 라플라시안 : 함수의 2차 편미분들의 합

 

 

 

 

그라디언트의 크기와 방향 영상 비교

- 그라디언트의 크기 영상과, 그라디언트의 방향 영상

https://darkpgmr.tistory.com/132

 

원본 영상, 라플라시안 영상, 그라디언트 크기 영상 비교

- 라플라시안 영상 : x축 2차미분, y축 2차 미분 영상들의 합

- 그라디언트 크기 영상 : x축 1차 미분, y축 1차 미분 영상의 유클리디안 노름

https://darkpgmr.tistory.com/132

 

 

 

300x250
728x90

허프 변환 hough transform

- 에지들로부터 선분 검출하는 알고리즘

1. y-x 공간에 존재하는 점(에지)들을 직선의 방정식으로 나타내는 b-a 공간에서 표시

2. b-a 공간상에서 교점이 점들을 지나는  y-x공간에서의 직선 방정식을 나타냄

https://iskim3068.tistory.com/51

 

3. y-x 공간에서 수직선은 기울기가 무한대 이므로 b-a 공간 대신, 극 좌표계 공간상에서의 교점을 찾으면 해결

https://songminkee.github.io/studyblog/computer%20vision/2020/06/06/hough_transform.html

 

 

RANSAC RANdom SAmple Consensus

- 인라이어와 아웃라이어가 혼합된 데이터에서 인라이어를 찾아 모델로 만드는 방법

 => 모델이 직선의 방정식인 경우 y = ax + b. RANSAC은 잡음을 제거한 a, b를 구함

- RANSAC으로 아웃라이어를 제거한 근사화된 모델 예시

https://darkpgmr.tistory.com/61

 

300x250
728x90

에지 edge

- 영상에 존재하는 물체 간 혹은 물체와 배경 사이의 경계

- 영상의 미분을 통해 구함

 

에지 검출 전 주의사항

- 잡음이 심한 경우 에지가 매우 커짐

=> 에지 검출전 스무딩 수행 필요

 

 

 

 

그라디언트 벡터 gradient vector

- 영상 f(y,x)에서 y방향에 대한 편도함수와 x방향에 대한 편도함수

 

 

에지 검출에 사용되는 마스크

- 그라디언트 계산에 사용됨.

- 단순한 마스크를 확장하여 스무딩 효과를 갖는 대표적인 마스크 3가지

- 로버츠 연산자 : 잘 안씀.

- 프레윗 연산자 : 위 아래 행과 열을 고려.

- 소벨 연산자 : 가장 많이 쓰임. 가까운 화소일수록 더 큰 가중치

- 아래의 그림은 로버츠, 소벨, 프레윗 연산자 순서

http://www.aistudy.com/robot/vision_niku.htm

 

 

 

그라디언트, 에지 강도, 그라디언트 방향

- 그라디언트로 에지 강도와 그라디언트 방향을 계산 가능

- 그라디언트 방향과 에지 방향의 관계 => 서로 수직

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_canny/py_canny.html

 

 

 

 

Marr의 알고리즘

- 1970년대까지 소벨 연산자가 많이 쓰임

- 가우시안 마스크의 분산에 따라 여러가지의 에지 영상을 얻을 수 있음

 

LOG Laplacian Of Gaussian

- 라플라시안 : 2차 편도함수의 합

- LOG 란 ? 기존 영상에 가우시안 필터를 컨볼루션 한 후 라플라시안을 적용하는 것

 => 여기서 사용하는 연산자를 LOG 연산자

https://www.researchgate.net/figure/LOG-filter-with-s-04-positive-and-negative_fig3_331446295

 

 

 

 

 

 

 

 

캐니 에지

- 1986년 발표.

- 기존의 에지 알고리즘들은 가장 좋아보이는 휴리스틱한 방법으로 찾음.

- 캐니 에지는 에지 검출을 최적화로 다룸

- 가우시안의 표준편차, 이력 임계값 T_high, T_low 가 주어지면 캐니 에지 영상을 획득 가능

 

 

 

 

 

에지 영상 비교

 

https://m.blog.naver.com/PostView.nhn?blogId=bmk5133&logNo=80168358001&proxyReferer=https:%2F%2Fwww.google.com%2F

 

300x250
728x90

연결요소 connected component

- 특정 픽셀 주위에 연결된 픽셀들

- 4 연결성 : 중앙 픽셀을 포함한 상하좌우 픽셀들의 모임

- 8 연결성 : 중앙 픽셀과 주위 픽셀들의 모임

https://scc.ustc.edu.cn/zlsc/sugon/intel/ipp/ipp_manual/IPPI/ippi_ch14/ch14_flood_fill_functions.htm

 

 

 

 

 

범람채움 알고리즘 floodfill algorithm

- 시작점으로부터 일정 규칙에따라 연결 요소들을 채우는 알고리즘

https://www.wikiwand.com/en/Flood_fill

 

 

 

 

 

 

 

모폴로지 연산 morphorlogy operation

- 침식 errosion 연산 : 마스크를 컨볼루션하여 기존 영상을 깍아내는 연산

- 팽창 dilation 연산 : 마스크를 컨볼루션하여 기존 영상을 팽창 시키는 연산 

 

- 열기 opening 연산 : 침식 후 팽창

- 닫기 closing 연산 : 팽창 후 침식 -> 번호판 검출시 사각 영역을 추출하기 위해서 사용되기도 함 

 

 

모폴로지 morphology 

- 이진 모폴로지 : 이진 영상에서 수행하는 모폴로지

- 명암 모폴로지 : 명암 영상에서 수행되는 모폴로지

 

 

 

 

 

 

 

 

 

번호판 검출 과정 예시

1. 입력 영상으로부터 에지검출

2. 정규화 및 임계치 이진화

3. 수평수직 팽창

4. 수평 침식

5. 번호판 영역 검출

 

300x250
728x90

영역 연산

- 윈도우(=마스크 = 커널)와 입력 영상의 곱합 => 상관 correlation

- 뒤집은 윈도우와 입력 영상의 곱합 => 컨볼루션 convolution

https://kionkim.github.io/2018/06/08/Convolution_arithmetic/

 

가우시안 스무딩

- 가우시안 마스크(필터)를 이용한 영상 스무딩

- 분산 값에 따른 레나 이미지의 가우시안 스무딩 결과

https://codingcoding.tistory.com/24

 

기하학적 연산 geometry opearation

- 동차 좌표 homogeneous coordinate와 동차 행렬 homogeneous matrix을 이용하여 기하학적 변환(연산)이 수행된다.

- 동차 좌표

- 동차 행렬

 

 

기하학적 연산과 변환 정리

- 기하학적 연산 : 평행 이동 translation, 회전 rotation, 크기변환 scaling, 기울이기 shearing, 원근 homography

https://stackoverflow.com/questions/45637472/opencv-transformationmatrix-affine-vs-perspective-warping

 

- 강체 변환 rigid transform : 평행이동 + 회전

- 닮음 변환 similarity transform : 평행이동 + 회전 + 크기 변환

- 어파인 변환 Affine Transform : 평행이동 + 회전 + 크기 변환 + 기울임

- 원근 변환 perspective transform : 평행이동 + 히전 + 크기 변환 + 기울임 + 원근

 

기하학적 연산과 관련 변환들

 

 

원근 변환 예시

- 기울어진 STOP 표지판을 정면에서 보는것 처럼 원근 변환을 수행

https://www.programmersought.com/article/30023581/

300x250
728x90

이미지 프로세스 image process

- 입력 영상을 처리하여 새로운 영상을 만드는 과정

- 점 연산, 영역 연산, 기하 연산 등 존재

- 점 연산 point operation : 픽셀 값만 보고 새로운 값을 정하는 연산

- 영역 연산 area operation : 이웃 픽셀들을 참고하여 새 값을 구하는 연산

- 기하 연산 geometric operation : 기하학적 특징에 따라 값이 정해지는 연산

 

 

 

점 연산

- 선형 연산 : 특정 픽셀을 밝거나 어둡게, 곱하는 등 선형 연산을 수행하는 점 연산

https://snscud.tistory.com/27

- 비선형 연산 : ex. 감마 값에 따라 색상 조절하는 점 연산(감마연산)

 

http://www.tv4u.co.kr/guide/content.asp?idx=1483

 

 

 

300x250
728x90

이진 영상

- 일반적인 흑백 영상은 명암으로, 컬러 영상은 3채널에 대한 값들로 이루어짐

- 이진 영상은 0,1로 이루어진 영상

 

이진화

- 영상을 0, 1로만 이루어진 영상으로 만드는 연산

- 임계치를 이용한 이진화

 => 특정 명암 위는 1, 아래는 0으로 이진화(아래의 영상의 임계치 T = 128)

http://blog.daum.net/monorail_/26

 

 

오츄 알고리즘

- 최적의 임계치를 찾아 이진 영상을 만드는 알고리즘

 => 오츄 알고리즘에서 최적 임계치 : 명암 분포가 균일(작도록)하도록하는 임계치

https://medipixel.github.io/post/2019-06-07-image-thresholding/

 

 

 

 

300x250

+ Recent posts