<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bash on Cesar Gimenes</title><link>https://crg.eti.br/en/tags/bash/</link><description>Recent content in Bash on Cesar Gimenes</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>crg@crg.eti.br (Cesar Gimenes)</managingEditor><webMaster>crg@crg.eti.br (Cesar Gimenes)</webMaster><lastBuildDate>Sat, 04 Jan 2025 11:48:47 -0300</lastBuildDate><atom:link href="https://crg.eti.br/en/tags/bash/index.xml" rel="self" type="application/rss+xml"/><item><title>Fork Bomb: From Code to Defense</title><link>https://crg.eti.br/en/post/forkbomb-do-codigo-a-defesa/</link><pubDate>Sat, 04 Jan 2025 11:48:47 -0300</pubDate><author>crg@crg.eti.br (Cesar Gimenes)</author><guid>https://crg.eti.br/en/post/forkbomb-do-codigo-a-defesa/</guid><description>&lt;p>The first time I heard about fork bombs was a long time ago. Although I found it fascinating that a piece of code could spawn two more processes of itself, causing exponential process growth and eventually freezing the system, I didn&amp;rsquo;t believe it was a viable attack until I discovered how many systems are vulnerable to code injection.&lt;/p>
&lt;h2 id="what-is-a-fork-bomb">What is a fork bomb?&lt;/h2>
&lt;p>In general terms, a fork bomb is code that spawns processes recursively. The first process spawns copies of itself, those copies spawn more copies, and so on, until the system runs out of resources and freezes. The result is a DoS (Denial of Service) attack.&lt;/p></description></item><item><title>Rewriting the Old TSR Using Bash</title><link>https://crg.eti.br/en/post/reescrevendo-velho-tsr-usando-bash/</link><pubDate>Sat, 21 Dec 2024 17:26:25 -0300</pubDate><author>crg@crg.eti.br (Cesar Gimenes)</author><guid>https://crg.eti.br/en/post/reescrevendo-velho-tsr-usando-bash/</guid><description>&lt;p>When I started programming, computing was different from today. The operating system was single-tasking; only one program could run at a time. There were no modern features like protected and mapped memory. Even so, it was possible to create concurrent behavior in programs, but you had to be careful to keep any part from blocking execution. For example, there could be no loops waiting for keyboard input or very long processes. Writing a non-blocking program was tricky in languages like Clipper.&lt;/p></description></item></channel></rss>