IT'S DO
article thumbnail
Published 2024. 4. 11. 14:30
정처기 2주 합격 팁 정처기/팁
728x90

 

# 그전 까지 공부하기 싫고, 공부를 안하니, 막상 시험날에 떨어지겠지 라는 생각에 안가고, 하기 싫어서 안하고 있다가.

본격적으로 2주를 공부하고 합격하게 되었다.

점점 늦어질 수록 더 힘들어지는게 맞는것 같다.

 

아래는 중요 순위이다.

 

1위 - 10장. 프로그래밍 언어 활용
2위 - 8장. SQL 응용
3위 - 11장. 응용 SW 기초 기술 활용
4위 - 9장. 소프트웨어 개발 보안 구축
5위 - 7장. 애플리케이션 테스트 관리
6위 - 4장. 서버 프로그램 구현
7위 - 2장. 데이터 입출력 구현
8위 - 나머지

 

주구장창 정리했지만, 아래는 다 도움이 된다. 다 외우자.

거기다 지금 까지 나온 문제들 2021~2024 까지 싹다 프로그래밍 문제 풀면서 감 익히자. 풀다 보면 감이 익혀진다.

 

#팁 

서술형 대비에 좋은 사이트가 있다. 

https://nanalike.notion.site/35e0e234d27948afba77f062939f7491?v=2cb39e3c4fdc4fcaa0c00383ca7abdb4

 

[정처기] 서술형 대비 요약정리 | Notion

Built with Notion, the all-in-one connected workspace with publishing capabilities.

nanalike.notion.site

 

나도 도움 많이 받았다.

위의 중요 순서대로 외우는게 좋다. 이유는 싹다 외우면 좋겠지만, 힘들고, 요즘은 프로그래밍 문제를 많이 내는 위주 기에

위의 순서를 기억하고, 중요한 것들만 외우면 좋다.

 

예를 들어

다이어그램, 블박,화박, 보안에서 각종 바이러스들 트로이 목마, 웜, OSI 7계층, 등 생각나는건 이런건데.

그 단원 마다 중요한게 있기에 그런 것들 위주로 외우고.

프로그래밍 문제 풀면서 감 익히자. 처음에는 못 풀면 풀이보고 진행하다가, 몇번 풀어보면서, 문제만 보고도 풀 수 있을 정도로 만들면 된다. 책도 사면 좋은데. 나는 책 사놓고 보기 싫어서 안봤다. 서술형은 메모장 켜놓고 키보드 치면서 외웠다. 프로그래밍 문제는 공책 펴놓고 적으면서 외웠다.  자신이 잘하는 쪽으로 공부 하시면 되겠다.

 

 

아래 것들은 나올거 같은 것들 한번더 보기 위해 적고 외운것들. 싹다 외워 가자 도움 많이 됐다.

심지어 아래로 인해서 이번에 합격 했다고도 볼 수 있다.

 

 

# Secure os

Secure OS : 보안 기능을 갖춘 커널을 이식한 보안형 OS

 

 

 # 구조적 다이어그램 / 정적 다이어그램

  1. 클래스 다이어그램 : 클래스 사이의 관계를 표현하는 UML을 이용한 정적 모델링의 대표 다이어그램
  2. 객체 다이어그램 : 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현
  3. 컴포넌트 다이어그램 : 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현
  4. 배치 다이어그램 : 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
  5. 복합체 구조 다이어그램 : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
  6. 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현

🐥 클객 컴배 복패

 

# 📘 행위적 다이어그램 / 동적 다이어그램

  1. 유스케이스 다이어그램 : 시스템이 제공하고 있는 기능과 그와 관련된 외부 요소들을 사용자의 입장에서 표현하는 다이어그램
  2. 시퀀스 다이어그램 : 객체 간 동적 상호작용을 시간적 개념으로 메세지 흐름을 이용해서 표현하는 다이어그램
  3. 커뮤니케이션 다이어그램 : 객체들이 주고받는 메세지와 객체 간의 연관을 표현하는 다이어그램
  4. 상태 다이어그램 : 하나의 객체가 자신이 속한 클래스의 상태변화 혹은 다른 객체간의 상호작요에 따라 상태가 변하는 것을 표현하는 다이어그램
  5. 활동 다이어그램 : 시스템이 어떤 기능을 수행하는지 처리의 흐름을 순서로 표현한 다이어그램
  6. 타이밍 다이어그램 : 객체 상태 변화와 시간 제약을 명시적으로 표현하는 다이어그램

🐥 유시커 상활타

 

# RAID

  • RAID : 2개 이상의 하드디스크로 디스크 배열 구성, 데이터 블록을 서로 다른 디스크에 분산 저장하거나 다중화
    • RAID 0 : 스트라이핑, 디스크를 병렬로 연결, 하나의 디스크만 손상되어도 전체 디스크 파손
    • RAID 1 : 미러링, 같은 데이터를 다른 디스크에 동일하게 복사
    • RAID 2~4 : 하나의 디스크에 오류 정정 부호를 각각 비트/바이트/워드 단위로 저장
      • 하나의 디스크가 손상되어도 정상 가동 가능. 최소 3개 디스크 필요
    • RAID 5 : 오류 정정 부호를 여러 디스크에 분산 저장
      • 마찬가지로 최소 3개 디스크 필요. 하나 디스크 손상되어도 정상 동작 가능
    • RAID 6 : 오류 정정 부호 2개를 여러 디스크에 분산 저장
      • 2개의 디스크가 손상되어도 정상 가동 가능. 최소 4개 디스크 필요.
      •  

#네트워킹에 필요한 모든 유형의 자원을 추상화하고, 소프트웨어 기반이며 자동으로 관리와 제어가 가능케 하는 가상화 기술
NFV (Network Functions Virtualization)

 

#링크 상태 알고리즘을 적용한 대표적인 프로토콜로, 링크에서의 전송 시간을 링크 비용(거리)으로 사용하며 각 목적지 별 최단 경로를 다익스트라 알고리즘을 통해 알아내는 프로토콜
OSPF

#OSI 7 layer 참조 모델에서 사용되는 Protocols 중 TCP와 UDP port를 함께 사용하는 프로토콜
DNS

#패킷 전송의 최적 경로를 위해 다른 라우터들로부터 정보를 수집하는데, 최대 홉이 15를 넘지 못하는 프로토콜
RIP

#TCP/IP 프로토콜 중에서 IP 계층의 한 부분으로 에러 메시지와 같은 상태 정보를 알려주는 프로토콜
ICMP(Internet Control Message Protocol)

#인터넷에서 멀티캐스트를 위하여 사용되는 프로토콜
IGMP

#하이퍼바이저를 사용하거나 게스트 운영체제도 설치하지 않고 서버 운영에 필요한 프로그램과 라이브러리만 이미지로 만들어 프로세스처럼 동작시키는 경량화된 가상화 방식이며 실행되는 이미지는 컨테이너라고 부르며, 가상화 레이어가 존재하지 않고 운영체제도 존재하지 않기 때문에 파일 시스템,네트워크 속도가 상당히 빠르다
설명에 해당하는 용어
Docker 

 

 

# 각 포트 

ftp 21
ssh 22
telnet 23
smtp 25
dns 53
tftp 69
http 80
pop3 110 
imap 143
snmp 161
irc 194
https 443

 

# ROW_NUMBER(), RANK(), DENSE_RANK() 차이 over(order by 칼럼명 desc)

 

#ROW_NUMBER()
SELECT ROW_NUMBER() OVER (ORDER BY 급여 DESC) AS 순위,
이름, 부서, 직책, 급여 FROM 급여
순번에 대하여 동률일 경우 먼저 들어온 순서대로 처리됨.



