<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: shiahalan</title>
    <description>The latest articles on DEV Community by shiahalan (@shiahalan).</description>
    <link>https://dev.to/shiahalan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F841264%2F4d43279b-04af-4140-9333-e4ef4fe0272b.png</url>
      <title>DEV Community: shiahalan</title>
      <link>https://dev.to/shiahalan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shiahalan"/>
    <language>en</language>
    <item>
      <title>TaskTimer</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Wed, 04 Mar 2026 23:52:07 +0000</pubDate>
      <link>https://dev.to/shiahalan/tasktimer-3c9m</link>
      <guid>https://dev.to/shiahalan/tasktimer-3c9m</guid>
      <description>&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;p&gt;I’m currently building TaskTimer, a lightweight and minimal task timer web app (with a mobile version coming soon) designed to help users track daily tasks alongside dedicated focus timers.&lt;/p&gt;

&lt;p&gt;The concept is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a task&lt;/li&gt;
&lt;li&gt;Set a duration&lt;/li&gt;
&lt;li&gt;Start&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check out the early version here: &lt;a href="https://tasktimerapp.com/" rel="noopener noreferrer"&gt;https://tasktimerapp.com&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why I'm Building It
&lt;/h1&gt;

&lt;p&gt;I wanted something minimal.&lt;/p&gt;

&lt;p&gt;Most productivity apps feel bloated, overly complex, or distracting. That's why I decided to build a simple task timer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;⚠️ This app is currently under active development.&lt;br&gt;
Features, design, and functionality are still evolving.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>website</category>
      <category>mobile</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>MacroPilot: Piloting Tasks with Automated Macros</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Sat, 15 Jun 2024 06:37:03 +0000</pubDate>
      <link>https://dev.to/shiahalan/macropilot-piloting-tasks-with-automated-macros-24m4</link>
      <guid>https://dev.to/shiahalan/macropilot-piloting-tasks-with-automated-macros-24m4</guid>
      <description>&lt;h1&gt;
  
  
  MacroPilot: Piloting Tasks with Automated Macros
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fgithub%2Fv%2Frelease%2Fshiahalan%2FMacroPilot" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fgithub%2Fv%2Frelease%2Fshiahalan%2FMacroPilot" alt="Release"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshiahalan%2FMacroPilot%2Fassets%2F102575877%2F69e16844-9785-4efe-9265-44e2bdae06bc" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshiahalan%2FMacroPilot%2Fassets%2F102575877%2F69e16844-9785-4efe-9265-44e2bdae06bc"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshiahalan%2FMacroPilot%2Fassets%2F102575877%2F5235a4f9-1e1c-40bd-a359-d98cc811b697" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshiahalan%2FMacroPilot%2Fassets%2F102575877%2F5235a4f9-1e1c-40bd-a359-d98cc811b697"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;




&lt;p&gt;MacroPilot is an open-source software solution designed to streamline task management and enhance productivity through automated macros. With MacroPilot, users can automate repetitive tasks, freeing up valuable time.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://sourceforge.net/projects/macropilot/files/latest/download" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fa.fsdn.com%2Fcon%2Fapp%2Fsf-download-button" alt="Download MacroPilot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Forge Downloads&lt;/strong&gt;: &lt;a href="https://sourceforge.net/projects/macropilot/files/latest/download" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fsourceforge%2Fdt%2Fmacropilot.svg" alt="Download MacroPilot"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Features:
&lt;/h3&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auto Clicker&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customize Click Speed&lt;/strong&gt;: Adjust the speed of clicks to match your requirements by adjusting the interval between clicks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infinite Loop or Set Number of Clicks&lt;/strong&gt;: Choose between clicking indefinitely (until stopped) or specifying a precise number of clicks to execute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Left and Right Clicks&lt;/strong&gt;: Perform both left or right clicks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single or Double Clicks&lt;/strong&gt;: Execute single clicks or double clicks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Hotkey&lt;/strong&gt;: Customize a hotkey to trigger the auto-clicking function (default F9).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Planned Features:
&lt;/h3&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Auto Keyboard Clicker&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automate keyboard inputs with precision and reliability, further streamlining your workflow and reducing manual intervention.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Input Recorder&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Record mouse and keyboard inputs effortlessly, with intervals between inputs intelligently saved for accurate playback.&lt;/li&gt;
&lt;li&gt;Capture complex sequences of actions with ease, empowering users to automate intricate tasks effortlessly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Custom Keybind Macro&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create custom keybind macros to execute a series of actions with a single keystroke, optimizing efficiency and productivity.&lt;/li&gt;
&lt;li&gt;Tailor macros to your unique workflow requirements, unlocking a new level of automation and convenience.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  User Instruction Manual:
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshiahalan%2FMacroPilot%2Fassets%2F102575877%2F850215c6-fa24-4950-9f75-8277068b2578" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshiahalan%2FMacroPilot%2Fassets%2F102575877%2F850215c6-fa24-4950-9f75-8277068b2578"&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;h3&gt;
  
  
  Disclaimer:
