<?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>Forem: Jadi</title>
    <description>The latest articles on Forem by Jadi (@jadijadi).</description>
    <link>https://forem.com/jadijadi</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%2F245177%2Fd4280581-a631-4ac9-b911-9e007b9c3ff0.jpeg</url>
      <title>Forem: Jadi</title>
      <link>https://forem.com/jadijadi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jadijadi"/>
    <language>en</language>
    <item>
      <title>Linux 7.0 Kernel Deep Dive + Step-by-Step Installation Guide</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Wed, 15 Apr 2026 18:38:56 +0000</pubDate>
      <link>https://forem.com/jadijadi/linux-70-kernel-deep-dive-step-by-step-installation-guide-4l5n</link>
      <guid>https://forem.com/jadijadi/linux-70-kernel-deep-dive-step-by-step-installation-guide-4l5n</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/D0kjNmvj-iA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Just be aware that this will never be removed by dnf updates. Im not sure how it adds an entry for GRUB2 but it wont boot with secure boot either. If you really want a new kernel on your Production machine, use &lt;code&gt;fedpkg&lt;/code&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was working on a video about the features of Linux Kernel 7.0, including quantum-safe ML-DSA and BPF io_uring.  In the process, I ended up compiling and installing Linux 7.0.0 on my Fedora 43. I thought you might enjoy experimenting with it as well (be careful please :D)&lt;/p&gt;

&lt;p&gt;These are the easy steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;install prerequisite: &lt;code&gt;sudo dnf install ncurses-devel elfutils-libelf-devel openssl-devel rpm-build flex bison&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;download the latest kernel from kernel.org&lt;/li&gt;
&lt;li&gt;extract using &lt;code&gt;untar xf&lt;/code&gt; and enter the directory&lt;/li&gt;
&lt;li&gt;make sure your directory is clean &lt;code&gt;make mrproper&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;copy your current configs by &lt;code&gt;cp /boot/config-$(uname -r) .config&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;update your config using &lt;code&gt;make oldconfig&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;view the .config or even edit it via &lt;code&gt;make menuconfig&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;build :D &lt;code&gt;make -j$(nproc)&lt;/code&gt; #may take long&lt;/li&gt;
&lt;li&gt;Install the modules with &lt;code&gt;sudo make modules_install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;and install the kernel &amp;amp; configure the grub with &lt;code&gt;sudo make install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reboot and have fun watching your &lt;code&gt;uname -a&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For me it went super smooth. If anything fails you should be able to use your older kernel and be cautious about your steps... you are fiddling with the Kernel :D&lt;/p&gt;

</description>
      <category>linux</category>
      <category>fedora</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hacking Hidden Paths with ffuf - Web Fuzzing Made Simple</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Wed, 20 Aug 2025 22:03:04 +0000</pubDate>
      <link>https://forem.com/jadijadi/hacking-hidden-paths-with-ffuf-web-fuzzing-made-simple-4ne</link>
      <guid>https://forem.com/jadijadi/hacking-hidden-paths-with-ffuf-web-fuzzing-made-simple-4ne</guid>
      <description>&lt;p&gt;A couple of weeks ago, someone emailed me some personal files and videos I have forgotten I have left somewhere on my VPS. &lt;/p&gt;

&lt;p&gt;In this video I'll show a common tool for finding these files: ffuf&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/sdfCxvp6rCs"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>web</category>
      <category>fuzz</category>
      <category>security</category>
      <category>pentest</category>
    </item>
    <item>
      <title>Unveiling the xz Utils Backdoor which deliberately opens our SSH connections for RCEs</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Sun, 31 Mar 2024 13:26:18 +0000</pubDate>
      <link>https://forem.com/jadijadi/unveiling-the-xz-utils-backdoor-a-rca-is-affecting-our-ssh-connections-4l0j</link>
      <guid>https://forem.com/jadijadi/unveiling-the-xz-utils-backdoor-a-rca-is-affecting-our-ssh-connections-4l0j</guid>
      <description>&lt;p&gt;Recently a bad actor, implemented a backdoor is one of the most widely used libraries in GNU/Linux distors; the xz compression suit. This backdoor lets the attacker to execute system() calls with no authentication; an RCE attack. &lt;/p&gt;