# RANK()
SELECT RANK() OVER (ORDER BY 급여 DESC) AS 순위,
이름, 부서, 직책, 급여 FROM 급여
순수하게 순위에 대한 순번으로 동률일 경우 같은 순번으로 처리됨.
예를 들어 급여 220, 220 이면 제시카, 티파니가 순번 77 로 얻고 
다음 나오는 윤아는 9로 나옴.



# DENSE_RANK()
SELECT DENSE_RANK() OVER(ORDER BY 급여 DESC) AS 순위,
이름, 부서, 직책, 급여
예를 들어 급여 220, 220이면 제시카, 티파니가 77로 순번 같아지고
그 다음 나오는 윤아는 8로 나옴.

 

결론 :

row_number, rank의 차이는 row_number은 같은 값이여도 들어온 순서대로 번호를 매기지만, rank는 같은 데이터 값이면(동률) 같은 번호로 매김.

rank와 dense_rank의 차이는 같은 동률 값이 있을떄, 7 7로 같은 값의 번호이면 그 다음 번호는 rank는 9로 나오고

dense_rank는 7 7 일때 다음 번호 8로 나옴.

 

 

# 집계 함수들

sum
select job, sum(sal) from table group by job;


avg
select job, avg(sal) from table where deptno in (10,20,30,40)
group by job;

select avg(sal) from emp where job = 'salesman';


max , min
select max(total), min(total) from table;


stddev
표준 편차
stddev

varian
분산



rollup
rollup함수는 소그룹간의 합계를 계산하는 함수
ex)
select 상품ID, 월 SUM(매출액) AS 매출액
FROM 월별매출 GROUP BY ROLLUP(상품ID, 월);
각 상품ID 별 매출액이 더해서 나와짐.
ROLLUP함수는 인수의 순서에도 영향을 받음.



cube
EX)
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출 GROUP BY CUBE(상품ID, 월)

CUBE는 그룹핑 컬럼이 가질 수 있는 모든 경우의 수에 대하여
총계 함수를 가짐.

 




grouping sets 
첫번째 인자(상품ID)별 소계(SUBTOTAL), 두번째 인자(월)별 소계(SUBTOTAL)이 나오는 것을 확인할 수 있다.
ROLLUP과 CUBE와 달리 계층 구조가 나타나지 않으며 따라서 인자의 순서가 달라도 결과는 똑같다.

또한, GROUPING SETS 함수는 괄호로 묶은 집합별로도 집계를 구할 수 있다.

 

 

 

 

# union과 union all 차이

union은 합집합=> 중복을 제거하고 모두 포함.

 

union all 중복을 제거하지 않고 합집합.

 

# insert query

insert into 테이블명(컬럼1,컬럼2,컬럼3)

values (데이터1, 데이터2, 데이터3);

 

# 그온투, 리온프

grant 권한 on 테이블 to user

revoke 권한 on 테이블 from user;

 

# 딜프웨, 업셋웨

delete from table where 조건절;

update table set column='하이' where 조건절;

 

 

# sql outer join, inner join

outer join

select * from A a LEFT OUTER JOIN B b on a.key = b.key;

select * From A a FULL OUTER JOIN B b on a.key = b.key

select * from A a RIGHT OUTER JOIN B b on a.key = b.key;

select * from A a left OUTER join B b on a.key = b.key where b.key is null;

select * from A a Full outer join B b on a.key = b.key where a.key is null or b.key is null;

select * from A a right outer join B b on a.key = b.key where a.key is null;

 

 

내부 조인



SELECT * FROM A a INNER JOIN B b on a.key = b.key;

 

 

# DDL 정의어
크알드트
CREATE ALTER DROP TRUNTCATE

# DML 조작어
세인업데
SELECT, INSERT, UPDATE, DELETE

# DCL 제어어
GRANT SELECT ON TABLE TO USER
REVOKE SELECT ON TABLE FROM USER

 

 

# 걍 외우기 로킹, pert, cpm, ccpm, 낙관적 검증

일정 관리 모델 씨씨펕
1. CPM
2. CCPM
3. PERT
CPM (주 공정법) 여러 작업의 수행 순서가 얽힌 프로젝트에서 일정을 계산하는 기법
- 임계 경로(Critical Path) 계산법 ⇒ 가장 긴 경로 계산!
CCPM (중요 연쇄 공정법) 주 공정법의 연쇄법으로, 자원 제약사항을 고려해 게산
PERT 낙관치∙중관치∙비관치의 3점 추정방식으로 일정 관리

병행 제어 다수 사용자 환경에서 일관성 유지를 위해 제어하는 기법
로킹 트랜잭션의 순차적 진행을 보장하는 기법
 - 로킹 단위 : 한번에 로킹할 수 있는 객체 크기
 - 로킹 단위가 작을수록 DB공유도는 증가하지만 로킹 오버헤드 증가

낙관적 검증 일단 검증 없이 진행 후, 종료한 다음 검증을 수행해 반영

 

 

 

 

# 얼 엘모드

 

alter table 테이블명 add 컬럼명 varchar
alter table 테이블명 modify 컬럼명 varchar
alter table 테이블명 drop 컬럼명

 

# 삭제 


drop table 테이블명 cascade 싹다 삭제
drop table 테이블명 restrict   인덱스나 뭔가 참조하는게 있으면 삭제 불가능

trauncate table 테이블명; 테이블의 모든 행의 데이터를 삭제

 

 

# 파이썬 map, fiter

각 숫자를 제곱하는 함수
def square(x):
    return x ** 2

# 리스트의 각 요소를 제곱 map 예제
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(square, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]

 

# filter() 예제:

filter() 함수는 주어진 함수로부터 True를 반환하는 요소만을 포함하는 이터러블을 반환합니다.

python
Copy code
# 양수인지 확인하는 함수
def is_positive(x):
    return x > 0

# 리스트에서 양수만 필터링
numbers = [-2, -1, 0, 1, 2]
positive_numbers = list(filter(is_positive, numbers))
print(positive_numbers)  # 출력: [1, 2]

 

 

#세션 하이재킹 (Session Hijacking)

  • TCP 신뢰성 기반의 연결을 이용한 공격 방법으로, 통신 내용을 엿보거나 세션을 가로채어 정상적인 인증 과정을 무시하고, 불법으로 시스템에 접근할 수 있는 공격을 말한다.

 

# 3장

정규화 (Nomralization) 데이터의 중복성을 제거하여 이상 현상을 방지하는 과정
이상 현상 (Anomaly) 데이터 중복으로 인해 릴레이션 조작 시 발생하는 비합리적 현상
 - 삽입, 삭제, 갱신 이상 삽삭갱
정규화 단계

 

도부이결다조
1NF, 2NF, 3NF, 보이스-코드(BC)NF, 4NF, 5NF


1차 정규화

도메인은 원자값으로만


2차 정규화

부분 함수 종속성 제거 (완전 함수적 종속 관계)


3차 정규화

이행 함수 종속성 제거 (A→B, B→C, A→C일 때 이행 함수 종속 관계)


보이스-코드 정규화

결정자는 모두 후보키


4차 정규화 다치(다중값) 종속 제거


5차 정규화 조인 종속 제거 (릴레이션의 모든 조인 종속이 후보키를 통해서만 설립)


반 정규화 (De-Nomralization) 정규화된 개체/속성/관계를 단순화하는 기법
 - 장점 : 성능 & 관리 효율성 ⬆️
 - 단점 : 일관성 & 무관성 ⬇️

 

 

# 데이터모델의 구성요소

연구제

 

연산 calculation

구조 structure

제약조건 constraint

 

 

# UI 시나리오 문서 작성 요건 

 

