tcpdump(libpcap)에서 출력 버퍼를....

driver0401의 이미지

안녕하세요....

libpcap이 정확히 어디단에서 갖고 오는지....제가 알기로는 datalink로 알고 있는데...맞는지 모르겠습니다.

만약 맞다면 출력 버퍼와 입력 버퍼가 틀린 것으로 알고 있는데 libpcap에서 출력 버퍼로 부터 갖고 오는 것을 막을 수는 없나여...(소스 코드를 고치는 한이 있더라도...)

꼭 알고 싶습니다. 많은 조언 부탁 드립니다.

불량청년의 이미지

룰설정을 해주시면 될꺼 같네요. *^^*

즉, 들어오는 패킷만 캡쳐 하겠다는 룰...

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

driver0401의 이미지

근데 그 룰 설정을 어떻게 해주는지 를 모르겠거든요....

좀 알려 주세요.... ^^;;;

불량청년의 이미지

여기 kldp의 howto 문서를 검색해 보셔도 되구요,

리눅스에선 man tcpdump 하셔도 룰 설정법을

보실 수 있습니다. *^^*

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

driver0401의 이미지

src ip, src mac, dst ip, dst mac을 이용하지 않고도 filtering을 할 수 있나요...

제가 libpcap으로 끌어 올린 packet을 전혀 수정하지 않고(ip, mac 다 포함하여) 다시 보낼 려고 하는데 어떤 걸 갖고 filtering 해야 하는지 몰라서 고민 하고 있거든요....

꼭 좀 알려 주세요 ^^;;;

불량청년의 이미지

질문에 대해서 이해가 잘 안가네요. 이해력이 부족해서... ㅜㅜ;

libcap으로 캡쳐한 패킷의 source address를 변경하지 않고

target address로 변환하여 보내고 싶다는 말씀이신가요?

일단 libcap은 패킷을 캡쳐만 할 수 있지 보낼 수는 없습니다.

패킷을 만들어 보내던지 하실려면 raw socket을 보셔야 합니다.

또한 좀 더 쉬운 방법으로는 libnet을 사용하시면 됩니다.

질문에 답이 됐는지 모르겠네요. ^^;

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

driver0401의 이미지

#### 제가 자세히 적었어야 하는데... 죄송합니다. ####

제가 구현 하는 것에 대해 몇자 적어 보겠습니다. 보안에 관한 프로젝트를 만들어 볼려고 합니다.

### A System ----> B System ---> C System ###

A System에서 C System으로 무언 가를 보낼려고 합니다. 꼭 B를 거쳐야지만 갈수 있게 만들었습니다. (lan card는 하나씩만 있고요 이건 중요한게 아니니 여기까지만 하겠습니다.)

libpcap을 써서 packet을 끌어 올리고요(원본 패켓은 버리고요) 복사된 패킷을 검사한후 libnet을 써서 원본과 똑같은(전혀 수정하지 않았습니다.) packet을 보낼려고 합니다.

근데 문제는 pcap이 제가 보내는 (원래 packet이 가려던 곳으로) 패킷을 다시 끌어 올려서 무한 루프식으로 도는 것 같습니다. 제가 보낸걸 캡쳐해서 다시 보내고 또 보내는 것을 캡쳐해서 다시 보내는 식으로요.....mac과 ip도 원래 것이기때문에 저에게로 오는 것도 아니었고 제가 보내는 (mac과 ip가 제것이 아니라는 말이지요) 것도 아니기 때문에 어떻게 필터링을 해주어야 하는지 모르겠습니다. 정 안되면 libpcap의 소스 코드에서 만약 출력 버퍼에서 갖고 오는 부분이 있다면 그것을 막아볼생각인데 그것도 만만치 않더라고요....

보내는 것은 libnet을 이용해서 보내는데 pcap_loop에서 패킷 처리 함수 지정해 주고 그 함수(지정한 함수)에 인자로 pcap_pkthdr *h과 u_char *p인자가 넘어 온걸 갖고 p가 데이터 포인터이고 phthdr->caplen이 캡쳐한 길이니깐 libnet_write_link에 값을 넣어 주어(libnet_t *l 인자는 fd와 device만 넣어주고요) 바로 쏘아질 거라 생각했는데 가긴 가는 것 같은데 깨지더라고요...

이상이 제가 격고 있는 문제점입니다. 진작 이렇게 써야 했었는데 님께 죄송하네요...

바쁘시겠지만 다시 한번 봐주시면 감사하겠습니다.

alwaysrainy의 이미지

A에서 C로 패킷을 전송한다함음.. B가 캡춰하든지의 여부에 상관없이 C는 A로부터 패킷을 정상적으로 수신 합니다. 원본 패킷을 버린다고 하셨는데요..
C에서 원본 패킷인지.. B가 검사후 보낸 패킷인기 구별할 수 있는 근거는 무엇이죠? 단지 C에서 받은 첫번째 패킷을 버리고 나중에 받은 패킷을
수신하겠다는 발상에는.. 약간의 무리가 따르지 않을까요? 물론 dummy hub 환경에서 B에서 검사 후 보낸 패킷이 먼저 도착할
확률은 희박하겠지만.. 그 가능성은 배제할 수 없는게 아닐런지요? 무한 로프 도는 문제는 ip header에서 사용하지 않는 한 비트에
B에서 검사를 마쳤다는 기록을 남기시면 해결될 문제 같습니다.

---------------------------------------
세계는 넓고, 할일은 많다.

driver0401의 이미지

답변 감사 드립니다.

제가 잘 몰라서 그러는데 ip header 어느 비트를 사용해야 하는지 tos를 사용하자니 목적지에 프로토콜 스택을 타면서 읽어 들여서 잘 못 되지 않을까 하는 생각이 들고요....플래그의 3번째 비트는 안쓰기는 하나 거기는 건들지 말라는 이야기도 있고...어떻게 접근 할지도 문제인거 같기도 하고요....

조언 부탁드립니다. 다시 한번 답변 감사 드립니다.

alwaysrainy의 이미지

IP Type-of-service(TOS) field는 거의 사용되지
않고 새로운 QoS 설계 구조에서도 5비트 사용한다고
합니다. ECN을 사용하지 않는 다는 가정하에 2비트
정도가 Free입니다. 끝에 2비트 정도 사용하면 적당 할
듯 싶습니다.

---------------------------------------
세계는 넓고, 할일은 많다.

driver0401의 이미지

감사드립니다. 많은 도움이 되는 것 같네요.... ^^

jinlee222의 이미지

libnet에서 ethernet단으로 보내는것 소스 코드에 나와있는 sample 소스 말고

잘 그리고 자세히 나왔는 사이트 아시나요??

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.