&lt;/h3&gt;




&lt;p&gt;By using "MacroPilot," you acknowledge and agree that the software is provided for legitimate and ethical purposes only. While MacroPilot aims to simplify task management and improve productivity, it is essential to use it responsibly and in accordance with applicable laws and regulations. The creator of MacroPilot shall not be held liable for any misuse of the software, including but not limited to using automated macros for cheating, unethical behavior, or any other unlawful activities. Users are solely responsible for ensuring that their use of MacroPilot complies with all relevant laws and ethical standards.&lt;/p&gt;



&lt;h3&gt;
  
  
  Security Note:
&lt;/h3&gt;




&lt;p&gt;The creator of MacroPilot is not responsible for any unauthorized access or misuse of the software resulting from hacking or security breaches. While efforts are made to maintain the security and integrity of MacroPilot, users should take appropriate precautions to protect their data and systems from potential vulnerabilities. Use of MacroPilot is at the user's own risk, and users are encouraged to implement additional security measures as needed to safeguard their information and privacy.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>programming</category>
      <category>coding</category>
      <category>software</category>
    </item>
    <item>
      <title>Redeemer | HackTheBox Write-up</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Wed, 24 Jan 2024 13:18:08 +0000</pubDate>
      <link>https://dev.to/shiahalan/meow-hackthebox-write-up-46c5</link>
      <guid>https://dev.to/shiahalan/meow-hackthebox-write-up-46c5</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;This is a basic box that mainly has us interact with a Redis database. We use basic enumeration tools such as nmap to find the only open port hosting the Redis service. We then use redis-cli to connect to the database and find a key containing the contents of the flag.&lt;/p&gt;

&lt;h1&gt;
  
  
  Enumeration
&lt;/h1&gt;

&lt;p&gt;After starting up the machine, the first thing we do is &lt;strong&gt;ping&lt;/strong&gt; the target to make sure it's alive:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgow17ykrgkq9xjg2s9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgow17ykrgkq9xjg2s9x.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we are getting a response, the target can be confirmed as active.&lt;/p&gt;

&lt;p&gt;Next, we are going to do an &lt;strong&gt;nmap&lt;/strong&gt; scan (Network Mapper) to see what services are running on what ports on the target machine. I'm going to also use the &lt;strong&gt;-sV&lt;/strong&gt; flag to see what versions the services are running on, as well as to get host OS information: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv106z2t215hhp964fi2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv106z2t215hhp964fi2v.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This didn't yield us any results. This time we're going to scan all ports using the &lt;strong&gt;-p-&lt;/strong&gt; flag, while also speeding up the process with &lt;strong&gt;-T5&lt;/strong&gt;...&lt;/p&gt;

&lt;p&gt;After the scan was complete, it yielded no results. I then issued another &lt;strong&gt;ping&lt;/strong&gt; command to the target to ensure it was still alive, however, it was not.&lt;/p&gt;

&lt;p&gt;After resetting the machine, I tried out the original &lt;strong&gt;nmap&lt;/strong&gt; scan again with the &lt;strong&gt;-p-&lt;/strong&gt; flag:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1p43zl50qvlkczmb6aev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1p43zl50qvlkczmb6aev.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P.S.&lt;br&gt;
Sometimes this machine can be extremely buggy or slow. So if &lt;strong&gt;nmap&lt;/strong&gt; scans are not yielding anything even when scanning over all ports with multiple techniques, then the machine probably needs maintenance. You can instead just scan for the needed port using the flag &lt;strong&gt;-p &lt;/strong&gt; for port 6379.&lt;/p&gt;

&lt;h1&gt;
  
  
  Redis
&lt;/h1&gt;

&lt;p&gt;Redis is an &lt;strong&gt;in-memory&lt;/strong&gt; databases that utilizes RAM space to increase speed. They are faster than traditional databases since they have fewer restrictions imposed on them.&lt;/p&gt;

&lt;p&gt;We can use the &lt;strong&gt;redis-cli&lt;/strong&gt; command to interact with the Redis database being hosted on the target machine. To specify a target machine, we need to use the &lt;strong&gt;-h&lt;/strong&gt; flag.&lt;/p&gt;

