<?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: Czax225</title>
    <description>The latest articles on DEV Community by Czax225 (@czax225).</description>
    <link>https://dev.to/czax225</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%2F3670708%2F5a5c6cd9-3d89-41be-bae2-22f717ecb3cd.png</url>
      <title>DEV Community: Czax225</title>
      <link>https://dev.to/czax225</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/czax225"/>
    <language>en</language>
    <item>
      <title>Stop Fighting Go GUIs: Build Sleek Desktop Apps in Pure Go with Proton</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Mon, 01 Jun 2026 12:12:34 +0000</pubDate>
      <link>https://dev.to/czax225/stop-fighting-go-guis-build-sleek-desktop-apps-in-pure-go-with-proton-4ph2</link>
      <guid>https://dev.to/czax225/stop-fighting-go-guis-build-sleek-desktop-apps-in-pure-go-with-proton-4ph2</guid>
      <description>&lt;p&gt;The state of GUI development in Go has always been a bit complicated.&lt;/p&gt;

&lt;p&gt;You either have to wrestle with heavy C-dependencies like GTK and Qt bindings that make cross-compiling a nightmare, or settle for web-view frameworks that turn a simple desktop utility into a 150MB RAM-hogging Electron clone.&lt;/p&gt;

&lt;p&gt;If you love Go for its simplicity, speed, and single-binary deployment, your GUI library should look and feel the same way.&lt;/p&gt;

&lt;p&gt;That is exactly why I built Proton.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Proton?
&lt;/h1&gt;

&lt;p&gt;Proton is a lightweight, pure-Go GUI framework built on top of the incredibly fast Gio engine. It utilizes an immediate-mode architecture, meaning your UI renders dynamically every single frame.&lt;/p&gt;

&lt;p&gt;The philosophy behind Proton is straightforward: Zero C-dependencies, ultra-fast performance, and a developer experience that does not make you want to pull your hair out.&lt;/p&gt;

&lt;h1&gt;
  
  
  Here is why it works so well:
&lt;/h1&gt;

&lt;p&gt;Pure Go: No cgo required. Cross-compiling actually works out of the box.&lt;/p&gt;

&lt;p&gt;Featherweight: Tiny binary sizes and low resource usage.&lt;/p&gt;

&lt;p&gt;Immediate Mode: Your state lives directly in your code. No complex data-binding boilerplate.&lt;/p&gt;

&lt;p&gt;Themeable: Comes with built-in palettes like Catppuccin, Nord, and Rose Pine.&lt;/p&gt;

&lt;h1&gt;
  
  
  See it in Action: The 5-Minute Setup
&lt;/h1&gt;

&lt;p&gt;Here is a complete, self-contained application with an input box, a button, and basic text handling in just a few lines of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"github.com/CzaxStudio/proton"&lt;/span&gt;

&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;UI&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Editor&lt;/span&gt;
    &lt;span class="n"&gt;btn&lt;/span&gt;  &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Clickable&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;UI&lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"My First Proton App"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c"&gt;// Apply a theme instantly&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApplyPalette&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CatppuccinPalette&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Window&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello Proton"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Win&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;H3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Welcome to Go GUIs done right"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c"&gt;// Interactive Input&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"What is your name?"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c"&gt;// Immediate-mode button handling&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;btn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Greet Me"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nb"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Layouts Without the Headache
&lt;/h2&gt;

&lt;p&gt;If you have ever used Gio directly, you know that managing layouts and constraints can require a lot of nesting. Proton abstracts that complexity away into intuitive layout functions:&lt;/p&gt;

&lt;p&gt;Stacking: Arrange components cleanly using Row(win, ...) and Column(win, ...).&lt;/p&gt;

&lt;p&gt;Flexibility: Use GrowRow alongside GrowItem and FixedItem to create responsive sidebars and expanding content panes.&lt;/p&gt;

&lt;p&gt;Proportions: Instantly split screens using Split(win, 0.25, leftSide, rightSide) for instant dashboard layouts.&lt;/p&gt;

&lt;p&gt;Spacing: Fine-tune visuals cleanly with Pad(), PadH(), and Gap()&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// Example of a quick responsive layout split&lt;/span&gt;
&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Win&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Sidebar Navigation"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Win&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;proton&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;H1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Main Content Dashboard"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Real Features for Real Apps
&lt;/h2&gt;

&lt;p&gt;Proton is not just a proof-of-concept for text and buttons. It includes the actual utilities you need to build functional software:&lt;/p&gt;

&lt;p&gt;Virtualized Lists: List() and HList() only render what is visible on screen, letting you scroll through thousands of rows smoothly without breaking a sweat.&lt;/p&gt;

&lt;p&gt;Keyboard Shortcuts: Global hotkeys are a first-class citizen. Fire events using proton.OnKey(win, key.ModCtrl, "S", saveFunc).&lt;/p&gt;

&lt;p&gt;Async Notifications: Show modern, non-blocking toast notifications safely from any background goroutine using u.toast.Show("Saved!", 2 * time.Second).&lt;/p&gt;

&lt;p&gt;Asset Embedding: Includes a simple built-in CLI tool (Proton logo path/to/img.png) that caches and bakes assets directly into your binary.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;Ready to ditch the heavy web frameworks and complex C bindings? Getting started takes seconds. Just initialize your Go module and pull the library:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;myapp &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;myapp
go mod init myapp
go get github.com/CzaxStudio/proton
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you are on Linux, just grab your standard graphics drivers (libwayland-dev, libxkbcommon-dev, libvulkan-dev). Windows and macOS users need zero extra system dependencies.&lt;/p&gt;

&lt;p&gt;The project is completely open-source and moving fast. Check out the example applications, including a fully functional Calculator and a CyberTool showcase, directly in the repository.&lt;/p&gt;

&lt;p&gt;Take a look at the Proton GitHub Repository, try out the examples, and let me know what you think in the comments. I am curious to see what you build with it.&lt;/p&gt;