완일이가 추수
1. 완전성(completeness): 누락 없이 최대한 상세하게!
2. 일관성(consistency) : 요구사항은 일관적! UI도 일관적으로!
3. 이해성(understanding?) : 이해하기 쉬워야 함!
4. 가독성(legible) : 쉽게 읽혀야 함!
5. 추적 용이성(Traceable) : 변경사항을 알아보기 쉬워야 함!
6. 수정 용이성(Modifiable) : 쉽게 수정할 수 있어야 함!

 

# 설계 원칙

직유학유

 

직관성 (intuitiveness)

유효성 ( Efficiency)

학습성 (Learnability)

유연성 (flexibility)

 

# UML 다이어그램

 


동적  행위적 다이어그램 : 유시커 상활타
정적 구조적 다이어그램 : 클객 컴배 복패

 

클래스간 관계를 표현

 

객체간 관계를 표현

컴포넌트 간 관계를 표현 
구현 단계에서 사용
컴포넌트와 컴포넌트 간 관계를 표현한 다이어그램
컴포넌트 : 탭 2개가 달린 직사각형 + 이름
컴포넌트 다이어그램


물리적 요소의 위치 표현
구현 단계에서 사용
배치 다이어그램


복합 구조인 경우 그 내부 표현
복합체 구조 다이어그램


패키지 간 관계 표현
패키지 관계를 표현한 다이어그램
패키지 :  폴더 형태
패키지 다이어그램

행위적 다이어그램 동적 다이어그램

시간적 개념 중심으로 메시지 표현
시간적 개념 중심으로 메시지 흐름을 표현한 다이어그램
생명선 : -------
실행 : -- [    ] --(함수 실행시간)
시퀀스 다이어그램


사용자 관점에서 표현
사용자 시점에서 표현한 다이어그램
유스케이스: 찌그러진 원형
액터: o <-<
유스케이스 다이어그램


객체들이 주고 받는 메시지와, 상호작용(객체 간 연관)까지 표현
객체 : 사각형 (객체명:클래스명 으로 표현)
메시지 : ->로 표현
커뮤니케이션 다이어그램


시스템이 수행하는 활동을 표현
시스템의 처리 활동을 순서대로 표현한 다이어그램
 - ● : 시작점
 - ◉ : 종료점
 - 조건 노드, 병합 노드, 포크 노드
활동 다이어그램


객체의 상태와 상태 변화를 표현
객체의 상태와 상태 변화를 표현한 다이어그램
 - ● : 시작점
 - ◉ : 종료점
 - 전이, 전이 조건, 이벤트
상태 다이어그램


객체의 상태 변화와 시간 제약을 표현
타이밍 다이어그램

 

 

 

사각형 개체

속성 타원

관계 마름모

연결 선

 

기본키 타원 줄

 

개체간의 관계 타입 사각형 선 마름모 선 사각형

 

# 보안 해킹

 

스머프/스머핑

출발지 ip를 공격 대상의 ip로 변조하여, 브로드캐스팅으로 icmp echo 패킷 요청을 보내 과부하 시키는 공격

 

스니핑 (Sniffing)이란 '코를 킁킁거리다', '냄새를 맡다' 등)

공격 대상에 직접 공격을 가하지 않고, 몰래 정보를 들여다보는 수동적인 공격 기법

네트워크상에서 자신이 아닌 다른 상대방들의 패킷 교환을 훔쳐보는 행위

 

스니퍼 

공격자가 취약점을 탐색하는 도구

 

