2016-06-23 3 views
0

が、私はこのような何かを表示するルータのソフトウェアを開発する必要があります(注:この記事は、ネットワークプログラミングをするために関連している):DHCPパケットからクライアントデータを取り出す方法は?

enter image description here

私はWiresharkのDHCPパケットの通過を捕獲し、観察し、それはすべての詳細が含まれていることをI表示する必要があります。私はdhcpdumpとtcpdumpのツールと同じことを確認し

enter image description here

:データは次のようになります。私が興味を持っています出力の

[email protected]:$ sudo dhcpdump -i wlp6s0 

一部は次のとおりです。

TIME: 2016-06-23 12:20:50.976 
    IP: 10.42.0.1 (b0:c0:90:69:72:57) > 10.42.0.99 (fc:64:ba:1b:40:e5) 
    OP: 2 (BOOTPREPLY) 
HTYPE: 1 (Ethernet) 
    HLEN: 6 
    HOPS: 0 
    XID: e277d896 
    SECS: 0 
FLAGS: 0 
CIADDR: 0.0.0.0 
YIADDR: 10.42.0.99 
SIADDR: 10.42.0.1 
GIADDR: 0.0.0.0 
CHADDR: fc:64:ba:1b:40:e5:00:00:00:00:00:00:00:00:00:00 
SNAME: . 
FNAME: . 
OPTION: 53 ( 1) DHCP message type   5 (DHCPACK) 
OPTION: 54 ( 4) Server identifier   10.42.0.1 
OPTION: 51 ( 4) IP address leasetime  3600 (60m) 
OPTION: 58 ( 4) T1      1800 (30m) 
OPTION: 59 ( 4) T2      3150 (52m30s) 
OPTION: 1 ( 4) Subnet mask    255.255.255.0 
OPTION: 28 ( 4) Broadcast address   10.42.0.255 
OPTION: 6 ( 4) DNS server    10.42.0.1 
OPTION: 3 ( 4) Routers     10.42.0.1 
--------------------------------------------------------------------------- 

しかし、これらのツールを使用せず(これらのツールは、ルータボードに追加することはできません)、MACアドレスなどのクライアントデータを抽出する方法、IPアドレス、およびdhcpパケットからの他の情報(またはそれらのツールが情報をどのように抽出したか)をプログラムで(Cで可能な場合)?それによって

socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) 

を使用すると、すべてのETHパケットを見ることができると同じに処理されます:あなたのDHCPサーバーを使用すると、タイプのソケットを使用することができ、必要な情報を得るためにいかなる手段を提供していないと仮定すると、

+0

ルータはLinuxで動作していますか?ルータ全体にdhcp/DNS/NAT機能を書き込む必要がありますか、またはdhcpパケットを監視するだけですか? –

+0

はい。Linuxを実行しているルータ。そして、はい、パケットを監視する必要があります。最初から開発する必要はありません。そして、私はなぜこの質問が下落したのか分からない。 –

+0

@nayabbashasayed 1つの理由は、ちょっと混乱しているかもしれない。なぜあなたはパケットを監視する必要があると思いますか?あなたが行っている情報は、実行中のソフトウェアに応じて、他の方法でも利用できます。たとえば、dhcpサーバーのマニュアルを参照してください。 – unwind

答えて

0

wiresharkとして。パケットからヘッダーとコンテンツを処理するには、OSIレイヤ(ETH2、IP、UDP、およびDHCP)の知識が必要です。

+0

答えをありがとう...私はそれを試みる.. –

関連する問題