&lt;p&gt;If you like it then please star the Repo &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/CzaxStudio" rel="noopener noreferrer"&gt;
        CzaxStudio
      &lt;/a&gt; / &lt;a href="https://github.com/CzaxStudio/proton" rel="noopener noreferrer"&gt;
        proton
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A framework for building GUI applications in Go, Stay positive :)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Proton&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;A GUI library for Go. Built on &lt;a href="https://gioui.org" rel="nofollow noopener noreferrer"&gt;Gio&lt;/a&gt;. No C deps, pure Go.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Example apps (made using Proton)&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Note: These are very basic, you can make even better apps.&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/251837336/600829447-c8e48374-7e98-41c5-9d46-4427a007b02b.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwODI5NDQ3LWM4ZTQ4Mzc0LTdlOTgtNDFjNS05ZDQ2LTQ0MjdhMDA3YjAyYi5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lMzZiNDQyYjJkOWNiODUwM2ZhMDIyYzUyNjMzNDY3YWQ5ZjM3NTQxNWZiMWNhNGJlOGM5ZjE2OWU2NmJmM2Y5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZnaWYifQ.qXpbUSnEE4g7lOd4K6FRqxK9zjO7rhW8Ac5mDiXuy8M"&gt;&lt;img width="813" height="508" alt="GUI demo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F251837336%2F600829447-c8e48374-7e98-41c5-9d46-4427a007b02b.gif%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwODI5NDQ3LWM4ZTQ4Mzc0LTdlOTgtNDFjNS05ZDQ2LTQ0MjdhMDA3YjAyYi5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lMzZiNDQyYjJkOWNiODUwM2ZhMDIyYzUyNjMzNDY3YWQ5ZjM3NTQxNWZiMWNhNGJlOGM5ZjE2OWU2NmJmM2Y5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZnaWYifQ.qXpbUSnEE4g7lOd4K6FRqxK9zjO7rhW8Ac5mDiXuy8M" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/251837336/600732901-d536a863-d010-4dc4-b223-b790b00c8478.PNG?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMyOTAxLWQ1MzZhODYzLWQwMTAtNGRjNC1iMjIzLWI3OTBiMDBjODQ3OC5QTkc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNjk2ODI2ZDkwNWYwNzBjZWY1YTc1Y2MxM2Q3MmU5OTFhMGNlMTgwNmJjMWMwOGYzMDEzODIzYmYzYzE0NTMwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.ULZ26cQRSMJSB1l1rKqVRfl0CwKhY0ReYc5q4CEF7aU"&gt;&lt;img width="683" height="360" alt="Example app 2" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F251837336%2F600732901-d536a863-d010-4dc4-b223-b790b00c8478.PNG%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMyOTAxLWQ1MzZhODYzLWQwMTAtNGRjNC1iMjIzLWI3OTBiMDBjODQ3OC5QTkc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNjk2ODI2ZDkwNWYwNzBjZWY1YTc1Y2MxM2Q3MmU5OTFhMGNlMTgwNmJjMWMwOGYzMDEzODIzYmYzYzE0NTMwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.ULZ26cQRSMJSB1l1rKqVRfl0CwKhY0ReYc5q4CEF7aU" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Logo&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/251837336/600733778-e044d0b8-a96f-4bc2-9df9-725a41a99ed2.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMzNzc4LWUwNDRkMGI4LWE5NmYtNGJjMi05ZGY5LTcyNWE0MWE5OWVkMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iZDFlYTA5YTVmN2JkN2QwYjlhYThiYmVjNWFiODFiN2VjZmVkZWQwM2FkNDY1ZTg3NzgyYTgzMDc4YWEwYjU3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.0mB4F3saHj8FIq-su1uRUgJoE-KzMsUBg24X8nme32I"&gt;&lt;img width="1254" height="1254" alt="Proton" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F251837336%2F600733778-e044d0b8-a96f-4bc2-9df9-725a41a99ed2.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODAzMTY0NDEsIm5iZiI6MTc4MDMxNjE0MSwicGF0aCI6Ii8yNTE4MzczMzYvNjAwNzMzNzc4LWUwNDRkMGI4LWE5NmYtNGJjMi05ZGY5LTcyNWE0MWE5OWVkMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYwMVQxMjE1NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iZDFlYTA5YTVmN2JkN2QwYjlhYThiYmVjNWFiODFiN2VjZmVkZWQwM2FkNDY1ZTg3NzgyYTgzMDc4YWEwYjU3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.0mB4F3saHj8FIq-su1uRUgJoE-KzMsUBg24X8nme32I" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Getting started&lt;/h1&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-go notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;package&lt;/span&gt; main
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;"github.com/CzaxStudio/proton"&lt;/span&gt;

&lt;span class="pl-k"&gt;type&lt;/span&gt; &lt;span class="pl-smi"&gt;UI&lt;/span&gt; &lt;span class="pl-k"&gt;struct&lt;/span&gt; {
    &lt;span class="pl-c1"&gt;name&lt;/span&gt; proton.&lt;span class="pl-smi"&gt;Editor&lt;/span&gt;
    &lt;span class="pl-c1"&gt;btn&lt;/span&gt;  proton.&lt;span class="pl-smi"&gt;Clickable&lt;/span&gt;
}

