<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Legacy Windows on inetshell</title><link>https://inet.sh/en/posts/windows/</link><description>Recent content in Legacy Windows on inetshell</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 20 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/en/posts/windows/index.xml" rel="self" type="application/rss+xml"/><item><title>Browse the modern web on Windows XP and Server 2003</title><link>https://inet.sh/en/posts/windows/modern-browser-xp-2003/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/windows/modern-browser-xp-2003/</guid><description>How to open current HTTPS sites on Windows XP SP3 or Server 2003 SP2 when Chrome, Firefox, and IE no longer work: Supermium, a Chromium build for legacy Windows.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p>XP/2003 cannot run modern Chrome or Firefox. <strong>Supermium</strong> loads current HTTPS on legacy Windows.</p>
<p>Microsoft ended support for <strong>Windows XP</strong> in April 2014 and for <strong>Windows Server 2003 / 2003 R2</strong> in July 2015. No official patches, no Schannel/TLS updates, and almost no vendor still tests software on those platforms.</p>
<p>In practice you cannot “just open Internet Explorer.” IE 8 speaks TLS 1.0 (maybe 1.2 with brittle hacks). <strong>Google Chrome</strong> dropped XP/Vista years ago; current installers will not even start. <strong>Mozilla Firefox</strong> left XP as well (only ancient ESR builds were usable). Banks, GitHub, cloud consoles, and most SaaS demand TLS 1.2+ and a recent Chromium. On a lab ProLiant still running 2003 you get blank pages, certificate errors, or “cannot display the webpage.”</p>
<p>If you still have to touch a legacy host (firmware, SCADA, a license server, a lab box), you need a <strong>modern</strong> browser that still builds for old Win32. The option that works in the lab: <strong><a href="https://www.win32subsystem.live/supermium/">Supermium</a></strong>.</p>
<h2 id="what-supermium-is">What Supermium is</h2>
<p>A <strong>Chromium</strong> fork aimed at Windows XP SP3, Server 2003 SP2, Vista, 7, 8.x, and newer. It behaves like a Chrome drop-in (extensions, <code>chrome://flags</code>, sandbox) but still ships 32-bit SSE2 builds for CPUs from that era.</p>
<p>Official requirements (short):</p>
<ul>
<li>Windows XP SP3 <strong>or</strong> Server 2003 SP2 (or later)</li>
<li>An <strong>SSE2</strong>-capable CPU (Pentium 4 or newer; dual-core recommended)</li>
<li>≥ 768 MB RAM (2 GB+ if you want it usable)</li>
</ul>
<p>Downloads: <a href="https://www.win32subsystem.live/supermium/">win32subsystem.live/supermium</a> — 32-bit and 64-bit setups.</p>
<h2 id="quick-install">Quick install</h2>
<ol>
<li>On a machine with a <strong>modern</strong> browser, download the 32-bit Setup (most lab XP/2003 is x86) or 64-bit if the OS is x64.</li>
<li>Copy the installer to the legacy host (USB, SMB, iLO virtual media).</li>
<li>Install as Administrator.</li>
<li>Open Supermium and hit <code>https://example.com</code> plus the site you actually need.</li>
</ol>
<p>If the installer will not run: confirm SP3/SP2, SSE2, and that you are not on Windows 2000 / XP RTM without a service pack.</p>
<h2 id="extensions-and-privacy">Extensions and privacy</h2>
<p>Unlike current Chrome, Supermium is <strong>not</strong> killing Manifest V2 on a schedule. You can sideload <a href="https://github.com/gorhill/uBlock">uBlock Origin</a> from GitHub and keep ads out on an OS that should not be on the public Internet.</p>
<p>It also carries ungoogled-chromium-style flags and classic UI options (Aero, old tabs). Nice; do not treat that as OS hardening.</p>
<h2 id="warnings-read-them">Warnings (read them)</h2>
<ul>
<li><strong>The OS is still unpatched.</strong> A new browser does not fix SMB1, old RDP, or kernel bugs. Keep the host on an isolated VLAN, VPN, or jump box; do not expose it to the Internet.</li>
<li>Supermium fixes <em>sites</em> broken by TLS; it does <strong>not</strong> make XP/2003 a safe daily driver.</li>
<li>Download only from the official site. Random “Chrome for XP” forum builds are a malware classic.</li>
<li>For real work the goal is still <strong>migration</strong> (new VM, container, or move the service to a supported OS). This is a bridge, not a strategy.</li>
</ul>
<h2 id="when-it-is-worth-it">When it is worth it</h2>
<ul>
<li>Opening an iLO / iDRAC / appliance UI you only documented on a 2003 lab box.</li>
<li>Grabbing a driver or EULA from a portal that rejects IE8.</li>
<li>Reproducing a compatibility failure without spinning up Windows 10 for one click.</li>
</ul>
<p>Download and docs: <a href="https://www.win32subsystem.live/supermium/">Supermium</a>.</p>
]]></content:encoded></item><item><title>Netcat equivalent on Windows: Test-NetConnection</title><link>https://inet.sh/en/posts/windows/netcat-equivalent/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/windows/netcat-equivalent/</guid><description>The Windows equivalent of nc -v host port is Test-NetConnection (tnc): it tests whether a TCP port accepts a connection. TcpTestSucceeded True/False.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p>No <code>nc</code> on Windows: <code>Test-NetConnection -ComputerName host -Port port</code>. Check <code>TcpTestSucceeded</code>.</p>
<p>On Linux the reflex for “is 1433 open?” is:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">nc -v 10.1.1.1 <span class="m">1433</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>Windows</strong> does not ship <code>nc</code>. The closest PowerShell equivalent is a TCP connect test:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nb">Test-NetConnection</span> <span class="n">-ComputerName</span> <span class="mf">10.1</span><span class="p">.</span><span class="py">1</span><span class="p">.</span><span class="py">1</span> <span class="n">-Port</span> <span class="mf">1433</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Short alias:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">tnc</span> <span class="mf">10.1</span><span class="p">.</span><span class="py">1</span><span class="p">.</span><span class="py">1</span> <span class="n">-Port</span> <span class="mf">1433</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="what-to-look-at">What to look at</h2>
<p><code>TcpTestSucceeded</code>:</p>
<table>
  <thead>
      <tr>
          <th>Value</th>
          <th>Meaning</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>True</code></td>
          <td>Port is open and answering (same as <code>nc</code> connecting)</td>
      </tr>
      <tr>
          <td><code>False</code></td>
          <td>No connection (firewall, dead service, unreachable IP)</td>
      </tr>
  </tbody>
