2013-09-27 4 views
4

나는 루아에서 해부학자를 쓰는 것이 처음이고 두 가지 빠른 질문이 있습니다. TCP 옵션이 MSS, TCP SACK, TimeStamps, NOP, Window Scale, 알 수 없음 인 패킷이 있습니다. 기본적으로 TCP 옵션 필드에서 알 수없는 섹션을 분석하려고합니다. 나는 쇠사슬로 된 절개기를 사용해야 만한다는 것을 알고 있습니다.TCP 단속 자

첫 번째 질문은 연결 옵션을 사용하여 TCP 옵션을 구문 분석하는 동안 처음부터 모든 옵션을 구문 분석해야합니까? 예를 들어, MSS, TCP SACK 등을 구문 분석해야하고 마지막으로 알 수없는 섹션을 구문 분석하거나 알 수없는 섹션으로 바로 이동하는 직접적인 방법이 있습니다.

내가 가진 두 번째 질문은 나는 많은 사용자 정의 프로토콜 dissectors에 대한 코드를 보았다하고 내가 TCP (예) 다음 프로토콜을 해부 할 필요가 있다면, 나는 다음을 포함해야합니다 :

-- load the tcp.port table 
tcp_table = DissectorTable.get("tcp.port") 
-- register our protocol to handle tcp port 
tcp_table:add(port,myproto_tcp_proto) 

제 질문은 저에게 프로토콜의 중간으로 건너 뛰는 것입니다. 예를 들어 필자의 경우 TCP 옵션을 구문 분석하려고합니다. 직접 tcp.options를 호출 할 수 있으며 파서는 옵션이 시작될 위치에서 해부를 시작합니까?

답변

0

TCP 옵션은 "uint8_t type; uint8_t len; uint8_t * data"구조입니다. 나는 보통 일반적으로 사용되는 이름을 제공합니다. 예를 들어, getSack(), getMss(). 다른 사람에게는 배열 (최대 크기는 20 자)로 유지하십시오.

두 번째 질문에 대해서는 TCP 헤더에 신경 쓰지 않는다는 것을 의미합니까? 그렇다면 포인터를 20 바이트 더 이동하여 TCP 옵션에 액세스하십시오.