Raw 소켓이란?

- 프로토콜을 설계하여 구현하거나 패킷을 조작할 때 사용한다.

- 커널 수준에서 다루는 프로토콜 헤더를 애플리케이션 수준에서 직접 조작할 수 있다.

 ( 기존의 TCP 또는 UDP 소켓을 사용하는 방식보다 세부적인 제어가 가능 )

- 프로토콜 헤더의 구조와 동작 원리에 대한 이해가 필요하므로 상대적으로 어렵다.

- 커널에서 프로토콜 헤더를 다루기 때문에 Raw 소켓을 생성하거나 조작할 수 있는 권한과 생성할 수 있는

  Raw 소켓의 종류도 운영체제마다 다르며 루트 권한을 가지고 있어야 Raw 소켓을 생성 할 수 있다.

- 해킹을 위해 악용할 가능성이 있다.


Raw Socket 

from socket import *

raw_sock = socket( AF_PACKET , SOCK_RAW )

raw_sock.bind( ('eth0' , SOCK_RAW) )

while True:

    raw_data = raw_sock.recv( 65535 )

    print( raw_data )


실습

같은 호스트에서 실행하면 실습이 잘 진행되지 않으므로 다른 호스트에서 진행해준다.

 

호스트(IP:192.168.11.166)의 네트워크 인터페이스를 지나다니는 패킷을 파일에 담아준다.


서버를 열어준다.

호스트(IP:192.168.11.141)에서 연결을 신청해서 데이터를 보낸다.

그다음 log.txt 파일을 확인해보면

패킷에서 'hello' 라는 정보를 찾을 수 있다.


























WRITTEN BY
Bugday

,