<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://vaporx.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://vaporx.dev/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-10-12T16:27:26+05:30</updated><id>https://vaporx.dev/feed.xml</id><title type="html">VaporX</title><subtitle>Exploit dev, AI bots, and Counter-Strike. Learning in public.</subtitle><author><name>VaporX</name></author><entry><title type="html">Dust2 T-Side Pistols: The 2026 Elite Playbook</title><link href="https://vaporx.dev/2026/10/12/dust2-t-side-pistols-the-full-system/" rel="alternate" type="text/html" title="Dust2 T-Side Pistols: The 2026 Elite Playbook" /><published>2026-10-12T16:00:00+05:30</published><updated>2026-10-12T16:00:00+05:30</updated><id>https://vaporx.dev/2026/10/12/dust2-t-side-pistols-the-full-system</id><content type="html" xml:base="https://vaporx.dev/2026/10/12/dust2-t-side-pistols-the-full-system/"><![CDATA[<p>Win the T pistol on Dust2 and you are usually up 3–0 before the CTs touch a rifle. Lose it and you spend two rounds on a map where CT anti-ecos with SMGs on long sightlines are brutal. That swing is why every top IGL in 2026 treats this single round as a prepared set piece rather than a default.</p>

<p>Dust2 has stayed in the pool through every shake-up this year. The Season 5 bomb-damage rework (blast weakens around corners and stops at walls) also changes how pistol post-plants and CT saves play out. This piece covers the fundamentals, the core T pistol patterns, then team-by-team breakdowns of NAVI, Vitality, Falcons, FaZe, Spirit and FURIA, an IGL comparison, and what you can steal for your own team.</p>

<p>A note on evidence: nobody publishes clean round-by-round T-pistol data per team per map, so each team section pairs sourced 2026 facts (rosters, results, role stats) with a read of how that IGL builds the round. Where a claim is a read rather than a stat, it says so.</p>

<h2 id="the-fundamentals-money-loadouts-and-the-ct-setups-you-must-beat">The fundamentals: money, loadouts and the CT setups you must beat</h2>

<p>Every T starts with $800 and a Glock-18. The whole round is a question of how to split that $800 across five players. The Glock’s strength is close-range spray and running accuracy, which is why Dust2’s short, cornered entries (upper tunnels into B, catwalk onto A) suit it far more than the open long A doors.</p>

<p><strong>Standard T pistol buys</strong></p>

<table>
  <thead>
    <tr>
      <th>Buy</th>
      <th>Cost</th>
      <th>Left over</th>
      <th>When pros use it</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Kevlar</td>
      <td>$650</td>
      <td>$150</td>
      <td>Mid fights, long A duels vs USP headshots; anchors the AWP-less mid player</td>
    </tr>
    <tr>
      <td>P250 + flash</td>
      <td>$500</td>
      <td>$300</td>
      <td>One-tap power on tunnels/short fights through B doors; flash for the entry</td>
    </tr>
    <tr>
      <td>Tec-9</td>
      <td>$500</td>
      <td>$300</td>
      <td>Running spam on B rushes; rarer since kevlar on CT blunts it</td>
    </tr>
    <tr>
      <td>Smoke + flash</td>
      <td>$500</td>
      <td>$300</td>
      <td>Utility carrier on a B hit (CT smoke + window/doors flash)</td>
    </tr>
    <tr>
      <td>2× flash + molly</td>
      <td>$800</td>
      <td>$0</td>
      <td>Lead entry on B; molly for back plat or car</td>
    </tr>
    <tr>
      <td>Dual Berettas</td>
      <td>$300</td>
      <td>$500</td>
      <td>Rare; close-range B site with leftover for a flash or two</td>
    </tr>
  </tbody>
</table>

<p>The usual team template is two or three utility buyers, one or two kevlars for the mid and long players, and the lurker on a cheap P250 or a flash. Pros almost never buy five kevlars on Dust2 T pistol, because the hit dies to utility first and to aim second.</p>

<p><strong>The CT setups Ts are hitting into</strong></p>

<ul>
  <li>2–1–2 standard: two A (long + short/site), one mid (doors or CT-mid), two B. The most common and the one most T pistols are designed to overload.</li>
  <li>Stacked B (3 B): a third player rotating early through CT/mid-to-B, often with a kevlar and an HE for tunnels. Punishes the classic five-man tunnel rush.</li>
  <li>Aggressive long: a CT pushing to long corner or pit with a flash, aiming to trade a pick early and force the A side to burn time.</li>
  <li>Mid-doors info: a CT smokes or peeks xbox early to see where Ts commit, then calls rotates before the bomb is down.</li>
