<?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>Decrypt on Details...</title>
    <link>https://www.deepreflect.net/tags/decrypt/</link>
    <description>Recent content in Decrypt 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/decrypt/feed.xml" rel="self" type="application/rss+xml" />
    <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>
  </channel>
</rss>
