UDP socket programming
- 주로 단순한 통신에 많이 사용
1. UDP client
1) udp socket 생성
2) sendto, recvfrom()
! connect()를 하지 않기 때문에 정확히 에코가 되었다고 말할 수 없다.
2. UDP Server
server.sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
1) udp socket 생성
2) 생성된 소켓을 통해 bind()
3) sendto(), recvfrom()
- udp server는 다른 클라이언트용 소켓을 필요로 하지 않는다.
* RAW 소켓 프로그래밍 (특정 프로그램에 영향을 받지 않는다)
- 네트워크 인터페이스(eth0)를 지나다니는 내용들을 직접 덤프(로그,캡쳐,모니터링).
- 프로토콜 헤더를 직접 작성할 수 있음
- (통신에 필요한 내용을 직접 작성)
예) connect()..등등
##UDP 샘플 (프로토콜 헤더)
받음
b'\x00\x0c)\xcc\xcc\x01\x00\x0c)\xcc\xcc\x02\x08\x00E\x00\x00!\x00\x00@\x00@\x11\xa2i\xc0\xa8\x0b\xdf\xc0\xa8\x0b3V\xce\xd3\x12\x00\r\xfe\xbakorea
보냄
b'\x00\x0c)\xcc\xcc\x02\x00\x0c)\xcc\xcc\x01\x08\x00E\x00\x00!\x00\x00@\x00@\x11\xa2i\xc0\xa8\x0b3\xc0\xa8\x0b\xdf\xd3\x12V\xce\x00\r\xfe\xbakorea'
UDP 헤더의 구조
- 헤더의 길이 8바이트 고정 크기를 갖는다.
- UDP 헤더의 실제 길이는 데이터를 포함한 길이.(가변적)
- header (8byte) + data(5byte)
- V \xce \xd3 \x12 \x00 \r \xfe \xba korea = 13byte
- 규칙 순서 (아스키코드 참고)
1) 출발지 포트번호 (2byte)
2) 도착지 포트번호 (2byte)
3) 헤더의 전체크기 (2byte)
4) 체크섬 (2byte)
5) 데이터 (가변)
'Hacking > Network penetration' 카테고리의 다른 글
Network hacking - IP header, Ethernet header(Layer2) (0) | 2017.11.05 |
---|---|
Network hacking - struct 모듈, Layer3(IPv4) (0) | 2017.11.05 |
Network hacking - OSI 7 계층과 socket server, client (0) | 2017.10.23 |
Network hacking - 실습환경 세팅하기(3) (0) | 2017.10.19 |
Network hacking - 실습환경 세팅하기(2) (0) | 2017.10.18 |