&lt;span class="pl-k"&gt;func&lt;/span&gt; &lt;span class="pl-s1"&gt;main&lt;/span&gt;() {
    &lt;span class="pl-s1"&gt;u&lt;/span&gt; &lt;span class="pl-c1"&gt;:=&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pl-smi"&gt;UI&lt;/span&gt;{}
    &lt;span class="pl-s1"&gt;a&lt;/span&gt; &lt;span class="pl-c1"&gt;:=&lt;/span&gt; &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;New&lt;/span&gt;(&lt;span class="pl-s"&gt;"my app"&lt;/span&gt;)
    &lt;span class="pl-s1"&gt;a&lt;/span&gt;.&lt;span class="pl-c1"&gt;Window&lt;/span&gt;(&lt;span class="pl-s"&gt;"Hello"&lt;/span&gt;, &lt;span class="pl-c1"&gt;480&lt;/span&gt;, &lt;span class="pl-c1"&gt;300&lt;/span&gt;, &lt;span class="pl-k"&gt;func&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt; &lt;span class="pl-c1"&gt;*&lt;/span&gt;proton.&lt;span class="pl-smi"&gt;Win&lt;/span&gt;) {
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;H3&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-s"&gt;"Hello from Proton!"&lt;/span&gt;)
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Gap&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;8&lt;/span&gt;)
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Input&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pl-s1"&gt;u&lt;/span&gt;.&lt;span class="pl-c1"&gt;name&lt;/span&gt;, &lt;span class="pl-s"&gt;"Your name"&lt;/span&gt;)
        &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Gap&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;8&lt;/span&gt;)
        &lt;span class="pl-k"&gt;if&lt;/span&gt; &lt;span class="pl-s1"&gt;proton&lt;/span&gt;.&lt;span class="pl-c1"&gt;Button&lt;/span&gt;(&lt;span class="pl-s1"&gt;win&lt;/span&gt;, &lt;span class="pl-c1"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pl-s1"&gt;u&lt;/span&gt;.&lt;span class="pl-c1"&gt;btn&lt;/span&gt;, &lt;span class="pl-s"&gt;"Go"&lt;/span&gt;) {
            &lt;span class="pl-s1"&gt;println&lt;/span&gt;(&lt;span class="pl-s"&gt;"Hello,"&lt;/span&gt;, &lt;span class="pl-s1"&gt;u&lt;/span&gt;.&lt;span class="pl-c1"&gt;name&lt;/span&gt;.&lt;span class="pl-c1"&gt;Text&lt;/span&gt;())&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/CzaxStudio/proton" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>go</category>
      <category>showdev</category>
      <category>tooling</category>
      <category>ui</category>
    </item>
    <item>
      <title>Just Built a Cybersecurity Scripting Language – Here's Why</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Thu, 14 May 2026 07:07:05 +0000</pubDate>
      <link>https://dev.to/czax225/just-built-a-cybersecurity-scripting-language-heres-why-bc8</link>
      <guid>https://dev.to/czax225/just-built-a-cybersecurity-scripting-language-heres-why-bc8</guid>
      <description>&lt;p&gt;Spectator v2.0 is out. No Python. No Electron. Just one binary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;
&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"scanme.nmap.org"&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nf"&gt;PortScan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nf"&gt;SSLInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nf"&gt;HeaderAudit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What makes it different:&lt;/p&gt;

&lt;p&gt;Security primitives built-in – PortScan, SQLiTest, PayloadGen, SubTakeover. No pip install rabbit holes.&lt;/p&gt;

&lt;p&gt;Native GUI – Real desktop tools without Electron's 100MB overhead. Windows/Linux/Mac.&lt;/p&gt;

&lt;p&gt;Space package manager – SHA-256 verified libraries. Supply-chain attacks? Blocked.&lt;/p&gt;

&lt;p&gt;Standalone builds – spectator build tool.str to scanner.exe for windows. No runtime needed.&lt;/p&gt;

&lt;p&gt;Example – Build a GUI scanner in 15 lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;Import&lt;/span&gt; &lt;span class="n"&gt;Spec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GUI&lt;/span&gt;
&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;window&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Recon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#070b14"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Enter IP or domain"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#00d4aa"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"out"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;ips&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"out"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"→ "&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ips&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;", "&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;
&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;space&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="n"&gt;coffee&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Built for pentesters, red teamers, and security researchers who are tired of gluing tools together.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/CzaxStudio/Spectator" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Spectator&lt;/a&gt;&lt;br&gt;
Website: &lt;a href="https://spectatorcyber.pages.dev/" rel="noopener noreferrer"&gt;https://spectatorcyber.pages.dev/&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://github.com/CzaxStudio/SpectatorDocs/" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/SpectatorDocs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See Everything. Miss Nothing. &lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I wrote a .NET library for syscalls and process injection</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 13 May 2026 15:52:21 +0000</pubDate>
      <link>https://dev.to/czax225/i-wrote-a-net-library-for-syscalls-and-process-injection-19ja</link>
      <guid>https://dev.to/czax225/i-wrote-a-net-library-for-syscalls-and-process-injection-19ja</guid>
      <description>&lt;p&gt;Been doing red team work in C# for a while. Kept rewriting the same P/Invoke blocks and syscall wrappers for every project. Got tired of it so I bundled everything into one library.&lt;/p&gt;

&lt;p&gt;SharpKit is a .NET 8 library for offensive operations. No external NuGet dependencies. Just System.Net.Http, System.Runtime.InteropServices, and System.Net.Sockets.&lt;/p&gt;

&lt;p&gt;What it does:&lt;/p&gt;

&lt;p&gt;Syscalls with runtime SSN extraction (parses ntdll in memory, no hardcoded numbers)&lt;/p&gt;

&lt;p&gt;Indirect syscall stubs with custom gadgets&lt;/p&gt;

&lt;p&gt;Process injection: CreateRemoteThread, NtCreateThreadEx, QueueUserAPC, process hollowing&lt;/p&gt;

&lt;p&gt;Win32 P/Invoke for kernel32, advapi32, ntdll&lt;/p&gt;

&lt;p&gt;Kerberos builders: AS-REQ, TGS-REQ, AP-REQ, S4U2Self, S4U2Proxy, kerberoast hash formatter&lt;/p&gt;

&lt;p&gt;HttpAgent with NTLM/Basic/Bearer auth and proxy support&lt;/p&gt;

&lt;p&gt;PacketCrafter for raw ARP, DNS, TCP, UDP&lt;/p&gt;

&lt;p&gt;Example for syscalls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;Syscalls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Initialize&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Syscalls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NtAllocateVirtualMemory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;procHandle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;ref&lt;/span&gt; &lt;span class="n"&gt;baseAddr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;ref&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0x3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0x04&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The syscall module extracts SSNs at runtime so you don't need to hardcode them per Windows version. It also supports indirect dispatch via jmp r11 if you have a gadget.&lt;/p&gt;

&lt;p&gt;NuGet: SharpKit.Offensive&lt;br&gt;
Docs: github.com/CzaxStudio/SharpKit-Docs&lt;br&gt;
Repo: github.com/CzaxStudio/SharpKit&lt;/p&gt;

&lt;p&gt;Built for legal red teaming and research. Feedback welcome.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>cybersecurity</category>
      <category>redteaming</category>
      <category>nuget</category>
    </item>
    <item>
      <title>Title: Ferrum Studio: A Native IDE Built Exclusively for Nim (No Electron, ~12MB)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 02 May 2026 13:02:56 +0000</pubDate>
      <link>https://dev.to/czax225/title-ferrum-studio-a-native-ide-built-exclusively-for-nim-no-electron-12mb-294n</link>
      <guid>https://dev.to/czax225/title-ferrum-studio-a-native-ide-built-exclusively-for-nim-no-electron-12mb-294n</guid>
      <description>&lt;p&gt;Every IDE that supports Nim does it as an afterthought. You install a language server plugin, bolt it onto VS Code or Sublime, and hope the latest update didn't break something.&lt;/p&gt;

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

&lt;p&gt;So I built Ferrum Studio — a lightweight, native desktop IDE built from the ground up exclusively for Nim.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/user-attachments/assets/621bf84f-a3b5-4f1c-a7d4-85e3b3e83247" rel="noopener noreferrer"&gt;https://github.com/user-attachments/assets/621bf84f-a3b5-4f1c-a7d4-85e3b3e83247&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No Electron. No bundled Chromium. No 300MB of RAM just to open a file.&lt;/p&gt;

&lt;p&gt;Cold start: &amp;lt; 1 second&lt;/p&gt;

&lt;p&gt;RAM usage (idle): ~35 MB&lt;/p&gt;

&lt;p&gt;Binary size: ~12 MB (Windows)&lt;/p&gt;

&lt;p&gt;Built with Go + Wails, not JavaScript + Node. The backend is compiled Go, the frontend is a native WebView, and the whole thing talks across an auto-generated bridge.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Makes Ferrum Different?
&lt;/h1&gt;

&lt;p&gt;Most editors treat Nim as a plugin. Ferrum treats Nim as the only thing that matters.&lt;/p&gt;

&lt;p&gt;Every feature — snippets, error messages, templates, shortcuts — is designed around how Nim developers actually work.&lt;/p&gt;

&lt;p&gt;Editor Features&lt;br&gt;
Nim syntax highlighting (kept current with new keywords)&lt;/p&gt;

&lt;p&gt;Smart indentation (whitespace-aware)&lt;/p&gt;

&lt;p&gt;Dot-aware autocomplete&lt;/p&gt;

&lt;p&gt;Snippets support&lt;/p&gt;

&lt;p&gt;Inline error squiggles&lt;/p&gt;

&lt;p&gt;Multi-tab editing&lt;/p&gt;

&lt;p&gt;Quick open (Ctrl+P)&lt;/p&gt;

&lt;h1&gt;
  
  
  Nim Integration
&lt;/h1&gt;

&lt;p&gt;F5 → Run (nim c -r)&lt;/p&gt;

&lt;p&gt;F6 → Run with arguments&lt;/p&gt;

&lt;p&gt;F7 → Build&lt;/p&gt;

&lt;p&gt;F8 → Test&lt;/p&gt;

&lt;p&gt;Format via nim pretty&lt;/p&gt;

&lt;p&gt;Fast diagnostics via nim check&lt;/p&gt;

&lt;p&gt;Interactive stdin support&lt;/p&gt;

&lt;p&gt;Problems Panel&lt;br&gt;
Clean error explanations with fix suggestions. Click any error to jump directly to the line. No more cryptic compiler output — Ferrum translates common errors into plain English.&lt;/p&gt;

&lt;h1&gt;
  
  
  Templates
&lt;/h1&gt;

&lt;p&gt;One-click project templates for:&lt;/p&gt;

&lt;p&gt;CLI App&lt;/p&gt;

&lt;p&gt;Library&lt;/p&gt;

&lt;p&gt;Web App&lt;/p&gt;

&lt;p&gt;Async App&lt;/p&gt;

&lt;p&gt;Metaprogramming examples&lt;/p&gt;

&lt;h1&gt;
  
  
  Terminal
&lt;/h1&gt;

&lt;p&gt;Integrated terminal with ANSI colors, command history, and full interactive input support. Plus a "Nim Treasure Map" sidebar with curated code gems for common patterns.&lt;/p&gt;

&lt;h1&gt;
  
  
  Contributing
&lt;/h1&gt;

&lt;p&gt;Contributions are welcome. The best places to help:&lt;/p&gt;

&lt;p&gt;Add more error explanations in enhancements.js&lt;/p&gt;

&lt;p&gt;Keep the syntax highlighter updated with new Nim keywords&lt;/p&gt;

&lt;p&gt;Test on macOS/Linux&lt;/p&gt;

&lt;p&gt;Build a light theme&lt;/p&gt;

&lt;p&gt;Note on AI usage: The frontend UI was partially assisted by AI tools. The core backend and architecture were implemented manually.&lt;/p&gt;

&lt;h1&gt;
  
  
  Links
&lt;/h1&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/CzaxStudio/Ferrum-Studio" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Ferrum-Studio&lt;/a&gt;&lt;br&gt;
Website: &lt;a href="https://czaxstudio.github.io/Ferrum-Studio/" rel="noopener noreferrer"&gt;https://czaxstudio.github.io/Ferrum-Studio/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>performance</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Building Your First Cybersecurity Tool with Spectator: A New Language for Pentesters</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 29 Apr 2026 05:39:14 +0000</pubDate>
      <link>https://dev.to/czax225/building-your-first-cybersecurity-tool-with-spectator-a-new-language-for-pentesters-2fm9</link>
      <guid>https://dev.to/czax225/building-your-first-cybersecurity-tool-with-spectator-a-new-language-for-pentesters-2fm9</guid>
      <description>&lt;p&gt;The Problem We All Face&lt;br&gt;
Let's be honest: when you're in the middle of a penetration test or red team engagement, the last thing you want to do is wrestle with boilerplate code. You need to scan, exploit, and report — fast.&lt;/p&gt;

&lt;p&gt;Python is great, but:&lt;/p&gt;

&lt;p&gt;You need to install dependencies&lt;/p&gt;

&lt;p&gt;Virtual environments everywhere&lt;/p&gt;

&lt;p&gt;"It works on my machine" syndrome&lt;/p&gt;

&lt;p&gt;GUI tools? That means Electron (hello, 200MB hello world)&lt;/p&gt;

&lt;p&gt;Bash is powerful but... let's not talk about parsing JSON.&lt;/p&gt;

&lt;p&gt;Enter Spectator — a new programming language built from the ground up for cybersecurity work.&lt;/p&gt;

&lt;p&gt;What Is Spectator?&lt;br&gt;
Spectator is an interpreted scripting language (written in Go) that puts security operations front and center.&lt;/p&gt;
&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;# This is all it takes to recon a target
&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"scanme.nmap.org"&lt;/span&gt;
&lt;span class="n"&gt;ips&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"IPs: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ips&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;", "&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;PortScan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SSLInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Your First Spectator Tool: A Smart Port Scanner
&lt;/h2&gt;

&lt;p&gt;Step 1: Installation&lt;br&gt;
Download the binary from releases:&lt;/p&gt;
&lt;h1&gt;
  
  
  Linux/macOS
&lt;/h1&gt;

&lt;p&gt;chmod +x spectator&lt;br&gt;
./spectator version&lt;/p&gt;
&lt;h1&gt;
  
  
  Windows
&lt;/h1&gt;

&lt;p&gt;Spectator.exe version&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Create Your First Script
&lt;/h2&gt;

&lt;p&gt;Save this as smart_scan.str&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Capture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Target IP or domain: "&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Scanning: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="cp"&gt;## Define common ports and their services
&lt;/span&gt;&lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;445&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3306&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;27017&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;svcs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="s"&gt;"21"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"FTP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"22"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SSH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"23"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Telnet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"25"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SMTP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"80"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"443"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTPS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"445"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SMB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"3306"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"MySQL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"3389"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"RDP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"5432"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"PostgreSQL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"8080"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTP-Alt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"8443"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"HTTPS-Alt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"27017"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"MongoDB"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;open_ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Scanning ports...&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hasPort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;svcs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"   OPEN     "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"  ("&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;")"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="cp"&gt;## Store results
&lt;/span&gt;    &lt;span class="n"&gt;open_ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;open_ports&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;

    &lt;span class="cp"&gt;## Grab banner if it's HTTP/HTTPS
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;8443&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https"&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"http"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"://"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;":"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"      → Grabbing banner from "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

      &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"timeout"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"follow"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"      → Server: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"_banner"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cp"&gt;## Generate report
&lt;/span&gt;&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Summary:"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"    Open ports found: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;open_ports&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"    Results saved to scan_results.json and scan_report.html"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="cp"&gt;## Save JSON output
&lt;/span&gt;&lt;span class="n"&gt;json_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;jsonStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;writeFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scan_results.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="cp"&gt;## Create HTML report
&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Scan Report - "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/title&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;style&amp;gt;body{font-family:monospace;background:#0a0f1a;color:#e2e8f0;padding:20px}"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"h1{color:#00d4aa} table{border-collapse:collapse;width:100%}"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"th,td{border:1px solid #334155;padding:8px;text-align:left}"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"th{background:#1e293b}&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;h1&amp;gt; Spectator Scan Report&amp;lt;/h1&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Target:&amp;lt;/strong&amp;gt; "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/p&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Timestamp:&amp;lt;/strong&amp;gt; "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/p&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;h2&amp;gt; Open Ports&amp;lt;/h2&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Port&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Service&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Banner&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;

&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;open_ports&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port_str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hasKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"_banner"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"_banner"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"-"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;port_str&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;/table&amp;gt;&amp;lt;hr&amp;gt;&amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Generated by Spectator - See Everything. Miss Nothing.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;writeFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scan_report.html"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;Trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Done! Open scan_report.html in your browser."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Run Your Tool&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spectator run smart_scan.str
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No dependencies, no virtual environments, no "pip install requests." Just run.&lt;/p&gt;

&lt;p&gt;Level Up: Adding a GUI&lt;br&gt;
Here's where Spectator gets really interesting. Let's wrap that scanner in a native GUI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#Import Spec.GUI
&lt;/span&gt;
&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Spectator Port Scanner"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"width"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;900&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"height"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;700&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"bg"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#0a0f1a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"accent"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#00d4aa"&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Spectator Port Scanner"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Enter target (IP or domain)..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Start Scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"#00d4aa"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"height"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Please enter a target"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"[+] Scanning: "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"[+] Checking common ports..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;445&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3306&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8443&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

  &lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hasPort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"  ✓ Port "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;" is OPEN"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"  ✗ Port "&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;" is closed"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;GUI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[+] Scan complete!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows executable&lt;/span&gt;
spectator build scanner.str to PortScanner.exe &lt;span class="k"&gt;for &lt;/span&gt;windows

&lt;span class="c"&gt;# Linux binary&lt;/span&gt;
spectator build scanner.str to portscanner &lt;span class="k"&gt;for &lt;/span&gt;linux

&lt;span class="c"&gt;# macOS (Intel)&lt;/span&gt;
spectator build scanner.str to PortScanner &lt;span class="k"&gt;for &lt;/span&gt;mac
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your users don't need Spectator installed. The binary is completely self-contained.&lt;/p&gt;

&lt;p&gt;*GUI available only for windows.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Built-in Modules That Shine
&lt;/h1&gt;

&lt;p&gt;After playing with Spectator, here are the modules I found most useful:&lt;/p&gt;

&lt;h2&gt;
  
  
  Recon
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;ips&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;whois&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WHOIs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;geo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GeoIP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"8.8.8.8"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;subs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SubdomainEnum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"wordlist.txt"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Web Testing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HeaderAudit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tech&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;TechDetect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;sqli_test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SQLiTest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://target.com/page?id=1"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mission Reporting
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;missionStart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Web App Pentest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionStage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Recon"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionFind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"HIGH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Missing CSP header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"XSS possible"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionFind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"CRITICAL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"SQLi in login form"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Auth bypass"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;missionReport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"pentest_report.html"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  The Package Manager: Space
&lt;/h1&gt;

&lt;p&gt;Installing community libraries is straightforward and secure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;space&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;ghost&lt;/span&gt;

&lt;span class="n"&gt;spectator&lt;/span&gt; &lt;span class="n"&gt;space&lt;/span&gt; &lt;span class="n"&gt;verify&lt;/span&gt; &lt;span class="n"&gt;ghost&lt;/span&gt;

&lt;span class="cp"&gt;#Import ghost
&lt;/span&gt;&lt;span class="n"&gt;ghost_full&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"target.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;Full&lt;/span&gt; &lt;span class="n"&gt;OSINT&lt;/span&gt; &lt;span class="n"&gt;sweep&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Who Is This For?
&lt;/h1&gt;

&lt;p&gt;Penetration testers who want to automate repetitive tasks without fighting tooling.&lt;/p&gt;

&lt;p&gt;Red teamers who need quick, reliable scripts that work everywhere (thanks to standalone binaries).&lt;/p&gt;

&lt;p&gt;Bug bounty hunters who want to build custom scanners without dependency hell.&lt;/p&gt;

&lt;p&gt;Security researchers who need to prototype attack techniques rapidly.&lt;/p&gt;

&lt;p&gt;Tool builders who want to distribute GUI security tools without Electron bloat.&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting Started Today
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Download&lt;/span&gt;
wget https://github.com/CzaxStudio/Spectator/releases/latest/download/spectator-linux
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x spectator-linux

&lt;span class="c"&gt;# 2. Run REPL&lt;/span&gt;
./spectator-linux repl

&lt;span class="c"&gt;# 3. Try hello world&lt;/span&gt;
Trace&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Hello, Spectator!"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# 4. Install a library&lt;/span&gt;
./spectator-linux space get coffee

&lt;span class="c"&gt;# 5. Build something&lt;/span&gt;
./spectator-linux build mytool.str to scanner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Documentation: spectatorlang.pages.dev&lt;br&gt;
GitHub: github.com/CzaxStudio/Spectator&lt;br&gt;
Examples: Check the examples/ directory in the repo&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Is Spectator going to replace Python for security work? Not tomorrow. But it's solving real problems that Python has ignored for years — dependency management, cross-platform GUI apps, and built-in security primitives.&lt;/p&gt;

&lt;p&gt;For pentesters tired of the "pip install → version conflict → break everything" cycle, Spectator is a breath of fresh air. And at 7 stars on GitHub (as of writing), you can get in on the ground floor.&lt;/p&gt;

&lt;p&gt;Try it on your next CTF or internal tool. You might be surprised how fast you can go from idea to working executable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks
&lt;/h2&gt;

&lt;p&gt;What tools would you build with a language like this? Drop a comment below!&lt;/p&gt;

&lt;p&gt;Follow for more: I'll be posting Spectator tutorials, security tools, and red team automation scripts in the coming weeks.&lt;/p&gt;

&lt;p&gt;Spectator v2.0.0 — "See Everything. Miss Nothing."&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>go</category>
      <category>spectator</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introducing Mamba: A Powerful Python OSINT Library for Security Researchers</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Wed, 29 Apr 2026 05:09:08 +0000</pubDate>
      <link>https://dev.to/czax225/introducing-mamba-a-powerful-python-osint-library-for-security-researchers-1fa6</link>
      <guid>https://dev.to/czax225/introducing-mamba-a-powerful-python-osint-library-for-security-researchers-1fa6</guid>
      <description>&lt;p&gt;What is Mamba?&lt;br&gt;
Mamba is a production-ready OSINT (Open Source Intelligence) library that makes security research and reconnaissance simple in Python. With just a few lines of code, you can investigate emails, domains, usernames, phone numbers, and IP addresses.&lt;/p&gt;

&lt;p&gt;GitHub: CzaxStudio/Mamba&lt;br&gt;
PyPI: pip install mamba-security&lt;/p&gt;

&lt;p&gt;Why I Built Mamba&lt;br&gt;
As a security researcher, I found myself writing the same code repeatedly for OSINT investigations. Each project needed:&lt;/p&gt;

&lt;p&gt;Email breach checking&lt;/p&gt;

&lt;p&gt;WHOIS lookups&lt;/p&gt;

&lt;p&gt;Username enumeration&lt;/p&gt;

&lt;p&gt;Phone validation&lt;/p&gt;

&lt;p&gt;IP geolocation&lt;/p&gt;

&lt;p&gt;I built Mamba to solve this. It's designed to be:&lt;/p&gt;

&lt;p&gt;Easy to use - One line of code for complex OSINT tasks&lt;/p&gt;

&lt;p&gt;Production ready - Rate limiting, caching, and error handling built-in&lt;/p&gt;

&lt;p&gt;Well tested - Comprehensive test suite&lt;/p&gt;

&lt;p&gt;Industry standard - Type hints, proper documentation&lt;/p&gt;

&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mamba&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MambaClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EmailReputation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DomainIntel&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nc"&gt;MambaClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Check email
&lt;/span&gt;    &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;EmailReputation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;validate_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;researcher@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Valid email: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;valid_format&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Domain WHOIS
&lt;/span&gt;    &lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DomainIntel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;whois_lookup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Registrar: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;registrar&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requirements&lt;br&gt;
Python 3.8+&lt;/p&gt;

&lt;p&gt;Internet connection for API calls&lt;/p&gt;

&lt;h1&gt;
  
  
  Documentation &amp;amp; Learning
&lt;/h1&gt;

&lt;p&gt;Complete Mamba Documentation: GitHub - MambaDocumentation&lt;/p&gt;

&lt;p&gt;The documentation repository includes:&lt;/p&gt;

&lt;p&gt;Step-by-step tutorials&lt;/p&gt;

&lt;p&gt;Complete API reference&lt;/p&gt;

&lt;p&gt;Real-world examples&lt;/p&gt;

&lt;p&gt;Best practices for OSINT&lt;/p&gt;

&lt;p&gt;Roadmap&lt;br&gt;
Add more breach databases&lt;/p&gt;

&lt;p&gt;Support for Dark Web monitoring&lt;/p&gt;

&lt;p&gt;Social media API integration&lt;/p&gt;

&lt;p&gt;Machine learning for threat detection&lt;/p&gt;

&lt;p&gt;Plugin system for custom sources&lt;/p&gt;

&lt;p&gt;Contributing&lt;br&gt;
Contributions are welcome! Open issues, submit PRs, or suggest features.&lt;/p&gt;

&lt;p&gt;License&lt;br&gt;
MIT License - Free for commercial and personal use&lt;/p&gt;

&lt;p&gt;Connect With Me&lt;br&gt;
GitHub: CzaxStudio&lt;/p&gt;

&lt;p&gt;Star the Repo ⭐&lt;br&gt;
If Mamba helps you, please star the repository on GitHub. It helps others discover the project!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/CzaxStudio/Mamba" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Mamba&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy OSINT investigations!&lt;/p&gt;

</description>
      <category>python</category>
      <category>osint</category>
      <category>cybersecurity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a lightweight IDE for Nim — focused, fast, and simple</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Thu, 23 Apr 2026 08:36:44 +0000</pubDate>
      <link>https://dev.to/czax225/i-built-a-lightweight-ide-for-zig-focused-fast-and-simple-40m7</link>
      <guid>https://dev.to/czax225/i-built-a-lightweight-ide-for-zig-focused-fast-and-simple-40m7</guid>
      <description>&lt;p&gt;Most Nim developers today use tools like Visual Studio Code with extensions.&lt;/p&gt;

&lt;p&gt;It works — but I kept wondering:&lt;/p&gt;

&lt;p&gt;What would a Nim-first IDE feel like if it was designed around simplicity and speed?&lt;/p&gt;

&lt;p&gt;So I built one.&lt;/p&gt;

&lt;p&gt;Ferrum Studio.&lt;/p&gt;

&lt;p&gt;Why I built this&lt;/p&gt;

&lt;p&gt;While learning and working with Nim, I noticed the workflow often feels adapted rather than designed for the language.&lt;/p&gt;

&lt;p&gt;You install an editor, configure extensions, tweak settings… and eventually it works.&lt;/p&gt;

&lt;p&gt;But I wanted something simpler:&lt;/p&gt;

&lt;p&gt;Open a Nim file&lt;br&gt;
Press run&lt;br&gt;
See output immediately&lt;/p&gt;

&lt;p&gt;No friction. No setup overhead.&lt;/p&gt;

&lt;p&gt;What Ferrum Studio does&lt;/p&gt;

&lt;p&gt;Ferrum Studio is a lightweight IDE focused specifically on Nim.&lt;/p&gt;

&lt;p&gt;A few things upfront:&lt;/p&gt;

&lt;p&gt;Built with Go + Wails (uses a system webview — no bundled Chromium)&lt;br&gt;
Frontend parts were built with help from AI tools (I’m still learning JavaScript)&lt;br&gt;
Backend, Nim integration, and overall structure are written by me&lt;br&gt;
Features (current)&lt;br&gt;
Run Nim files with live output&lt;br&gt;
Build (nim build), test, and ast-check integration&lt;br&gt;
Inline error display with simplified explanations&lt;br&gt;
Basic autocomplete and snippets&lt;br&gt;
Project templates (CLI, library, TCP server, embedded)&lt;br&gt;
Integrated terminal with stdin support&lt;br&gt;
Nim auto-detection&lt;br&gt;
The main goal: a smooth workflow&lt;/p&gt;

&lt;p&gt;The focus is on making this loop fast and simple:&lt;/p&gt;

&lt;p&gt;open → run → see output → interact → fix errors&lt;/p&gt;

&lt;p&gt;Handling things like:&lt;/p&gt;

&lt;p&gt;real-time output streaming&lt;br&gt;
stdin interaction&lt;br&gt;
process control&lt;/p&gt;

&lt;p&gt;…took more work than expected, but this is the part I’m most proud of.&lt;/p&gt;

&lt;p&gt;Who should use this (right now)&lt;/p&gt;

&lt;p&gt;Ferrum Studio is still early, but it’s already useful for:&lt;/p&gt;

&lt;p&gt;Developers learning Nim who want a simple environment&lt;br&gt;
People who prefer lightweight tools over heavier setups&lt;br&gt;
Anyone who wants a fast “open → run → test” workflow&lt;/p&gt;

&lt;p&gt;If you rely heavily on advanced IDE features (full LSP, deep refactoring, debugging), tools like Visual Studio Code are still better today.&lt;/p&gt;

&lt;p&gt;But if you want a focused, minimal Nim workflow — this already works well.&lt;/p&gt;

&lt;p&gt;What I learned&lt;/p&gt;

&lt;p&gt;This project taught me a lot:&lt;/p&gt;

&lt;p&gt;How Nim tooling works in practice (run, build, test, ast-check)&lt;br&gt;
Managing subprocesses and terminal interaction&lt;br&gt;
Designing an editor around a single language&lt;br&gt;
Using AI tools effectively for parts I’m less experienced in&lt;br&gt;
What’s next&lt;br&gt;
Deciding between lightweight autocomplete vs full LSP (ZLS)&lt;br&gt;
Improving error explanations&lt;br&gt;
Exploring debugging support&lt;br&gt;
Cleaning up and improving the codebase&lt;br&gt;
Feedback?&lt;/p&gt;

&lt;p&gt;I’d really appreciate input:&lt;/p&gt;

&lt;p&gt;What do you expect from a Nim-focused IDE?&lt;br&gt;
What slows you down in your current workflow?&lt;br&gt;
What would make this genuinely useful for you?&lt;br&gt;
Project&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/CzaxStudio/Ferrum-Studio" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Ferrum-Studio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final thoughts&lt;/p&gt;

&lt;p&gt;This started as an experiment — but it’s already shaping how I think about developer tools.&lt;/p&gt;

&lt;p&gt;Simple, fast, and focused.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🙂&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ide</category>
      <category>nim</category>
    </item>
    <item>
      <title>Spectator - A programming language for cybersecurity(GUI, CLI, TUI built in)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 04 Apr 2026 06:51:30 +0000</pubDate>
      <link>https://dev.to/czax225/spectator-a-programming-language-for-cybersecuritygui-cli-tui-built-in-1moe</link>
      <guid>https://dev.to/czax225/spectator-a-programming-language-for-cybersecuritygui-cli-tui-built-in-1moe</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2Fhbaebplzipyfxb87hicw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhbaebplzipyfxb87hicw.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Spectator — A Cybersecurity Language That Actually Gets Work Done
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;███████╗██████╗ ███████╗ ██████╗████████╗ █████╗ ████████╗ ██████╗ ██████╗
██╔════╝██╔══██╗██╔════╝██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗
███████╗██████╔╝█████╗  ██║        ██║   ███████║   ██║   ██║   ██║██████╔╝
╚════██║██╔═══╝ ██╔══╝  ██║        ██║   ██╔══██║   ██║   ██║   ██║██╔══██╗
███████║██║     ███████╗╚██████╗   ██║   ██║  ██║   ██║   ╚██████╔╝██║  ██║
╚══════╝╚═╝     ╚══════╝ ╚═════╝   ╚═╝   ╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;See Everything. Miss Nothing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What if your entire cybersecurity workflow lived inside one language?&lt;/p&gt;

&lt;p&gt;No switching between Python, Bash, and dozens of disconnected tools.&lt;br&gt;
No glue scripts. No messy pipelines.&lt;/p&gt;

&lt;p&gt;Just one clean, purpose-built system.&lt;/p&gt;

&lt;p&gt;That’s Spectator.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Modern security workflows are fragmented by design.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python for scripting&lt;/li&gt;
&lt;li&gt;Bash for automation&lt;/li&gt;
&lt;li&gt;Standalone tools for scanning and fuzzing&lt;/li&gt;
&lt;li&gt;Separate stacks for GUI tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything works — but nothing works together.&lt;/p&gt;

&lt;p&gt;You spend more time connecting tools than actually testing systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Idea Behind Spectator
&lt;/h2&gt;

&lt;p&gt;Spectator is a cybersecurity-first scripting language designed to unify your workflow.&lt;/p&gt;

&lt;p&gt;It combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple, readable syntax&lt;/li&gt;
&lt;li&gt;Built-in security modules&lt;/li&gt;
&lt;li&gt;Native GUI framework&lt;/li&gt;
&lt;li&gt;Integrated package manager&lt;/li&gt;
&lt;li&gt;Standalone binary compilation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All inside a single runtime.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recon in 5 Lines
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;target = "scanme.nmap.org"
ips = resolve(target)
Trace("IPs: " --&amp;gt; join(ips, ", "))
do --&amp;gt; PortScan(target, 1, 1024)
do --&amp;gt; SSLInfo(target)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No imports. No external dependencies. No setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build a Real GUI Tool
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Import Spec.GUI

open.window({"title": "Ghost Recon", "bg": "#070b14", "accent": "#00d4aa"})
GUI.input("target", "Enter target...")
GUI.button("Scan", "run", {"color": "#00d4aa"})
GUI.output("out", {"height": 400})

GUI.on("run", func() {
  t = GUI.get("target")
  ips = resolve(t)
  each ip : ips {
    GUI.print("out", "IP: " --&amp;gt; ip)
  }
})
end()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Electron. No web stack. No Python GUI frameworks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built-in Security Modules
&lt;/h2&gt;

&lt;p&gt;Spectator includes native support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recon: PortScan, DNSLookup, CIDRScan&lt;/li&gt;
&lt;li&gt;OSINT: WHOIS, GeoIP, Subdomain Enumeration&lt;/li&gt;
&lt;li&gt;Web: HTTP probing, header analysis, SSL inspection&lt;/li&gt;
&lt;li&gt;Exploitation: SQLi, CORS, Open Redirect testing&lt;/li&gt;
&lt;li&gt;Fuzzing: Directory busting, URL fuzzing&lt;/li&gt;
&lt;li&gt;Payload generation for multiple attack vectors&lt;/li&gt;
&lt;li&gt;Encoding, hashing, and cryptographic utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is directly accessible from the language.&lt;/p&gt;




&lt;h2&gt;
  
  
  HTTP Engine Included
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resp = http("GET", "https://target.com", {"timeout": 5000})
Trace(httpStatus(resp))
Trace(extractTitle(httpBody(resp)))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No external libraries required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mission Engine for Structured Testing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;m = missionStart("Web App Pentest", "target.com")

missionStage(m, "Recon")
missionFind(m, "CRITICAL", ".env exposed", "Credentials leaked")

missionEnd(m)
missionReport(m, "report.html")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate structured reports automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Space Package Manager
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spectator space get coffee
spectator space verify coffee
spectator space registry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All packages are SHA-256 verified by default.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build Standalone Tools
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spectator build tool.str to Tool.exe for windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No runtime required for end users.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Spectator Exists
&lt;/h2&gt;

&lt;p&gt;Because cybersecurity tooling is unnecessarily complex.&lt;/p&gt;

&lt;p&gt;Because developers keep rebuilding the same pipelines.&lt;/p&gt;

&lt;p&gt;Because switching between tools breaks flow.&lt;/p&gt;

&lt;p&gt;Spectator removes that friction.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://spectatorlang.pages.dev/" rel="noopener noreferrer"&gt;https://spectatorlang.pages.dev/&lt;/a&gt;&lt;br&gt;
Documentation: &lt;a href="https://github.com/CzaxStudio/SpectatorDocs/" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/SpectatorDocs/&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/CzaxStudio/Spectator" rel="noopener noreferrer"&gt;https://github.com/CzaxStudio/Spectator&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Spectator is not trying to replace existing tools.&lt;/p&gt;

&lt;p&gt;It is trying to replace the need to glue them together.&lt;/p&gt;

&lt;p&gt;If you build tools, automate testing, or work in offensive security — this is for you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cybersecurity</category>
      <category>opensource</category>
      <category>go</category>
    </item>
    <item>
      <title>I Built a Cybersecurity-Only Programming Language (So You Don’t Need 200 Lines of Python)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Sat, 03 Jan 2026 05:54:23 +0000</pubDate>
      <link>https://dev.to/czax225/i-built-a-cybersecurity-only-programming-language-so-you-dont-need-200-lines-of-python-1ime</link>
      <guid>https://dev.to/czax225/i-built-a-cybersecurity-only-programming-language-so-you-dont-need-200-lines-of-python-1ime</guid>
      <description>&lt;p&gt;Cybersecurity scripting today mostly relies on general-purpose languages like Python, Bash, or Go.&lt;/p&gt;

&lt;p&gt;They work — but they come with problems:&lt;/p&gt;

&lt;p&gt;Too many libraries&lt;/p&gt;

&lt;p&gt;Long scripts for simple tasks&lt;/p&gt;

&lt;p&gt;Environment setup issues&lt;/p&gt;

&lt;p&gt;Slower execution for small utilities&lt;/p&gt;

&lt;p&gt;So I asked a simple question:&lt;/p&gt;

&lt;p&gt;Why isn’t there a programming language made only for cybersecurity?&lt;/p&gt;

&lt;p&gt;That’s how Cyber+ was born.&lt;/p&gt;

&lt;p&gt;What is Cyber+?&lt;/p&gt;

&lt;p&gt;Cyber+ is a domain-specific programming language (DSL) built exclusively for cybersecurity tasks.&lt;/p&gt;

&lt;p&gt;It is not a replacement for Python or Go.&lt;br&gt;
It is a workflow language for security operations.&lt;/p&gt;

&lt;p&gt;Instead of writing long scripts and importing heavy libraries, Cyber+ provides built-in security commands.&lt;/p&gt;

&lt;p&gt;And because it’s implemented in Go, it’s fast and distributed as a single binary.&lt;/p&gt;

&lt;p&gt;The Problem with Current Approaches&lt;/p&gt;

&lt;p&gt;Let’s take a very common task: hashing.&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
import hashlib&lt;/p&gt;

&lt;p&gt;data = "password".encode()&lt;br&gt;
hash_value = hashlib.sha256(data).hexdigest()&lt;br&gt;
print(hash_value)&lt;/p&gt;

&lt;p&gt;That’s fine — but this is a simple example.&lt;/p&gt;

&lt;p&gt;Now imagine:&lt;/p&gt;

&lt;p&gt;Encoding / decoding&lt;/p&gt;

&lt;p&gt;Password generation&lt;/p&gt;

&lt;p&gt;Port scanning&lt;/p&gt;

&lt;p&gt;File integrity checks&lt;/p&gt;

&lt;p&gt;Repetitive CTF automation&lt;/p&gt;

&lt;p&gt;Scripts quickly become long and repetitive.&lt;/p&gt;

&lt;p&gt;The Cyber+ Approach&lt;/p&gt;

&lt;p&gt;In Cyber+, the same task looks like this:&lt;/p&gt;

&lt;p&gt;Hash_Compute("password", "sha256")&lt;/p&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;No imports.&lt;br&gt;
No setup.&lt;br&gt;
No boilerplate.&lt;/p&gt;

&lt;p&gt;Why a DSL?&lt;/p&gt;

&lt;p&gt;Cybersecurity already uses DSLs successfully:&lt;/p&gt;

&lt;p&gt;SQL for databases&lt;/p&gt;

&lt;p&gt;Bash for automation&lt;/p&gt;

&lt;p&gt;YARA for malware detection&lt;/p&gt;

&lt;p&gt;Cyber+ follows the same idea:&lt;/p&gt;

&lt;p&gt;One language, one domain, maximum clarity.&lt;/p&gt;

&lt;p&gt;Each Cyber+ command directly represents a security action, not a programming construct.&lt;/p&gt;

&lt;p&gt;Core Design Goals&lt;/p&gt;

&lt;p&gt;Cyber+ is designed to be:&lt;/p&gt;

&lt;p&gt;Security-first (only cybersecurity features)&lt;/p&gt;

&lt;p&gt;Fast (Go-powered execution)&lt;/p&gt;

&lt;p&gt;Beginner-friendly&lt;/p&gt;

&lt;p&gt;Minimal syntax&lt;/p&gt;

&lt;p&gt;Single binary (no runtime hell)&lt;/p&gt;

&lt;p&gt;Who is Cyber+ For?&lt;/p&gt;

&lt;p&gt;Cyber+ is especially useful for:&lt;/p&gt;

&lt;p&gt;Cybersecurity students&lt;/p&gt;

&lt;p&gt;CTF players&lt;/p&gt;

&lt;p&gt;Security automation&lt;/p&gt;

&lt;p&gt;Learning-focused environments&lt;/p&gt;

&lt;p&gt;Quick scripting tasks&lt;/p&gt;

&lt;p&gt;It’s not meant to replace full frameworks — it’s meant to remove friction.&lt;/p&gt;

&lt;p&gt;Real Use Cases&lt;/p&gt;

&lt;p&gt;Automating CTF challenges&lt;/p&gt;

&lt;p&gt;Quick hashing / encoding utilities&lt;/p&gt;

&lt;p&gt;Password and wordlist operations&lt;/p&gt;

&lt;p&gt;Lightweight recon scripts&lt;/p&gt;

&lt;p&gt;Teaching cybersecurity fundamentals&lt;/p&gt;

&lt;p&gt;Why It’s Written in Go&lt;/p&gt;

&lt;p&gt;Using Go allows Cyber+ to:&lt;/p&gt;

&lt;p&gt;Run fast&lt;/p&gt;

&lt;p&gt;Compile to static binaries&lt;/p&gt;

&lt;p&gt;Avoid dependency issues&lt;/p&gt;

&lt;p&gt;Work across platforms easily&lt;/p&gt;

&lt;p&gt;This matters a lot in security workflows.&lt;/p&gt;

&lt;p&gt;Open Source &amp;amp; Early Stage&lt;/p&gt;

&lt;p&gt;Cyber+ is open source and still evolving.&lt;/p&gt;

&lt;p&gt;Feedback, ideas, and contributions are welcome — especially from:&lt;/p&gt;

&lt;p&gt;Security professionals&lt;/p&gt;

&lt;p&gt;Students&lt;/p&gt;

&lt;p&gt;Educators&lt;/p&gt;

&lt;p&gt;Tool builders&lt;/p&gt;

&lt;p&gt;GitHub&lt;/p&gt;

&lt;p&gt;Project repository:&lt;br&gt;
 &lt;a href="https://github.com/TanmayCzax/Cyber-Programming-language-Alpha" rel="noopener noreferrer"&gt;https://github.com/TanmayCzax/Cyber-Programming-language-Alpha&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Cyber+ isn’t trying to be the next Python.&lt;/p&gt;

&lt;p&gt;It’s trying to be something simpler:&lt;/p&gt;

&lt;p&gt;A language that lets you focus on cybersecurity, not code overhead.&lt;/p&gt;

&lt;p&gt;If you’ve ever thought “this script shouldn’t be this long” — Cyber+ might be for you.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I Built a Cybersecurity Programming Language in Go (Cyber+)</title>
      <dc:creator>Czax225</dc:creator>
      <pubDate>Fri, 19 Dec 2025 12:41:56 +0000</pubDate>
      <link>https://dev.to/czax225/i-built-a-cybersecurity-programming-language-in-go-cyber-1jdo</link>
      <guid>https://dev.to/czax225/i-built-a-cybersecurity-programming-language-in-go-cyber-1jdo</guid>
      <description>&lt;p&gt;I’m experimenting with a small domain-specific language for ethical cyber security tasks&lt;br&gt;
(recon, DNS, OSINT, HTTP inspection).&lt;/p&gt;

&lt;p&gt;The idea is to reduce reliance on Bash scripts and multiple tools&lt;br&gt;
by offering a minimal, command-based syntax.&lt;/p&gt;

&lt;p&gt;Example usage:&lt;br&gt;
Recon("example.com");&lt;br&gt;
Phone_Info("+91XXXXXXXXXX");&lt;br&gt;
Scan_Port("8.8.8.8", 53);&lt;/p&gt;

&lt;p&gt;I’m mainly looking for feedback on:&lt;br&gt;
• Syntax readability&lt;br&gt;
• Whether this feels more like a language or a wrapper&lt;br&gt;
• What features you’d expect in a security DSL&lt;/p&gt;

&lt;p&gt;Here is the repo link -- &lt;a href="https://github.com/TanmayCzax/Cyber-Programming-language" rel="noopener noreferrer"&gt;https://github.com/TanmayCzax/Cyber-Programming-language&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>discuss</category>
      <category>showdev</category>
      <category>go</category>
    </item>
  </channel>
</rss>