스누핑 ( Snoop은 기웃거리다, 염탐하다

네트워크 상에서 떠도는 중요 정보를 몰래 획득하는 행위를 말함.

 

스푸핑  (Spoof은 속이다, 사기치다 

외부의 악의적 네트워크 침입자가 웹사이트를 구성해 사용자들의 방문을 유도,

인터넷 프로토콜인 TCP/IP의 구조적 결함을 이용해 사용자의 시스템 권한을 획득한 뒤, 

정보를 빼가는 해킹 수법을 말한다.

 

ARP스푸핑

 MAC주소를 속여 랜에서의 통신 흐름을 왜곡시키는 기법을 말한다.

공격자는 사용자 몰래 모니터로 편안히 패킷의 흐름을 볼 수 있게 되는 것이다.

 

윈도우에서는 cmd 창에서 arp –a 명령을 입력함으로써,

IP주소와 해당 주소에 대한 MAC 주소 목록을 확인할 수 있으며,

이것을 ARP 테이블이라고 한다.

 

앞서 언급된 것처럼 IP주소를 속이면 IP스푸핑,

DNS를 속이면 DNS스푸핑이라고 하며,

DNS 스푸핑 공격을 통해 개인정보를 수집하면 그것을 파밍(Pharming)이라고 한다.

 

 

# SQL 용어

ㄱ. ROLLBACK ㄴ. UNDO ㄷ. LOG ㄹ. COMMIT
ㅁ. REDO ㅂ. RECOVERY ㅅ. BACKUP ㅇ. CHECK

 

DBMS는 데이터베이스에 치명적인 손실이 발생했을 때 이를 복구하기 위해 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 기록한 로그를 생성한다.

 

REDO : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(start)과 완료

(commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이전 값을 이후 값으로 변경하는 연산.

 

UNDO : 데이터베이스가 비정상적으로 종료되었을때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는

start는 있지만 원료를 나타내는 commit 기록이 없는 트랜잭션들이 작업한 내용들을 모두 취소한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이후 값을 이전 값으로 변경한다.

 

ROLLBACK :  보류중인 모든 데이터 변경사항을 폐기, 현재 트랜잭션 종료, 직전 커밋 직후의 단계로 회귀(되돌아가기)

전체 트랜잭션을 롤백.

 

COMMIT : 보류중인 모든 데이터 변경사항을 영구적으로 적용. 현재 트랜잭션 종료.

 

SAVEPOINT : ROLLBACK 할 포인트 지정(세이브포인트)

ANSI 표준SQL이 아님.

 

덤프(dump) 덤프는 주기적으로 데이터베이스 전체를 다른 저장 장치에 복제하는 것
로그(log) 로그는 데이터베이스가 변경될 때마다 변경되는 데이터의 변경 전/후의 값을 별도의 파일에 기록해두는 것

 

RECOVERY :  장애가 나기 바로 전 시점으로 복구하는 것을 의미함.

 

BACKUP : 데이터베이스의 복사본.

 

CHECK : 데이터를 입력할 때 해당 값이 조건에 부합하는지 체크를 하는 것. 그래서 부합이 되면 입력을 하고, 부합되지 않으면 입력되지 않도록 함.

 

CHECKPOINT : 로그에서 모든 범위로 하면 많으니 해당 범위를 제한을 두게끔 하는 것.

 

#

조건식 a, b, c가 있고 if (a && b && c)를 가정할 때,
조건 커버리지 : a, b, c 각각 참/거짓이 한번씩은 나와야 함.
결정 커버리지 : a && b && c 가 참/거짓이 한번씩은 나와야 함.
조건 결정 커버리지 : 조건 커버리지와 결정 커버리지 둘 다 만족해야 함.

조건 커버리지 만족하면 결정 커버리지 만족하는거 아님? >> 세 테스트 케이스에 대해서 (T, T, F), (T, F, T), (F, T, T)가 나오면 조건 커버리지는 만족하지만 결정 커버리지는 만족하지 못함. a && b && c 가 세 테스트 케이스에 대해서 F밖에 안나오니까.
마찬가지로 결정 커버리지를 만족한다고 해서 조건 커버리지를 만족하지 않음.

 

# 파이썬 문법

 

>>> print("hello" + "world")
helloworld
>>> print("hello", "world")
hello world
>>> print("hello %s" % "world")

>>> print("hello {}".format("world"))
hello world
>>> print(f"hello {'world'}")
hello world


def func(a, b=2):
        print('a=', a, 'b=', b) 
func(20)

[정답] a=20 b=2

 

7. 다음은 Python에서 리스트와 관련된 함수이다. 아래 설명에 대한 답을 [보기]에서 찾아서 작성하시오.
(1) 원래의 리스트에 지정한 리스트를 추가하여 확장한다.

(2) 마지막 요소 또는 지정한 요소를 삭제한 후 삭제한 값을 반환한다.

(3) 리스트를 역순으로 뒤집는다.

 

[보기]
ㄱ. pop   ㄴ. append   ㄷ. reverse   ㄹ. insert
ㅁ. sort    ㅂ. index    ㅅ. extend
 

닫기
[정답] (1) ㅅ. extend, (2) ㄱ. pop, (3) ㄷ. reverse

 

 파이썬의 리스트 관련 주요 메소드

형식 내용
extend(리스트) 리스트의 끝에 새로운 '리스트'를 추가하여 확장
[1, 2].extend([3, 4]) -> [1, 2, 3, 4]
pop(위치) 리스트의 '위치'에 있는 값을 출력하고 해당 요소를 삭제
[1, 2, 3].pop(1) -> 2 출력 -> [1, 3]
reverse() 리스트의 순서를 역순으로 뒤집음
[1, 2, 3].reverse() -> [3, 2, 1]
sort() 리스트를 정렬 (default: 오름차순)
[2, 1, 3].sort() -> [1, 2, 3]
[2, 1, 3].sort(reverse = True) -> [3, 2, 1]
index(값) 리스트에서 '값'이 저장된 위치를 반환
['a', 'b', 'c'].index('b') -> 1

 

 

# SQL

 

컬럼 삭제 
ATLER TABLE USER DROP COLUMN 주소

칼럼 수정
ALTER TABLE USER MODIFY 주소 VARCHAR(20)

칼럼 추가
ALTER TABLE USER ADD 주소 VARCHAR(20)

 

 

# 파이썬의 프린터는 기본적으로 출력하고 띄어짐


파이썬의 print() 함수는 기본적으로 지정된 값 또는 변수를 출력한 후에 줄을 바꿉니다. 따라서 print() 함수를 호출하면 출력된 내용은 새로운 줄에 표시됩니다.

예를 들어, 다음과 같은 코드를 실행하면:

python
Copy code
print("Hello")
print("World")

 

출력하면

Hello

World로 나옴

 

안띄우고 싶으면

print("Hello", end=' ')
print("World")

으로 하면 안띄우고 Hello World로 나옴

 

# 참고 문제

 

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol;
     for item in sub;
         print(item, end = ' ')
         print()

 

답 : 
[1,2,3]
7
1 2 3
4 5
6 7 8 9

 

값 담는것 sub item으로 값 뿌리는것 

item으로 담고 띄어 쓰기는 print()로 인해 이렇게 됨.

lol[0]은 전체 [1,2,3] lol[2][1] 구체적으로 나온건 아예 값 가져와서 7

 

sub이라는 변수에 lol 값을 담아라는 뜻

item이라는 변수에 sub이라는 값을 담아라는 뜻

그것을 item end 붙여서 출력해라. 그렇지만 0번째 , 1번쨰, 2번째 자리니 print가 각각 끝나니 다음줄

 

파이썬은 print는 다음줄이다.

 

 

# 한마디로 단일 일때는 괄호 출력 되지 않고, 리스트 일때만 괄호 출력됨.

 

파이썬에서는 리스트 요소를 반복할 때 괄호는 출력되지 않는다.따라서 for item in sub하면 괄호는 출력되지 않는다.괄호가 출력되는 것은 리스트 전체가 출력될 때 이다.

 

자바에서도 마찬가지

 

# 비트 연산자 

 

화살표 방향으로 이동. 값 저장 되는지 안되는지 확인 잘 할것

화살표 방향인 즉 오른쪽으로 2칸 이동.

result가 따로 값 저장 되는 거 없이 불러오기 때문에. 저장값 x

 

01100100 100 
00110010 1칸 이동 51
00011001 2칸 이동 26

 

답 : 26

 

# xor => 같지 않으면 1 같으면 0

 

(1 = 참 , 0 = 거짓)

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0 

 

# 헷갈리는 문제

 

class CharClass:
    a = ['Seoul', 'Kyeongi', 'Incheon', 'Daejeon', 'Daegu', 'Pusan'];
myVar = CharClass()
str01 = ' '
for i in myVar.a:
    str01 = str01 + i[0]
print(str01)


i[0]
0[0]
1[0]
2[0]

SKIDDP

' ' + 'S''S'와 동일하고, 'S' + 'K''SK'와 동일합니다

 

위에처럼 good에 name, age는 각각에 넣어라는 뜻 

Lee

38

 

#include <stdio.h>
 
struct jsu 
{
  char name[12];
  int os, db, hab, hhab;
};
 
int main()
{
   struct jsu st[3] = {{"데이터1", 95, 88}, {"데이터2", 84, 91}, {"데이터3", 86, 75}};
   struct jsu* p;
 
   p = &st[0];
 
   (p + 1)->hab = (p + 1)->os + (p + 2)->db;
   (p + 1)->hhab = (p+1)->hab + p->os + p->db;
 
   printf("%d\n", (p+1)->hab + (p+1)->hhab);
}

 

아래 처럼 jsu에 name => 데이터1 , 다음 자리 os, 그 다음 자리 db를 넣어라는 뜻

 

501

overloading은 매개변수에 따라 메소드의 이름을 다르게 할 필요가 없는것이 가장 큰 특징입니다.  즉 set(1) , set(1,2)처럼 이름이 같아도 매개변수가 다르면 다른 메소드입니다.

 

overriding 과 overloading의 차이가 참 헷갈립니다.  한문장으로 요약하자면 overriding은 부모클래스의 메소드를 변경하고, overloading은 같은 이름, 다른 매게변수를 가진 메소드를 만들 수 있다는 뜻입니다.

 

그래서 출력문의 getName() 과 getName(String val)은 다른 메소드입니다.

 

 

public class testco 
{
     public static void main(String[] args) 
     {
           int a = 3, b = 4, c = 3, d = 5;
           if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) 
           {
               a = b + c;
                   if(7 == b ^ c != a) { System.out.println(a); }
                   else { System.out.println(b); }
           } 

           else
           {
               a = c + d;
               if(7 == c ^ d != a) { System.out.println(a); }
               else { System.out.println(d); }
           }
      }
}

 

 

 

# ++ --

x++은 => 변수에 값을 먼저 받고 증가

++x는 => 값을 먼저 증가 시키고 값을 변수에 값 넣기.

2번 문제 : 다음 나오는 값은?

 

#include <stdio.h>

 

int main() {
  int arr[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50};
  int *p = arr + 4, a = 2, b = 3;

 

  p[3] = 35; // +1
  a = *--p;
  b = (*p)--;

 

  printf("%d, %d\n", a, b);
return 0;
}
 
 


# << , >>

# 각 포트 번호 및 응용 계층

 

21 FTP 
프로토콜을 이용해 서버와 클라이언트 간 파일을 전송하는 원격 파일 전송 프로토콜

22 SSH 
네트워크 보안도구 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메세지를 전송할 수 있는 시스템

23 TELNET 
원격 접속 서비스로, 특정 사용자가 네트워크를 통해 다른 컴퓨터에 연결하여 그 컴퓨터에서 제공하는 서비스를 받을 수 있도록 하는 인터넷 표준 프로토콜
가상 터미널 기능 수행

25 SMTP 
SIMPLE MAIL TRANSFER PROTOCAL 인터넷을 통해 이메일 메시지를 보내고 받을 때 사용되는 통신 프로토콜

53 DNS 도메인(Domain name)을 ip 주소(internet protocol address)로 매핑하는 시스템. dns는 웹 사용자가 브라우저에 도메인 이름을 입력하면 로컬 인터넷 서비스 공급자(isp)가 dns를 사용하여 도메인 이름에 대해 올바른 ip를 식별하므로 웹 사용자가 원하는 페이지나 자산을 다운로드 할 수 있도록함.
=> 도메인 이름을 ip주소로 매핑하는 시스템.

69 TFTP 
간단한 파일 전송 프로토콜 trival file transfer protocol ftp와 마찬가지로 파일을 전송하기 위한 프로토콜이지만 ftp보다 더 단순한 방식으로 파일을 보내는 방식 

80 HTTP html 파일과 같은 리소스를 가져오는데 사용되는 프로토콜

110 POP3(post office protocol version 3) 
전자메일이 전자메일 서버에 수신되고 보관되는 
단방향 클라이언트 서버 프로토콜이며, 전자메일을 검색하는데 사용되는 다른 프로토콜이다.

123 NTP
(Network time protocl)은 네트워크상에서 시간을 동기화하는 목적으로 디자인 

143 IMAP(internet access message protocol) 
imap은 인터넷 메시지 엑세스 프로토콜(internet message access protocol)의 
약자로 메일 서버 또는 서비스에서 전자메일 혹은 메시지를 읽어오는 클라이언트/서버 프로토콜이다.

161 SNMP 
tcp/ip 관리 프로토콜
네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용되는 프로토콜

443 HTTPS
(HyperText Transfer Protocol Secure)란 Http의 확장 버전으로 보다 안전한 버전 https 프로토콜을 사용하여 통신을 수행하면
홈페이지에서 통신하는 과정에 전송 내용을 암호화 한다.

 

#  중요한 계층들

전송 계층
TCP
양반향 연결형 서비스 제공
가상 회선 연결 형태의 서비스 제공
순서 제어, 오류 제어, 흐름 제어
스트림 위주의 패킷 단위 전달

 

UDP
비 연결형 서비스 제공
실시간 전송에 유리
신뢰성보다 속도 중시

 

RTCP
패킷의 전송 품질 제어
세션에 참여한 각 참여자들에게 주기적으로 제어 정보 전송
데이터 전송을 모니터링하고 최소한의 제어와 인증 기능 제공
32비트의 경계

인터넷 계층
IP

전송할 데이터에 주소를 지정하고 경로 설정

 

ICMP
IP와 조합하여 통신 중 발생하는 오류 처리
전송 경로 변경 등을 위한 제어 메시지 관리

 

IGMP
멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용

 

ARP
IP 주소를 MAC 주소로 변환 (논리주소 → 물리주소)

 

RARP
MAC 주소를 IP 주소로 변환 (물리주소 → 논리주소)

네트워크 계층
IEEE802
    LAN을 위한 표준 프로토콜
         IEEE 802.3 (Ethernet) : CSMA/CD 방식의 LAN
         IEEE 802.4 : 토큰 박스
         IEEE 802.5 : 토큰 링
         IEEE 803.11 : 무선 LAN

 

HDLC
비트 위주의 데이터 링크 제어 프로토콜

 

X.25
패킷 교환망을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜

 

 

# 테이블  관련된 내용

12. 다음은 데이터베이스에 관련된 내용이다. 각 괄호안에 알맞는 답을 작성하시오.

(보기가 있습니다. ex: 릴레이션 스키마  등)

 

구분 내용
(   1   ) - 셀 수 있는 수량의 순서 있는 열거이다.

- 어떤 요소의 집합, 혹은 테이블에서의 행을 가리키지만 일반적인 집합과는 달리 중복이 허용될 수 있다.

- 리스트와 동일하게 여러 객체를 모아서 담으며, 숫자, 문자, 객체, 배열, 튜플 안의 튜플 전부 가능하다.
(   2   ) - 어느 한 시점에 릴레이션의 내용(상태), 즉 저장된 데이터 전체를 의미한다.

- 단순히 릴레이션 또는 릴레이션 외연(Relation Extension)라고도 한다.
(   3   ) - 특정 데이터 집합의 유니크(Unique)한 값의 개수이다.

- 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표이다.

 

4. 쇼핑몰로 예를 들었을 때 회원정보, 상품, 주문내역과 같이 데이터베이스(DB)를 구성하는 데이터 개체, 속성, 관계에 대한 정의와 각 데이터를 조작할 때 이들이 유지해야 될 제약조건 등을 전반적으로 정의해놓은 것을 말한다.

 

 

1. 튜플

2. 릴레이션 인스턴스

3. 카디널리티

4. 스키마

속성 = 어트리뷰트

 

 

# 블박, 화박



동치 분할 검사
(Equivalence Partitioning Testing)
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로 동등 분할 기법이라고도 한다.
경계값 분석
(Boundary Value Analysis)
- 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법이다.
- 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법이다.
원인-효과 그래프 검사
(Cause-Effect Graphing Testing)
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법이다.
오류 예측 검사
(Error Guessing)
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법
- 다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법, 데이터 확인 검사라고도 한다.
비교 검사
(Comparison Testing)
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법이다.

 

블랙박스 테스트 유형 상원동경비분페유결
1. 상태 전이 테스트
2. 원인-결과 그래프 테스트
3. 동치 분할 테스트
4. 경곗값 분석 테스트
5. 비교 테스트
6. 분류 트리 테스트
7. 페어와이즈 테스트
8. 유스케이스 테스트
9. 결과 테이블 테스트
상태 전이 테스트 (State Transition Testing) 이벤트에 의해 객체 상태가 전이되는 경우의 수를 측정 (상태 전이도 모델링 → 전이 트리 도출 → 전이 경로 TC → 비정상 전이 TC)
원인-결과 그래프 테스트 (Cause-Effect Graphing Testing) 그래프를 통해 입력값 간의 관계 및 출력에 미치는 영향을 분석해, 효용성이 높은 TC를 선택해 테스트
동등 분할 테스트 (Equivalence Partitioning Testing) 입력 데이터 영역을 유효값/무효값으로 그룹핑해 대푯값 TC를 도출해 테스트
경곗값 분석 테스트 (Boundary Value Analysis Testing) 최솟값을 바로 위나 아래와 같이 입력 데이터의 극한 한계를 테스트 (2-Value, 3-Value)
비교 테스트 (Comparison Testing) 여러 버전의 프로그램에 같은 입력값을 넣어 결과를 비교
분류 트리 테스트 (Classification Tree Method Testing) 트리 구조로 분석 및 표현하여 테스트 (항목 선정 → 분류 트리 구축 → 분류 클래스 조합해 TC 생성)
페어와이즈 테스트 (Pairwise Testing) 테스트 데이터값을 최소 한 번씩 조합
유스케이스 테스트 (Use Case Testing) 유스케이스로 모델링 되어있을 때, 프로세스 흐름 기반으로 테스트 수행
결정 테이블 테스트 (Decision Table Testing) 요구사항을 테이블로 구성해, 원인(조건)-결과(행위)를 조합해 테스트

 

 

화이트 박스

기초 경로 검사
(Base Path Testing)
- 대표적인 화이트박스 테스트 기법이다.
- 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다.
제어 구조 검사
(Control Structure Testing)
- 조건 검사(Condition Testing): 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
- 루프 검사(Loop Testing): 프러그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 데이터 흐름 검사(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

 

화이트박스 테스트 유형 구결조조변다기제데
1. 구문 커버리지
2. 결정 커버리지 (=선택 커버리지, 분기 커버리지)
3. 조건 커버리지
4. 조건/결정 커버리지
5. 변경 조건/결정 커버리지
6. 다중 조건 커버리지
7. 기본 경로 커버리지
8. 제어 흐름 테스트
9. 데이터 흐름 테스트
구문 커버리지 (Statement Coverage) 모든 명령문을 한 번 이상 수행. 결과에 무관하게 구문 실행 개수로 측정
조건/결정 커버리지 (Condition/Decision Coverage) 결정 포인트 내 전체 조건식도 참/거짓을 한 번씩, 개별 조건식도 참/거짓을 한 번씩 수행
조건 커버리지 (Condition Coverage) 결정 포인트 내 개별 조건식이 참/거짓을 한 번씩 수행 (전체 조건식에 주는 영향은 고려X)
결정 커버리지 (Decision Coverage) 결정 포인트 내 전체 조건식이 참/거짓을 한 번씩 수행 (=선택 커버리지, 분기 커버리지)
변경 조건/결정 커버리지 (MC/DC) 결정 포인트 내 개별 조건식이 다른 개별 조건식의 영향을 받지 않고, 전체 조건식에 독립적으로 영향을 주도록 수행
다중 조건 커버리지 (Multiple Condition Coverage) 모든 개별 조건식의 가능한 조합을 100% 보장
(개별조건식의 수가 N이라고 했을 때, 2^N의 결과가 나옴. 즉, 개별조건식이 2개면 2^2=4, 3개면 2^3=8)
기본 경로 커버리지 (Base Path Coverage) 맥케이브의 순환복잡도를 기반으로, 수행 가능한 모든 경로를 테스트
(순환복잡도 계산: V=E-N+2 또는 V=P+1)
블랙박스 테스트 요구사항 명세를 보며 기능 위주 테스트 (명세 기반 테스트, 동적 테스트)
제어 흐름 테스트 (Control Flow Testing) 제어 구조를 그래프로 나타내어 테스트
데이터 흐름 테스트 (Data Flow Testing) 제어 흐름 그래프에 데이터 사용 현황을 추가한 그래프를 통해 테스트

 

statement coverage testing  
개발 소스의 각 라인이 수행되었는지를 확인하는 테스트 커버리지
만약 소스에 if문이 있다고 했을 때 x 커버리지는 true 조건 1가지에 대해서 커버리지 100%
나올 수 있는 반면에
(Line coverage, statement coverage, 구문 커버리지)

branch coverage testing
개발 소스의 각 분기문이 수행되었는지를 확인하는 테스트 커버리지이다.
x 커버리지는 if 문에 대해 true 조건/ false 조건이 각각 수행 되어야 100% 달성 할 수 있다.
(Decision coverage, branch coverage, 결정 커버리지)

path coverage testing
각 if문 간의 조합 까지도 따지는 커버리지이다. 첫번째 분기문 true - 두번째 분기문 false 모 이런

 

 

응집도 

기순교절 시논우

결합도

자스제외공내

 




아파서티나다피
# OSI 7계층

=> 다시 확인 l2tp이런것들

 

1장

디자인 패턴(생구행)

 

생성 (5)

팩프빌싱추

팩토리 메소드

프로토타입 

빌더

싱글톤

추상 팩토리

 

구조 (7)

퍼플컴프브어데

퍼싸드

플라이 웨이트

컴포지트

프록시

브릿지

어댑터

데코레이션

 

행 (11)

미인템옵비커이체스스메

미디에이터(중재자)

인터프리터(여러구문 해석)

템플릿 메소드

옵서버/옵저버

비지터

커맨드

이터레이터(반복자)

체인 오브 리스폰스빌리티(책임 연쇄)

상태

스트레이지(전략)

메멘토 : 특정 시점의 객체 내부 상태를 객체화하여, 해당 시점으로 되돌리는 기능을 제공.

 

 

 

 

9장

 

SW개발 보안 3대 요소 : 기무가 기밀성, 무결성, 가용성
인가되지 않은 접근에 정보 노출을 차단하는 특성
정당한 방법으로만 데이터를 변경할 수 있으며, 데이터의 정확성을 보장하는 특성
권한을 가지고 있으면 서비스를 지속해서 사용할 수 있도록 하는 특성 
자위취위 자산, 위협, 취약점, 위험
시스템의 자원을 고갈시켜 서비스 거부를 유발하는 공격
ACK를 발송하지 않고 SYN 패킷만 보내 점유하여 자원을 고갈시키는 공격
대량의 UDP 패키지를 임의의 포트번호로 전송하지만, 응답 메시지는 공격자에 전달되지 않아 자원을 고갈시키는 공격
출발지 IP를 공격 대상의 IP로 변조하여, 브로드캐스팅으로 ICMP Echo 패킷 요청을 보내 과부하시키는 공격
ICMP 패킷(핑)을 아주 크게 만들어 과부하시키는 공격
출발지 IP와 도착지 IP를 같은 주소로 만들어, 자기 자신에게 응답을 보내도록 하는 공격
조작된 IP 패킷 조각을 보내 재조립 과정에서 오류를 발생시키는 공격
여러 대의 공격자를 분산 배치 후 동시에 동작시키는 DoS 공격 (대역폭 소진 공격 & 서비스 마비 공격) 
1) 공격자 : 해커 컴퓨터
2) 마스터 (Master) : 공격자의 명령을 받고 에이전트를 관리하는 시스템
3) 핸들러 (Handler) : 마스터 시스템의 프로그램
4) 에이전트 (Agent) : 직접 공격하는 시스템
5) 데몬 (Daemon) : 에이전트 시스템의 프로그램
UDP 플러딩 공격 도구



