<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>kreee00&apos;s almanac</title><description>A personal blog by Mohamad Akram, exploring cybersecurity, tech insights, digital transformation, and reflections on life, politics, and learning.</description><link>https://kreee00-almanac.pages.dev</link><item><title>TCP1P CTF 2024 - Writeup</title><link>https://kreee00-almanac.pages.dev/posts/tcp1pctf-2024-writeup</link><guid isPermaLink="true">https://kreee00-almanac.pages.dev/posts/tcp1pctf-2024-writeup</guid><pubDate>Fri, 20 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Night Live at Indonesian&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Oeman is a nightlife maniac tourist in 2007 - 2010, he came back to Indonesia to enjoy the nightlife but the place was closed, what was the name of the place? And who was the person who closed the place?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We were given 5 images of unidentified nightclub(s) and a text file with a link to a Facebook account. The link was https://www.facebook.com/stacy.putri?mibextid=LQQJ4d . I go through the account and most of the pictures are about the nightclub. I can&apos;t find any clue.&lt;/p&gt;
&lt;p&gt;Each images have watermark of &quot;indonesiaclubbing.com&quot;. Went to the link and can&apos;t find any clue as well. At the end I took this image below&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image.png&quot; alt=&quot;nightclub&quot; /&gt;&lt;/p&gt;
&lt;p&gt;and search using Yandex Image Search. I found this article about closure of a nightclub. It mentioned the name of politician that asked for the closure so I search him up on Wikipedia and finally got the flag&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TCP1P{Basuki Tjahaja Purnama, 29 June 1966}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;The Investigator&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Help Jieyab found the newspaper. When was this newspaper published?&lt;/p&gt;
&lt;p&gt;The flag name is date TCP1P{Date Month Year}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;image-1.jpg&quot; alt=&quot;old-paper&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Upon the success of previous challenge, I tried to use Yandex Image Search again but to no avail. Google Image Search also doesn&apos;t show any similar images. I realised that the newspaper is in Dutch language. So I ran a google search &quot;dutch newspaper archive&quot; then came across these two links below&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;https://libguides.ru.nl/news/delpher&lt;/li&gt;
&lt;li&gt;https://www.delpher.nl/&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The second link I need to use VPN to access. Then I just search the newspaper&apos;s main title &quot;Links Frankrijk wil rechtse pers breken&quot; and the original uncropped &lt;a href=&quot;https://www.delpher.nl/nl/kranten/view?query=Links+Frankrijk+wil+rechtse+pers+breken&amp;amp;coll=ddd&amp;amp;identifier=ddd:011205843:mpeg21:a0736&amp;amp;resultsidentifier=ddd:011205843:mpeg21:a0736&amp;amp;rowid=1&quot;&gt;article&lt;/a&gt; came up.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-2.jpg&quot; alt=&quot;old-paper-2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see on left top there&apos;s the published date for the newspaper.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TCP1P{17 December 1983}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;The Pentagon&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;A few days ago, I saw a funny post on a social media platform.&lt;/p&gt;
&lt;p&gt;As far as I remember, there are five accounts that frequently post funny and random content.&lt;/p&gt;
&lt;p&gt;I only remember two names: Udin Kurniawan Jaeger and Paijo Abdul Uchiha.&lt;/p&gt;
&lt;p&gt;I recall that one of them uses a fake account. The humor in his posts is quite random, and I like it.&lt;/p&gt;
&lt;p&gt;I want to know the real name of the person using that second account because I want to connect with him on his main account.&lt;/p&gt;
&lt;p&gt;Please help me find his full real name.&lt;/p&gt;
&lt;p&gt;The flag is the full name&lt;/p&gt;
&lt;p&gt;Example: TCP1P{Kresna Yang Asli}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First thing I did, i google-ed both names given, &quot;Udin Kurniawan Jaeger&quot; and &quot;Paijo Abdul Uchiha&quot;. Both showed a Reddit account but unfortunately both are suspended or deleted. So I use sherlock on both usernames &lt;code&gt;sherlock ud1nwanj4eger paij0uch1h4&lt;/code&gt;. Turns out they got 9gag account. I went through ud1nwanj4eger&apos;s posts and stumbled upon ths one particular post with 14 comments&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-3.png&quot; alt=&quot;ud1nwanj4eger&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I went through each comment and found a clue&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-4.png&quot; alt=&quot;comment&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At first I thought it was another 9gag posting so I go to this url https://9gag.com/u/DAJjWLRzVpw. But nothing came up. Then when I re-read the comment it says &quot;that app with the photo logo&quot;, Instagram came to my mind. Thus, I just change the link to https://www.instagram.com/p/DAJjWLRzVpw/. It works! At the account bio it got mentioned &quot;Second Account&quot; which mentioned in challenge question. There&apos;s a link that direct you to a Discord channel. In the channel there&apos;s a bot with the same username, but when i try to chat it replied with&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-5.png&quot; alt=&quot;discord&quot; /&gt;&lt;/p&gt;
&lt;p&gt;... Then I watch each posts on the Instagram account. One of the video, the audio sound distorted. I save the audio and play it using Audacity. Tried to play it at x0.5 but still sound like nonsense. So i try to reverse...and voila. The audio provide me with a password &lt;code&gt;tcp1p_th3p3nt490n_1s4w3s0m3&lt;/code&gt; , i send to the chat with the bot and finally&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-6.png&quot; alt=&quot;discord2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I opened the link and found the flag!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TCP1P{Slamet Setiawan Uzumaki}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Journalist&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Oh no, help Jieyab to Found this video&amp;gt;
Link vidio : &lt;a href=&quot;https://drive.google.com/file/d/18zOX75x9gjITueQmwv0Bl9iffdQSYi5A/view?usp=sharing&quot;&gt;https://drive.google.com/file/d/18zOX75x9gjITueQmwv0Bl9iffdQSYi5A/view?usp=sharing&lt;/a&gt;
Hint : Flag is time or date the video was uploaded
*Pro tips
Convert your time in WIB ( UTC+7) on the date metadata&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I randomly screenshot one of the scene in the video and search using Google Image Search&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-7.jpg&quot; alt=&quot;shifa-hospital-gaza&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Found out the place is Shifa Hospital in Gaza City. So I open YouTube and type in this &quot;shifa hospital gaza city jazeera&quot;. Watched all related videos to find the one that have the same reporter as the one in challenge video provided. Finally found the exact video &amp;gt;&amp;gt; https://www.youtube.com/watch?v=9dxQSvkow7Q&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TCP1P{2 Apr 2024}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>Akram Faisal</author></item><item><title>Curtin CTF 2024 - Writeup</title><link>https://kreee00-almanac.pages.dev/posts/curtin-ctf-2024</link><guid isPermaLink="true">https://kreee00-almanac.pages.dev/posts/curtin-ctf-2024</guid><pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Car on Fire Part 1&lt;/h2&gt;
&lt;p&gt;Screenshot the video and do a quick google image search. Found the article and the name of owner&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CURTIN_CTF{Michael_Morris}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Crash at the Airdrome Part 1&lt;/h2&gt;
&lt;p&gt;Do a quick google image search. Found article and wikipedia. &amp;gt;&amp;gt; https://en.wikipedia.org/wiki/Lion_Air_Flight_904&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CURTIN_CTF{CFM56-7B24E_19-02-2013}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Crash at the Airdrome Part 2&lt;/h2&gt;
&lt;p&gt;Search google &quot;boeing 737-800 first flight&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CURTIN_CTF{31_07_1997}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Crash at the Airdrome Part 3&lt;/h2&gt;
&lt;p&gt;Did a LOT of research and digging. The distance at first I got it wrong but thankfully found the correct answer from this link &amp;gt;&amp;gt; https://airport.globefeed.com/Distance_Between_Airports_Result.asp?from=DPS&amp;amp;to=BDO . The name of PIC is just a basic Google Search. and Lastly the part number of Terrain Awareness and Alerting System PK-LKS Boeing 737-800 i got it from this accident report &amp;gt;&amp;gt; https://asn.flightsafety.org/reports/2013/20130413_B738_PK-LKS.pdf .&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CURTIN_CTF{861_Mahlup_Gozali_965-1690-055}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>Akram Faisal</author></item><item><title>picoCTF: Hidden in Plainsight Writeup</title><link>https://kreee00-almanac.pages.dev/posts/picoctf-hidden-in-plainsight-writeup</link><guid isPermaLink="true">https://kreee00-almanac.pages.dev/posts/picoctf-hidden-in-plainsight-writeup</guid><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Hidden in plainsight&lt;/h1&gt;
&lt;p&gt;:::penguin_oldmoney
This is an easy forensics challenge. The clue is to discover &quot;hidden&quot; payload and &quot;extract&quot; the flag.&lt;/p&gt;
&lt;p&gt;Whenever I got an image in a forensics challenge, first step is to use exiftool. The image given is named img.jpg. I downloaded the image to my local linux machine.
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exiftool img.jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Below is the result of the command.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;…/forensics/hidden-in-plainsights ❯ exiftool img.jpg
ExifTool Version Number         : 13.36
File Name                       : img.jpg
Directory                       : .
File Size                       : 73 kB
File Modification Date/Time     : 2025:10:27 20:54:44+08:00
File Access Date/Time           : 2025:10:27 20:59:18+08:00
File Inode Change Date/Time     : 2025:10:27 20:55:25+08:00
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Comment                         : c3RlZ2hpZGU6Y0VGNmVuZHZjbVE9
Image Width                     : 640
Image Height                    : 640
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 640x640
Megapixels                      : 0.410
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see in the comment, there&apos;s a weird looking string. I would assume it is a base64 encoded string. So I try to decode the string using below command.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;c3RlZ2hpZGU6Y0VGNmVuZHZjbVE9&quot; | base64 --decode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output = &lt;code&gt;steghide:cEF6endvcmQ=&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s another clue given there, &lt;code&gt;steghide&lt;/code&gt;, that means we need to use steghide tool to solve this challenge, but first let&apos;s decode the base64 string given. I would assume that&apos;s the password to be used with steghide.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;cEF6endvcmQ=&quot; | base64 --decode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output = &lt;code&gt;pAzzword&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now that we know what tool to use and the password, we can move on to the next step.&lt;/p&gt;
&lt;p&gt;:::tip
Run &lt;code&gt;steghide --help&lt;/code&gt; if you don&apos;t know what command and flags to use.
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;steghide --extract -sf img.jpg -p pAzzword
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output = &lt;code&gt;wrote extracted data to &quot;flag.txt&quot;.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I run &lt;code&gt;ls&lt;/code&gt; to list all available files inside my directory, and yes there&apos;s a new file created named &lt;code&gt;flag.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next just run &lt;code&gt;cat&lt;/code&gt; command to print the content of the text file&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat flag.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output = &lt;code&gt;picoCTF{h1dd3n_1n_1m4g3_1c55ccd0}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Voila!&lt;/em&gt;&lt;/p&gt;
</content:encoded><author>Akram Faisal</author></item><item><title>Automating the Unfixable: How I Tamed a Critical Polkitd Memory Leak</title><link>https://kreee00-almanac.pages.dev/posts/polkitd-memory-management</link><guid isPermaLink="true">https://kreee00-almanac.pages.dev/posts/polkitd-memory-management</guid><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the world of server maintenance, few things are as terrifying as opening htop and seeing red bars everywhere.&lt;/p&gt;
&lt;p&gt;Recently, I ran into a critical issue on one of our Virtual Private Servers (VPS). The server was becoming sluggish, and services were timing out. When I investigated, I found that a single process was eating up almost 100% of both our RAM and our Swap memory.&lt;/p&gt;
&lt;p&gt;The culprit? polkitd (The PolicyKit Daemon).&lt;/p&gt;
&lt;p&gt;This is the story of how I went from manual server restarts to engineering a fully automated, fail-safe memory management solution.&lt;/p&gt;
&lt;h2&gt;🚨 The Incident: When 4GB Isn&apos;t Enough&lt;/h2&gt;
&lt;p&gt;It started with a simple observation: the server was running out of breath.&lt;/p&gt;
&lt;p&gt;My first reaction was standard triage. I assumed we were simply under-provisioned or experiencing a temporary spike. I added an additional 4GB of Swap file (bringing the total memory cushion to 8GB) hoping that would give the server enough breathing room to stabilize.&lt;/p&gt;
&lt;p&gt;I restarted the service manually to flush the memory:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart polkitd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The memory usage dropped. The red bars in htop turned green. I thought the job was done.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./polkitd-htop.png&quot; alt=&quot;polkitd-htop&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But a few days later, the creep started again. It wasn&apos;t a sudden spike; it was a slow, consistent memory leak. The daemon was hoarding memory and refusing to let it go, eventually threatening to crash the entire node.&lt;/p&gt;
&lt;h2&gt;🕵️ The Investigation&lt;/h2&gt;
&lt;p&gt;As a Computer Science student and DevOps enthusiast, I knew that constantly restarting a service manually wasn&apos;t a &quot;solution&quot;—it was a chore. I needed to understand the why.&lt;/p&gt;
&lt;p&gt;I dove into the internet. I scoured forums, StackOverflow, and eventually landed on the official polkit source repository.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./github-discussion.png&quot; alt=&quot;github-discussion&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I wasn&apos;t alone. I found threads of other sysadmins complaining about the exact same behavior. When I asked in the community if there was a patch available, the answer was disheartening: &quot;Up until now, there is still no fix.&quot;&lt;/p&gt;
&lt;p&gt;I was at a crossroads. I couldn&apos;t fix the C code in polkitd overnight, and I couldn&apos;t wait for an upstream patch while my production server risked downtime.&lt;/p&gt;
&lt;h2&gt;🛠️ The Solution: If You Can&apos;t Fix It, Manage It&lt;/h2&gt;
&lt;p&gt;If I couldn&apos;t stop the leak, I had to contain it. I decided to build a &quot;governor&quot; for the process—an automated system that watches polkitd and restarts it gracefully before it becomes a problem.&lt;/p&gt;
&lt;p&gt;I designed a two-layer defense system.&lt;/p&gt;
&lt;h4&gt;Layer 1: The Smart Hook (EarlyOOM)&lt;/h4&gt;
&lt;p&gt;For the primary defense, I utilized earlyoom, a daemon usually used to kill processes when memory is critically low. However, I didn&apos;t want to wait until the server was crashing to take action.&lt;/p&gt;
&lt;p&gt;I wrote a custom Bash hook script that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifies the polkitd process ID.&lt;/li&gt;
&lt;li&gt;Reads the specific memory usage from /proc/[pid]/status.&lt;/li&gt;
&lt;li&gt;Calculates its consumption percentage against the total available RAM.&lt;/li&gt;
&lt;li&gt;Triggers a graceful systemctl restart if it exceeds a 12% threshold.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This ensures the service is refreshed without forcefully killing it, maintaining system stability.&lt;/p&gt;
&lt;h4&gt;Layer 2: The Fail-Safe (Systemd Resource Control)&lt;/h4&gt;
&lt;p&gt;Scripts can fail. Cron jobs can hang. As a DevOps engineer, you always need a backup plan. I needed a hard ceiling that the operating system would enforce, regardless of whether my script was running.&lt;/p&gt;
&lt;p&gt;I used systemd&apos;s built-in resource control to set a hard limit on the service. I applied this using the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl set-property polkit.service MemoryMax=1500M
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command modifies the service unit configuration on the fly. Now, if my hook script fails to catch the leak and &lt;code&gt;polkitd&lt;/code&gt; balloons past 1.5GB, &lt;code&gt;systemd&lt;/code&gt; will step in and throttle or restart the process to save the rest of the system (and my Docker containers) from crashing.&lt;/p&gt;
&lt;h4&gt;🚀 The Result&lt;/h4&gt;
&lt;p&gt;I deployed the solution on a Monday. Since then, I haven&apos;t had to SSH into the server to clear memory once.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Before: Daily manual checks, fear of crashes, 100% swap usage.&lt;/li&gt;
&lt;li&gt;After: The hook script runs silently in the background, keeping polkitd lean, and the server metrics are stable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I packaged this entire solution, including the detection logic, the hook scripts, and the installation steps—into an open-source tool so others facing this specific bug can implement a fix in minutes.&lt;/p&gt;
&lt;p&gt;Check out the repo here:
👉 &lt;a href=&quot;github.com/kreee00/polkitd-memory-manager&quot;&gt;github.com/kreee00/polkitd-memory-manager&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🧠 Lessons Learned&lt;/p&gt;
&lt;p&gt;This project reinforced a few key DevOps philosophies for me:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Don&apos;t wait for upstream: Sometimes the &quot;official fix&quot; is months away. You have to build the bridge yourself.&lt;/li&gt;
&lt;li&gt;Observability is key: Without tools like htop and understanding how to read /proc files, I would have just kept buying more RAM.&lt;/li&gt;
&lt;li&gt;Automation &amp;gt; Manual Intervention: If you have to do it twice, script it. If it keeps breaking, automate the fix.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dealing with memory leaks is never fun, but turning a system instability into a reliable, automated, &quot;set-it-and-forget-it&quot; solution was a massive win.&lt;/p&gt;
&lt;p&gt;Thanks for reading my blog post :)&lt;/p&gt;
</content:encoded><author>Akram Faisal</author></item><item><title>My No-Nonsense Guide to Setting Up SEEDLab Ubuntu on VMWare (Because VirtualBox is Cramping My Style)</title><link>https://kreee00-almanac.pages.dev/posts/seedubuntu-lab-installation</link><guid isPermaLink="true">https://kreee00-almanac.pages.dev/posts/seedubuntu-lab-installation</guid><pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;First I just want to explain WTH is SEED Lab. Based on its &lt;a href=&quot;https://seedsecuritylabs.org/index.html&quot;&gt;website&lt;/a&gt;, Seed Lab is a Hands-on Labs for Security Education.&lt;/p&gt;
&lt;p&gt;Started in 2002, funded by a total of 1.3 million dollars from NSF, and now used by 1180 institutes worldwide, the SEED project&apos;s objectives are to develop hands-on laboratory exercises (called SEED labs) for cybersecurity education, and to help instructors adopt these labs in their curricula.&lt;/p&gt;
&lt;p&gt;:::tip
If your university or course requires specific labs, the SEED website has a massive list of them, from software security to crypto and network attacks. This VM is your all-in-one playground for those.
:::&lt;/p&gt;
&lt;p&gt;There is a page on their website which helps students setup the lab on VirtualBox. But on my machine I already have VMWare installed, and I don&apos;t want to have multiple VM Software cluttering up my system. To addon, the file provided by SEEDLab is in &lt;code&gt;.vmdk&lt;/code&gt; format which is native to VMWare. TBH I don&apos;t get why they don&apos;t just use VMWare instead of VirtualBox but whatever right? (Maybe it&apos;s a licensing thing, but the &lt;code&gt;.vmdk&lt;/code&gt; file is a huge hint for us VMWare users).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important Note:&lt;/strong&gt; This guide uses VMWare Workstation Pro, but the steps are almost identical for VMWare Player (the free version). If you&apos;re using Player, just look for the &quot;Create a New Virtual Machine&quot; option, it&apos;s the same.&lt;/p&gt;
&lt;p&gt;In this blog I won&apos;t be teaching how to install VirtualBox or VMWare, that is up to you to find the tutorials on YouTube or whatnot, believe me, there&apos;s a lot of them. (Pro tip: search &quot;install VMWare Workstation 17&quot; or whatever version you have).&lt;/p&gt;
&lt;p&gt;Okay moving on.&lt;/p&gt;
&lt;h2&gt;Downloading the Pre-built Virtual Machine Images&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;image.png&quot; alt=&quot;lab-env-setup-page1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see from the screenshot above, there are several links which you can download from. Just choose whichever you like most 🤷🏻‍♂️. Sometimes one mirror might be slower depending on your location. But for me, the DigitalOcean link worked fast and reliable so I will paste the link below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://seed.nyc3.cdn.digitaloceanspaces.com/SEEDUbuntu-16.04-32bit.zip&quot;&gt;DigitalOcean Download Link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Storage Check:&lt;/strong&gt; The download is about 2.6 GB, so make sure you have enough space and a decent internet connection. Go grab a coffee or a snack.&lt;/p&gt;
&lt;p&gt;After downloaded just extract the zip file and you will get a list of files like in image below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;extracted-files-from-seedubuntu-zip&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Okay done with 1st step. Good Job! Now let&apos;s move on to setting up on your VMWare hehehehehe 😈&lt;/p&gt;
&lt;h2&gt;Setup Pre-built Image in VMWare Workstation&lt;/h2&gt;
&lt;p&gt;Just for your information my VMWare version are as below. Don&apos;t worry if yours is slightly different (like 17.x or 16.x), the process is nearly identical.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Product: VMware® Workstation Pro 25H2
Version: 25.0.0.24995812
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Okay, first fire up your VMWare.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-2.png&quot; alt=&quot;vmware1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click on &lt;code&gt;Create a New Virtual Machine&lt;/code&gt; and you will be greeted with the windows as below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Choose &lt;code&gt;Custom (advanced)&lt;/code&gt;. This gives us more control, and it&apos;s actually simpler for importing an existing disk. Click next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This screen is about hardware compatibility. Just leave it as the default (usually the latest version your VMWare supports). This ensures best performance. Click on next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Very Important Step:&lt;/strong&gt; Choose &lt;code&gt;I will install the operating system later&lt;/code&gt;. If you choose the other option, VMWare might try to create a &lt;em&gt;new&lt;/em&gt; blank disk, which is not what we want. We already have the OS on the &lt;code&gt;.vmdk&lt;/code&gt; file. Click next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-6.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For Operating System choose &lt;code&gt;Linux&lt;/code&gt; and Version choose &lt;code&gt;Ubuntu&lt;/code&gt;. &lt;strong&gt;Make sure to choose the 32-bit version&lt;/strong&gt; because our pre-built SEEDUbuntu image is 32-bit (even though it says 16.04). Don&apos;t choose &quot;Ubuntu 64-bit&quot;. Go to next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-7.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This one it just ask you to name your Virtual Machine. The name is up to you but for my one I will just put &lt;code&gt;SEEDUbuntu&lt;/code&gt;. Then for the Location, it is basically asking for a directory where VMWare will save all the VM Files.&lt;/p&gt;
&lt;p&gt;:::tip
I just choose the folder which I extracted the zip file earlier cause I don&apos;t want to make it messy and all over the place. This keeps everything self-contained. When done with the course I can just delete the entire folder and it&apos;s all gone, no leftover files scattered around. Hashahahhahah. Go next.
:::&lt;/p&gt;
&lt;p&gt;Starting below just follow the recommended suggestion. You can click &quot;Next&quot; through these pretty quickly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-8.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For virtual RAM Memory based on website it says that 2GB (2048MB) is enough but I have extra RAM in my laptop so why not LOL. If you&apos;re tight on RAM, 2048MB is perfectly fine. If you can spare it, 4096MB (4GB) will make things snappier.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-9.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-10.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-11.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-12.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-13.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Critical Step:&lt;/strong&gt; For above, choose &lt;code&gt;Use an existing virtual disk&lt;/code&gt;. This is where we tell VMWare, &quot;Hey, don&apos;t make a new one, use the SEEDLab disk I already have.&quot; Click next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-14.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click &lt;code&gt;Browse&lt;/code&gt; and go to the folder which you extracted the zip file earlier.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-15.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Choose the file named &lt;code&gt;SEEDUbuntu-16.04-32bit.vmdk&lt;/code&gt; with the type of &lt;code&gt;VMWare virtual disk&lt;/code&gt; and click &lt;code&gt;Open&lt;/code&gt;. &lt;strong&gt;Double-check you&apos;re selecting the .vmdk file, not the .vmx or .vmsd.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-16.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once you confirmed it&apos;s the correct file, click on next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-17.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Just choose &lt;code&gt;Keep Existing Format&lt;/code&gt;. There&apos;s no need to convert it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-18.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If satisfied, click on &lt;code&gt;Finish&lt;/code&gt;. Don&apos;t worry about the summary details too much.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-19.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sometimes this page will pop-up, just close it, not important. It&apos;s just VMWare&apos;s info page.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-20.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If you see this that means your Virtual Machine is setup correctly, just click on &lt;code&gt;Start up this guest operating system&lt;/code&gt;...&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-21.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;...and Voila! The VM should boot up into a login screen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Login Credentials (SAVE THIS!):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Username:&lt;/strong&gt; &lt;code&gt;seed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password:&lt;/strong&gt; &lt;code&gt;dees&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One last step is to install the VMWare Tools (well, the open-source version) and you are ready to rock this course! This step is crucial for things like copying/pasting between your host machine and the VM, better screen resolution, and shared folders.&lt;/p&gt;
&lt;p&gt;Open a terminal. You can find it in the applications menu or just press &lt;code&gt;Ctrl+Alt+T&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Type below command inside the Terminal and Enter. This updates the package list and installs the open-vm-tools package, then reboots to make sure everything is activated.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install open-vm-tools
sudo reboot now
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After the reboot, you&apos;re all set! The VM will automatically log in with the &lt;code&gt;seed&lt;/code&gt; user. Now you can start exploring the labs on the Desktop or follow your course material.&lt;/p&gt;
&lt;p&gt;Done!&lt;/p&gt;
</content:encoded><author>Akram Faisal</author></item></channel></rss>