&lt;p&gt;It seems this bad actor; called "JiaT75" was planning for this during last 2 years and succeeded to do so after acquiring trust and becoming a trusted developer of the project. &lt;/p&gt;

&lt;p&gt;In this video I will explain the attack and the background knowledge needed to understand it. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/gyOz9s4ydho"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>backdoor</category>
      <category>security</category>
      <category>linux</category>
      <category>news</category>
    </item>
    <item>
      <title>How systemd v255 will bring the dreaded Windows BSOD to GNU/Linux: A deep dive into the source code</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Sat, 09 Dec 2023 17:03:54 +0000</pubDate>
      <link>https://forem.com/jadijadi/how-systemd-v255-will-bring-the-dreaded-windows-bsod-to-gnulinux-a-deep-dive-into-the-source-code-4g1g</link>
      <guid>https://forem.com/jadijadi/how-systemd-v255-will-bring-the-dreaded-windows-bsod-to-gnulinux-a-deep-dive-into-the-source-code-4g1g</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/tK8VpcMS9eY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>linux</category>
      <category>programming</category>
      <category>c</category>
      <category>kernel</category>
    </item>
    <item>
      <title>A technical look at the news of "Python moves to remove the GIL". Some coding &amp; some source checking</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Mon, 28 Aug 2023 14:12:15 +0000</pubDate>
      <link>https://forem.com/jadijadi/a-technical-look-at-the-news-of-python-moves-to-remove-the-gil-some-coding-some-source-checking-3nkn</link>
      <guid>https://forem.com/jadijadi/a-technical-look-at-the-news-of-python-moves-to-remove-the-gil-some-coding-some-source-checking-3nkn</guid>
      <description>&lt;p&gt;Python's usage exploded even when it was merely new; lacking lots of features. One main reason for this was its great integration with C libraries. Combine this with the possibility of using Threads and you will get your holy grail: and easy language with threads which can use C libraries! BUT! But python needed a Global Interpreter Lock to be able to run C Libraries in its threads.&lt;/p&gt;

&lt;p&gt;In this video we will have a closer look at this concept. I will describe the necessity of GIL  in Cpython and will show you why and how it is slowing down multi-threaded CPU hungry program. We will check the source code and will understand why both parties (defending and protesting the GIL removal) are claiming that the "You are slowing down Python!"&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/6254JnkLg1c"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>python</category>
      <category>video</category>
      <category>technical</category>
      <category>news</category>
    </item>
    <item>
      <title>Sign your git commits, no-nonsense ! without “intro”, “why” &amp; …</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Wed, 16 Aug 2023 07:37:34 +0000</pubDate>
      <link>https://forem.com/jadijadi/sign-your-git-commits-no-nonsense-without-intro-why--39hm</link>
      <guid>https://forem.com/jadijadi/sign-your-git-commits-no-nonsense-without-intro-why--39hm</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7pEJRZYI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6jj7kzuc1g3oq7rajmms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7pEJRZYI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6jj7kzuc1g3oq7rajmms.png" alt="Image description" width="800" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m not going into “why you should sign” and blah blah to make this post longer. Most people are here because they needed to sign their commits and they searched (mainly my self future!).&lt;/p&gt;

&lt;p&gt;First, check your keys. Signing with SSH keys is easier because most people already do have their ssh keys &amp;amp; are using them to login into the github. So check the &lt;code&gt;~/.ssh/&lt;/code&gt; directory for a pair of id_rsa and id_rsa.pub (or any other format of the key you have).&lt;/p&gt;

&lt;p&gt;Second, tell the git command to use them for signing. In my case it would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global gpg.format ssh
git config --global user.signingkey /home/jadi/.ssh/id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obviously your directory will be different and you may want to omit the --global to set the configuration only for the project you are in.&lt;/p&gt;

&lt;p&gt;Next, sign your commits with the &lt;code&gt;-S&lt;/code&gt; switch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add this_file that_file
git commit -S -m 'This is a signed commit'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you already have a commit and you need to sign it? use the &lt;code&gt;commit --amend -S&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Last step is adding this signing key to your github account. Go to the &lt;a href="https://github.com/settings/keys"&gt;https://github.com/settings/keys&lt;/a&gt;, add the public key (so /home/jadi/.ssh/id_rsa.pub) in my case and save it as a signing key. This will lead to a verified badge near your signed commits.&lt;/p&gt;