&lt;p&gt;If the command &lt;strong&gt;redis-cli&lt;/strong&gt; is not already installed on your computer, you can use the command &lt;strong&gt;sudo apt install redis-tools&lt;/strong&gt; if you are on a Linux machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60dnuauk4mnazk3oq1wt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60dnuauk4mnazk3oq1wt.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To list information about the Redis database, we can issue the &lt;strong&gt;info&lt;/strong&gt; command:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ujr0oog6z2691zwz8dq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ujr0oog6z2691zwz8dq.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... SNIPPED ...&lt;/p&gt;

&lt;p&gt;We can see on the first few lines of the output that the version is currently &lt;strong&gt;5.0.7&lt;/strong&gt;. At the very end of the output (not shown in screenshot) we can see that there are &lt;strong&gt;4&lt;/strong&gt; keys.&lt;/p&gt;

&lt;p&gt;To obtain all the keys in the Redis database, we can use the command &lt;strong&gt;keys *&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9w5r9j3dbs4jnxozlsv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9w5r9j3dbs4jnxozlsv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get the contents of the key, we simply need to use the command &lt;strong&gt;get&lt;/strong&gt; with the name of the key:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ppurxjyascmncotgsd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ppurxjyascmncotgsd7.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The flag for this box has been captured!&lt;/p&gt;

&lt;h1&gt;
  
  
  Various Questions:
&lt;/h1&gt;

&lt;p&gt;Which TCP port is open on the machine?&lt;br&gt;
&lt;strong&gt;6379&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which service is running on the port that is open on the machine?&lt;br&gt;
&lt;strong&gt;redis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What type of database is Redis? Choose from the following options: (i) In-memory Database, (ii) Traditional Database&lt;br&gt;
&lt;strong&gt;In-memory Database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which command-line utility is used to interact with the Redis server? Enter the program name you would enter into the terminal without any arguments.&lt;br&gt;
&lt;strong&gt;redis-cli&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which flag is used with the Redis command-line utility to specify the hostname?&lt;br&gt;
&lt;strong&gt;-h&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once connected to a Redis server, which command is used to obtain the information and statistics about the Redis server?&lt;br&gt;
&lt;strong&gt;info&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the version of the Redis server being used on the target machine?&lt;br&gt;
&lt;strong&gt;5.0.7&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which command is used to select the desired database in Redis?&lt;br&gt;
&lt;strong&gt;select&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How many keys are present inside the database with index 0?&lt;br&gt;
&lt;strong&gt;4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which command is used to obtain all the keys in a database?&lt;br&gt;
&lt;strong&gt;keys *&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Submit root flag&lt;br&gt;
&lt;strong&gt;Try it yourself :)&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Dancing | HackTheBox Write-up</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Fri, 12 Jan 2024 12:18:20 +0000</pubDate>
      <link>https://dev.to/shiahalan/dancing-hackthebox-write-up-2o35</link>
      <guid>https://dev.to/shiahalan/dancing-hackthebox-write-up-2o35</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;This box is a basic introduction to SMBs (Server Message Block). In order to obtain the flag, we simply need to find an available share that we can connect to without a password. From there, we can download the file containing the flag. We use a few basic commands such as: nmap, ping, smbclient, ls, cat, cd, and get.&lt;/p&gt;

&lt;h1&gt;
  
  
  Enumeration
&lt;/h1&gt;

&lt;p&gt;To start off, we are going to &lt;strong&gt;ping&lt;/strong&gt; (ICMP Echo request) the target to check whether it is alive or not:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feljz0fmqq11h4m65xx7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feljz0fmqq11h4m65xx7j.png" alt="Image description" width="529" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we are getting a response back, the target is indeed alive.&lt;/p&gt;

&lt;p&gt;Next, we are going to enumerate the ports on the target machine to see what services are available. We can achieve this using &lt;strong&gt;nmap&lt;/strong&gt; (network mapper). I will also be using the &lt;strong&gt;-sV&lt;/strong&gt; flag to check the services' respective version information:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf6p4unt5wxqg7y5fgz1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf6p4unt5wxqg7y5fgz1.png" alt="Image description" width="776" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that on port 445 there is a service named &lt;strong&gt;microsoft-ds&lt;/strong&gt;. Upon a quick Google search, we can see that this is an &lt;strong&gt;SMB&lt;/strong&gt; (Server Message Block).&lt;/p&gt;

&lt;h1&gt;
  
  
  SMB (Server Message Block)
&lt;/h1&gt;

