목록Linux & Unix (15)
처음부터 차근차근
Tcp 소켓 생성 #include // c 언어 파일 작성할 때 필요한 헤더 #include // unix 계열 헤더 #include #include #include #define MAX_FD 4 int main(void) { int fd[MAX_FD] = { -1, }; // 소켓 기술자 선언 int i = 0; // 프로세스 id 출력 printf("Process ID : %d\n", getpid()); // 소켓 생성하여 fd 배열 안에다 대입 // PF_INET : IPv4 인터넷 프로토콜, SOCK_STREAM : TCP for (i = 0; i < MAX_FD; i++) { fd[i] = socket(PF_INET, SOCK_STREAM, 0); } // enter 키 받아서 socket fd..
endian #include // c 언어 파일 작성할 때 필요한 헤더 #include // unix 계열 헤더 int main(void) { int nValue = 0x12345678; // int형 변수 선언 printf("Value : 0x%08X\n", nValue); // nValue값 출력 for (int i = 0; i little-endian은 이런 식으로 거꾸로 정리가 되서 관리된다. char* pC = (char*)&nValue + i; printf("%p : 0x%02X\n", pC, *pC); } printf("\n");// 개행 return 0; // 프로그램 종료 } 실행결과 각 주소에 있는 값..
getopt() #include // c 언어 파일 작성할 때 필요한 헤더 #include #include // string 헤더 #include // unix 계열 헤더 // argc : 명령 파라미터의 개수(자기 자신까지 1개로 침) // argv[] : 각각의 아규멘트의 값들(argv[0]는 자기자신) int main(int argc, char* argv[]) { // 옵션 넣을 변수 생성 int nOpt; printf("Original\n"); // 파일 실행할 때 입력한 매개변수들 모두 출력 for (int i = 0; i < argc; i++) { printf("value[%d] : %s\n", i, argv[i]); } printf("--------Options-------\n"); // g..
파일 접근과 해제 #include // 파일 작업할 때 필요한 헤더 #include // 파일 작업할 때 필요한 헤더 #include // 파일 작업할 때 필요한 헤더 #include // c 언어 파일 작성할 때 필요한 헤더 #include // unix 계열 헤더 // argc : 명령 파라미터의 개수(자기 자신까지 1개로 침) // argv[] : 각각의 아규멘트의 값들(argv[0]는 자기자신) int main(int argc, char* argv[]){ // 파일 기술자 int nFd = -1; // 받은 값이 두 개(자기 자신 + 매개변수 1개)가 아니면 if (argc != 2) { // perror : 표준 에러 perror("we need an argument.\n"); // 프로그램 종..
공유 폴더 만들기 1. kail linux를 키고 상단 바에 입력 -> 공유폴더 -> 공유폴더 설정 2. 임시 폴더 클릭하고 오른 쪽 파일 추가 아이콘 클릭 3. 이미지를 참고해서 입력 폴더 경로 : 공유 폴더로 만들 폴더 경로 지정 그러면 알아서 폴더 이름이 입력될 것이다. 마운트 지점 : linux에서의 공유 폴더 이름 이렇게 하면 window(내 컴퓨터)의 virtual_box \ example 폴더와 linux(virtual machine)의 /example 폴더가 연결되어 공유해서 쓸 수 있다! 4. 공유 폴더 접근 가능하게 만들기 공우 폴더를 설정해도 바로 접근할 수 는 없다. kali 계정 group에 vboxsf 사용자 그룹이 추가되지 않았기 때문이다. 명령어를 쳐서 kali 계정에 vbo..
라이브러리 라이브러리란 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 프로그램 기능이 다양해짐에 따라 개발 자원이 증가되어 동일 유형의 기능에 대한 코드 공유 및 재활용 필요해졌고, 공유할 자료들을 별도로 관리하는 것을 라이브러리(library)화라고 한다. 라이브러리의 종류 정적 라이브러리(static library) 공유 라이브러리(shared library) 정적 라이브러리 정적 링킹(Static Linking) 과정에서 링커가 프로그램에 필요로 하는 부분을 라이브러리에서 찾아 실행 파일에 복사하는 방식의 라이브러리를 의미한다. 그래서 메모리 내에 코드가 중복될 수 있다. 장점 : 이식성이 좋고 안정적이다. 왜냐하면 실행 파일이 정적 라이브러리를 복사해서 가지고 있으므..
RPC RPC란 원격 절차(프로시저) 호출이다. =Remote Procedure Call 프로세스간 통신을 위해 사용하는 *IPC 방법의 한 종류이다. * IPC(Inter Process Communication) : 프로세스간 데이터 공유 RPC는 원격 프로세스에 접근해서 프로시저 or 함수를 호출해서 사용하는 방식이다. 일반적으로는 프로세스는 자신의 주소공간 안에 존재하는 함수만 호출할 수 있는데, RPC를 이용하면 다른 주소공간에서 동작하는 프로세스의 함수를 실행할 수 있게 된다. 그래서 RPC는 클라이언트-서버를 베이스로 한 강력한 기술이라 할 수 있다. RPC는 포트맵퍼(portmapper)에 의해 서비스 항목과 프로세스를 연결하고, 서비스 프로세스의 결과는 RPC 포트맵퍼에 의해 다시 클라이언..
RC4 RC4란 대칭 암호화 방식의 대표 알고리즘 중 하나이다. * 대칭 암호화 방식 암호화하거나 복호화할 때 사용되는 키가 동일한 암호화 방식. (이때의 키를 공개키(public key)라고 함) 그리고 RC4는 스트림 암호 종류 중 하나이다. 주로 4 계층 보안 TLS,SSL , WEB 등 프로토콜에 사용되었었는데 현재는 취약점이 발견되어 권장되지 않고있다. rc4 실습 코드 실행결과 AES = Advanced Encryption Standard AES란 NIST에서 개발한 대칭형 암호화 알고리즘이다. 암호화를 위해 128, 192, 256 비트의 키를 지원하고, 현재 가장 많이 사용되고 있는 암호화 알고리즘이다. AES 함수 AES_cfb128_encrypt() 실습코드 실행결과 TELNET서버 텔..