해커 보안 기술

 

UDP 플러딩, SYN 플러딩, 스머프 등등 여러 DDos 공격이 가능한 도구      TFN
DDos의 에이전트 역할을 하는 도구       Stacheldraht 


=Slowloris. 헤더 정보를 조작하여, 웹 서버가 온전한 헤더정보가 올 때까지 기다리게 하는 공격    slow HTTP HEADER DOS
=RUDY. 헤더의 Cotnent-Length를 아주 크게 만들고, 데이터를 아주 소량으로 보내 연결을 유지하게 하는 공격  slow  http POST dos
TCP 윈도 크기와 데이터 처리율을 감소시킨 뒤, 다량의 HTTP 요청을 보내는 공격 slow HTTP READ Dos
IP 패킷의 재전송, 재조합 과정에서 오류를 발생시키는 공격 (봉크: 같은 시퀀스 번호 / 보잉크: 시퀀스 번호에 빈 공간)      봉크/보잉크
공격자가 공격대상의 URL을 계속 변경하면서(=차단 정책 우회) 다량의 GET 요청을 보내는 공격 Hulk Dos

공격대상에 직접 공격을 가하지 않고, 몰래 정보를 들여다보는 수동적인 공격 기법       스니핑
 
공격자가 취약점을 탐색하는 도구        스니퍼