&lt;p&gt;We can attempt to access this &lt;strong&gt;smb&lt;/strong&gt; server using the &lt;strong&gt;smbclient&lt;/strong&gt; command. Before we try and establish a connection to a &lt;strong&gt;share&lt;/strong&gt; on the &lt;strong&gt;smb&lt;/strong&gt; server, we are going to list what available shares exist. We can accomplish this by using the &lt;strong&gt;smbclient&lt;/strong&gt; command with the &lt;strong&gt;-L&lt;/strong&gt; flag to list available shares: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszbnyapuolyreq4cvjhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszbnyapuolyreq4cvjhj.png" alt="Image description" width="715" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see four listed shares. We can try to access a share using the &lt;strong&gt;smbclient&lt;/strong&gt; command with format: &lt;strong&gt;smbclient //targetIP/sharename&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Upon trying to access each share, we see that the only share accessible without entering a password is the &lt;strong&gt;WorkShares&lt;/strong&gt; share:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuj93f41713yymo6283ap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuj93f41713yymo6283ap.png" alt="Image description" width="411" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the &lt;strong&gt;ls&lt;/strong&gt; command, we can list directories and files while connected to the &lt;strong&gt;smb&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d1rn6i9g6mju3az02qb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d1rn6i9g6mju3az02qb.png" alt="Image description" width="618" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon changing directories using &lt;strong&gt;cd&lt;/strong&gt;, we can spot the &lt;em&gt;flag.txt&lt;/em&gt;* file located in the directory named &lt;strong&gt;James.P&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vsaohcuwiogz4gzafwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vsaohcuwiogz4gzafwl.png" alt="Image description" width="611" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to download the file to our computer, we can use the &lt;strong&gt;get&lt;/strong&gt; command:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3qojmozz5ayi35c2m96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3qojmozz5ayi35c2m96.png" alt="Image description" width="800" height="33"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After downloading the file successfully to our computer, we can simply &lt;strong&gt;cat&lt;/strong&gt; the file to see the contents of &lt;strong&gt;flag.txt&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzp1vm0002ka02yd9z83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzp1vm0002ka02yd9z83.png" alt="Image description" width="284" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have captured the flag!&lt;/p&gt;

&lt;h1&gt;
  
  
  Various Questions:
&lt;/h1&gt;

&lt;p&gt;What does the 3-letter acronym SMB stand for?&lt;br&gt;
&lt;strong&gt;Server Message Block&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What port does SMB use to operate at?&lt;br&gt;
&lt;strong&gt;445&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the service name for port 445 that came up in our Nmap scan?&lt;br&gt;
&lt;strong&gt;microsoft-ds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the 'flag' or 'switch' that we can use with the smbclient utility to 'list' the available shares on Dancing?&lt;br&gt;
&lt;strong&gt;-L&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How many shares are there on Dancing?&lt;br&gt;
&lt;strong&gt;4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the name of the share we are able to access in the end with a blank password?&lt;br&gt;
&lt;strong&gt;WorkShares&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the command we can use within the SMB shell to download the files we find?&lt;br&gt;
&lt;strong&gt;get&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Submit root flag&lt;br&gt;
&lt;strong&gt;Try it yourself :)&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Photon Lockdown | HackTheBox Write-up</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Thu, 11 Jan 2024 13:05:10 +0000</pubDate>
      <link>https://dev.to/shiahalan/photon-lockdown-hackthebox-write-up-p45</link>
      <guid>https://dev.to/shiahalan/photon-lockdown-hackthebox-write-up-p45</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;This challenge is fairly simple. What we mainly needed to do was figure out the filetype of the rootfs file using the file command. After that, we just needed to do some basic research on how to extract the data from a SquashFS file (unsquashfs). Using grep on the entire extracted filesystem, we were able to locate the file that the flag was in.&lt;/p&gt;

&lt;h1&gt;
  
  
  First Impressions
&lt;/h1&gt;

&lt;p&gt;After downloading the challenge file and unzipping the contents, we see three files listed as so: &lt;strong&gt;fwu_ver&lt;/strong&gt;, &lt;strong&gt;hw_ver&lt;/strong&gt;, and &lt;strong&gt;rootfs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Upon a little research, we can see that the file named &lt;strong&gt;rootfs&lt;/strong&gt; is an abbreviation for &lt;strong&gt;root file system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;ls&lt;/strong&gt; paired with the &lt;strong&gt;-l&lt;/strong&gt; flag, we can see more information about the three files. What I'm mainly interested in is the &lt;strong&gt;size&lt;/strong&gt; of each file: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbuuvvt2hihjd1o5eiep1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbuuvvt2hihjd1o5eiep1.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that the the file rootfs is by far the biggest, and this is probably due to the fact that it is a root file system.&lt;/p&gt;