&lt;p&gt;Done.&lt;/p&gt;

</description>
      <category>git</category>
      <category>tutorial</category>
      <category>signing</category>
      <category>github</category>
    </item>
    <item>
      <title>How to use SOAP/WSDL APIs using SoapUI &amp; Python Zeep</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Sat, 01 Jul 2023 13:13:18 +0000</pubDate>
      <link>https://forem.com/jadijadi/how-to-use-soapwsdl-apis-using-soapui-python-zeep-4b3j</link>
      <guid>https://forem.com/jadijadi/how-to-use-soapwsdl-apis-using-soapui-python-zeep-4b3j</guid>
      <description>&lt;p&gt;In our Agile / Mobile / "moderm" and fron/back life, we see lots of REST APIs. Using REST is straight forward if you know your HTTP, GET, Post, ... &lt;br&gt;
But on the enterprise level, you will start seein SOAP and WSDL based APIs which look more confusing. Why? Because they are designed machines in mind and sometimes WSDL file is seen as the &lt;em&gt;documentation&lt;/em&gt; and you wont get a human readable doc!&lt;br&gt;
No worries... WSDL has whatever you need to work with your APIs. In this Post I'll show you how! Using SoapUI and the Zeep python library.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nFzwf-r2fJU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>python</category>
      <category>soap</category>
      <category>wsdl</category>
      <category>api</category>
    </item>
    <item>
      <title>Managing users and groups in GNU/Linux</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Wed, 07 Jun 2023 15:27:32 +0000</pubDate>
      <link>https://forem.com/jadijadi/managing-users-and-groups-in-gnulinux-49n7</link>
      <guid>https://forem.com/jadijadi/managing-users-and-groups-in-gnulinux-49n7</guid>
      <description>&lt;p&gt;We already know about the users and groups. In this module we will see how you can create new users / groups, how to modify them and how to delete them from the system. We will also have a look at some files who are playing important roles here and will cover a few less-seen commands like &lt;code&gt;chage&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Part 1:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/xXQ1pw2sAQs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Part2: &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/V69h5V5wdTw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>lpic</category>
      <category>linux</category>
      <category>learning</category>
      <category>devops</category>
    </item>
    <item>
      <title>Accessing and browsing blockchain using web3py python library</title>
      <dc:creator>Jadi</dc:creator>
      <pubDate>Sat, 03 Jun 2023 06:00:50 +0000</pubDate>
      <link>https://forem.com/jadijadi/accessing-and-browsing-blockchain-using-web3py-python-library-2kcc</link>
      <guid>https://forem.com/jadijadi/accessing-and-browsing-blockchain-using-web3py-python-library-2kcc</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/uOZu6_94G64?start=405"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This is from HeroCTF v5, Blockchain challenge called Arrest. It reads:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the dim-lit confines of his room, a lone figure hunched over a computer screen. Known online as 'Swissy', he was one of the most notorious ransomware operators worldwide.&lt;br&gt;
From his small apartment in a forgotten corner of Moscow, Swissy had wreaked havoc on the digital world, crippling entire industries with his ransomware attacks.&lt;br&gt;
But tonight, his reign of terror ended abruptly. A sudden knock echoed through the room, followed by the splintering of the door as Russian FSB agents stormed in.&lt;br&gt;
Swissy was arrested, but the real challenge was only beginning - tracing the syndicate behind him.&lt;br&gt;
Find the address who funded the ransomware operator (0xf6c0513FA09189Bf08e1329E44A86dC85a37c176)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To solve it, I use web3py to connect to the blockchain and then will check for every block created from the beginning. There, I will check for transactions in the block and if there is any, I will check for its "to". If it matches, we will show the "from" (which is Swissy!).&lt;/p&gt;

&lt;p&gt;IMO this can be a good intro if you are interested in using web3py and blockchain programming in general.&lt;/p&gt;

</description>
      <category>ctf</category>
      <category>blockcha</category>
      <category>python</category>
      <category>web3py</category>
    </item>
  </channel>
</rss>