ID/PW가 될 가능성이 있는 단어를 대입하는 공격               딕셔너리 크래킹
PW로 사용될 수 있는 문자를 무작위로 대입하는 공격              brute force 크래킹 무차별 크래킹
사전+무차별을 결합하여 공격  password hybrid 공격

IP를 위조하여 인증된 시스템인 것처럼 IP를 위조하여 목표 시스템의 정보를 빼내는 공격  ip 스푸핑

ICMP Redirect 메시지를 공격자가 원하는 형태로 위조해 패킷을 스니핑하는 공격      icmp redirect 공격


크래킹하려는 해시값을 테이블에서 검색하는 공격    레인보우 테이블 공격

MAC 주소를 위장하여 패킷을 스니핑하는 공격     APR 스푸핑



메모리의 버퍼 크기를 초과하는 데이터를 입력해 프로세스 흐름을 변경시키는 공격 기법 버퍼 오버 플로우 공격


스택 영역(지역변수, 매개변수가 저장되는 영역)의 버퍼에 오버플로우를 일으켜서 복귀주소를 바꾸는 공격 기법   스택 버퍼 오버플로우 공격

 
 힙 영역(사용자가 직접 관리 가능한 메모리 영역)의 버퍼에 오버플로우를 일으켜서 데이터를 오염시키는 공격 기법  힙 버퍼 오버플로우 공격