</table>
<p>More detail, closer to <code>nc -v</code>:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nb">Test-NetConnection</span> <span class="n">-ComputerName</span> <span class="mf">10.1</span><span class="p">.</span><span class="py">1</span><span class="p">.</span><span class="py">1</span> <span class="n">-Port</span> <span class="mf">1433</span> <span class="n">-InformationLevel</span> <span class="n">Detailed</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="port-only-no-ping">Port only, no ping</h2>
<p><code>Test-NetConnection</code> also pings by default. TCP only:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nb">Test-NetConnection</span> <span class="n">-ComputerName</span> <span class="mf">10.254</span><span class="p">.</span><span class="py">3</span><span class="p">.</span><span class="py">2</span> <span class="n">-Port</span> <span class="mf">1433</span> <span class="n">-WarningAction</span> <span class="n">SilentlyContinue</span> <span class="p">|</span>
</span></span><span class="line"><span class="cl">  <span class="nb">Select-Object</span> <span class="n">ComputerName</span><span class="p">,</span> <span class="n">RemoteAddress</span><span class="p">,</span> <span class="n">RemotePort</span><span class="p">,</span> <span class="n">TcpTestSucceeded</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="very-old-powershell">Very old PowerShell</h2>
<p>If <code>Test-NetConnection</code> is missing, use the .NET TCP client:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nv">$tcp</span> <span class="p">=</span> <span class="nb">New-Object</span> <span class="n">System</span><span class="p">.</span><span class="py">Net</span><span class="p">.</span><span class="py">Sockets</span><span class="p">.</span><span class="py">TcpClient</span>
</span></span><span class="line"><span class="cl"><span class="k">try</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nv">$tcp</span><span class="p">.</span><span class="py">Connect</span><span class="p">(</span><span class="s2">&#34;10.254.3.2&#34;</span><span class="p">,</span> <span class="mf">1433</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="nb">Write-Host</span> <span class="s2">&#34;Connected to 10.254.3.2:1433&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span> <span class="k">catch</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nb">Write-Host</span> <span class="s2">&#34;Failed: </span><span class="p">$(</span><span class="nv">$_</span><span class="p">.</span><span class="py">Exception</span><span class="p">.</span><span class="n">Message</span><span class="p">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span> <span class="k">finally</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nv">$tcp</span><span class="p">.</span><span class="py">Close</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded></item><item><title>SSH into Windows Server 2003 with Bitvise</title><link>https://inet.sh/en/posts/windows/ssh-server-2003-bitvise/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/windows/ssh-server-2003-bitvise/</guid><description>How to get SSH on Windows Server 2003 or 2003 R2: Microsoft OpenSSH is not an option; Bitvise SSH Server (7.x in the lab) provides shell and SFTP.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p>Server 2003 has no OpenSSH. <strong>Bitvise SSH Server 7.x</strong> provides shell and SFTP in the lab.</p>
<p><strong>Windows Server 2003 / 2003 R2</strong> does not ship an SSH server. Microsoft never shipped <strong>OpenSSH for Windows</strong> for that generation either (that arrived much later on Windows 10 / Server 2019+). PowerShell Remoting / WinRM is not the answer on 2003 either: the usable remote stack is RDP, SMB, and Telnet if you enabled it.</p>
<p>If you need <code>ssh user@2003-box</code> from a modern jump host (scripts, <code>scp</code>, legacy Ansible, pull logs without RDP), install a <strong>third-party SSH server</strong>. In the lab I use <strong><a href="https://bitvise.com/ssh-server-download">Bitvise SSH Server</a></strong>; <strong>7.x</strong> is the line validated on Server 2003.</p>
<p>Bitvise still lists <a href="https://bitvise.com/winsshd">XP SP3 and Server 2003</a> in its compatibility matrix. On a host unpatched since 2015, stick to an installer <strong>you have already validated</strong> (7.x if that is your golden image) or try current only on a clone — not blind on production.</p>
<h2 id="why-not-the-alternatives">Why not the alternatives</h2>
<table>
  <thead>
      <tr>
          <th>Option</th>
          <th>On Server 2003</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>OpenSSH (Win32-OpenSSH / Windows feature)</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Cygwin <code>sshd</code></td>
          <td>Possible, brittle and heavy</td>
      </tr>
      <tr>
          <td>FreeSSHd / abandoned forks</td>
          <td>Avoid (unmaintained, attack surface)</td>
      </tr>
      <tr>
          <td>RDP only</td>
          <td>Fine for GUI; useless for SSH automation</td>
      </tr>
      <tr>
          <td>Bitvise SSH Server</td>
          <td>Yes — shell + SFTP on old Win32</td>
      </tr>
  </tbody>
