⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arpsend_8cpp.html

📁 发送ARP包的控制台程序
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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 &nbsp;</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&nbsp;</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">&nbsp;</td><td class="mdescRight">将字符类型的数据转化为6byte16进制地址  <a href="#a1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="arpsend_8cpp.html#a2">arpsend</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">arp数据包 发送一个arp数据包  <a href="#a2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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&nbsp;</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">(&nbsp;</td>          <td class="md" nowrap valign="top">int&nbsp;</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 *&nbsp;</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 *&nbsp;</td>          <td class="mdname" nowrap> <em>envp</em>[]</td>        </tr>        <tr>          <td class="md"></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">  <tr>    <td>      &nbsp;    </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&lt;&lt;<span class="stringliteral">"Usage:arpsend src_ip src_mac dst_ip dst_mac flag"</span>&lt;&lt;endl;00120                         cout&lt;&lt;<span class="stringliteral">"arpsend:程序名"</span>&lt;&lt;endl;00121             cout&lt;&lt;<span class="stringliteral">"src_ip:源ip地址"</span>&lt;&lt;endl;00122             cout&lt;&lt;<span class="stringliteral">"src_mac:源mac地址"</span>&lt;&lt;endl;00123             cout&lt;&lt;<span class="stringliteral">"dst_ip:目的ip地址"</span>&lt;&lt;endl;00124             cout&lt;&lt;<span class="stringliteral">"dst_mac:目的mac地址"</span>&lt;&lt;endl;00125             cout&lt;&lt;<span class="stringliteral">"flag:0表示arp请求;1表示arp应答"</span>&lt;&lt;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&lt;&lt;<span class="stringliteral">"目的mac地址输入有误"</span>&lt;&lt;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&lt;&lt;<span class="stringliteral">"源端mac地址输入有误"</span>&lt;&lt;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&lt;&lt;<span class="stringliteral">"flag输入有误,只可以为0:arp请求或1:arp应答"</span>&lt;&lt;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&lt;&lt;<span class="stringliteral">"发送失败"</span>&lt;&lt;endl;00164                 <span class="keywordflow">return</span> 5;00165         }00166         <span class="keywordflow">else</span>00167                 cout&lt;&lt;<span class="stringliteral">"发送完成"</span>&lt;&lt;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">(&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</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 + -