버퍼 오버플로우 공격 막는법
1) 스택가드
2) 스택쉴드
3) ASLR
4) 안전한 함수 사용 : 버퍼오버플로우에 취약한 scanf() 대신 fscanf() 등을 사용
5) 실행 제한 : 스택에서의 쓰기 권한 제한 등

👼 카나리(무결성 체크용 값)를 미리 삽입해두고, 버퍼 오버플로우 발생 시 카나리값을 체크해 변한 경우 복귀 주소 호출하지 않음      스택 가드

👼 함수 시작 시 복귀주소를 특수 스택에 저장해 두고, 함수 종료시 스택 값을 비교해 다를 경우 오버플로우로 간주하고 중단       스택 쉴드

👼 Address Space Layout Randomization; 주소 공간 배치 난수화      ASLR 활용
주소 공간 배치를 난수화하여, 실행 시마다 메모리 주소를 변경시키는 것

👿 정상적인 인증절차를 우회하는 기법 백도어


👿 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격     포멧 스트링 공격


👿 프로세스가 임시 파일을 만들 때, 실행 중에 끼어들어 임시파일을 심볼릭 링크하는 공격   프로세스가 임시 파일을 만들때 실행중 끼어들어 임시파일 심볼릭 링크하는 공격 레이스 컨디션 공격


👿 키보드 움직임을 탐지해 주요정보를 빼가는 공격 키로거 공격


👿 불법 해킹에 사용되는 기능을 제공하는 프로그램 모음      루트킷



👿 특정 대상 선정 후, 일반적인 메일로 위장한 메일을 발송해 개인정보를 탈취하는 공격 스피어 피싱


👿 SMS+피싱. 문자메시지를 통해 개인정보를 탈취하거나 소액결제를 유도하는 공격     스미싱


👿 QR코드+피싱. QR을 이용한 피싱 공격        큐싱


👿 악성 프로그램에 감염된 컴퓨터들이 네트워크로 연결된 형태       봇넷    

👿 특정 대상을 목표로 한 지능적/지속적인 공격         APT 공격
 
👿 SW 개발사의 코드를 수정하거나 배포 서버에 접근해 파일을 변경하는 공격              공급망 공격

👿 보안 취약점이 공표되기 전 신속히 이뤄지는 공격  제로데이 공격

👿 스스로를 복제하여 전파하는 악성 프로그램    웜
 
👿 해커의 명령에 의해 원격으로 제어되는 프로그램 (DDos 등에 악용)                  악성 봇

👿 암호화 후 복호화를 위해 돈을 요구하는 악성 소프트웨어      랜섬 웨어

👿 합법적인 Wifi 제공자처럼 행세하며 연결된 사용자 정보를 탈취하는 공격        이블 트윈 공격

👿 스니핑 도구 (패킷 내용을 출력하는 프로그램)           Tcpdump


👼 공격형 방위 시스템. APT 공격의 방어 모델  사이버 킬체인

👼 백도어가 생기거나 설정 파일 변화가 있을 때 이를 감지할 수 있게 돕는 도구     Tripwire
👼 코드의 가독성을 낮춰 역공학에 대비   난독화
👼 접속하려는 원격 호스트가 정상 운영 중인지 확인하는 명령어    ping

👼 공통 취약점(CV)에 등급(S)을 매긴 시스템(S). 위험도 계산 가능 cvss

👼 소프트웨어의 공통 취약점(CV)을 식별화(E)한 것 (CVE-연도-순서)     cve
👼 소프트웨어의 공통 약점(CW)을 식별화(E)한 것  cwe
👼 사이버 위협정보를 체계적으로 수립해 관계 기관과 자동화된 정보공유를 할 수 있는 시스템 (KISA 주관)    c-tas
👼 컴퓨터 보안을 위한 국제 평가 기준        cc
👼 디지털 콘텐츠에 저작자 정보를 삽입해, 불법 복제 시 원소유자를 증명하는 기술  워터 마킹
👼 범죄 예방 환경 설계 (Crime Privent Through Environment Design)      cpted
학문 간 연계를 통해 범죄를 최소화할 수 있는 환경을 설계하는 전략           cpted
👼 저작권 정보와 구매자 정보를 콘텐츠에 삽입해 불법 배포자를 추적할 수 있는 기술 핑거프린팅
👼 웹 애플리케이션의 10가지 보안 취약점에 대한 방안을 제공하는 가이드   OWASP TOP 10
👼 일부러 허술하게 만들어 해커에게 노출하는 유인시스템 허니팟
👿 실패한 분기 예측으로 메모리 영역을 훔쳐보는 취약점  스펙터
👿 인텔 아키텍처의 버그를 이용해 시스템 메모리에 접근하는 취약점 meltdown
👿 터치, 타이핑 등의 패턴을 스니핑하여 해킹  windtalker 윈드 토커
👿 암호화 기법으로 데이터를 전송해 익명으로 사용 가능한 네트워크 토르 네트워크
👿 다른 곳에서 유출된 로그인 정보를 다른 곳에 무작위 대입하는 공격 크리덴셜 스터핑
👿 독일 지멘스사의 SCADA 시스템을 목표로 제작된 악성코드 (주요 산업 기반 시설의 제어 시스템에 침투하는 공격)   스턱스넷 공격 stuxnet 
👿 SW/HW의 버그나 취약점을 악용해 공격하는 행위       익스플로잇 exploit
👿 타깃 서버(피해자)가 클라이언트로 접속하게 하고, 클라이언트에서 서버의 쉘을 획득하는 공격  리버스 쉘 공격
👿 웹 서버의 인덱싱 기능이 활성화된 경우, 서버 내 모든 디렉토리를 볼 수 있는 취약점 디렉토리 리스팅 취약점 directory listing
👿 침입 전 어떤 포트가 활성화되어 있는지 확인하는 기법 포트 스캐닝 port scanning
👿 DNS 서버 캐시를 조작해 의도치 않은 주소로 접속하게 하는 공격 (=DNS 캐시 포이즈닝)      dns 스푸핑 
👿 통신 연결 중간에 침입해 통신 내용을 도청하는 공격 MIMT
👿 기업 이메일을 도용해 거래 대금을 가로채는 공격    스캠 공격(SCAM)
👿 금융∙인증 정보를 탈취해 금전적 이익을 취하는 악성 코드 CRIMEWARE 크라임 웨어
👿 SSDP(단순 서비스 검색 프로토콜)의 특성을 이용해, IoT 디바이스를 좀비 PC로 이용해 DDoS 공격 IoT-SSDP
👿 하트비트(암호화 라이브러리)의 확장 모듈 취약점을 이용해 데이터를 탈취하는 공격   하트 블리드
👿 특정인을 표적으로 삼아, 특정인이 자주 방문하는 웹사이트에 악성코드를 심어 공격 워터링 홀
👿 악성 스크립트를 웹 서버에 설치 후, 사용자를 멀웨어 서버로 연결해 감염시키는 공격 드라이브 바이 다운로드
👿 전력 소비와 같은 물리적 특성을 측정해 비밀 정보를 알아내는 공격 부 채널 공격 SIDE CHANNEL ATTACK
데이터만 원격지에 보관하고, 재해 시 이를 근간으로 복구 (RTO는 수주~수개월) CCOLD SITE
중요성이 높은 자원만 주 센터와 동일한 수준으로 보유 (RTO는 수일~수주)  WARM SITE
주 센터와 동일한 수준의 자원을 대기 상태로 보유하며 데이터를 최신 상태로 유지 (RTO는 4시간 이내) HOT SITE
주 센터 & 복구센터 모두 운영 상태. (RTO는 0) mirror site
재해 복구 계획 (Disaster Recovery Plan)  DRP 
 - 재해로 장기간 운영이 불가한 경우를 대비한 계획

