분류 전체보기
[Linux/CentOS] 파일 위치 검색 - find, which, whereis, locate
find # find [경로] [옵션] [검색조건] [action] 옵션 -name : 이름이 ~인 파일 찾기 -user: 사용자가 ~인 파일 찾기 -newer: -perm: 허가권이 ~인 파일 찾기 -size: 크기가 ~인 파일 찾기 action -print (default) 기본값으로 따로 지정하지 않을 경우 실행; 찾은 내용을 출력 -exec + 명령 + \; 외부의 명령을 실행 -delete 찾은 내용을 삭제 # find /home -name "*swp" -exec rm { } \; >> "find /home -name "*swp""을 먼저 실행한 후 실행결과가 rm의 { }인자로 들어가 .swp 파일들이 rm 명령으로 실행되어 파일이 삭제된다. 이 때 -exec와 \;는 외부명령어의 시작과 끝을..
[Linux/CentOS] 파일 압축과 파일 묶기
파일 압축 확장명: xz, bz2, gz, zip, Z 등 windows와 달리 파일의 압축과 파일 묶기가 나눠져있다. 데이터의 크기를 줄이기 위한 과정이다. xz # xz [옵션] [파일] 확장명이 xz인 파일을 압축하거나 풀어준다. # unxz 파일이름 xz 확장명의 압축 파일의 압축을 해제한다. = # xz -d mode -z + 파일 (compress) 파일 압축: 따로 명령관련 옵션을 지정해주지 않았을 때의 default(생략가능) -d + 파일.xz (decompress) 압축 해제 -t + 파일(.xz) (test) 어떤 옵션들을 붙여 실행했을 때의 결과를 출력해주면서 테스트 >> 파일이 실제로 삭제되거나 압축되는 것은 아님 -l + 파일.xz (list) xz 압축 파일에 포함된 파일 목록..
[Linux/CentOS] 프로그램 설치 - RPM, DNF
RPM (Redhat Package Manger) Windows의 setup.exe처럼 프로그램 설치 후 바로 실행할 수 있는 설치 파일 >> *.rpm (확장명) '패키지'라고 부른다. 설치하려는 rpm 파일이 DVD에 있거나 인터넷에서 미리 다운로드한 후 설치해야 함 rpm 파일 형식 패키지이름-버전-릴리즈번호.CnetOS버전.아키텍쳐.rpm (예시) gzip 패키지 패키지 이름 gzip 패키지(프로그램)의 이름; 이름에 하이픈(-)이 포함되어 있을 수 있기 때문에 버전 바로 앞까지를 패키지 이름으로 생각하고 봐야한다. 버전 1.9 대부분 2~3자리 수 릴리즈 번호 4 문제점을 개선할 대마다 붙히는 번호 CentOS 버전 el8 CentOS 8에서 배포할 때 붙여진다. (Redhat enterpris..
[DS] Get Node Value
연결 리스트의 가장 마지막 노드를 0번 인덱스로 생각했을 때 끝 노드로부터의 인덱스가 주어지면 해당 노드의 데이터를 출력하는 프로그램이다. www.hackerrank.com/challenges/get-the-value-of-the-node-at-a-specific-position-from-the-tail/problem int getNode(SinglyLinkedListNode* head, int positionFromTail) { int size = 0; SinglyLinkedListNode* tmp = head; while(tmp->next != NULL){ size +=1; tmp = tmp->next; } tmp = head; for(int i=0;inext; } return (tmp->data);..
Counting Valleys
www.hackerrank.com/challenges/counting-valleys/problem 사용자로부터 U, D (uphills, downhills) 문자열을 입력받고 처음시작을 해수면(0)으로 해서 valley의 수를 구하는 코드를 작성해야 한다. int countingValleys(int steps, char* path) { int valley=0; int pre_level = 0,level =0; for(int i=0;i
링크, ln 명령어
링크(Link) = 하드 링크(hard link) + 심볼릭 링크(symbolic link / soft link) 하드 링크 원본 파일에 대한 directory entry를 하나 더 만드는 개념 원본 파일이 inode1을 사용한다고 하면, 하드 링크를 생성했을 때 하드링크파일만 하나 생성되고 같은 inode1을 공유한다. 다만, 같은 system 내에서만 사용이 가능하다. 윈도우에는 없는 개념이지만 윈도우로 예를 들면 같은 드라이브 내에 원본파일과 하드링크파일이 존재해야 사용할 수 있는것이다. # ln 링크대상파일이름 링크파일이름 심볼릭 링크 Windows의 바로가기 역할을 하는 링크 심볼릭 링크 파일의 내용은 실제 원본 파일의 경로(원본 파일 포인터)다. 하드 링크와 달리 원본파일의 inode1과 다른..
[Heap] The House of Spirit
House of Spirit fake fastbin chunk를 해제(free)하면서 malloc 할당 시 임의의 포인터를 반환하도록 함으로써 원하는 주소에 값을 쓸 수 있게 하는 공격방식이다. >> 같은 크기만큼을 재할당할 때, 같은 주소를 반환하는 fastbin의 특성을 이용 (fastbin을 공격하는 기법) stack에 가짜 청크를 쓰고 해당 stack의 주소에서 0x10(64bit기준) 더한 주소로 free()를 호출할 수 있을 때 구현가능하다. stack에 fastbin에 해당하는 크기의 fake chunk를 작성하고 malloc()으로 메모리를 할당한다. 그리고 fake chunk의 주소+0x10인 주소에 free()를 호출해 해당 chunk가 fastbin에 저장되게 한다. 해당 chunk의..
우분투 18.04 - 이것저것 포너블을 위한 설치..
$ apt-get install software-properties-common 유용한 software 기능들?을 설치해주는 명령어 (root로 설치했을 때는 아무런 오류 없이 잘 설치됐다) lrzsz doongdangdoongdangdong.tistory.com/31?category=869961 xshell 등의 툴을 이용해서 윈도우와 우분투사이에서 파일을 이동하기 쉽게 하는 패키지 git www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04-quickstart # apt-get install git sdfsdfdsfagsdf pwntools 설치 docs.pwntools.com/en/stable/ Installation..
Drawing Book
[ , 1] ▷ [2 , 3] ▷ [4, 5] ▷ .... 식으로 페이지가 체크되어 있는 책에서 원하는 페이지에 도달하기까지 넘겨야 할 최소의 페이지 수를 구하는 코드를 작성해야 한다. int pageCount(int n, int p) { int count =0; int p_count = p/2; int l_count; if(n%2 == 0){ if(p%2 == 0){ l_count = (n-p)/2; } else{ l_count = (n-p)/2 + 1; } } else{ l_count = (n-p)/2; } count = (p_count >= l_count)?l_count:p_count; return count; } △ 작성한 부분 1페이지 부터 넘기는 경우(p_count)와 가장 마지막 페이지(n)..
[DS] Reverse a doubly-linked list
양방향 연결 리스트 (순환X)의 방향을 바꾸는 코드를 작성해야 한다. www.hackerrank.com/challenges/reverse-a-doubly-linked-list/problem DoublyLinkedListNode* reverse(DoublyLinkedListNode* head) { DoublyLinkedListNode *link = malloc(sizeof(DoublyLinkedListNode)); DoublyLinkedListNode *rever = malloc(sizeof(DoublyLinkedListNode)); DoublyLinkedListNode *tmp = head; while(tmp ->next != NULL){ tmp = tmp->next; } rever = tmp; whil..