&lt;p&gt;We are first going to inspect the &lt;strong&gt;rootfs&lt;/strong&gt; file. Since there are no visible extensions for the file, we are going to use the &lt;strong&gt;file&lt;/strong&gt; command to gain more information about the type of file it is, as well as some basic information regarding the file's contents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4y9z91s86wfcdpygkuy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4y9z91s86wfcdpygkuy.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From this, we can see that it is a &lt;strong&gt;Squashfs filesystem&lt;/strong&gt; that has been &lt;strong&gt;compressed&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  SquashFS
&lt;/h1&gt;

&lt;p&gt;After some basic research, it was found that &lt;strong&gt;SquashFS is a compressed read-only file system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In order to restore the filesystem to a more readable format, we need to &lt;strong&gt;extract&lt;/strong&gt; the filesystem from &lt;strong&gt;rootfs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After some more research, it was found that we can do this using the &lt;strong&gt;unsquashfs&lt;/strong&gt; command. For this to work however, we need to run the command as a &lt;strong&gt;super user&lt;/strong&gt;. This can be accomplished with the &lt;strong&gt;sudo&lt;/strong&gt; command plus the command we wish to execute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5ozzl3oo8tiqczjcxqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5ozzl3oo8tiqczjcxqa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After we successfully run the command, we are given a new directory called &lt;strong&gt;squashfs-root&lt;/strong&gt; containing the extracted filesystem from &lt;strong&gt;rootfs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After changing directories to the extracted filesystem using &lt;strong&gt;cd&lt;/strong&gt;...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3tn4tzlsmgcrbghvaw3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3tn4tzlsmgcrbghvaw3z.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  GREP
&lt;/h1&gt;

&lt;p&gt;I figured to find the flag, I would just use the &lt;strong&gt;grep&lt;/strong&gt; command to find the regular expression &lt;strong&gt;HTB&lt;/strong&gt;, since that is what HackTheBox flags start with. By pairing the &lt;strong&gt;grep&lt;/strong&gt; command with &lt;strong&gt;-l&lt;/strong&gt; (list files that contain a match) and &lt;strong&gt;-r&lt;/strong&gt; (recursive mode to traverse directories), I searched the entire filesystem for an expression that contained &lt;strong&gt;HTB&lt;/strong&gt;, which would be the starting characters for the challenge's flag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40x0fcpn6p2vlgyfnbsy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40x0fcpn6p2vlgyfnbsy.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This yielded three files with a match: &lt;strong&gt;bin/ip&lt;/strong&gt;, &lt;strong&gt;bin/tc&lt;/strong&gt;, and &lt;strong&gt;etc/config_default.xml&lt;/strong&gt;. Using &lt;strong&gt;cat&lt;/strong&gt; on the first two yielded nothing but machine code that is unreadable. The third one (&lt;strong&gt;etc/config_default.xml&lt;/strong&gt;), however, was in plaintext.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ic4l50n1357by4dutfd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ic4l50n1357by4dutfd.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I then decided to use &lt;strong&gt;grep&lt;/strong&gt; again for &lt;strong&gt;HTB&lt;/strong&gt; by piping the output of &lt;strong&gt;cat&lt;/strong&gt; on the &lt;strong&gt;config_default.xml&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn8iv3ei5ste6ct1ks8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn8iv3ei5ste6ct1ks8w.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This yielded the flag we were looking for, as well as valuable login information.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Fawn | HackTheBox Write-up</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Thu, 11 Jan 2024 12:26:06 +0000</pubDate>
      <link>https://dev.to/shiahalan/fawn-hackthebox-write-up-2bm9</link>
      <guid>https://dev.to/shiahalan/fawn-hackthebox-write-up-2bm9</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;This box has us delve into basic nmap enumeration and ftp connection. We first need to enumerate over the target computer to check for available ports. Upon noticing that there is a service running on port 21 (ftp), we then just need to access the file being shared on the FTP using an anonymous account to capture the flag (flag.txt). This box uses basic commands such as: ping, nmap, ftp, cat, and more...&lt;/p&gt;

&lt;h1&gt;
  
  
  Enumeration
&lt;/h1&gt;

&lt;p&gt;To start off, we should ping the target computer in order to check whether it is alive or not and responsive. We can do so using the &lt;strong&gt;ping&lt;/strong&gt; command (ICMP echo test):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxakmi71lisxffyoh6ms4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxakmi71lisxffyoh6ms4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we can see, since we are getting a response back from the target, it is indeed alive.&lt;/p&gt;