</table>
<h2 id="install-short">Install (short)</h2>
<ol>
<li>On a machine with a modern browser, download the installer from <a href="https://bitvise.com/ssh-server-download">bitvise.com/ssh-server-download</a> (or the <strong>7.x</strong> package you keep for the lab).</li>
<li>Check the digital signature on the <code>.exe</code> (Properties → Digital Signatures → Bitvise).</li>
<li>Copy the installer to the 2003 box (USB, SMB, iLO virtual media). <strong>Do not</strong> fetch it with IE8 from a random mirror.</li>
<li>Run the installer <strong>as Administrator</strong>.</li>
<li>Reboot when Bitvise asks (recommended after first install, especially for key auth).</li>
<li>Open the <strong>Bitvise SSH Server Control Panel</strong> and start the service if it is not set to Automatic.</li>
</ol>
<p>Official install notes: <a href="https://bitvise.com/getting-started-install-ssh-server">Installing Bitvise SSH Server</a>.</p>
<h2 id="minimum-config-you-should-not-skip">Minimum config you should not skip</h2>
<ul>
<li><strong>Accounts:</strong> allow only the Windows user(s) you need (or Bitvise virtual accounts). Do not leave “any local account.”</li>
<li><strong>Port:</strong> 22 by default. On a management VLAN that is fine; otherwise change it <strong>and</strong> restrict with the host firewall / switch ACL.</li>
<li><strong>Windows 2003 firewall:</strong> open TCP/22 (or your chosen port) for the management network only.</li>
<li><strong>Key auth:</strong> import the jump-host pubkey; turn off password auth once keys work.</li>
<li><strong>SFTP root:</strong> mount only the path you need (e.g. <code>D:\logs</code>), not <code>C:\</code>.</li>
</ul>
<p>From the client:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">ssh Administrator@192.168.x.x
</span></span><span class="line"><span class="cl"><span class="c1"># or whichever account you enabled</span>
</span></span><span class="line"><span class="cl">scp logfile.log Administrator@192.168.x.x:D:/logs/
</span></span></code></pre></td></tr></table>
</div>
</div><p>A modern OpenSSH client talks to Bitvise fine; you do not need the Bitvise client unless you want its GUI.</p>
<h2 id="security-legacy-context">Security (legacy context)</h2>
<p>The OS is <strong>still</strong> without Microsoft patches. Adding SSH improves operations; it <strong>increases</strong> network surface if the port is reachable beyond the jump host.</p>
<ul>
<li>VLAN / firewall: bastion IP only.</li>
<li>Do not put the 2003 box on the Internet “because it has SSH now.”</li>
<li>Licensing: Personal Edition is free for non-commercial use; Standard is eval / paid. Respect that in lab vs work.</li>
<li>Real goal: migrate the workload. SSH is the bridge to pull data and retire the box.</li>
</ul>
<h2 id="related">Related</h2>
<p>To open a modern HTTPS portal from the same host (IE8 will not cut it): <a href="/en/posts/windows/modern-browser-xp-2003/">modern browser on XP/2003 with Supermium</a>.</p>
<p>Vendor docs and downloads: <a href="https://bitvise.com/ssh-server-download">Bitvise SSH Server</a>.</p>
]]></content:encoded></item><item><title>WinDirStat: see what is eating the disk on Windows</title><link>https://inet.sh/en/posts/windows/windirstat-disk-usage/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/windows/windirstat-disk-usage/</guid><description>WinDirStat is a Windows disk usage analyzer: like du, but with a treemap, extension stats, and duplicate detection. Download at windirstat.net.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p><strong>WinDirStat</strong>: treemap of which folders and extensions own the disk (like <code>du</code>, visual).</p>
<p>On Linux, when a disk fills up, the reflex is:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">du -xh --max-depth<span class="o">=</span><span class="m">1</span> / <span class="p">|</span> sort -h
</span></span><span class="line"><span class="cl"><span class="c1"># or ncdu /</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>On <strong>Windows</strong> there is no decent <code>du</code> in the box. Explorer → Properties is slow and opaque. The tool I use in the lab and on desktops: <strong><a href="https://windirstat.net/">WinDirStat</a></strong> — free, open source, interactive treemap.</p>
<p>Think of it as <code>du</code> on steroids: scan a drive or folder and see <strong>where</strong> the space went, not only how many GB.</p>
<h2 id="what-it-does-beyond-summing-bytes">What it does (beyond summing bytes)</h2>
<table>
  <thead>
      <tr>
          <th>View</th>
          <th>Use</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Directory list</td>
          <td>Sort by size, like <code>du | sort -h</code></td>
      </tr>
      <tr>
          <td>Extension stats</td>
          <td>See whether <code>.iso</code>, <code>.vmdk</code>, <code>.log</code>, or <code>.bak</code> dominate</td>
      </tr>
      <tr>
          <td>Treemap</td>
          <td>Each rectangle is a file; area is size; color is type</td>
      </tr>
      <tr>
          <td>Largest files / duplicates</td>
          <td>Obvious delete-or-move candidates</td>
      </tr>
  </tbody>