쿼리 결과의 참/거짓을 통해 공격 blind sql injection
에러값을 기반으로 한 단계씩 점진적으로 정보를 캐내는 공격 error-based sql injection
한 번의 공격으로 대량의 DB값을 변조하는 공격 mass sql injection
저장 프로시저를 이용해 공격 stored procedure sql injection
HTML Form 기반 인증의 취약점을 이용한 공격  form sql injection
UNION 연산자를 이용해 쿼리 결과를 결합해 공격  union sql injection
악의적인 SQL 구문을 삽입∙실행시켜 DB 정보를 탈취하거나 조작하는 공격 SQL INJECTION
=Cross Site Request Forgery (사이트 간 요청 위조)  CSRF
사용자가 자신의 의지와 무관하게, 공격자가 의도한 행위를 요청하게 하는 공격
악성 URL 클릭 시 공격 스크립트가 반사되는 기법 reflected xss
DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 한 기법 dom xss
악성 스크립트가 포함된 웹페이지를 읽을 때 감염되는 기법 stored xss
검증되지 않은 입력데이터가 포함된 웹페이지를 열람할 때, 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격 xss

 

 

(   1   )
- 감염된 컴퓨터 시스템에서 스스로 복제해 다른 컴퓨터로 복사본을 확산시킬 수 있는 악성 프로그램이다. 

- 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않으며, 파일 전송 기능을 착취하도록 설계된다. 

- 자가 복제 및 네트워크를 통한 전파도 가능하다.


(    2    )
- 정상적인 프로그램으로 가장해 사용자가 직접 컴퓨터에 설치하도록 위장하며, 백도어를 만들어 공격자가 침입할 수 있도록 만들거나 시스템을 파괴한다. 

- 정상적인 프로그램으로 위장하여 시작부터 끝까지 램에 상주하며, 시스템 내부 정보를 공격자의 컴퓨터로 빼돌리는 프로그램이다.  

- 좀비PC처럼 내부정보 유출뿐만 아니라 컨트롤까지 가능한 종류가 있고, 단순히 내부 데이터만 유출할 수 있는 타입의 트로이 목마가 있다. 

- 감염된 후에 스스로를 복제하는 능력은 없다.


(    3    )
- 대상(정상파일)을 감염시키는 형태로 실행되며, 감염시킬 대상이 존재하지 않을 때에는 실행되지 않으며 다른정상파일로의 자기 복제 기능이 있다. 

- 컴퓨터 시스템에 침입해 프로그램에 기생하며 시스템을 변경하거나 사용할 수 없도록 만드는 악성코드이다. 

- 네트워크를 통해 전파되지 않으며 방식 및 위치에 따라 여러형태로 나뉜다.

 

1. 웜

2. 랜섬웨어

3. 바이러스

 

9장

암호 알고리즘 방식

대칭 키
호 방식
 - 암호화와 복호화에 같은 암호키를 쓰는 알고리즘
 - 대칭키는 블록 암호화와 스트링 암호화 알고리즘으로 나뉨


 1) 블록 암호 방식
  - 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화 하는 블록 암호 알고리즘을 반복하는 방법
  ex) DES, AES, SEED


 2) 스트림 암호 방식
  - 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식
  ex) RC4

비대칭 키
암호 방식
 - 공개키를 이용해 암호화하고, 공개키에 해당하는 개인키를 이용해 복호화하는 암호방식
 - 비대칭 키 암호 방식에서는 공개키와 개인키가 존재
 - 공개키는 누구나 알 수 있지만 개인키는 키의 소유자만이 알 수 있어야 함!
 - 공개키는 보안 타협 없이 공개적으로 배포가 가능!

 - 비밀키는 키의 소유자만이 알 수 있어야 함
 - 공개키 암호 방식이라고도 부름

 ex) 디피-헬만, RSA

해시 방식  - 단방향 알고리즘
 - 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수
 - 해시 함수의 결과로 원본 데이터를 유추하기 어려운 것을 이용


 - 장점 : 연산에 걸리는 시간이 빠름
 - 단점 : 동일한 결과를 갖는 값이 발생하는 해시 충돌 문제 발생 가능


 ex) SHA, MD5

 

대칭키
블록
des
 미 연방표준국 키 길이는 56bit, 블록 크기는 64bit

aes
라운드수는 10,12,14, 3des의 문제점을 극복하기 위해 개발

seed
kisa가 개발, 16 라운드를 거쳐 128비트 블록으로 암호화

IDEA
DES를 개체하기 위해 개발

ARIA
학계 + 연구기관 + 정부 => 국정원과 산학연구협회가 개발함.

스트림

LFSR
선형 되먹임 시프트 레지스터

RC4
셔플링 기법을 이용해 평문과 XOR 연산해 암호화

비대칭키

DIFFIE-HELLMAN 
최초의 비밀키 교환 프로토콜, 이산대수 계산의 어려움을 근거로 함.

RSA
수학교수 3명의 앞글자를 땄음 (레브스트, 샤미르, 아들만), 소인수 분해 문제의 어려움을 근거로함.

ECC
타원 곡선 암호. RSA의 대안

Elgamal
이산대수의 어려움을 근거로함. 전자서명에 사용가능.

HAS-160
국내 표준 디지털 서명 알고리즘(KCDSA)를 위해 개발된 알고리즘 MD5의 장점 +SHA-1의 장점)
SHA-1
NSA에서 미 정부 표준으로 지정, DSA(디지털 서명 알고리즘)에서 사용

MD5
MD4를 개선한 알고리즘

256비트의 해시값을 생성하는 함수
SHA-256-384-512

공통 취약점에 등급을 매긴 시스템 cvss
소프트웨어 공통 취약점을 식별화 한것 cve
소프트웨어 공통 약점을 식별화 한것 cwe


# 시큐어 코딩 가이드는?
입보시에코캡아
입력데이터 검증 및 표현
보안 기능
시간 및 상태
에러처리
코드 오류
캡슐화
API 오용

 

 

참조 무결성 - 데이터베이스 관한 문제

 

 

# 스키마 종류

1. Internal Schema 내부스키마

2. External Schema 외부 스키마

3. Foreign Schema  외래 스키마 (이상한 스키마)

4. Conceptual Schema 개념 스키마

 

 

구분 내용
(   1   ) 스키마 - 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의한다.
- 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있기 때문에 서브 스키마라고도 한다.
- 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있다.
- 하나의 외부 스키마를 여러개의 응용 프로그램 혹은 사용자가 공유할 수 있다.
(   2   ) 스키마 - 데이터베이스의 전체적인 논리적 구조로, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
- 개체 간의 관계(Relationship)와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
- 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것이다.
- 기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다
(   3   ) 스키마 - 물리적인 저장장치 입장에서 데이터가 저장되는 방법을 기술한 것이다.
- 실제 데이터베이스에 저장될 레코드의 물리적인 구조를 정의한다. 
- 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서, 인덱스 유/무 등을 나타낸다.
- 시스템 프로그래머나 시스템 설계자가 관리한다.

 

 

1. External Schema 외부 스키마

2.  Conceptual Schema 개념 스키마

3. Internal Schema 내부 스키마

 

'정처기 > ' 카테고리의 다른 글

정처기 실기 신청 팁  (0) 2024.05.09
profile

IT'S DO

@멋진놈

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!