&lt;p&gt;Next, we will enumerate the target for any open/closed ports using an &lt;strong&gt;nmap&lt;/strong&gt; (network mapper) scan on the target. We are going to use the basic flag &lt;strong&gt;-sV&lt;/strong&gt; in order to check for versions of services on the target, as well as host information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F775mdqtysi0h2ky72hv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F775mdqtysi0h2ky72hv9.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the &lt;strong&gt;nmap&lt;/strong&gt; scan we can see that &lt;strong&gt;port 21&lt;/strong&gt; is open, with service &lt;strong&gt;ftp&lt;/strong&gt; (file transfer protocol). It is running &lt;strong&gt;version vsftpd 3.0.3&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We can also see host information. For example, the host is running on the &lt;strong&gt;OS&lt;/strong&gt; (operating system) &lt;strong&gt;Unix&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  FTP (File Transfer Protocol)
&lt;/h1&gt;

&lt;p&gt;In order to use the FTP being hosted on the target computer, we simply need to use the &lt;strong&gt;ftp&lt;/strong&gt; command to connect to the service. We can do so in the following format: &lt;strong&gt;ftp username@targetIP&lt;/strong&gt;. To login to an account on &lt;strong&gt;ftp without a password&lt;/strong&gt;, you can use the username &lt;strong&gt;anonymous&lt;/strong&gt;. The following command would then look like &lt;strong&gt;ftp anonymous@targetIP&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Doing this with our target IP will yield:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3862metc2i3bh0xxhnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3862metc2i3bh0xxhnv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P.S. when you are prompted for a password, to use no password just press enter again for the password prompt...&lt;/p&gt;

&lt;p&gt;Using the &lt;strong&gt;ls&lt;/strong&gt; command while in the &lt;strong&gt;ftp&lt;/strong&gt;, we can list the available files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fak9vjoc1rnaoo1jsx25o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fak9vjoc1rnaoo1jsx25o.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We see one of the files listed available is flag.txt!&lt;/p&gt;

&lt;p&gt;In order to download that file, we use the &lt;strong&gt;get&lt;/strong&gt; command plus the file name (get example.txt).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj83e0dn70q39iykup8cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj83e0dn70q39iykup8cp.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, we have downloaded the flag.txt file which contains our flag. &lt;/p&gt;

&lt;p&gt;In order to view it, simply use the &lt;strong&gt;exit&lt;/strong&gt; command to exit ftp, and then use the &lt;strong&gt;cat&lt;/strong&gt; command plus the filename in order to read the contents of the file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvwfmpk62c82ignhu5by.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvwfmpk62c82ignhu5by.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The flag has been successfully captured!&lt;/p&gt;

&lt;h1&gt;
  
  
  Various Questions
&lt;/h1&gt;

&lt;p&gt;What does the 3-letter acronym FTP stand for?&lt;br&gt;
&lt;strong&gt;File Transfer Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which port does the FTP service listen on usually?&lt;br&gt;
&lt;strong&gt;21&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What acronym is used for the secure version of FTP?&lt;br&gt;
&lt;strong&gt;SFTP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the command we can use to send an ICMP echo request to test our connection to the target?&lt;br&gt;
&lt;strong&gt;ping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From your scans, what version is FTP running on the target?&lt;br&gt;
&lt;strong&gt;vsftpd 3.0.3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From your scans, what OS type is running on the target?&lt;br&gt;
&lt;strong&gt;Unix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the command we need to run in order to display the 'ftp' client help menu?&lt;br&gt;
&lt;strong&gt;ftp -h&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is username that is used over FTP when you want to log in without having an account?&lt;br&gt;
&lt;strong&gt;anonymous&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the response code we get for the FTP message 'Login successful'?&lt;br&gt;
&lt;strong&gt;230&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a couple of commands we can use to list the files and directories available on the FTP server. One is dir. What is the other that is a common way to list files on a Linux system.&lt;br&gt;
&lt;strong&gt;ls&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the command used to download the file we found on the FTP server?&lt;br&gt;
&lt;strong&gt;get&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Submit root flag&lt;br&gt;
&lt;strong&gt;Try it yourself :)&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Meow | HackTheBox Write-up</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Sat, 06 Jan 2024 13:43:25 +0000</pubDate>
      <link>https://dev.to/shiahalan/meow-hackthebox-write-up-3j0b</link>
      <guid>https://dev.to/shiahalan/meow-hackthebox-write-up-3j0b</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;This box introduces us to many basic concepts and tools used in ethical hacking. We explore using commands such as: ping, nmap, telnet, and more. For this box, to capture the flag we need to ultimately login to the telnet service running on the box in order to read the file containing the flag (flag.txt).&lt;/p&gt;