</table>
<p>The <a href="https://windirstat.net/">project site</a> documents multithreaded scans, direct NTFS scanning when available, dark mode, and Explorer integration.</p>
<h2 id="quick-use">Quick use</h2>
<ol>
<li>Download the installer (or portable build) from <a href="https://windirstat.net/">windirstat.net</a> / the project&rsquo;s GitHub releases.</li>
<li>Run <strong>as Administrator</strong> if you are scanning all of <code>C:\</code> (permissions on <code>Windows</code>, other user profiles, etc.).</li>
<li>Pick a volume or a specific folder (<code>D:\VMs</code>, <code>C:\Users\…\AppData</code>).</li>
<li>Wait for the scan. Large disks take time; this is not <code>du</code> on a tmpfs.</li>
<li>In the treemap, zoom into the fat block. Open the folder in Explorer, or delete from the UI only when you know what it is.</li>
</ol>
<h2 id="when-to-use-it">When to use it</h2>
<ul>
<li>Disk is “full” and you do not know whether it is Downloads, hibernation, pagefile, ISOs, or VM snapshots.</li>
<li>Before/after cleanup of a profile or a share.</li>
<li>Showing a non-CLI person what owns the space (the treemap sells itself).</li>
</ul>
<h2 id="what-it-is-not">What it is not</h2>
<ul>
<li>It does not replace <code>du</code>/<code>ncdu</code> on Linux or on a NAS over SSH.</li>
<li>It is not a magic cleaner: deleting System Volume Information, WinSxS, or “big” databases because they look large will break the host.</li>
<li>A full <code>C:\</code> scan on a file server with millions of files can take a long time; narrow the root.</li>
</ul>
<h2 id="mental-map">Mental map</h2>
<table>
  <thead>
      <tr>
          <th>World</th>
          <th>Tool</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Linux CLI</td>
          <td><code>du</code>, <code>ncdu</code></td>
      </tr>
      <tr>
          <td>Windows GUI</td>
          <td><strong>WinDirStat</strong></td>
      </tr>
      <tr>
          <td>macOS</td>
          <td>DaisyDisk / OmniDiskSweeper (another family)</td>
      </tr>
  </tbody>
</table>
<p>Download and docs: <a href="https://windirstat.net/">https://windirstat.net/</a>.</p>
]]></content:encoded></item></channel></rss>