<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="https://cp-df.com/en/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <atom:link href="https://cp-df.com/en/rss.xml" rel="self" type="application/rss+xml"/>
    <title></title>
    <link>https://cp-df.com/en/</link>
    <description>Christian Peters Digital Forensics Website</description>
    <language>en-US</language>
    <pubDate>Tue, 24 Mar 2026 06:23:33 GMT</pubDate>
    <lastBuildDate>Tue, 24 Mar 2026 06:23:33 GMT</lastBuildDate>
    <generator>@vuepress/plugin-feed</generator>
    <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
    <item>
      <title>Shall I describe it to you ...? ALEAPP Live Data Parsing</title>
      <link>https://cp-df.com/en/blog/dumpsys.html</link>
      <guid>https://cp-df.com/en/blog/dumpsys.html</guid>
      <source url="https://cp-df.com/en/rss.xml">Shall I describe it to you ...? ALEAPP Live Data Parsing</source>
      <description>ALEAPP processing of the live data contained in an ALEX PRFS backup.</description>
      <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[
<p align="center">
 <img src="/images/blog/andro_las_big.png" alt="Andro-las" width="800">
</p>
<br>
<p>In the age of file-based encryption, complete file system extractions are the gold standard for analyzing mobile devices.</p>
<p>App and system data, logs, media, and ideally the keychain allow for a comprehensive analysis of an Android smartphone (we will exclude multi-user scenarios from this discussion for now).</p>
<p>But what if, despite known login credentials, no file system backup is currently available for a recent device? Android/iOS developers and forensic software providers have long been engaged in a cat-and-mouse game. It often takes some time before a “FFS” is made available for a new model.</p>
<!-- more -->
<p>Many commercial tools offer an “advanced logical backup” for these cases - that is, a collection of the data that the device voluntarily discloses. This backup is usually far less comprehensive and contains, for example, only a fraction of the available app data. Nevertheless, depending on the objectives of the investigation, this type of extraction can also be justified. Incidentally, I have named my own modification of an extended logical backup for UFADE and ALEX PRFS (“Partially Restored File System”).</p>
<p>Beyond the scope of actually available files (as copies from the device file system), Android offers several built-in tools that allow relevant information to be retrieved from the system without the source files being directly accessible. The Bash tool <a href="https://github.com/RealityNet/android_triage" target="_blank" rel="noopener noreferrer">Android Triage</a> by <a href="https://www.sans.org/profiles/mattia-epifani" target="_blank" rel="noopener noreferrer">Mattia Epifani</a> automates some of these queries and provides a dialog-based interface for the command line. This script also served as the inspiration for some of the features I integrated into <a href="https://github.com/prosch88/ALEX" target="_blank" rel="noopener noreferrer">ALEX</a>.</p>
<p>For example, a PRFS backup of an Android device (in the default configuration) includes not only files accessible to the user (the “Dump” folder) but also live-queried content (the “Extra” folder), which cannot be found in the file system in this form.
Currently, the following ADB commands are used:</p>
<p>| Command | Path in Backup |
|</p>
]]></content:encoded>
    </item>
    <item>
      <title>“Far over the misty mountains cold - iLEAPP Threema Parser”</title>
      <link>https://cp-df.com/en/blog/threema.html</link>
      <guid>https://cp-df.com/en/blog/threema.html</guid>
      <source url="https://cp-df.com/en/rss.xml">“Far over the misty mountains cold - iLEAPP Threema Parser”</source>
      <description>“Insights into the Swiss iOS application ‘Threema’.”</description>
      <pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[
<p align="center">
<img src="/images/blog/threema.png" alt="iLEAPP and Threema" width="800">
</p>
<p>Over Christmas, a family member asked me for a little help with data migration between two iPhones.<br>
This also involved transferring chats from the Threema application from one device to the other.<br>
Although this was not possible as desired (without setting up the second device again), a new iLEAPP parser at least made the chats readable.</p>
<!-- more -->
<h2>Threema</h2>
<p>The paid app can be purchased from the App Store (Adam ID 578665578).</p>
<p>Threema is essentially a chat application with E2E encryption and a focus on data protection and privacy. The app's code is even open source: <a href="https://github.com/threema-ch/threema-ios" target="_blank" rel="noopener noreferrer">Github</a>. Developed in Switzerland, Threema is mainly used in German-speaking countries. The Swiss army and administration rely on Threema, as do various German politicians.  But the application is also considered an (data protection) secure alternative to WhatsApp internationally. Recently, the app was featured in the <a href="https://www.cairnspost.com.au/news/national/how-the-threema-messaging-app-works-as-it-emerges-at-centre-of-murder-trial-of-australians-in-bali/news-story/f5f8a7f45e2fc0c6cc3c07178900f12d" target="_blank" rel="noopener noreferrer">Darcy Jenson case</a>. Three Australian citizens are alleged to have received instructions from a “Mr. Big” via Threema to murder Australian Zivan Radmanovic on the Indonesian island of Bali.</p>
<p>The fact that no phone number or email address is required for registration contributes to the anonymity of using Threema.</p>
<p>So far, I have only looked at the iOS version. An analysis of the Android version may follow later.</p>
<br>
<h2>Data backup</h2>
<p>Conveniently, the Threema database is not only included in an FFS backup, but also in an iTunes backup (and thus in a UFADE PRFS backup).
User data is located (as is often the case with iOS applications) in the “Shared” directory:</p>
<p><code>/private/var/mobile/Containers/Shared/AppGroup/{uuid}</code></p>
<p>Outsourced media files are located in the hidden subfolder: <code>.ThreemaData_SUPPORT/_EXTERNAL_DATA/</code></p>
<p>Special thanks go to my colleague <a href="https://www.linkedin.com/in/bruno-fischer-5b4a182b1/" target="_blank" rel="noopener noreferrer">Bruno Fischer</a>, who provided me with several innocuous data sets to test my parser and create this documentation.</p>
<br>
<h2>Sources</h2>
<p>User data is almost exclusively stored in the database: ThreemaData.sqlite. Thankfully, almost everything here (compared to <a href="/en/blog/potato">PotatoChat</a>) is readable in plain text and logically structured.</p>
<p>The following tables are particularly interesting:</p>
<p>| Table | Content |
|</p>
]]></content:encoded>
    </item>
    <item>
      <title>“Things that were, and things that are, and things that yet may be — ALEX is now available!”</title>
      <link>https://cp-df.com/en/blog/alex.html</link>
      <guid>https://cp-df.com/en/blog/alex.html</guid>
      <source url="https://cp-df.com/en/rss.xml">“Things that were, and things that are, and things that yet may be — ALEX is now available!”</source>
      <description>“Introducing ALEX.”</description>
      <pubDate>Fri, 31 Oct 2025 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[
<p align="center">
 <img src="/images/blog/alex_title.png" alt="ALEX" width="800">
</p>
<p>Is there really a need for another tool that wraps ADB commands in a graphical user interface?</p>
<p>With <a href="https://www.magnetforensics.com/de/resources/magnet-acquire/" target="_blank" rel="noopener noreferrer">Magnet Acquire</a>, <a href="https://github.com/AvillaDaniel/AvillaForensics/releases" target="_blank" rel="noopener noreferrer">Avilla Forensics</a>, <a href="https://github.com/RealityNet/android_triage" target="_blank" rel="noopener noreferrer">android_triage</a>, <a href="https://northloopconsulting.com/blog/f/getting-started-with-arsenic" target="_blank" rel="noopener noreferrer">Arsenic</a>, and several other representatives, there are already free tools that allow ADB extractions from Android devices.</p>
<!-- more -->
<p>Nevertheless, I decided to create my own tool. Developing UFADE as part of my master's thesis took quite a bit of time, but it was also a lot of fun. Since I planned to give my Android tool a similar range of functions and a very similar graphical user interface, I was able to reuse some parts of the code directly with minor adjustments. The result was to be an open source tool that runs on Windows, Linux, and macOS and can be used in virtually the same way as UFADE — I present: <a href="https://github.com/prosch88/ALEX" target="_blank" rel="noopener noreferrer">ALEX</a>.</p>
<p>The <strong>Android Logical Extractor</strong> can be obtained free of charge via <a href="https://github.com/prosch88/ALEX" target="_blank" rel="noopener noreferrer">GitHub</a> and is intended as a supplement to commercial applications.</p>
<p>Everything is still in a very early stage and there will probably be some bugs. I definitely need help from the DFIR community here, whether through testing with a wide range of test devices or through contributions to the code.</p>
<p>In due course, documentation for ALEX will of course also be available on this website. Hopefully, a few more features will have been added by then.</p>
<p>Here is just a brief overview of the current features:</p>
<p>Most features are available for Android and WearOS devices (including FireOS and other Android derivatives).</p>
<p align="center">
 <img src="/images/blog/alex_android.png" alt="Alex Features" width="900">
</p>
<h2>Reporting Options</h2>
<p>... as with UFADE, offer the option of outputting the displayed device information together with a list of installed apps in text or PDF format.
In addition to the bundle name and version, the installation source is also displayed. This makes it immediately apparent whether an app was obtained from the Play Store or another installer.
For <a href="https://www.ubuntu-touch.io/" target="_blank" rel="noopener noreferrer">Ubuntu Touch</a> devices, installed apps and their respective versions are also displayed.</p>
<br>
<h2>Acquisition Options (Android, WearOS, FireOS)</h2>
<p align="center">
 <img src="/images/blog/alex_acq.png" alt="Alex Acquisition Menu" width="900">
</p>
<h3>Pull “sdcard”</h3>
<p>... allows the extraction of the user's internal memory regardless of whether USB-MTP has been enabled or not.
The name of this function may be somewhat confusing. Under “/sdcard,” there is usually a softlink to the freely accessible user data, even if the directory was actually mounted under “/storage/emulated/0.” This backup mainly contains media.</p>
<h3>ADB Backup</h3>
<p>Although backup via ADB is becoming less and less important, some information, such as stored Wi-Fi passwords, may also be included in the extraction of newer devices. ALEX offers the option to modify the backup options via checkboxes.
If “shared” is enabled, user data from “sdcard” is also backed up. This can be advantageous when analyzing with forensic tools, as the individual files are not temporarily stored in the file system and thus no modification of the timestamps occurs.</p>
<h3>Logical+ (UFED Style)</h3>
<p>This form of backup attempts to replicate the essential components of the advanced logical extraction of the UFED4PC software. It includes:</p>
<ul>
<li>the “sdcard” directory (in a zip archive)</li>
<li>an ADB backup - without sdcard (in the same zip archive)</li>
<li>a Report.xml with the live queried content: calls, contacts, SMS, calendar (in the same zip archive)</li>
<li>an “InstalledAppsList.txt” with a list of all applications</li>
<li>a ufd file for smooth import into <a href="https://cellebrite.com/en/physical-analyzer/" target="_blank" rel="noopener noreferrer">Cellebrite Physical Analyzer ©</a></li>
</ul>
<p><a href="https://cellebrite.com/en/ufed/" target="_blank" rel="noopener noreferrer">UFED4PC ©</a> uses an agent (i.e., an APK to be installed) for logical extraction. ALEX, on the other hand, attempts to reconstruct the information by querying the content providers.<br>
This can be advantageous if it is not possible to install the agent on the device. However, data extraction via an agent allows more direct access to the information to be queried.</p>
<br>
<p>The following image shows a Logical+ backup that was read in using the Physical Analyzer:</p>
<p align="center">
 <img src="/images/blog/alex_pa.png" alt="PA7 with an ALEX extraction" width="900">
</p>
<h3>Partially Reconstructed Filesystem Backup</h3>
<p>Just like with UFADE, I am trying to reconstruct the filesystem as closely as possible to how it actually exists on the device. Currently, this includes:</p>
<ul>
<li>the sdcard directory</li>
<li>“system” directories for which the shell user has permission</li>
<li>Apps of the “system” user and the “/data/system” directory on devices that are vulnerable to <a href="https://infosecwriteups.com/exploiting-android-zygote-injection-cve-2024-31317-d83f69265088" target="_blank" rel="noopener noreferrer">CVE-2024-31317</a> (some Android 9-11 devices)</li>
<li>Reconstructed databases and files (calendar2.db, calllog.db, contacts2.db, mmssms.db, and packages.list)</li>
<li>A “device_info_alex.json” file with extracted device information</li>
</ul>
<p>These options can be selected individually.
Please note that the reconstructed databases are not identical in content to the files that would be available in a full file system extraction. The databases are reconstructed using content provider queries and thus originate from an API that outputs the contents of the actual databases.
Reconstruction in Sqlite format serves to improve compatibility with various analysis tools that expect these files. Incidentally, Magnet Acquire also follows this approach.</p>
<p>In the future, an ADB backup will also be created here and integrated into the backup according to the original file paths.</p>
<br>
<p>The following image shows a PRFS backup that was imported via ALEAPP:<br>
(The parser for “device_info_alex.json” has already been adopted by the ALEAPP team and will be included in the next release.)</p>
<p align="center">
 <img src="/images/blog/alex_aleapp.png" alt="ALEAPP and ALEX" width="900">
</p>
<br>
<h2>Acquisition Options (Ubuntu Touch, AsteroidOS)</h2>
<p>The extraction options offered differ for the alternative operating systems <a href="https://www.ubuntu-touch.io/" target="_blank" rel="noopener noreferrer">Ubuntu Touch</a> (smartphones, tablets) and <a href="https://asteroidos.org/" target="_blank" rel="noopener noreferrer">AsteroidOS</a> (smartwatches).</p>
<p align="center">
 <img src="/images/blog/alex_ut.png" alt="Alex Acquisition Menu (UT)" width="900">
</p>
<h3>Pull “Home”</h3>
<p>In classic Linux systems, user data is mainly located in the “Home” directory. Therefore, the home directory is extracted instead of “sdcard” for these devices.</p>
<h3>Physical Acquisition</h3>
<p>Both Ubuntu Touch and AsteroidOS allow you to log in as the “root” user. This user has access to the block devices and can therefore initiate a bit-by-bit copy of the data storage.
With Ubuntu Touch, the “sudo” password is required for this type of backup. This is usually the device's lock code. By default, the memory of these systems is unencrypted.</p>

<p>I am currently not aware of any other software that offers extraction options for Ubuntu Touch.</p>
<br>
<h2>Logging Options</h2>
<p align="center">
<img src="/images/blog/alex_logging.png" alt="Alex Logging Menu" width="900">
</p>
<p>These options are available for Android, WearOS, and FireOS.<br>
More information about the individual logging systems (and other artifacts) can be found on <a href="https://blog.digital-forensics.it/2025/09/exploring-data-extraction-from-android.html" target="_blank" rel="noopener noreferrer">Mattia Epifani's blog</a>.</p>
<br>
<h2>Advanced Options</h2>
<p align="center">
<img src="/images/blog/alex_adv.png" alt="Alex Advanced Menu" width="900">
</p>
<h3>Take Screenshots</h3>
<p>As the name suggests, this option allows you to capture the current screen content of the device as a screenshot. In addition to the actual image in PNG format, a text file containing the hash (Sha256) of the PNG is created.
A PDF is also generated, which outputs some device information in addition to the screenshot.</p>
<p>The procedure for creating the screenshot also depends on the connected system. On current Android systems, the image is output directly via ADB. Older systems (e.g., Android 6) require the creation of a temporary image file on the device.
The situation is similar with AsteroidOS. Ubuntu Touch currently poses the greatest difficulties in terms of screenshots - on older systems, the framebuffer can be accessed to output content from apps (not the entire screen).
I will invest a little time here to create reliable screenshots without installing additional software. Until then, screenshots can also be taken on the device using the buttons <em>loud</em> and <em>quiet</em>.</p>

<h3>Chat Capture</h3>
<p>The screenshot function has been expanded to include the option of automatically capturing entire chats. Between individual captures, swipe movements are simulated, which are performed from the center upwards or downwards, depending on the selected capture direction.
This shifts the current view by half the screen content. Other starting points could be selected to allow larger jumps (i.e., an entire screen content). However, the approach of swiping from the center worked most reliably in the apps tested so far.
This feature is currently available for Android, WearOS, and FireOS.</p>
<h3>Query Content Providers</h3>
<p>For this feature, I drew heavily on Mattia Epifani's <a href="https://github.com/RealityNet/android_triage" target="_blank" rel="noopener noreferrer">android_triage</a>.<br>
His script already lists numerous queries. I only added a few more. I also moved the queries to a JSON file. This allows you to experiment with new queries as you wish without having to make changes to ALEX's code.</p>
<p>Users can also choose whether the information should be output in text format (as returned by the console) or as JSON.</p>

<p>Some examples of possible content:</p>
<ul>
<li>SMS</li>
<li>MMS</li>
<li>Call log</li>
<li>Contact list</li>
<li>Calendar entries</li>
<li>Device settings</li>
<li>Media information (with timestamps)</li>
</ul>
<p>ALEX is currently attempting to establish a connection with the first device in the “devices” list. This allows a connection to be established via WiFi, after which ALEX can be used for extraction.
I think it will also be possible in the future to establish a WiFi connection directly via the ALEX interface.</p>
<p>There are definitely enough ideas for new features. Nevertheless, I am always happy to receive suggestions and success stories!</p>
]]></content:encoded>
    </item>
    <item>
      <title>What&amp;apos;s Taters, Precious?  - Parsing Potato Chat with iLEAPP</title>
      <link>https://cp-df.com/en/blog/potato.html</link>
      <guid>https://cp-df.com/en/blog/potato.html</guid>
      <source url="https://cp-df.com/en/rss.xml">What&amp;apos;s Taters, Precious?  - Parsing Potato Chat with iLEAPP</source>
      <description>What&amp;apos;s Taters, Precious?  - Parsing Potato Chat with iLEAPP</description>
      <pubDate>Thu, 21 Aug 2025 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[
<p align="center">
<img src="/images/blog/potatoleapp.png" alt="iLEAPP and Potato" width="800">
</p>
<p>I was recently made aware of an iOS chat application called “Potato Chat,” for which no tool offered processing at the time (the app is now supported by several commercial providers).</p>
<p>In any case, my interest was piqued, and I installed the app on my iPhone 7 Plus test device, as I was able to jailbreak it and thus create a full file system backup without commercial tools.</p>
<p>Bruno Fischer, who is also a contributor to LEAPPs, helped me create test data. He will work on the Android version of the app and provide an ALEAPP parser in due course.</p>
<!-- more -->
<p>Through online research, I discovered that investigations into this app had already been conducted. DFIR examiner Forrest Cook (Whee30) has already addressed the app in two blog posts:</p>
<p><a href="https://forrestcook.net/2025/04/04/potato-chat/" target="_blank" rel="noopener noreferrer">forrestcook.net - Potato Chat</a><br>
<a href="https://forrestcook.net/2025/04/16/potato-chat-2-starchy-boogaloo-%F0%9F%A5%94%F0%9F%92%AC/" target="_blank" rel="noopener noreferrer">forrestcook.net - Potato Chat 2, starchy boogaloo 🥔💬</a></p>
<p>He also provides his own Python scripts for processing binary blobs on Github:</p>
<p><a href="https://github.com/Whee30/AppParsers/tree/main/Potato" target="_blank" rel="noopener noreferrer">Whee30 - App Parsers - Potato</a></p>
<p>His work helped me immensely in understanding the references created by the app, and when preparing group chats, I was able to use parts of his code with slight adjustments for interpreting blobs.</p>
<p>More on that later.</p>
<br>
<h2>Potato Chat</h2>
<p>On iOS, the app can be conveniently downloaded from the App Store (Adam ID 1204726898). The Android version is not available in the Play Store – here, the APK file must be downloaded from the developer's website and installed manually.</p>
<p>The main features of the app include:</p>
<ul>
<li>User-to-user chats</li>
<li>“Secret chats” that are not synchronized with the web service</li>
<li>Group chats</li>
<li>Calls (within chats)</li>
</ul>
<p>In addition, other features are offered, but these are not the focus of the current investigation:</p>
<ul>
<li>Sending and requesting payments</li>
<li>Installation and use of additional apps and games via an internal app store</li>
</ul>
<br>
<h2>Data acquisition</h2>
<p>I first collected some app information directly from the device. This allowed me to trace the bundle ID “org.potatochat.PotatoEnterprise” via the UFADE report. It was also apparent that the “Documents” directory was not shared with the user.</p>
<p>More detailed information could be obtained directly via Pymobiledevice3:</p>
<p>python3
pymobiledevice3 apps query org.potatochat.PotatoEnterprise</p>
<p>Output (abridged):</p>
<div class="language-json line-numbers-mode" data-highlighter="prismjs" data-ext="json"><pre><code class="language-json"><span class="line"><span class="token property">"CFBundleDisplayName"</span><span class="token operator">:</span> <span class="token string">"Potato"</span><span class="token punctuation">,</span></span>
<span class="line"><span class="token property">"CFBundleShortVersionString"</span><span class="token operator">:</span> <span class="token string">"2.47.207050"</span><span class="token punctuation">,</span></span>
<span class="line"><span class="token property">"CFBundleURLName"</span><span class="token operator">:</span> <span class="token string">"org.telegram.TelegramHD"</span><span class="token punctuation">,</span></span>
<span class="line"><span class="token property">"Container"</span><span class="token operator">:</span> <span class="token string">"/private/var/mobile/Containers/Data/Application/C701A36E-63F1-4F6C-B579-59EB3AB2B9D2"</span></span>
<span class="line"><span class="token property">"GroupContainers"</span><span class="token operator">:</span> </span>
<span class="line"><span class="token punctuation">{</span><span class="token property">"group..ph.potatochat.Potato"</span><span class="token operator">:</span> <span class="token string">"/private/var/mobile/Containers/Shared/AppGroup/7CF11843-0DC7-461A-84C2-7F33310EAEB0"</span><span class="token punctuation">,</span></span>
<span class="line"><span class="token property">"group.org.potatochat.PotatoEnterprise"</span><span class="token operator">:</span> <span class="token string">"/private/var/mobile/Containers/Shared/AppGroup/D2734A7E-41BD-4DDD-801E-C5623C27A927"</span></span>
<span class="line"><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
<span class="line"></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The practical aspect of this approach is that the relevant app directories are output directly, eliminating the need to search the backup for the appropriate app GUID. I plan to provide this information via a UFADE app report in the future.</p>
<p>The actual user data was found in the directory: /private/var/mobile/Containers/Shared/AppGroup/D2734A7E-41BD-4DDD-801E-C5623C27A927.</p>
<p>All data considered by the created parser is located here in the Documents subdirectory. This is only included in a complete file system image. There is also a Caches directory, which apparently contains pairs of image data and an associated thumbnail. These files were also found in a PRFS backup. The relationship between the images and the app will also be discussed later.</p>
<br>
<h2>Locations</h2>
<p>In Forrest Cook's blog articles, the naming of files and their storage locations has already been discussed extensively.<br>
Therefore, here is just a summarized overview of the locations within the <code>Documents</code> directory:</p>
<p>| Artifact  | Location |
|</p>
]]></content:encoded>
    </item>
    <item>
      <title>Building the &amp;quot;UFADE Touch&amp;quot; V1</title>
      <link>https://cp-df.com/en/blog/ufade_touch.html</link>
      <guid>https://cp-df.com/en/blog/ufade_touch.html</guid>
      <source url="https://cp-df.com/en/rss.xml">Building the &amp;quot;UFADE Touch&amp;quot; V1</source>
      <description>A short build report for my Raspberry Pi backup system.</description>
      <pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[
<p align="center">
 <img src="/images/blog/ufade_touch.png" alt="UFADE Touch" width="800">
</p>
<p>Since there is some interest in the community for instructions on how to build my “UFADE Touch” acquisition system, I am providing a short construction report and tips for initial setup here.</p>
<h2>Components</h2>
<p>I aimed to build a system as affordably as possible.<br>
My first version of a portable backup device is therefore not based on the current Raspberry Pi 5 but instead on the cheaper fourth-generation model with 4GB of RAM. I also considered that the 4B has lower power consumption than the Pi 5.</p>
<p>A touchscreen was essential so that backups could be performed without a mouse and keyboard during everyday use. I specifically wanted a display with an DSI interface to keep the four USB ports of the Raspberry Pi free for data sources and destination drives. Most inexpensive displays only offer HDMI and USB connections.</p>
<p>The cheapest display that met my criteria was available from a large international online retailer.<br>
The product name: "7inch Capacitive Touch IPS Display for Raspberry Pi, with Protection Case, 1024×600, DSI Interface".</p>
<p>Advantages in my view:</p>
<ul>
<li>7 inches is pleasantly compact</li>
<li>The low resolution of 1024x600 (saves resources)</li>
<li>DSI connection for display and touch</li>
<li>Case included</li>
<li>Power passthrough for fan</li>
</ul>
<p>To ensure longevity and stable performance, I opted for active cooling. I chose the "GeeekPi Ultra Thin ICE Tower Cooler". Besides being relatively quiet for its size, it offers a lot of surface area due to its slim fin design.</p>
<p>The operating system is installed on a 64GB SanDisk UHS-1 microSD card. That’s more than enough for a lean system and some essential tools. Backups are intended to be stored on external drives anyway.</p>
<p>Component summary (German retail prices as of July 2025):</p>
<p>| Component | Price |
|</p>
]]></content:encoded>
    </item>
  </channel>
</rss>