&lt;h1&gt;
  
  
  Enumeration
&lt;/h1&gt;

&lt;p&gt;To start off, we &lt;strong&gt;ping&lt;/strong&gt; (also known as an ICMP (internet control message protocol) echo test) the target box (computer) in order to make sure it is actually alive:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femxe0mmoxnqttkvg3cok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femxe0mmoxnqttkvg3cok.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we are receiving back packets from the target computer, we can confirm it is up and running.&lt;/p&gt;

&lt;p&gt;Next, we are going to run an &lt;strong&gt;nmap&lt;/strong&gt; (network map) to enumerate for running services and their respective ports on the target machine:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7ysxk4oqw5qvphnhms9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7ysxk4oqw5qvphnhms9.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that port 23 is open, running the service &lt;strong&gt;telnet&lt;/strong&gt;. Telnet is an old text-based protocol that allows for remote computer access.&lt;/p&gt;

&lt;h1&gt;
  
  
  Telnet
&lt;/h1&gt;

&lt;p&gt;Using the &lt;strong&gt;telnet&lt;/strong&gt; command, we can try to login to the target machine:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff504d4h4vp3uf9h3q8wm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff504d4h4vp3uf9h3q8wm.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are met with a login screen.&lt;/p&gt;

&lt;p&gt;After trying various login usernames, we were granted access without a password using login name &lt;strong&gt;root&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5t3h76fb5ntm49af1r4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5t3h76fb5ntm49af1r4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the command &lt;strong&gt;ls&lt;/strong&gt; (list) we can view what contents are in the current directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyo0dx42plc34m81feq3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyo0dx42plc34m81feq3j.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We see the &lt;strong&gt;flag.txt&lt;/strong&gt; file, which is what we are looking for to complete the box. Using the &lt;strong&gt;cat&lt;/strong&gt; (concatenate) command we can view the contents of the file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd6zam3hw52gjl37w974.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd6zam3hw52gjl37w974.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we can see, we have captured the flag for this box.&lt;/p&gt;

&lt;h1&gt;
  
  
  Various Questions:
&lt;/h1&gt;

&lt;p&gt;What does the acronym VM stand for?&lt;br&gt;
&lt;strong&gt;Virtual Machine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What tool do we use to interact with the operating system in order to issue commands via the command line, such as the one to start our VPN connection? It's also known as a console or shell.&lt;br&gt;
&lt;strong&gt;terminal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What service do we use to form our VPN connection into HTB labs?&lt;br&gt;
&lt;strong&gt;openvpn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What tool do we use to test our connection to the target with an ICMP echo request?&lt;br&gt;
&lt;strong&gt;ping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is the name of the most common tool for finding open ports on a target?&lt;br&gt;
&lt;strong&gt;nmap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What service do we identify on port 23/tcp during our scans?&lt;br&gt;
&lt;strong&gt;telnet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What username is able to log into the target over telnet with a blank password?&lt;br&gt;
&lt;strong&gt;root&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Submit root flag&lt;br&gt;
&lt;strong&gt;Try it yourself :)&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Project Six (Python): Basic Calculator</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Fri, 19 Aug 2022 07:56:00 +0000</pubDate>
      <link>https://dev.to/shiahalan/project-six-python-basic-calculator-2nmi</link>
      <guid>https://dev.to/shiahalan/project-six-python-basic-calculator-2nmi</guid>
      <description>&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Hello, this is my fifth posted project. This project was created with the intention of exposing myself to Python, Stack Overflow, GitHub BASH, and Tkinter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwoeq7lyehdfcxqjhoocl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwoeq7lyehdfcxqjhoocl.png" alt="Image description" width="386" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;This project uses Python's built in module &lt;strong&gt;Tkinter&lt;/strong&gt; to create an interactable GUI. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you enjoy this part of my learning journey.&lt;br&gt;
&lt;a href="https://github.com/shiahalan/Basic-Calculator"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advice?
&lt;/h2&gt;

