tcp 패킷에서 패킷데이타를 분석하는 방법
글쓴이: 이우중 / 작성시간: 목, 2003/06/05 - 10:35오후
제목이 적당한 것인지 잘 모르겠습니다.
libpcap을 이용하여 패킷을 잡아내었습니다.
간단한 예는 다음과 같습니다.
22:27.179429 166.104.xxx.xxx. > 211.39.xxx.xxx
version: 4
header_len: 5
tos: 0
total_len: 40
id: 48898
flags: 2
fragment_offset: 0
ttl: 128
protocol: tcp
header checksum: 22346
data:
0df700f0774fa8e4f211f11250040000
위에서 data 부분은 binary를 hex로 변환하여 출력한 결과 입니다.
실제로 위의 패킷은 웹브라우져로 웹 사이트를 접속하였을때의 패킷입니다.
여기에서 data에 해당하는 부분을 어떻게 하면 http 프로토콜 메시지로 변환 시킬수 있을까요
혹시 이런쪽으로 프로그래밍 해보신분 있으시다면 조언좀 부탁드립니다.
Forums:
ip부분만을 뽑아내신것 같습니다. 아마도 그 data 부분에 tcp 헤더
ip부분만을 뽑아내신것 같습니다. 아마도 그 data 부분에 tcp 헤더가
있고, tcp 헤더 를 뽑아내고 나면, 그냥 데이터로 바꾸면
HTTP 프로토콜 일껍니다. 그럼 고운 하루...
=========================
CharSyam ^^ --- 고운 하루
=========================
TCP처리가 끝난(recv가 받아낸-RAW_SOCKET은 아니겠죠 --;
TCP처리가 끝난(recv가 받아낸-RAW_SOCKET은 아니겠죠 --; 딴지 거시지 말기를 ^^;- )데이터까지 받아 내셨다면....
그냥 hex(위의 데이터가)를 ascii코드로 출력하면 형태가 보일것 같군요.
HTTP가 ASCII코드로 되어 있는것 같더군요
다른형태의 프로토콜이라면 스펙을 봐야 겠죠
데이터를 못받고 IP헤더만 떼낸 상태라면 이건 다른 고려할 사항이 생길것 같습니다.
가령 받은 데이터가 오류라면 프로토콜이 깨어지겠죠....
그러니까 CRC체크를 한후 정상이면 TCP헤더를 뜯어네고 받아 네야겠죠...
그외 추가적으로 생각나는건 없네요...
세세하게 잘몰라서 이경우는 스펙을 좀 보셔야 될것 같군요.
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
Re: tcp 패킷에서 패킷데이타를 분석하는 방법
안녕하세요. 아벨입니다.
libpcap 를 이용하여 패킷을 캡쳐하셨다면.
data 부분은 아마도 tcp 헤더를 포함한 데이터 일것입니다.
tcp 헤더 다음부분을 포인트 한다음..
HTTP 프로토콜 스택을 적용시켜 보세요
http 프로토콜 스택은 인터넷에 널려있으니...
구조체 만들어서 맵핑하시면 될것입니다.
그럼~ 항상 좋은일 가득하세요~!
ps - http 의 데이터 부분은 파서가 따로 있는지 모르겠지만....
없다면, 만드셔서 표현을 하셔야 할것 같습니다.
아름다움이란... 열정
HTTP 프로토콜은 텍스트 형태이기 때문에,그냥 TCP 헤더만 뽑
HTTP 프로토콜은 텍스트 형태이기 때문에,
그냥 TCP 헤더만 뽑아내시면 볼 수 있을 겁니다.
그럼 고운 하루
=========================
CharSyam ^^ --- 고운 하루
=========================
고맙습니다.
고맙습니다.
TCP 헤더를 뽑아내서 활용하고 TCP 패킷의 데이타 부분을 뽑아내니 되는군요..
:-)
댓글 달기