pcap으로 잡은 패킷을 분석하는데요...

shs0917의 이미지

안녕하세요?? 보안쪽에 관심이 많은 초보 리눅서입니다.:oops:
pcap으로 ip패킷을 잘라보면 flags & flagment offset이 ip_off라는 하나의
구조체에 들어가게 되는데요.. 그걸 flags랑 flagment offset으로 나누는 방법이
없을까 해서 이렇게 글을 올립니다. 이번에 pcap을 이용한 간단한 패킷 분석
프로그램을 만들고 있는데요.. 이더넷 프레임에서 IP datagram을 뽑아낸 다음에
그 안의 내용을 분석하던중 flags 와 flagment offset이 ip_off라는 구조체에
같이 들어가 있어서.. 그걸 분리하려고 하는데요.. 방법 좀 가르쳐 주시면 감사
하겠습니다. :D

gimmesilver의 이미지

2byte 정보 중 앞에 3bit가 flag...나머지가 flagment offset입니다...

ps. 패킷으로 숫자값(length 나 offset등등)은 MSB입니다...따라서 LSB형식의 컴퓨터에서는 이것을 바꿔줘야 합니다...

------------------------
http://agbird.egloos.com

shs0917의 이미지

답변은 잘 봤는데요.. 상위 3bit가 flags이고 그 이후 13bit가 flagment offset
이란 것과 flags 3bit가 상위 1bit는 예약값 0, 그 다음은 DF, 그 다음은 MF라는 것 까지는 봤습니다. 제가 사용하는 시스템은 AMD 애슬론 XP0 200+이구요... 래드햇 9.0인데요.. 답변에서 변환해야 한다는 그 내용을 모르겠구요.. 구조체
맴버에 들어있는 값이 u_int형인데.. 그중에 상위 3bit를 어떻게 뽑아내야 할지 모르겠네요..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

gimmesilver의 이미지

그냥 masking 하시죠...
그리고 변환하라는 것은 보통 인텔 계열은 2byte short의 경우 낮은 바이트에서 높은 바이트로 저장이 되는데
packet은 높은 바이트 / 낮은 바이트 순으로 저장이 되므로 이를 뒤바꿔줘야한다는 것은 말한 것입니다...
unsigned char flag;
unsigned short offset;
unsigned char *flagment = (unsigned char *)ip_off;
flag = flagment[0] & 0xE0;
flagment offset = (unsigned short)(((flagment[0] & 0x1F) << 8) | flagment[1]);

------------------------
http://agbird.egloos.com

shs0917의 이미지

네트웍으로 보내지 않을때도 빅엔디안과 리틀엔디안의 문제점이 생기는 거였군요... 쉬프트 연산으로 간단히 해결 되었습니다.^^ 감사하네용..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.