&lt;p&gt;Advice is greatly appreciated (post in comment section).&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Project Five (Python): Conway's Game of Life</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Thu, 18 Aug 2022 10:56:00 +0000</pubDate>
      <link>https://dev.to/shiahalan/project-five-python-conways-game-of-life-557n</link>
      <guid>https://dev.to/shiahalan/project-five-python-conways-game-of-life-557n</guid>
      <description>&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Hello, this is my fifth posted project. This project was created with the intention of exposing myself to Python, Stack Overflow, GitHub BASH, and Pygame.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F855hvk31lxi3pey8o7bu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F855hvk31lxi3pey8o7bu.png" alt="Image description" width="234" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;This project uses Pygame to create an interactable GUI. The cells in the Game of Life follow a specific ruleset that determines whether they spawn, die, or continue living.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you enjoy this part of my learning journey.&lt;br&gt;
&lt;a href="https://github.com/shiahalan/Conways-Game-of-Life"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Background on Conway's Game of Life
&lt;/h3&gt;

&lt;p&gt;Conway's Game of Life is a cellular automaton originally created by John Conway in 1970. The game is a zero-player game where cells interact with each other by abiding to four rules. Thus, the outcome of the game is predetermined by the initial configuration of what cells are alive and dead.&lt;/p&gt;

&lt;h4&gt;
  
  
  Rules of the game:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Any live cell with fewer than two live neighbours dies, as if by underpopulation.&lt;/li&gt;
&lt;li&gt;Any live cell with two or three live neighbours lives on to the next generation.&lt;/li&gt;
&lt;li&gt;Any live cell with more than three live neighbours dies, as if by overpopulation.&lt;/li&gt;
&lt;li&gt;Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Advice?
&lt;/h2&gt;

&lt;p&gt;Advice is greatly appreciated (post in comment section).&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Project Four (Python): Restaurant Recommender</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Sun, 12 Jun 2022 22:14:00 +0000</pubDate>
      <link>https://dev.to/shiahalan/project-four-python-restaurant-recommender-12bi</link>
      <guid>https://dev.to/shiahalan/project-four-python-restaurant-recommender-12bi</guid>
      <description>&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Hello, this is my fourth posted project. This project was created with the intention of exposing myself to Python, Stack Overflow, GitHub BASH, and the quicksort algorithm. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbsblc03iwk5c5tg1imu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbsblc03iwk5c5tg1imu.png" alt="Image of Project" width="800" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;This project uses a dataset provided by Codecademy, the quicksort algorithm, and various while loops to gather user input.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you enjoy this part of my learning journey.&lt;br&gt;
&lt;a href="https://github.com/shiahalan/restaurant-recommendation"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advice?
&lt;/h2&gt;

&lt;p&gt;Advice is greatly appreciated (post in comment section).&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Project One (C++): Tic Tac Toe</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Mon, 16 May 2022 04:06:49 +0000</pubDate>
      <link>https://dev.to/shiahalan/project-1-tic-tac-toe-c-3fdn</link>
      <guid>https://dev.to/shiahalan/project-1-tic-tac-toe-c-3fdn</guid>
      <description>&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Hello, this is my first posted C++ project. This project was created with the intention of exposing myself to C++, stack overflow, GitHub workflow, and developer tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsr7ohupa86uvodwa1w1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsr7ohupa86uvodwa1w1.png" alt="Screenshot of Title Screen" width="512" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;The project uses beginner coding concepts in order to create a simple tic-tac-toe game in a terminal. It uses the iostream standard library. The board is represented by an array of size nine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/shiahalan/tic-tac-toe-cpp"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you enjoy this part of my C++ journey!&lt;/p&gt;

&lt;h2&gt;
  
  
  Advice?
&lt;/h2&gt;

&lt;p&gt;Advice is greatly appreciated (post in comment section).&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>programming</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Project Three (Python): Sudoku Solver</title>
      <dc:creator>shiahalan</dc:creator>
      <pubDate>Sat, 07 May 2022 06:09:58 +0000</pubDate>
      <link>https://dev.to/shiahalan/project-three-sudoku-solver-15b2</link>
      <guid>https://dev.to/shiahalan/project-three-sudoku-solver-15b2</guid>
      <description>&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Hello, this is my third posted project. This project was created with the intention of exposing myself to Python, Stack Overflow, GitHub BASH, and the backtracking algorithm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfrymfkwl421fh8opou6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfrymfkwl421fh8opou6.png" alt="Image of Sudoku Solver" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;This project uses a 2D list for the representation of the board. The solver works by implementing the backtracking algorithm. Utilizing recursion backtracking, the algorithm can use brute-force to solve the board.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you enjoy this part of my learning journey.&lt;br&gt;
&lt;a href="https://github.com/shiahalan/sudoku-solver"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advice?
&lt;/h2&gt;

&lt;p&gt;Advice is greatly appreciated (post in comment section).&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
