<?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: Paras</title>
    <description>The latest articles on DEV Community by Paras (@barbiekiller).</description>
    <link>https://dev.to/barbiekiller</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3967054%2F6d226b26-caa9-4338-8780-a391520252ee.jpeg</url>
      <title>DEV Community: Paras</title>
      <link>https://dev.to/barbiekiller</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/barbiekiller"/>
    <language>en</language>
    <item>
      <title>You Just Got Handed a Mystery Binary. Now What?</title>
      <dc:creator>Paras</dc:creator>
      <pubDate>Tue, 03 Nov 2026 07:09:29 +0000</pubDate>
      <link>https://dev.to/barbiekiller/you-just-got-handed-a-mystery-binary-now-what-542b</link>
      <guid>https://dev.to/barbiekiller/you-just-got-handed-a-mystery-binary-now-what-542b</guid>
      <description>&lt;p&gt;Someone drops a file in your lap. No source code, no docs, no idea what it does. Maybe it's a CTF challenge. Maybe it's a suspicious attachment. Maybe it's a dependency you don't quite trust.&lt;/p&gt;

&lt;p&gt;So you start the usual ritual: &lt;code&gt;strings&lt;/code&gt; here, &lt;code&gt;xxd&lt;/code&gt; there, &lt;code&gt;objdump&lt;/code&gt; for the imports, another tool for the headers, a different one for the hash. Five tools, five outputs, and you're still stitching the story together by hand.&lt;/p&gt;

&lt;p&gt;That's the exact friction &lt;strong&gt;hexlens&lt;/strong&gt; was built to kill.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem hiding in plain sight
&lt;/h2&gt;

&lt;p&gt;Binaries don't explain themselves. Every question you ask needs a different tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What kind of file is this?&lt;/strong&gt; — PE, ELF, Mach-O, DEX, .NET — each with its own parser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What does it import?&lt;/strong&gt; — and does its &lt;strong&gt;imphash&lt;/strong&gt; match known malware?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What's inside?&lt;/strong&gt; — strings, sections, headers, all scattered across outputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For CTF players, malware triage, and forensics work, that tool-hopping is the slowest part of the job. The analysis isn't hard — getting to it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What hexlens does
&lt;/h2&gt;

&lt;p&gt;hexlens is an &lt;strong&gt;open-source binary intelligence and reverse engineering framework&lt;/strong&gt; that puts the answers in one place. Point it at a binary and get the intelligence that matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Format support across PE, ELF, Mach-O, DEX, and .NET&lt;/strong&gt; — one tool, whatever you're handed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import analysis and imphash&lt;/strong&gt; — spot known-bad patterns fast, and compare binaries by behavior instead of bytes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security and forensics focus&lt;/strong&gt; — built for malware analysis and CTF forensics, not just hex dumps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A TUI&lt;/strong&gt; — browse the binary interactively instead of drowning in terminal scrollback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of five tools and a notebook, you get one view of what the binary is and what it does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;hexlens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run &lt;code&gt;hexlens&lt;/code&gt; against your binary and start with the imports and headers — that's where the story usually is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Reverse engineering tooling is powerful but fragmented, and most of it assumes you already know what you're looking for. I wanted something that answers the first five questions about an unknown binary immediately, so you can spend your time on the actual analysis instead of the setup.&lt;/p&gt;

&lt;p&gt;hexlens is at &lt;strong&gt;v0.2.0&lt;/strong&gt; now, with &lt;strong&gt;400+ total downloads on npm&lt;/strong&gt;. It's still early — if you throw a weird binary at it and it chokes, or there's a format you need, I'd genuinely love to hear about it.&lt;/p&gt;

