<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Decryption on Qtnes</title><link>http://qtnes.com/tags/decryption/</link><description>Recent content in Decryption on Qtnes</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 16 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://qtnes.com/tags/decryption/index.xml" rel="self" type="application/rss+xml"/><item><title>5 - MediterraneanPotions: Decrypting a Flutter App's Encrypted Database</title><link>http://qtnes.com/posts/5---mediterraneanpotions---decrypting-a-flutter-apps-encrypted-database/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>http://qtnes.com/posts/5---mediterraneanpotions---decrypting-a-flutter-apps-encrypted-database/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;MediterraneanPotions was a Flutter challenge built around a single encrypted asset: &lt;code&gt;potions.hive&lt;/code&gt;, a Hive key-value database where every record was AES-CBC encrypted. The AES key was hardcoded in the app&amp;rsquo;s native Dart binary. The Hive frame format embedded a per-record IV.&lt;/p&gt;
&lt;p&gt;The challenge was to find the key, understand the binary format, and decrypt all records.&lt;/p&gt;
&lt;h2 id="first-impressions"&gt;First Impressions&lt;/h2&gt;
&lt;p&gt;The APK was a Flutter application. That changed the decompilation landscape immediately: the main application logic was compiled into &lt;code&gt;libapp.so&lt;/code&gt; as native Dart code, not Java bytecode. JADX produced almost nothing useful beyond the Android framework glue.&lt;/p&gt;</description></item><item><title>3 - Smoke: Bypassing StringFog and Decoding a Custom String Cipher</title><link>http://qtnes.com/posts/3---smoke---bypassing-stringfog-and-decoding-a-custom-string-cipher/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>http://qtnes.com/posts/3---smoke---bypassing-stringfog-and-decoding-a-custom-string-cipher/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Smoke was a StringFog challenge. StringFog is an open-source Android string obfuscation tool that transforms every string literal in the bytecode into an encrypted hex payload, decoded on demand by a runtime method injected into the class. The goal is to make static analysis significantly harder: decompiling the APK produces no human-readable strings, only opaque calls like &lt;code&gt;AbstractC0006a5.o(&amp;quot;e30385842152b38cc3ab85&amp;quot;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The challenge used a custom variant of StringFog with its own cipher. The goal was to identify the encryption algorithm, port it to Python, and bulk-decrypt all string payloads in the decompiled source tree to find the flag.&lt;/p&gt;</description></item></channel></rss>