본문 바로가기

Network/Packet Analyzer

02. pcap 라이브러리

pcap라이브러리을 사용하여 장치를 열고 장치의 이름을 출력하고 장치를 닫는 것이 목표입니다

리눅스로 작업을 했기에 리눅스 관련 참고사항도 설명하였습니다

전체소스 보기

clip_image001

소스분석하기

네트워크 디바이스 열기

man pcap의 내용

clip_image002

 

pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)

pcap_t *stpNIC

pcap_open_live(cpNIC_name,1500,1,0,errbuf);

 

인자값 설명

1)char * device : cpNIC_name

– device 인자에 디바이스 이름(예, eth0, hme())을 지정

2)int snaplen : 1500세팅

- snaplen은 캡쳐할 크기

TCP TCP 헤더를 헤더를 캡쳐할 캡쳐할 경우경우 : : 이더넷 이더넷 헤더헤더+IP +IP 헤더헤더+TCP +TCP 헤더헤더

3)int promisc : 1세팅

– promisc

0 : 목적지가 자신인 패킷, 브로드캐스트 패킷, 멀티캐스트 패킷을 캡쳐

1 : promiscous 1 : promiscous 모드로 모드로 설정되어 설정되어 전송되는 전송되는 모든모든 패킷패킷((모든모든 이더넷 이더넷 프레임 프레임))

을 캡쳐

4)int to_ms : 0세팅

– to_ms는 ms 단위의 시간인데 네트워크 디바이스에 패킷이 도착했을

때때 커널이 커널이 이를이를 즉시즉시 읽지읽지 않고않고 잠시잠시 기다리는 기다리는 타임아웃 타임아웃 시간을 시간을 지정지정

커널이 한번의 읽기로 많은 패킷을 가져오게 한다

0이면 충분한 패킷이 도착할 때까지 대기한다.

5)char *ebuf : errbuf

– ebb fuf는는 에러발생시 에러발생시 에러에러 원인을 원인을 저장저장

– 성공하면 디바이스 디스크립터를 리턴하고, 실패하면 NULL을 리턴

네트워크 디바이스 닫기

pcap_close(stpNIC)

열었던 장치 eth0을 닫습니다

네트워크 정보 읽어오기

ucpData = pcap_next(stpNIC, &stInfo);

pcap pcap next() _next() 함수는 함수는 자동으로 자동으로 콜백콜백 함수를 함수를 호출하지않고 호출하지않고 캡쳐한 패킷 자체를 u_char 타입의 포인터로 리턴한다

이제 컴파일을 하겠습니다

gcc o test test.c MSDFunction.o lpcap

 

참고>>

-lpcap의 의미는

-l : 라이브러리를 추가시켜라 그건 pcap이야~~라는 의미입니다

BUT warning이 발생하였습니다!!!

clip_image003

헤더파일에 type이 일치하지 않는 것을 확인하기 위해

vi /usr/include/pcap/pcap.h를 해서 해더파일을 열었습니다

clip_image004

const가 있는 것을 확인 할 수 있습니다

다시 수정하고 실행하니 정상적으로 출력하였습니다

SUCCESS!!

자 이제 수업시간에 좀 해매었던 부분입니다

루트계정에서의 컨트롤

cd /home/ 계정확인

clip_image005

uec를 확인 하였습니다 이제 uec로 복사를 합니다

LINUX 명령어 복습

cp 대상파일 대상디렉토리

cp test / (test를 루트에 복사하라)

복사를 하고 루트로 이동후

su – uec합니다 그럼 $표시가 보이는 것을 확인 할 수 있습니다

sudo와 su의 차이

sudo를 사용하면 패스워드 노출을 막을수 있습니다.

sudo

root 권한을 필요로 하는 프로그램을 실행하였을 때, sudo 는 여러분의 일반 사용자 패스워드를 입력할 수 있도록 물어볼 것입니다. 이 것은 악의적인 프로그램이 시스템을 손상시킬 수 없도록 확인하고, 여러분이 주의가 필요한 관리적인 동작을수행하는 것에 대하여 상기하도록 도와 줍니다. 명령어 줄을 사용할 때 sudo 를 사용하려면, 실행할 명령어 앞에 "sudo" 라고 간단히 입력하십시오. sudo 는 여러분의 패스워드를 묻게 될 것입니다.

많은 사람들이 su가 ‘super user'를 의미하는 말로 생각하지만, 사실 ’substitute user'를 의미합니다 계정을 전환한다는 의미에 가깝습니다 uec계정으로 전환하면서 $로 전환된것을 확인 할 수 있습니다

ls –al

clip_image006

-rwx------일 경우 chmod 777 test로 속성값을 변경하여 줍니다

chmod 그것이 알고싶다!!!!

사용방법 chmod [옵션] 파일이름
7 rwx 읽기,쓰기,실행
5 r-x 읽기,실행
4 rw- 읽기,쓰기
3 -wx 쓰기,실행
2 -w- 쓰기
1 --x 실행
r (read :읽기) -파일내용을 볼 수 있음
w (write :쓰기) -파일을 변경 or 삭제할 수 있음
x (excute:실행) -파일을 프로그램으로 실행할 수 있음
권한을 부여할 때 '751'과 같이 8진수를 이용할 수 도 있는데 이 때 첫 번째 숫자인 7은 소유권자의 권한 두번째 숫자인 5는 사용자가 속한 그룹의 권한, 세 번째 숫자인 1은 다른 사용자에 대한 권한을 의미합니다. 'chmod 777 test'를 입력하면 사용자(소유자), 그룹, 다른 사용자에게 모두 읽기, 쓰기, 실행 권한을 주어집니다

실행결과

clip_image007

장비를 함부러 열수 없다 아뉘 에러~~!!!!우웩~~

$을 해제하고 싶을때는 ?

su – root

-lpcap없이 컴파일

clip_image008

의미 설명

gcc컴파일러가 컴파일시 tmp에 ccduVPov.o파일을 생성하면 컴파일을 하는데 해당.o파일에 pcap라이브러리가 정의되어 있지 않아서 나타나는 에러입니다 pcap자체가 기본적인 내장 라이브러리가 아닌 추가 라이브러리이기 때문에 lpcap로 알려주어야 합니다 ccduVPov.o임임의 파일이 이름이 각자 다른이름을 가지는 것은 멀티유저가 동시 컴파일시 구분을 할 수 없기 때문에 tmp에 임의적으로 파일을 생성하는 것입니다

password capture

ftp접속 => id : test / pass : ********()아직모름 => ./test 실행후 pass입력

 

결과확인

clip_image009

pass가 1234578로 확인 되었습니다

연속으로 실행해 보았습니다

clip_image010

 

위의 헥사뷰를 살펴 보겠습니다 제일윗줄을 보시면

clip_image011

HWaddr = machine address = mac address입니다

분석을 하면 아래 그림과 같습니다

clip_image013

clip_image015

'Network > Packet Analyzer' 카테고리의 다른 글

05. ARP header(수정중)  (0) 2011.10.06
04. IP header  (2) 2011.10.05
03. ethernet header 분석  (0) 2011.10.05
01. Hexaview(수정중)  (0) 2011.10.05
00. Packet Analyzer  (0) 2011.10.05