&lt;p&gt;Try it, break it, and tell me what it missed. &lt;strong&gt;Feedback welcome.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/hexlens" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/hexlens&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/parasraju/hexlens" rel="noopener noreferrer"&gt;https://github.com/parasraju/hexlens&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Open-source binary intelligence &amp;amp; reverse engineering framework. &lt;code&gt;npm install hexlens&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>reverseengineering</category>
      <category>cybersecurity</category>
      <category>opensource</category>
      <category>cli</category>
    </item>
    <item>
      <title>Stop Catting Your .env File</title>
      <dc:creator>Paras</dc:creator>
      <pubDate>Tue, 03 Nov 2026 07:06:35 +0000</pubDate>
      <link>https://dev.to/barbiekiller/stop-catting-your-env-file-318h</link>
      <guid>https://dev.to/barbiekiller/stop-catting-your-env-file-318h</guid>
      <description>&lt;p&gt;We've all done it. Something's broken, someone asks "what's in your env?", and you run:&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;cat&lt;/span&gt; .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you paste the output into Slack, a GitHub issue, or a screen share — and only afterwards remember that file holds your &lt;strong&gt;database password&lt;/strong&gt;, your &lt;strong&gt;API keys&lt;/strong&gt;, and your &lt;strong&gt;production tokens&lt;/strong&gt;. Now they're in chat history forever.&lt;/p&gt;

&lt;p&gt;That's the exact accident &lt;strong&gt;environmental-peek&lt;/strong&gt; exists to prevent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem hiding in plain sight
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;.env&lt;/code&gt; files are the worst-kept secrets in software. They sit in every project, they're full of credentials, and the only way to check them is to print them in full:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Debugging in public&lt;/strong&gt; — pasting &lt;code&gt;.env&lt;/code&gt; output into a support thread or team chat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen sharing&lt;/strong&gt; — one &lt;code&gt;cat .env&lt;/code&gt; during a call and the whole meeting has your keys&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI logs&lt;/strong&gt; — a stray &lt;code&gt;printenv&lt;/code&gt; in a debug step and your secrets are in the build log&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You rarely need the actual values. What you actually want to know is: &lt;strong&gt;which keys are set, which are missing, and is anything misspelled?&lt;/strong&gt; That's a very different question from "show me all my secrets."&lt;/p&gt;

&lt;h2&gt;
  
  
  What environmental-peek does
&lt;/h2&gt;

&lt;p&gt;environmental-peek lets you &lt;strong&gt;safely inspect your &lt;code&gt;.env&lt;/code&gt; files without leaking secrets&lt;/strong&gt;. It shows you the structure of your environment — what keys exist and whether they're set — while keeping the sensitive values masked.&lt;/p&gt;

&lt;p&gt;So instead of dumping credentials to check why your app can't connect, you get answers like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;DATABASE_URL&lt;/code&gt;&lt;/strong&gt; — set ✓&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;STRIPE_SECRET_KEY&lt;/code&gt;&lt;/strong&gt; — missing ✗ (there's your bug)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;API_KEY&lt;/code&gt;&lt;/strong&gt; — set ✓&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No values on screen. No secrets in chat history. No panic after you hit send.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;environmental-peek
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run &lt;code&gt;envpeek&lt;/code&gt; in your project and check your environment the safe way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Every "don't commit your .env" guide stops at the git part. Nobody talks about the dozen other ways secrets leak — the paste, the screenshot, the shared terminal. I wanted a tool that makes the safe way also the easy way, so checking your environment stops being a security incident waiting to happen.&lt;/p&gt;

&lt;p&gt;environmental-peek is at &lt;strong&gt;v0.2.0&lt;/strong&gt; now, with &lt;strong&gt;400+ total downloads on npm&lt;/strong&gt;. It's still early — if you try it and there's a case it doesn't cover, I'd genuinely love to hear about it.&lt;/p&gt;

