본문 바로가기

개발 상식

(11)
지능형 지속 위협(APT, Advanced Persistent Threat) 지능형 지속 위협 (APT, Advanced Persistent Threat) 다른 해킹 방식과 달리 공격자가 특정한 대상을 목표로 다양한 해킹 기술을 이용해 은밀하고 지속적으로 공격하는 행위 기업이나 기관의 중요 시스템에 대한 보안은 단단해서 처음부터 침투가 어렵기 때문에 회사 개인 PC를 먼저 장악한 후, 합법적인 권한을 획득하여 내부로 들어가는 방법을 주로 사용한다. APT의 공격 단계 1. 먼저 목표를 정하고 목표에 대한 사전 조사를 실시한다. 2. 조사를 바탕으로 개인 PC에 악성코드를 감염시킨다. 3. 내부 인프라로 서서히 침투하여 몰래 드나들 수 있는 백 도어 및 툴을 설치한다. 4. 내부인프라 접속 권한을 상승시키기고 정보를 탈취하기 시작한다. 5. 후에 내부인프라를 장악하고 더 많은 유출..
보일러플레이트 코드란?(Boilerplate code) 보일러플레이트란? 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드 흔히 말하는 찍어내는 코드를 말한다. (꼭 필요하고 간단한 기능이며 반복적인 기능) ex) java -> kotlin get/set이 코틀린에서 boilerplate 코드가 많이 줄어들었다. 보일러 플레이트 코드 제거하기 1. 어노테이션 프로세서 사용 2. Android Studio Plugin 사용 (Parcelable 구현, LiveTemplate, Loombok) 3. Kotlin 사용 (equals(), hashCode(), toString(), copy() 자동 생성) 4. 라이브러리 사용 (Dagger, Glide, Retrofit, Databindings) charlezz.medium.com/%EB..
가비지 컬렉션 원리 http://itmining.tistory.com/24 [JAVA] Garbage Collection의 기초 이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전에 안드로이드 메모리 관리 관련하여 Strong, Soft, Weak Reference에 대해 알아보면서 GC에 대해 살짝 언급한 적이 있습니다. Java의 가비지 컬 itmining.tistory.com 위 링크가 가비지 컬렉션에 대한 정리가 잘 되어 있는 것같아서 가져왔습니다. 프로그래밍 언어 C에서는 메모리의 할당, 반환을 수동으로 합니다. 그러나 자바에서는 GC에 의해서 자동으로 수행되는데 그 과정에 대해서 설명하겠습니다. 1단계 : Making 프로세스는 마킹을 호출해서 참조되는 객체와 참조되지 않는 객체로 스캔합니다. 모..
연결리스트(linked list) 연결리스트는 차례로 연결된 노드를 표현해주는 자료구조이다. 단방향 연결리스트에서 각 노드는 다음 노드를 가리킨다. java로 구현한 간단한 linked List class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) { Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next; } n.next = end; } } c로 구현한 연결리스트 typdef struct Node { int data; struct Node* next; // 다음 노드의 주소를 저장할 포인터 }Node;
아스키코드와 유니코드 아스키(ASCII) American Standard Code for Information Interchage 아스키코드는 7비트, 128개의 고유한 값만 사용한다. 통신 에러 검출을 위해 사용하기 때문이다. 유니코드 아스키코드에 모든 언어를 담을 수 없어서 용량을 확장한 유니코드가 등장한다. 처음에는 65536개, 2byte (2의 16승) 으로 표현했다.
힙이란? / What is the Heap Data Structure - 완전 이진 트리의 일종 - 공간적인 구조를 단순히 배열의 인덱스를 적절히 부여함으로써 구현한다. - 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. - 삽입, 삭제 속도 O(long n) - 생산 속도 O(n) - 힙은 일종의 반정렬 상태 (느슨한 정렬 상태) 를 유지한다. - 힙 트리에서는 중복된 값을 허용한다. 힙(heap)의 종류 1. 최대 힙 (max heap) 루트 노드는 가장 큰 노드이다. 부모 노드 >= 자식 노드 2. 최소 힙(min heap) 루트노드는 가장 작은 노드이다. 부모노드
해시테이블이란? ( What is a hash table?) 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료 구조이다. 해시 테이블이 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블은 각각의 key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색한다. 해시테이블의 시간 복잡도 : O(1) but 데이터 충돌이 발생한 경우 Chaning에 연결된 리스트까지 검색해야하므로 O(N) 까지 시가나복잡도가 증가할 수 있다. 데이터 충돌 시 해결법 1. Linear Probing index 뒤에 있는 버킷 중 빈 버킷을 찾아서 데이터를 넣는 방식 2. Chaning 자료구조를 활용해 추가 메모리를..
텔넷이란? (Telnet) Telnet 원격 접속 서비스로서 특정 사용자가 네트워크를 통해 다른 컴퓨터에 연결하여 그 컴퓨터에서 제공하는 서비스를 받을 수 있도록 하는 인터넷 표준 프로토콜 보안 문제로 사용률이 감소하고 원격 제어를 위해 SSH로 대체되는 추세 텔넷과 SSH의 차이? 텔넷은 byte 스트림형식으로 정보를 주고 받음 ssh는 DES, RSA 등 고급 암호화를 통해 통신을 함 ssh는 암호화 뿐이 아닌 압축 기술도 사용하는데, 암호화 때문에 트래픽이 텔넷보다 크게 늘어나지 않는다고 합니다. 단지 약간의 부하가 더 생긴다고 합니다.