Curl이란 Cilent URL의 약자로 서버와 통신할 수 있는 커맨드 명령 툴로, 웹 개발에 많이 사용되는 무료 오픈소스다.
즉 클라이언트 에서 커맨드 라인, 소스코드로 손 쉽게 웹 브라우저 처럼 활동할 수 있도록 해주는 기술이라고 할 수있다.
Curl을 사용함으로써 패킷과 메세지를 네트워크로 전송이 가능하고, DICT,FTP,POP3,HTTP/s 등 이외에도 수 많은 프로토콜을 지원한다는 장점이 있다.
네트워크는 수 많은 소규모 네트워크로 연결되어 있다.
따라서, 원격지에 위치한 목적지로 데이터를 전달하기 위해서는 많은 게이트웨이를 거쳐야 합니다.
목적지에 도착하기 위해 어떠한 게이트웨이를 거쳐 갔는지 알려면 trace명령 을 이용해 네트워크 경로를 확인
문자로 된 도메인 이름(예: www.naver.com)은 사람이 기억하기 쉽도록 작성한 이름이고, 네트워크/통신을 위해서는 숫자로 된 IP 주소로 변경해야 합니다.
도메인 이름을 숫자IP로 변경하기 위해서는 먼저 로컬 컴퓨터에 있는 호스트 파일을 살펴보고, 찾을 수 없다면 DNS 서비스를 사용한다.
1) 먼저 /etc/hosts 파일을 열고, 127.0.0.1 www.naver.com 내용을 추가한다.
2) 웹 브라우저를 시작하고, www.naver.com을 입력한다.
이때 네이버에 접속하지 못하고, 가상 머신에서 동작하고 있는 Apache2 웹 서비스 에 접속한다.
nmap은 network mapper의 줄임말로 네트워크 탐색과 보안감사를 하는 오픈소스 툴입니다.
또한 네트워크상의 어떤 호스트가 작동중인지, 그 호스트가 어떤 서비스를 하는지, 운영체제가 무엇인지, 어떤 패킷필터,방화벽을 쓰는지 등을 알아내기 위해 raw ip 패킷을 사용한다.
1. 네트워크에 연결된 활성화된 장비의 IP 주소 목록
2. 특정 Host에 활성화 된 장비의 IP 목록
3. 서비스하고 있는 소프트웨어 정보
4. 운영체제 종류
nmap -v A.B.C.D
A.B.C.D 번 IP를 가진 호스트가 실행중인 서비스 및 포트번호 정보
‘tcpdump’는 Kali 리눅스에는 기본적으로 설치되어 있으며, 터미널에서 사용 가능한 패킷 모니터링(패킷 캡처) 도구입니다.
네트워크에서 돌아다니는 패킷을 모니터링 할 수 있으며, 네트워크 프로토콜 개발 시 디버깅 목적으로 사용하거나, 네트워크 상태를 진단하는데 사용합니다.
1) 터미널 2개를 실행하고,터미널 1에서 $sudo tcpdump src 210.115.229.76 -A 라고 입력하고 실행한다.
2) 터미널 2에서 $curl 210.115.229.76 이라고 입력
앞의 리눅스 포스팅에서도 간단한 프로그래밍을 해봤지만 kali linux에서도 간단한 리눅스 프로그래밍을 해보려 한다.
먼저 앞서 만든 hello.c라는 c언어 코드를 컴파일 하여 hello.exe 라는 실행파일 만든다.
gcc hello.c -o hello.exe 컴파일 시 -o hello.exe 라는 옵션 때문에 실행 파일을 hello.exe 라는 이름으로 생성한다.
'fork()’를 호출하는 순간 자식 프로세스가 생성된다.
생성된 자식 프로세스는 ‘fork()’ 를 호출하는 구문 직후부터 이어서 실행한다.
부모 프로세스와 자식 프로세스는 동일한 코드를 실행하지만, 각자 pid 변수에 저장 하고 있는 값이 서로 다르기 때문에, switch-case 구문에 의해 서로 다른 코드를 실행하게 된다.
자식 프로세스는 pid 변수에 0을, 부모는 pid에 자식 프로세스 ID를 저장
이 때 자식 프로세스는 printf 를 총 2번 실행하고, 부모 프로세스는 printf를 총 3번 실행한다.
P1 > C1 > C2 > P2 > P3 의 순서로 출력한다.