<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Haxinja RWX</title>
  
  <subtitle>Cybersecurity, Penetration Testing, and Software Development Insights</subtitle>
  <link href="https://rwx.haxinja.com/atom.xml" rel="self"/>
  
  <link href="https://rwx.haxinja.com/"/>
  <updated>2026-01-17T11:27:57.108Z</updated>
  <id>https://rwx.haxinja.com/</id>
  
  <author>
    <name>Haxinja</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Kerberos Clock Skew Helper</title>
    <link href="https://rwx.haxinja.com/2026/01/17/Clock-Skew/"/>
    <id>https://rwx.haxinja.com/2026/01/17/Clock-Skew/</id>
    <published>2026-01-17T00:00:00.000Z</published>
    <updated>2026-01-17T11:27:57.108Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="Kerberos-Clock-Skew-Helper"><a href="#Kerberos-Clock-Skew-Helper" class="headerlink" title="Kerberos Clock Skew Helper"></a>Kerberos Clock Skew Helper</h1><p>We’ve all been there! kerberos suddenly breaks because our time is off from the Domain Controller.<br>That annoying <code>clock skew (KRB_AP_ERR_SKEW)</code> error, and breaks our command.</p><p>Instead of constantly syncing the system clock or copy‑pasting offsets, I wrote a small helper script that handles the DC time for any command I run.</p><p>No more fussing with ntpdate or messing with system time, the script just works</p><hr><h2 id="Why-I-Needed-This"><a href="#Why-I-Needed-This" class="headerlink" title="Why I Needed This"></a>Why I Needed This</h2><p>In AD labs and real environments:</p><ul><li>My Kali VM is often tulala&#x2F;sabog xD (out of sync)</li><li>tools fail with clock skew errors</li><li>fixing system time&#x2F;copy pasting a one-liner command repeatedly is annoying</li></ul><p>The usual workflow is tedious:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ntpdate -q &lt;dc_ip&gt;</span><br><span class="line">faketime <span class="string">&quot;&lt;copy the offset&gt;&quot;</span> &lt;<span class="built_in">command</span>&gt;</span><br></pre></td></tr></table></figure><p>Or the one liner thing I always copy from notes:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">faketime <span class="string">&quot;<span class="subst">$(ntpdate -q &lt;dc_ip&gt; | cut -d &#x27; &#x27; -f 1,2)</span>&quot;</span> &lt;<span class="built_in">command</span>&gt;</span><br></pre></td></tr></table></figure><p>Still too much copy‑paste :&#x2F; .</p><hr><h2 id="The-Script"><a href="#The-Script" class="headerlink" title="The Script"></a>The Script</h2><p>I wrote a tiny bash wrapper called clockskew:</p><ul><li>Queries the DC time automatically.</li><li>Applies faketime with the correct offset.</li><li>Runs any command you pass in.</li></ul><p>Now, instead of the messy manual way, I just do:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">clockskew &lt;dc_ip&gt; bloodhound-python -u &lt;user&gt; -p &lt;password&gt; -d &lt;domain&gt; -ns &lt;ip&gt; -c all</span><br></pre></td></tr></table></figure><p>Just save the script at:</p><p><code>/usr/bin/clockskew</code><br>or<br><code>/usr/local/bin/clockskew</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/usr/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ <span class="variable">$#</span> -lt 2 ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;Usage: clockskew &lt;host&gt; &lt;command...&gt;&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line">HOST=<span class="string">&quot;<span class="variable">$1</span>&quot;</span></span><br><span class="line"><span class="built_in">shift</span></span><br><span class="line"></span><br><span class="line">SKEW=$(ntpdate -q <span class="string">&quot;<span class="variable">$HOST</span>&quot;</span> 2&gt;/dev/null | awk <span class="string">&#x27;&#123;print $1, $2&#125;&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ -z <span class="string">&quot;<span class="variable">$SKEW</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[-] Failed to get time from <span class="variable">$HOST</span>&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[+] Using faketime: <span class="variable">$SKEW</span>&quot;</span></span><br><span class="line">faketime <span class="string">&quot;<span class="variable">$SKEW</span>&quot;</span> <span class="string">&quot;<span class="variable">$@</span>&quot;</span></span><br></pre></td></tr></table></figure><h2 id="TL-DR"><a href="#TL-DR" class="headerlink" title="TL;DR"></a>TL;DR</h2><ul><li>Kerberos hates clock skew.</li><li>clockskew script saves your sanity.</li><li>Run commands with DC time, leave your VM clock alone.</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="notes" scheme="https://rwx.haxinja.com/categories/notes/"/>
    
    <category term="active directory" scheme="https://rwx.haxinja.com/categories/notes/active-directory/"/>
    
    
    <category term="active-directory" scheme="https://rwx.haxinja.com/tags/active-directory/"/>
    
    <category term="kerberos" scheme="https://rwx.haxinja.com/tags/kerberos/"/>
    
    <category term="clock-skew" scheme="https://rwx.haxinja.com/tags/clock-skew/"/>
    
    <category term="faketime" scheme="https://rwx.haxinja.com/tags/faketime/"/>
    
  </entry>
  
  <entry>
    <title>RWX Learning Philosophy</title>
    <link href="https://rwx.haxinja.com/2026/01/15/Learning-Philosophy/"/>
    <id>https://rwx.haxinja.com/2026/01/15/Learning-Philosophy/</id>
    <published>2026-01-15T00:00:00.000Z</published>
    <updated>2026-01-17T11:27:57.109Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script>        <div id="aplayer-UtLddUzm" class="aplayer aplayer-tag-marker" style="margin-bottom: 20px;">            <pre class="aplayer-lrc-content"></pre>        </div>        <script>          var ap = new APlayer({            element: document.getElementById("aplayer-UtLddUzm"),            narrow: false,            autoplay: true,            showlrc: false,            music: {              title: "Not Chosen. Just Unbroken",              author: "Romeo",              url: "/music/music1.mp3",              pic: "/img/romeo.jpg",              lrc: ""            }          });          window.aplayers || (window.aplayers = []);          window.aplayers.push(ap);        </script><h1 id="Learning-Philosophy"><a href="#Learning-Philosophy" class="headerlink" title="Learning Philosophy"></a>Learning Philosophy</h1><p>I wanted to share a part of my journey towards mastery hence this blog is created. Inspired by the lessons from the book <strong>Mastery - by Robert Green</strong>. I aim to explore how deliberate practice, observation and reflection can lead to mastery, and how these principles formed the basis of the RWX framework.</p><p>Inspired by Linux file permissions, I created the RWX learning framework:</p><h3 id="RWX-Read-Write-Execute"><a href="#RWX-Read-Write-Execute" class="headerlink" title="RWX (Read, Write, Execute)"></a>RWX (Read, Write, Execute)</h3><p><strong>Read:</strong> to learn<br><strong>Write:</strong> to improve<br><strong>eXecute:</strong> to understand</p><p>The RWX framework provides a structured approach to learning. It is based on the principles outlined in the book Mastery by Robert Greene, particularly the apprenticeship model: first absorb knowledge, then practice deliberately, and finally apply insights creatively.</p><p>It is simple but powerful: Read to absorb knowledge and gain exposure, Write to apply and refine understanding, and eXecute to internalize and master skills.</p><hr><h3 id="Reading-Exposure"><a href="#Reading-Exposure" class="headerlink" title="Reading (Exposure)"></a>Reading (Exposure)</h3><p>Reading represents exposure, which is the first stage of learning. It is not just about reading books etc., but about immersing yourself in knowledge through any process of learning such as video courses&#x2F;tutorials, or observing experts and mentors with goal of understanding the underlying principles of a craft.<br>E.g:</p><ul><li>Books and articles in your field  </li><li>Lectures, tutorials, and workshops  </li><li>Careful observation of mentors and practitioners</li></ul><p>This stage aligns with the apprenticeship phase: gather information, develop intuition, and build a foundation for mastery.</p><hr><h3 id="Write-Refinement"><a href="#Write-Refinement" class="headerlink" title="Write (Refinement)"></a>Write (Refinement)</h3><p>Writing represents active refinement. After gaining knowledge, you internalize it by practicing, summarizing, and creating.<br>E.g:  </p><ul><li>Taking detailed notes and distilling&#x2F;highlighting key insights</li><li>Creating small projects or exercises</li><li>Reflecting on lessons in a journal</li></ul><p>This stage emphasis on <strong>deliberate practice</strong>: repeated, focused effort to strengthen skill, uncover gaps, and improve technique.</p><hr><h3 id="Execute-Mastery"><a href="#Execute-Mastery" class="headerlink" title="Execute (Mastery)"></a>Execute (Mastery)</h3><p>Execution is where knowledge is applied in real world situations(I sometimes referred it as active learning). This stage transforms learning into skill and eventually mastery.<br>E.g:  </p><ul><li>Applying skills to solve practical problems</li><li>Teaching or mentoring others  </li><li>Iterating based on real feedback</li></ul><p>From the book <strong>Mastery</strong> as Robert Greene’s explains, </p><blockquote><p><em>mastery is reached when you can act intuitively yet consciously, producing results with skill honed by years of learning and reflection</em></p></blockquote><hr><h3 id="Reflection"><a href="#Reflection" class="headerlink" title="Reflection"></a>Reflection</h3><p>Whenever I learn something new, I follow the RWX framework. <strong>(R)</strong> I first gain exposure by watching YouTube tutorials, taking online courses, and reading books or articles related to the topic. <strong>(W)</strong> I then take notes in Notion, highlighting key insights, and organizing what I have learned from modules or sections. <strong>(X)</strong> Finally, applying what i’ve learned through hands-on practice, such as solving CTF challenges on TryHackMe or HackTheBox, and writing detailed writeups in Notion. This process turns learning into skill and helps me internalize knowledge effectively.</p><p>Following this workflow has also helped me understand some of the deeper principles behind effective learning. By focusing my time intentionally and avoiding distractions, I have been able to practice deep work more efficiently. Limiting choices and concentrating on fewer objectives, as explained in the paradox of choice, has made my learning even more effective. Mastery is a process, not a destination, and these experiments in deliberate practice and reflection have shown me how to steadily build skill over time.<br>I highly recommend reading the Azeria Labs: </p><ul><li><em><a href="https://azeria-labs.com/the-importance-of-deep-work-the-30-hour-method-for-learning-a-new-skill/">The Importance of Deep Work and the 30-Hour Method for Learning a New Skill</a></em> </li><li><em><a href="https://azeria-labs.com/paradox-of-choice/">The Paradox of Choice</a></em></li><li><em><a href="https://azeria-labs.com/the-process-of-mastering-a-skill/">The Process of Mastering a Skill</a></em></li></ul><p>alongside Robert Greene’s <em>Mastery</em> and Cal Newport’s <em>Deep Work</em>, as they complement this framework and have shaped how I approach learning and growth.</p><hr><h3 id="TL-DR"><a href="#TL-DR" class="headerlink" title="TL;DR"></a>TL;DR</h3><ul><li><strong>Reading &#x3D; exposure</strong>  </li><li><strong>Writing &#x3D; refinement</strong>  </li><li><strong>Execution &#x3D; mastery</strong></li></ul><p>The RWX framework gives a repeatable path to mastering any skill or domain, inspired by the principles of apprenticeship, deliberate practice, and real-world application outlined from Robert Greene’s book <em>Mastery</em>.</p>]]></content>
    
    
    <summary type="html">RWX Framework Learning Philosphy.</summary>
    
    
    
    
    <category term="philosophy" scheme="https://rwx.haxinja.com/tags/philosophy/"/>
    
  </entry>
  
</feed>