</ul>

<p>A good T pistol answers two questions in its first 20 seconds: where is the extra CT, and can we get the bomb down before the rotation lands.</p>

<p><img src="/assets/img/dust2-default-opening.svg" alt="Dust2 T pistol default opening: Xbox smoke, short pressure, long hold, P250 contact" /></p>

<h2 id="the-t-pistol-playbook-six-patterns-every-top-team-runs">The T pistol playbook: six patterns every top team runs</h2>

<p>Almost every elite Dust2 T pistol is a variation on six patterns. What separates teams is timing, who holds the bomb, and what the mid player does.</p>

<p><img src="/assets/img/dust2-six-patterns.svg" alt="Six Dust2 T pistol patterns playbook" /></p>

<ol>
  <li>
    <p><strong>Fast B (the five-man tunnel rush).</strong> Everyone through upper tunnels, flash over the B doors/arch, smoke CT/window, molly back plat or car. Wins on speed against a 2-man B; dies to the 3-B stack or an HE in tunnels. Usually bomb down inside 30 seconds.</p>
  </li>
  <li>
    <p><strong>Mid-to-B split.</strong> Three in upper tunnels, two take xbox/mid doors with a smoke on the doors, then push lower tunnels or CT-mid to cut the rotator. The best counter to a CT who rotates early from mid.</p>
  </li>
  <li>
    <p><strong>Short A (catwalk) hit.</strong> Two to three up catwalk, one long, one lurk mid. Flashes over short, smoke CT spawn, bomb onto default. Glock spray wins the close fights on short boost and the ramp.</p>
  </li>
  <li>
    <p><strong>Long A take.</strong> Long doors pushed with a flash and a kevlar entry, a smoke cross for blue/CT, the rest join through long. Slow and money-hungry; mostly run by teams with strong aim on kevlar.</p>
  </li>
  <li>
    <p><strong>A split (long + short).</strong> Two long, two short, one mid lurk; the classic Dust2 crossfire hit. Strong vs a 2–1–2 because the A CTs are forced to choose one angle.</p>
  </li>
  <li>
    <p><strong>Fake and fold.</strong> Utility and noise on one site (often B tunnels), one or two players stay, the rest rotate through mid to hit the other site late. Only works if the IGL has read the CT rotations in earlier matches.</p>
  </li>
</ol>

<p>The mid player is the swing piece in all six. Teams that take mid control early with a kevlar can play the round late and pick the site after seeing rotations; teams that skip mid are betting on speed.</p>

<p>After the plant, the 2026 bomb-damage rework matters: CTs can now survive a detonation at range behind cover, so saving on a lost retake is a little safer and Ts should not assume a late defuse attempt is a kill.</p>

<h2 id="navi--aleksibs-structured-overload">NAVI — Aleksib’s structured overload</h2>

<p>NAVI’s T pistol is a rehearsed, utility-first hit where Aleksib spends himself so makazze and b1t can trade into the site. The lineup is Aleksib, iM, b1t, w0nderful and makazze.</p>

<p>2026 so far. NAVI won ESL Pro League Season 23 and IEM Atlanta. On the way they beat Vitality 13–11 on Vitality’s own Dust2 pick. Cologne went badly: NAVI went 0–1 on Dust2 at the Major, and the teamplay that gave them a high floor disappeared while makazze struggled individually.</p>

<p>The roles behind the pistol. Leetify’s Cologne breakdown has makazze leading NAVI in opening duels, Aleksib leading in traded deaths and b1t leading in trade kills. That is the shape of the round: makazze opens, Aleksib takes the second contact and dies traded, b1t cleans up.</p>

<p><strong>What to expect on Dust2 T pistol (our read).</strong></p>
<ul>
  <li>A prepared hit rather than a default. Aleksib’s teams historically buy more utility than kevlar on pistol and commit to one site early.</li>
  <li>B through upper tunnels is the natural fit: Aleksib or iM throws the CT/window smoke, the doors flash goes for makazze, b1t is the trade.</li>
  <li>w0nderful plays as a Glock rifler, usually on the mid or long kevlar, holding the rotator off rather than entering.</li>
  <li>When it fails it fails on the trade, not the entry — exactly the Cologne problem. If b1t is late, Aleksib’s sacrifice buys nothing.</li>
</ul>

<h2 id="vitality--apex-and-the-best-pistol-team-in-the-world">Vitality — apEX and the best pistol team in the world</h2>

