맥어드레스로 통신...

rokmn3309의 이미지

현재 한쪽은 네트웍이 제대로 셋팅된 상태이고.. 다른 한쪽은.. 디폴트(1.0.0.0, 255.255.255.255, 0.0.0.0)으로 되어 잇는 상태에서.. 맥어드레스만 가지고 통신을 해 볼려고 하는데.. 아피할당없이 맥어드레스만으로 통신을 해 보신분이 계시면..리플 부탁드립니다.

withlhw의 이미지

저의 생각에는 Mac Address만으로는 통신이 이루어 지지 않습니다.

물론 네트웍 연결이 되어 있으면 비트는 흐르겠지요. 이렇게 흐르는 비트를

가지고 처리를 하기 위해서는 프로토콜을 사용해야지 됩니다.

bootp나 dhcp를 이용하셔서 Mac address에 IP등을 할당 하신뒤에야

실질적인 통신이 이루어 질것 같은데요..

rokmn3309의 이미지

패킷 배열을 만드시고 여기에 이더넷헤더에서 상대방 맥어드레스를 넣어주고 ip헤더는 알아서 대충처리(헤더정보에 맞게)후 체크섬만 맞추어 주고. udp헤더에서 받의 프로그램의 port를 넣으시고 upd의 체크섬을 맞추어서 넣고 libpcap의 pcap_sendpacket으로 보내니 날아가네요..

libpcap 좋은 라이브러리네요.. 좀더 파고 들어야 할듯..
http://www.tcpdump.org

rokmn3309의 이미지

제가 윈도우에서 winpcap만 적용해보고 winpcap이 libpcap을 base로 만들다고 알아서 pcap_sendpacket이란게 있는줄 알았는데..
알고보니 없더군요.. ㅡㅡ;

그래서 리눅스에서 방법을 찾다가 우연히 libnet 를 알게 되어
간단하게 보내는 방법을 적겠습니다.

man 파일을 보시면 알겠지만 아주 간략한 설명만 나와 있습니다.
저도 여러 프로그램을 보고 대충은 알았지만은 아직도 많은 부분의 함수를
어떻게 사용하는지는 잘 모르겠더군요...

잘 아시는 분이 각 함수마다.. 간략한 설명이나 용도를 적어주시면... 진짜루 감사하겠습니다.

libnet_init 으로 libnet을 생성합니다. 타입은 LIBNET_LINK, LIBNET_RAW4,LIBNET_RAW6 등이 있습니다.
저는 데이터링크계층에서 보내는 형태(이더넷헤더,ip헤더,upd헤더 생성)
libnet_seed_prand //seed the (pseudo) random number generator
libnet_build_data 으로 보낼 패킷데이터를 생성하고.
libnet_build_udp 으로 udp 헤더를 생성합니다. 단 주의하실점은
인자값으로 payload가 있는데 이것이 보낼 데이터입니다.
libnet_do_checksum 으로 upd의 체크섬을 합니다.
upd의 체크섬은 가상ip헤더와 실제 upd헤더및 데이터로 구성됩니다.
libnet_build_ipv4 으로 IP헤더를 생성시켜줍니다.
libnet_do_checksum 으로 다시 IP의 체크섬을 합니다.
libnet_build_ethernet으로 이더넷 헤더를 생성후
libnet_write 로 생성된 패킷을 보내시면 해당 아피에서 받더군요..

libnet_build_ipv4 나 libnet_build_udp 를 생성시
받는 컴의 아피와 포트 번호는 제대로 적어 줘야 합니다.
만약에 받는쪽에서 데이터링크계층에서 패킷을 받아서 처리한다면
상관없겠지만 일반 UDP프로그램이라면 ...

이상 잘못된 오류를 정정합니다.

댓글 달기

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