&lt;p&gt;Try it, break it, and tell me what it missed. &lt;strong&gt;Feedback welcome.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/environmental-peek" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/environmental-peek&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/parasraju/environmental-peek" rel="noopener noreferrer"&gt;https://github.com/parasraju/environmental-peek&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Safely inspect your .env files without leaking secrets. &lt;code&gt;npm install environmental-peek&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotenv</category>
      <category>security</category>
      <category>node</category>
      <category>cli</category>
    </item>
    <item>
      <title>Your CI/CD Pipeline Is the Easiest Way Into Your Repo (And Nobody's Checking It)</title>
      <dc:creator>Paras</dc:creator>
      <pubDate>Tue, 03 Nov 2026 06:59:29 +0000</pubDate>
      <link>https://dev.to/barbiekiller/your-cicd-pipeline-is-the-easiest-way-into-your-repo-and-nobodys-checking-it-164h</link>
      <guid>https://dev.to/barbiekiller/your-cicd-pipeline-is-the-easiest-way-into-your-repo-and-nobodys-checking-it-164h</guid>
      <description>&lt;h1&gt;
  
  
  Your CI/CD Pipeline Is the Easiest Way Into Your Repo (And Nobody's Checking It)
&lt;/h1&gt;

&lt;p&gt;Your code gets reviewed. Your dependencies get scanned. But your &lt;strong&gt;CI/CD pipeline&lt;/strong&gt; — the thing with access to your &lt;strong&gt;secrets&lt;/strong&gt;, your &lt;strong&gt;deployments&lt;/strong&gt;, and your &lt;strong&gt;production credentials&lt;/strong&gt; — usually gets copy-pasted from a tutorial and never looked at again.&lt;/p&gt;

&lt;p&gt;That's the gap &lt;strong&gt;plumber-linter&lt;/strong&gt; was built for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem hiding in plain sight
&lt;/h2&gt;

&lt;p&gt;Here's a workflow file that looks completely normal. It's also a &lt;strong&gt;security incident waiting to happen&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CI&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write-all&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;some-random-action/setup-node@main&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;echo "Deploying..."&lt;/span&gt;
          &lt;span class="s"&gt;curl -H "Authorization: Bearer AKIAIOSFODNN7EXAMPLE" https://api.example.com/deploy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Three problems, zero warnings from your CI:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;permissions: write-all&lt;/code&gt;&lt;/strong&gt; — the workflow can do everything: push code, read secrets, modify releases. A compromised step inherits all of it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An unpinned action (&lt;code&gt;@main&lt;/code&gt;)&lt;/strong&gt; — you're running whatever the maintainer pushes next, sight unseen. If that repo gets hijacked, so does your pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A hardcoded secret in a run step&lt;/strong&gt; — it now lives in your git history forever, and anyone with repo access can read it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most teams find these during an incident review. &lt;strong&gt;plumber-linter finds them before that.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What plumber-linter does
&lt;/h2&gt;

&lt;p&gt;plumber-linter scans your CI/CD pipeline configs — &lt;strong&gt;GitHub Actions&lt;/strong&gt; and &lt;strong&gt;GitLab CI&lt;/strong&gt; — and flags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoded secrets&lt;/strong&gt; in workflow files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overly broad permissions&lt;/strong&gt; like &lt;code&gt;write-all&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unpinned third-party actions&lt;/strong&gt; that can change under you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing branch protections&lt;/strong&gt; that let unreviewed code straight into main&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And instead of cryptic rule IDs, it explains each finding in &lt;strong&gt;plain English&lt;/strong&gt; — what the risk actually is, and how to fix it. So even if you're not a security person, you know exactly what to change and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;plumber-linter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Point it at your pipeline configs, fix what it flags, and your next deploy is already safer than your last one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Pipeline security tools exist, but they're usually heavy, noisy, or written for security teams. I wanted something a regular developer could run in a minute and actually understand the output of. &lt;strong&gt;No 200-page report — just the real risks, explained like a person would explain them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;plumber-linter is at &lt;strong&gt;v1.1.0&lt;/strong&gt; now, and it's already got &lt;strong&gt;800+ total downloads on npm&lt;/strong&gt;. It's still early — if you run it on your repo and it catches something embarrassing, that's the whole point, and I'd genuinely love to hear about it.&lt;/p&gt;

&lt;p&gt;Try it, break it, and tell me what it missed. &lt;strong&gt;Feedback welcome.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/plumber-linter" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/plumber-linter&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://plumber-7dv.pages.dev/" rel="noopener noreferrer"&gt;https://plumber-7dv.pages.dev/&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/parasraju/plumber/" rel="noopener noreferrer"&gt;https://github.com/parasraju/plumber/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built for GitHub Actions / GitLab CI. &lt;code&gt;npm install plumber-linter&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>sideprojects</category>
      <category>cicd</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