<p>Vitality are the benchmark. The roster is unchanged: apEX (IGL), ZywOo, ropz, flameZ, mezii.</p>

<p>2026 so far. Wins at IEM Kraków, PGL Cluj-Napoca, BLAST Open Rotterdam, IEM Rio, BLAST Rivals Season 1, StarSeries Fall and ESL Pro League Season 24. The one big miss was the Cologne quarter-final, where Falcons ended the two-time defending champions’ run — on a Dust2 decider.</p>

<p>Dust2 is not automatic for them. They crushed Spirit 13–5 on Spirit’s own Dust2 pick in the IEM Rio final and FURIA 13–4 at BLAST Open Porto. But they also lost their own Dust2 pick to NAVI in Atlanta and the Cologne decider to Falcons.</p>

<p>The roles behind the pistol. Under apEX, Vitality play around information from flameZ in aggressive areas and ropz lurking on the opposite side.</p>

<p><strong>What to expect on Dust2 T pistol (our read).</strong></p>
<ul>
  <li>apEX is the classic first-in IGL: he takes the dirty entry with a flash so ZywOo can trade with a Glock.</li>
  <li>ropz’s lurk is the weapon. One player holding lower tunnels or mid on pistol punishes the CT who rotates early, which is why Vitality’s split and late hits work so well.</li>
  <li>flameZ supplies the early contact that tells apEX where the third CT is, and the call follows the information rather than a fixed plan.</li>
  <li>Expect fewer set plays than NAVI and more mid-round calls. That flexibility is why their pistol rate holds up across every map.</li>
</ul>

<h2 id="falcons--karrigans-major-winning-gamble">Falcons — karrigan’s Major-winning gamble</h2>

<p>Falcons won the Cologne Major with a T side on Dust2 that was never their strength: they got there on CT halves, overtime nerve and karrigan’s willingness to give his stars freedom. karrigan left FaZe and joined Falcons in April 2026, reuniting with NiKo and coach zonic. The lineup is karrigan (IGL), NiKo, m0NESY, TeSeS and kyousuke.</p>

<p>2026 so far. A rough debut — a 3–0 loss to Spirit in the PGL Astana final, where karrigan rated 0.66 — then the Major title, beating Vitality, Spirit and FURIA.</p>

<p>Their Dust2 story is all deciders.</p>
<ul>
  <li>Lost Dust2 to Vitality 6–13 and Spirit 7–13 at IEM Rio, and 12–16 in overtime to Spirit in the Astana final.</li>
  <li>Then won two Major playoff deciders on it: vs Vitality in the quarter-final and vs Spirit in the semi-final.</li>
  <li>The semi-final Dust2 tells the whole story. Falcons started T and won only 5 of 12, took the CT half 7–5, then won overtime 4–0 for a 16–12 finish. Spirit finally won a pistol on that map after losing them earlier in the series.</li>
</ul>

<p><strong>What to expect on Dust2 T pistol (our read).</strong></p>
<ul>
  <li>karrigan’s pistols are simple and fast: one site, stacked flashes, and karrigan himself as the first body through the door. His low ratings across the semi-final (0.74 for the series) fit an IGL who dies first on purpose.</li>
  <li>NiKo is the Glock threat. Expect him at the front of short A or out of upper tunnels, where close-range headshots decide the round.</li>
  <li>m0NESY plays pistols for picks, often mid, rather than as an entry.</li>
  <li>The weakness is mid control. On a Dust2 T pistol that skips mid, a single CT rotator through B doors can collapse the hit — the exact pattern Spirit exploited at Rio and Astana.</li>
</ul>

<h2 id="faze--twistzz-rebuilding-after-karrigan">FaZe — Twistzz rebuilding after karrigan</h2>

<p>FaZe’s T pistol in 2026 is a rebuild in progress: a new caller, a new AWPer, and firepower doing more of the work than set pieces. karrigan’s April exit was sudden by Twistzz’s own account, Twistzz took over the calling, and FaZe missed the Cologne Major.</p>

<p>The current five. Twistzz (IGL), frozen, JBOEN, jcobbb and Neityu, coached by enkay J. broky was benched over the summer and BIG Academy AWPer JBOEN signed. Neityu went from stand-in to a permanent deal, described as a selfless piece who needs few resources.</p>

<p>On Dust2. Their marquee Dust2 of the second half was an 11–13 loss to Vitality at the Esports World Cup — close against the best team in the world, which is a fair summary of where FaZe sit.</p>

<p><strong>What to expect on Dust2 T pistol (our read).</strong></p>
<ul>
  <li>Neityu is the utility carrier and first body on a B hit, freeing frozen and jcobbb to take the trades.</li>
  <li>Twistzz is one of the best Glock headshot players alive, so expect him in the second position on short A rather than calling from the back.</li>
  <li>JBOEN is described as ferociously aggressive. On pistol that points to an early mid or long duel with kevlar.</li>
  <li>The risk is predictability. A newer calling structure tends to repeat its best pistol, and top CT sides will stack for it.</li>
</ul>

<h2 id="spirit--magixx-builds-the-round-around-donk">Spirit — magixx builds the round around donk</h2>

<p>Spirit’s T pistol is the most player-centred in the elite: everything exists to give donk a flashed duel at the front of the hit. magixx took over the calling for 2026 with zont1x back in the side; the Major lineup was magixx, tN1R, sh1ro, donk and zont1x.</p>

<p>The system change. Spirit used to throw fewer flashes than other teams. In 2026 sh1ro’s and tN1R’s flash output rose, and donk’s opening-kill success jumped from 58.2% in 2025 to 72.9% early in 2026. magixx also takes about 18% of T-side opening duels at 37% success, and his deaths get traded more often than chopper’s did.</p>

<p>On Dust2. It is one of their best maps. In 2026 they beat Falcons 13–7 at IEM Rio and 16–12 in the PGL Astana final, but lost 5–13 to Vitality on their own pick in the Rio final and 12–16 in overtime to Falcons in the Cologne semi-final. At the Esports World Cup they won four Dust2 maps, including a 19–15 overtime against Luminosity.</p>

<p><strong>What to expect on Dust2 T pistol (our read).</strong></p>
<ul>
  <li>donk on point, every time. The pistol is built so two teammates flash for him out of upper tunnels or over short.</li>
  <li>sh1ro, the AWPer, plays pistol as a support: utility carrier and the trade behind donk, not a second entry.</li>
  <li>magixx floats mid. His job is the early opening or the info that tells donk which site is thin.</li>
  <li>The counter is simple to say and hard to do: stack the site donk is going to and survive the first flash. When Spirit lose pistols, it is usually because donk’s duel came unflashed.</li>
</ul>

<h2 id="furia--fallens-hybrid-still-solving-dust2">FURIA — FalleN’s hybrid, still solving Dust2</h2>

<p>FURIA reached the Cologne Major final, but Dust2 is the map where their T side has looked least finished in 2026. The lineup is FalleN (IGL), yuurih, YEKINDAR, KSCERATO and molodoy, built in 2025 when FalleN gave the AWP to molodoy and moved to rifle to focus on calling.</p>

<p>2026 so far. Runner-up at IEM Kraków and the Cologne Major, fourth at IEM Rio. The Major final was a 3–0 loss to Falcons.</p>

<p>On Dust2. Mixed and recently poor against the very top. Vitality beat them 13–4 at BLAST Open Porto and again on Dust2 at StarSeries Fall, and Falcons took the PGL Astana decider on it. At the Esports World Cup they beat 9z 13–6 and G2 13–4, then lost 13–16 to FUT and 9–13 to Legacy.</p>

<p><strong>What to expect on Dust2 T pistol (our read).</strong></p>
<ul>
  <li>YEKINDAR is the entry; his Virtus.pro background brings the aggressive first contact FURIA’s naturally passive riflers lacked.</li>
  <li>FalleN calls a structured, mid-first pistol: take xbox and mid doors, then choose the site off the rotation.</li>
  <li>KSCERATO and yuurih are the trade and the anchor of the post-plant — the most reliable part of the round.</li>
  <li>molodoy with a Glock is an unknown quantity for opponents; FURIA tend to use him on the long or mid kevlar for a pick rather than in the stack.</li>
  <li>Against Vitality the mid-first plan has been read and punished. A faster B pistol is the obvious adjustment if FalleN wants a different look.</li>
</ul>

<h2 id="igl-comparison-and-the-2026-meta">IGL comparison and the 2026 meta</h2>

<p>The six IGLs split cleanly into two camps: callers who build the pistol around a star’s duel (magixx, karrigan, Twistzz) and callers who build it around a structure (Aleksib, apEX, FalleN). apEX’s Vitality sit in the middle — structure with ropz’s lurk as the flex — and they have the best pistol numbers.</p>

<table>
  <thead>
    <tr>
      <th>Team</th>
      <th>IGL</th>
      <th>Pistol identity (our read)</th>
      <th>Who wins it</th>
      <th>2026 Dust2 marker</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Vitality</td>
      <td>apEX</td>
      <td>Info-led, late call, ropz lurk punishes rotations</td>
      <td>ZywOo, flameZ</td>
      <td>13–5 over Spirit in IEM Rio final</td>
    </tr>
    <tr>
      <td>Spirit</td>
      <td>magixx</td>
      <td>Flash donk into one duel</td>
      <td>donk, sh1ro (trade)</td>
      <td>16–12 over Falcons in Astana final</td>
    </tr>
    <tr>
      <td>Falcons</td>
      <td>karrigan</td>
      <td>Fast, one site, karrigan sacrifices</td>
      <td>NiKo, kyousuke</td>
      <td>Won two Major playoff deciders on Dust2</td>
    </tr>
    <tr>
      <td>NAVI</td>
      <td>Aleksib</td>
      <td>Rehearsed utility overload</td>
      <td>makazze, b1t</td>
      <td>13–11 over Vitality at IEM Atlanta</td>
    </tr>
    <tr>
      <td>FURIA</td>
      <td>FalleN</td>
      <td>Mid-first, site chosen late</td>
      <td>YEKINDAR, KSCERATO</td>
      <td>4–13 to Vitality at BLAST Open Porto</td>
    </tr>
    <tr>
      <td>FaZe</td>
      <td>Twistzz</td>
      <td>Firepower over set pieces</td>
      <td>Twistzz, frozen</td>
      <td>11–13 to Vitality at EWC</td>
    </tr>
  </tbody>
</table>

<p><strong>The 2026 trends</strong></p>
<ul>
  <li>The T pistol is an underdog round on Dust2. Across HLTV’s full Dust2 history, Ts win 47.3% of pistols, yet the T pistol winner converts round 2 80.8% of the time. Winning it is rare enough and valuable enough to justify a prepared play.</li>
  <li>Flash support for the star is the new standard. Spirit’s donk numbers moved because teammates started flashing for him, not because he aimed better.</li>
  <li>Dust2 is a decider map. The two biggest Dust2 maps of the year, both Cologne playoff deciders, went to the team that won the CT half and overtime, not the better T pistol.</li>
  <li>Post-plant rules changed in July. With bomb damage now blocked by walls, Ts holding a post-plant can no longer count on the bomb killing a CT who saves behind cover.</li>
</ul>

<h2 id="2026-dust2-results-among-these-teams">2026 Dust2 results among these teams</h2>

<table>
  <thead>
    <tr>
      <th>Date</th>
      <th>Event</th>
      <th>Result</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2026-09-04</td>
      <td>BLAST Open Porto</td>
      <td>Vitality 13–4 FURIA</td>
    </tr>
    <tr>
      <td>2026-08-23</td>
      <td>Esports World Cup</td>
      <td>Legacy 13–9 FURIA</td>
    </tr>
    <tr>
      <td>2026-08-22</td>
      <td>Esports World Cup</td>
      <td>FUT 16–13 FURIA; Spirit 13–7 Legacy</td>
    </tr>
    <tr>
      <td>2026-08-21</td>
      <td>Esports World Cup</td>
      <td>Legacy 13–10 Falcons</td>
    </tr>
    <tr>
      <td>2026-08-20</td>
      <td>Esports World Cup</td>
      <td>Vitality 13–11 FaZe; Spirit 13–9 B8; FURIA 13–4 G2</td>
    </tr>
    <tr>
      <td>2026-08-15</td>
      <td>Esports World Cup</td>
      <td>FURIA 13–6 9z; Spirit 13–10 BIG</td>
    </tr>
    <tr>
      <td>2026-08-14</td>
      <td>Esports World Cup</td>
      <td>B8 13–4 Vitality</td>
    </tr>
    <tr>
      <td>2026-08-13</td>
      <td>Esports World Cup</td>
      <td>Spirit 19–15 Luminosity; Falcons 13–11 Astralis</td>
    </tr>
    <tr>
      <td>2026-06-20</td>
      <td>IEM Cologne Major (semi-final)</td>
      <td>Falcons 16–12 Spirit</td>
    </tr>
    <tr>
      <td>2026-05-17</td>
      <td>PGL Astana (final)</td>
      <td>Spirit 16–12 Falcons</td>
    </tr>
    <tr>
      <td>2026-05-15</td>
      <td>IEM Atlanta</td>
      <td>NAVI 13–11 Vitality</td>
    </tr>
    <tr>
      <td>2026-04-19</td>
      <td>IEM Rio (final)</td>
      <td>Vitality 13–5 Spirit</td>
    </tr>
    <tr>
      <td>2026-04-18</td>
      <td>IEM Rio</td>
      <td>Spirit 13–7 Falcons</td>
    </tr>
    <tr>
      <td>2026-04-15</td>
      <td>IEM Rio</td>
      <td>Vitality 13–6 Falcons</td>
    </tr>
  </tbody>
</table>

<h2 id="stealing-it-for-your-own-team">Stealing it for your own team</h2>

<p>Pick one pistol per CT tendency you expect, rehearse it until the timings are automatic, and spend your $800s on utility before armour.</p>

<ol>
  <li>Name your donk. Decide who wins the duel and make two teammates flash for him. This is Spirit’s whole 2026 upgrade, and it works at every level.</li>
  <li>Name your Aleksib. Someone dies first on purpose. Agree who, and agree who trades — the trade is what NAVI lost at Cologne.</li>
  <li>Keep one lurker alive. A ropz-style player in lower tunnels or mid on pistol catches the early rotator and turns a 4v5 into a won round.</li>
  <li>Have a B and an A version. Fast B through upper tunnels for opponents who play 2–1–2; mid-to-B or short A for anyone who stacks B.</li>
  <li>Buy utility, not five kevlars. A smoke for CT or window and two flashes for the entry win more pistols than armour on the riflers.</li>
  <li>Plan round 2 before round 1. Ts convert a pistol win into round 2 about 81% of the time on Dust2. Know your anti-eco positions: hold long and B doors, do not chase into SMG range.</li>
  <li>Respect the new bomb. Since July, a CT who saves behind a wall survives the explosion. Hunt the saver if the round 2 economy matters.</li>
</ol>]]></content><author><name>VaporX</name></author><category term="cs2" /><category term="dust2" /><category term="strategy" /><category term="pistol" /><category term="cs2" /><category term="dust2" /><category term="strategy" /><category term="pistol" /><summary type="html"><![CDATA[Dust2 T pistol fundamentals, six elite patterns, and team-by-team reads of NAVI, Vitality, Falcons, FaZe, Spirit, and FURIA in 2026 — plus what to steal for your own stack.]]></summary></entry><entry><title type="html">Unlocking Cars With a Radio: My SDR Keyless-Entry Research</title><link href="https://vaporx.dev/2026/10/08/unlocking-cars-with-a-radio/" rel="alternate" type="text/html" title="Unlocking Cars With a Radio: My SDR Keyless-Entry Research" /><published>2026-10-08T14:30:00+05:30</published><updated>2026-10-08T14:30:00+05:30</updated><id>https://vaporx.dev/2026/10/08/unlocking-cars-with-a-radio</id><content type="html" xml:base="https://vaporx.dev/2026/10/08/unlocking-cars-with-a-radio/"><![CDATA[<p><img src="/assets/img/car-hacking-hero.jpg" alt="A car at night under neon light, its key-fob signal being intercepted as glowing radio waves" /></p>

<p>Back in 2018-19 I spent a stretch of nights in a parking lot with a laptop, a little orange radio board, and a car key. By the end of it I could unlock cars I had permission to test without ever touching their keys. I wrote it up as a paper, <a href="https://irjet.net/archives/V6/i12/IRJET-V6I1219.pdf"><em>Cyber Attacks on Smart Cars using SDR</em></a>, published in IRJET (Volume 6, Issue 12, Dec 2019). This post is the human version of that paper, plus the hands-on work that lives in my <a href="https://github.com/Yashkenia/Car-Hacking">Car-Hacking repo</a>.</p>

<p>A quick, important note before anything else: this was controlled research on vehicles I was allowed to test, done to show a real weakness so it can be fixed. Don’t do this to cars you don’t own. It’s illegal, and that’s not the point.</p>

<h2 id="how-keyless-entry-actually-works">How keyless entry actually works</h2>

<p>The old way to unlock a car was boring and safe: a metal key in a metal lock. Keyless fobs traded that for convenience. Press the button and the fob transmits a short burst of radio at a specific frequency. If the car hears a burst it recognizes, the doors unlock.</p>

<p>In my testing that frequency sat around <strong>433.9 MHz</strong>, a common band for key fobs. And here’s the catch that makes the whole attack possible: on the cars I looked at, the fob sent essentially the <em>same</em> code every time. If the code never changes, then anything that can record radio and play it back can impersonate the key.</p>

<p>The whole attack fits in one picture: record the owner’s press, then play it back later.</p>

<p><img src="/assets/img/replay-attack-v2.svg" alt="Stick-figure flowchart: an owner presses the fob and the car opens; an attacker nearby records the same radio burst with a HackRF and later replays it, and the car opens again because the code never changed." /></p>

<h2 id="the-gear-sdr-gnu-radio-and-a-hackrf">The gear: SDR, GNU Radio, and a HackRF</h2>

<p>Software-Defined Radio (SDR) is the idea that a radio can be defined in software instead of fixed hardware. Instead of a circuit built to do one thing, you get a general-purpose radio and write the logic.</p>

<p>I used two pieces:</p>

<ul>
  <li><strong><a href="https://www.gnuradio.org/">GNU Radio Companion</a></strong>, a visual toolkit where you wire up “blocks” into a flowgraph to process radio signals.</li>
  <li><strong>A HackRF</strong> from Great Scott Gadgets, the actual radio hardware that listens and transmits, connected to the laptop over USB.</li>
</ul>

<p>Together they let me treat a car key’s signal like any other data: capture it, look at it, and send it back.</p>

<h2 id="step-one-capturing-the-key">Step one: capturing the key</h2>

<p>The capture flowgraph was simple. The important blocks:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Osmocom Source   -&gt;  switches the HackRF into receive mode over USB
  center freq:   ~433.9 MHz   (the key fob band)
  sample rate:   2 MHz
QT GUI Waterfall Sink  -&gt;  live visual of the spectrum
File Sink        -&gt;  writes the captured signal to disk
</code></pre></div></div>

<p>The <strong>Osmocom Source</strong> is the abstraction layer that talks to the HackRF and tells it to start receiving. The <strong>Waterfall Sink</strong> draws the spectrum in real time, so when I pressed the fob button, a bright peak jumped up at the key’s frequency. That peak <em>is</em> the key’s transmission. The file sink saved the raw signal so I could replay it later.</p>

<p><img src="/assets/img/capture-flowgraph-v2.svg" alt="Stick-figure flowchart of the capture flowgraph: pressing the fob sends a burst at about 433.9 MHz into the HackRF (an Osmocom Source block); the signal splits to a Waterfall Sink that shows a peak on screen and a File Sink that saves it to disk." /></p>

<h2 id="step-two-replaying-it-at-the-car">Step two: replaying it at the car</h2>

<p>Replay is capture in reverse. The flowgraph reads the saved signal back from the file and pushes it out through the HackRF, with a <strong>Throttle</strong> block to emit it at a steady, repeated rate so it cleanly matches the frequency the car expects.</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>File Source  -&gt;  Throttle  -&gt;  Osmocom Sink (HackRF, transmit)
</code></pre></div></div>

<p><img src="/assets/img/replay-flowgraph-v2.svg" alt="Stick-figure flowchart of the replay flowgraph: a File Source reads the saved signal, a Throttle block paces it, an Osmocom Sink transmits it through the HackRF on the air, and the car unlocks." /></p>

<p>Point the radio at the car, run the graph, and the recorded “unlock” plays back on the air. The car hears a code it trusts and opens. That’s a <strong>replay attack</strong>: no cloning, no cracking, just record and re-send. The same approach extends to <strong>man-in-the-middle</strong> (sitting between fob and car) and, with enough noise on the band, <strong>denial of service</strong> by jamming the fob so the real key stops working.</p>

<h2 id="which-cars-fell-to-it">Which cars fell to it</h2>

<p>The formal results in the paper were on three cars, with the Indian Honda City i-Vtec as the main test subject, plus the Toyota Innova Crysta and the Maruti Wagon R. On all three, capture-and-replay worked.</p>

<p>I also ran the same attack against a <strong>2014 Hyundai Xcent</strong>. The capture and replay flowgraphs for it (<code class="language-plaintext highlighter-rouge">xcentcap.grc</code> and <code class="language-plaintext highlighter-rouge">xcentreplay.grc</code>) are in the <a href="https://github.com/Yashkenia/Car-Hacking">repo</a> alongside the Honda and Wagon R graphs. Same method, same result.</p>

<h2 id="why-it-worked-and-the-fix">Why it worked, and the fix</h2>

<p>None of this is clever cryptography on my end. It worked because the fobs used <strong>fixed codes</strong>. A code that never changes can always be replayed.</p>

<p><img src="/assets/img/fixed-vs-rolling-v2.svg" alt="Fixed code stays the same on every press and is still accepted later. Rolling code advances, so an old press is rejected." /></p>

<p>The fix has existed for decades, and good cars already use it:</p>

<ul>
  <li><strong>Rolling codes (hopping codes).</strong> The fob and car share a cryptographically secure sequence. Every button press sends the <em>next</em> code, and the car accepts only codes ahead of the last one it saw (typically within a window of about 256, in case a few presses happen out of range). A replayed old code is simply rejected.</li>
  <li><strong>KeeLoq.</strong> A classic code-hopping cipher: it encrypts a 32-bit block to produce a 32-bit hopping code (with a 32-bit initialization vector XORed in), combined with a fixed serial-number portion. Every press produces a different transmission, so a recording is useless a moment later.</li>
</ul>

<p>The threat model is worth stating plainly. An attacker who owns the fob’s radio link can unlock, steal, track, lock out a key, try to brute-force or clone the fob, or jam its signal. Rolling codes shut down the easy end of that list. My conclusion in the paper was blunt: <em>every car should at least implement a rolling-code mechanism.</em> In 2019 some still didn’t.</p>

<h2 id="takeaways">Takeaways</h2>

<p>The lesson that stuck with me: convenience features quietly become attack surface. A key fob feels like a small thing, but it’s a radio protocol, and radio protocols need the same rigor as anything else. A fixed code is a password you broadcast to everyone nearby.</p>

<p>If you want the formal details, read the <a href="https://irjet.net/archives/V6/i12/IRJET-V6I1219.pdf">full paper</a>. If you want the actual GNU Radio flowgraphs and code, they’re in the <a href="https://github.com/Yashkenia/Car-Hacking">Car-Hacking repo</a>. Questions or corrections, find me on <a href="https://x.com/VAporXdc">X</a>.</p>]]></content><author><name>VaporX</name></author><summary type="html"><![CDATA[How I used a HackRF and GNU Radio to capture and replay car key-fob signals, which cars fell to it, and the simple fix every car should already have.]]></summary></entry><entry><title type="html">Hello, world: learning in public</title><link href="https://vaporx.dev/2026/10/08/hello-world/" rel="alternate" type="text/html" title="Hello, world: learning in public" /><published>2026-10-08T12:00:00+05:30</published><updated>2026-10-08T12:00:00+05:30</updated><id>https://vaporx.dev/2026/10/08/hello-world</id><content type="html" xml:base="https://vaporx.dev/2026/10/08/hello-world/"><![CDATA[<p>This is the first post on my new blog. I’m starting it to learn in public: writing things down makes me understand them better, and maybe it’ll help someone a step or two behind me.</p>

<p>Here’s what I plan to write about.</p>

<h2 id="exploit-development-notes">Exploit development notes</h2>

<p>I’m learning exploit development, and I’ll post notes as I go: concepts that finally clicked, labs and CTF challenges I work through, and breakdowns of publicly disclosed vulnerabilities. Expect mistakes along the way. Those are part of the point.</p>

<h2 id="how-my-ai-bot-stack-works">How my AI bot stack works</h2>

<p>I’m building a team of AI bots, each with its own job, that work together to help me run things. I’ll write about how they’re set up, how they hand work to each other, and what breaks.</p>

<h2 id="counter-strike-2">Counter-Strike 2</h2>

<p>I play CS2, so expect the occasional take, clip, or thing I learned from grinding.</p>

<h2 id="project-writeups">Project writeups</h2>

<p>I also want to go back and properly write up older projects. The first one on the list is my <a href="https://github.com/Yashkenia/Car-Hacking">Car-Hacking</a> repo, which uses software-defined radio (a HackRF) and Python to capture car key fob signals and explore replay, man-in-the-middle, and denial-of-service attacks.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Rough idea of what's coming in that writeup
</span><span class="n">steps</span> <span class="o">=</span> <span class="p">[</span><span class="s">"capture the key fob signal"</span><span class="p">,</span> <span class="s">"analyze it"</span><span class="p">,</span> <span class="s">"replay it"</span><span class="p">,</span> <span class="s">"understand why it worked"</span><span class="p">]</span>
<span class="k">for</span> <span class="n">step</span> <span class="ow">in</span> <span class="n">steps</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"[+] </span><span class="si">{</span><span class="n">step</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<p>If any of this sounds interesting, follow me on <a href="https://x.com/VAporXdc">X</a> or check out my <a href="https://github.com/Yashkenia">GitHub</a>. More soon.</p>]]></content><author><name>VaporX</name></author><summary type="html"><![CDATA[What this blog is for: exploit dev notes, my AI bot stack, CS2, and project writeups.]]></summary></entry></feed>