📄 arpsend_8cpp.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>arpsend: arpsend.cpp文件参考</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- 制作者 Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.html">首页</a> | <a class="qindex" href="namespaces.html">名字空间列表</a> | <a class="qindex" href="annotated.html">组合类型列表</a> | <a class="qindex" href="files.html">文件列表</a> | <a class="qindex" href="functions.html">组合类型成员</a> | <a class="qindex" href="globals.html">文件成员</a></div><h1>arpsend.cpp文件参考</h1><code>#include "stdafx.h"</code><br><code>#include "<a class="el" href="arpsend_8h-source.html">arpsend.h</a>"</code><br><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Namespaces</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr><tr><td colspan="2"><br><h2>函数</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="arpsend_8cpp.html#a1">strtoaddr</a> (const LPSTR str, unsigned char *add)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">将字符类型的数据转化为6byte16进制地址 <a href="#a1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="arpsend_8cpp.html#a2">arpsend</a> ()</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">arp数据包 发送一个arp数据包 <a href="#a2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="arpsend_8cpp.html#a3">_tmain</a> (int argc, TCHAR *argv[], TCHAR *envp[])</td></tr><tr><td colspan="2"><br><h2>变量</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">CWinApp </td><td class="memItemRight" valign="bottom"><a class="el" href="arpsend_8cpp.html#a0">theApp</a></td></tr></table><hr><h2>函数文档</h2><a class="anchor" name="a3" doxytag="arpsend.cpp::_tmain"></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int _tmain </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">int </td> <td class="mdname" nowrap> <em>argc</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>TCHAR * </td> <td class="mdname" nowrap> <em>argv</em>[], </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>TCHAR * </td> <td class="mdname" nowrap> <em>envp</em>[]</td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><div class="fragment"><pre class="fragment">00105 {00106 <span class="keywordtype">int</span> nRetCode = 0;00107 00108 <span class="comment">// 初始化 MFC 并在失败时显示错误</span>00109 <span class="keywordflow">if</span> (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))00110 {00111 <span class="comment">// TODO: 更改错误代码以符合您的需要</span>00112 _tprintf(_T(<span class="stringliteral">"致命错误: MFC 初始化失败\n"</span>));00113 nRetCode = 1;00114 }00115 <span class="keywordflow">else</span>00116 {00117 <span class="keywordflow">if</span>(argc!=6) <span class="comment">//输入参数不符合要求,程序退出。</span>00118 {00119 cout<<<span class="stringliteral">"Usage:arpsend src_ip src_mac dst_ip dst_mac flag"</span><<endl;00120 cout<<<span class="stringliteral">"arpsend:程序名"</span><<endl;00121 cout<<<span class="stringliteral">"src_ip:源ip地址"</span><<endl;00122 cout<<<span class="stringliteral">"src_mac:源mac地址"</span><<endl;00123 cout<<<span class="stringliteral">"dst_ip:目的ip地址"</span><<endl;00124 cout<<<span class="stringliteral">"dst_mac:目的mac地址"</span><<endl;00125 cout<<<span class="stringliteral">"flag:0表示arp请求;1表示arp应答"</span><<endl;00126 <span class="keywordflow">return</span> 1;00127 }00128 00129 <span class="comment">//开始填充arp包</span>00130 <span class="keywordflow">if</span>(!<a class="code" href="arpsend_8cpp.html#a1">strtoaddr</a>(argv[4],<a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o0">header</a>.<a class="code" href="struct_t_l_header.html#o0">DesAdd</a>)) <span class="comment">//填充头部的目的mac地址</span>00131 {00132 cout<<<span class="stringliteral">"目的mac地址输入有误"</span><<endl;00133 <span class="keywordflow">return</span> 2;00134 }00135 <span class="keywordflow">if</span>(!<a class="code" href="arpsend_8cpp.html#a1">strtoaddr</a>(argv[2],<a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o0">header</a>.<a class="code" href="struct_t_l_header.html#o1">SrcAdd</a>)) <span class="comment">//填充头部的源端mac地址</span>00136 {00137 cout<<<span class="stringliteral">"源端mac地址输入有误"</span><<endl;00138 <span class="keywordflow">return</span> 3;00139 }00140 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o0">header</a>.<a class="code" href="struct_t_l_header.html#o2">ProType</a>=0x0806; <span class="comment">//填充协议类型,arp为0x0806</span>00141 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o0">hwType</a>=1; <span class="comment">//底层网络类型(以太网)为1</span>00142 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o1">protType</a>=0x0800; <span class="comment">//上层协议类型,ip协议</span>00143 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o2">haddrLen</a>=0x06; <span class="comment">//底层网络地址长度,mac地址为6字节</span>00144 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o3">paddrLen</a>=0x04; <span class="comment">//上层协议地址长度,ip地址为4字节</span>00145 <span class="keywordflow">if</span>(argv[5]==<span class="stringliteral">"0"</span>) <span class="comment">//flag=0,为arp请求,操作码,request=1</span>00146 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o4">Opcode</a>=0x0001;00147 <span class="keywordflow">else</span>00148 {00149 <span class="keywordflow">if</span>(argv[5]==<span class="stringliteral">"1"</span>) <span class="comment">//flag=1,为arp应答,操作码,response=2</span>00150 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o4">Opcode</a>=0x0002;00151 <span class="keywordflow">else</span>00152 {00153 cout<<<span class="stringliteral">"flag输入有误,只可以为0:arp请求或1:arp应答"</span><<endl;00154 <span class="keywordflow">return</span> 4;00155 }00156 }00157 <a class="code" href="arpsend_8cpp.html#a1">strtoaddr</a>(argv[2],<a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o5">smacAddr</a>); <span class="comment">//填充发送方的mac地址</span>00158 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o6">sprotAddr</a>=inet_addr(argv[1]); <span class="comment">//填充发送方的ip地址</span>00159 <a class="code" href="arpsend_8cpp.html#a1">strtoaddr</a>(argv[4],<a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o7">rmacAddr</a>); <span class="comment">//填充接受方的mac地址</span>00160 <a class="code" href="arpsend_8h.html#a0">arpPacket</a>.<a class="code" href="struct_a_r_p_packet.html#o1">data</a>.<a class="code" href="struct_pack_data.html#o8">rprotAddr</a>=inet_addr(argv[3]); <span class="comment">//填充接受方的ip地址</span>00161 <span class="keywordflow">if</span>(!<a class="code" href="arpsend_8h.html#a1">arpsend</a>())00162 {00163 cout<<<span class="stringliteral">"发送失败"</span><<endl;00164 <span class="keywordflow">return</span> 5;00165 }00166 <span class="keywordflow">else</span>00167 cout<<<span class="stringliteral">"发送完成"</span><<endl;00168 00169 00170 }00171 00172 <span class="keywordflow">return</span> nRetCode;00173 }</pre></div><p> </td> </tr></table><a class="anchor" name="a2" doxytag="arpsend.cpp::arpsend"></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool arpsend </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -