> For the complete documentation index, see [llms.txt](https://documentation.hak5.org/payload-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.hak5.org/payload-studio/getting-started/editing-basics.md).

# Editing Basics

{% hint style="info" %}
**Don't worry**, you can always change the device mode while editing a payload!
{% endhint %}

## Changing Device / Editing mode

Changing editor modes is as easy as two clicks!&#x20;

1. Click the current device from the top left of the editor
2. Choose a new device mode from the Device Picker Menu

<figure><img src="/files/mo14sPd5fjKjk4eIUuAE" alt=""><figcaption><p>Change editor mode</p></figcaption></figure>

<figure><img src="/files/Al23hMfJOauih8cPgKPn" alt=""><figcaption><p>Changing devices from the Device Picker</p></figcaption></figure>

Payload Studio supports the full line of Hak5 DuckyScript compatible devices:

## [USB Rubber Ducky](https://hak5.org/products/usb-rubber-ducky)

<figure><img src="/files/1M6JNQM7LQqc6iOezGv7" alt=""><figcaption></figcaption></figure>

The **NEW** USB Rubber Ducky supports DuckyScript 3.0 (and DuckyScript 1.0) with full features and compiled payloads!

[USB Rubber Ducky Documentation](https://docs.hak5.org/hak5-usb-rubber-ducky/)

{% hint style="info" %}

#### USB Rubber Ducky Original

The original USB Rubber Ducky continues to work with DuckyScript 1.0 features!
{% endhint %}

<figure><img src="/files/pRn0ncapegs0WdrwxabX" alt=""><figcaption><p>USB Rubber Ducky Mode</p></figcaption></figure>

### Ducky Payload Deployment

When you're read to test or deploy your payload:

click ![Generate Payload button](/files/5iXQ7cjFqXmdY7FmW816) \
\
PayloadStudio will then take the `DuckyScript Source code` in the Editor and compile it into an `inject.bin`<br>

<figure><img src="/files/Oe3lSHPmpkG9rEeUnTA4" alt=""><figcaption><p>Compiling Notification</p></figcaption></figure>

PayloadStudio will automatically open the console. This is where the compiler will output any information regarding the compilation process and the resulting `inject.bin`

<figure><img src="/files/8upJrI7BEaqo0NGzwOUS" alt=""><figcaption><p>PayloadStudio Compiler output in the Console</p></figcaption></figure>

Below the console, if your payload compiled successfully, you'll find the **Result**

<figure><img src="/files/VQlRr3ABCdsqyeSf5IxD" alt=""><figcaption><p>Generate Payload Result</p></figcaption></figure>

Here you can download the `inject.bin`

Download `inject.bin` ![Download button](/files/KIwnRaPZicRuHvQwx3Sq)![Download Button on hover](/files/mznF6akJowelHHQ9lAuq)

This dialog also provides the option to download **the source that generated** the `inject.bin` -- This *may differ from whats currently in the editor if you've made changes in the editor since compiling*

Download Source: ![Download Submenu](/files/tooscK2PI6L0j08kNCWT)![Download submenu > Download Source button](/files/W7UmvDCwq3jrYgZawJuk)

From this sub-menu you may also discard the `inject.bin`

If you've made changes in the editor after clicking **Generate Payload** - PayloadStudio will notify you that the current editing session differs from the `inject.bin` and `payload.txt` available for download:

<figure><img src="/files/hzvi8AUlROBctXCkLZSv" alt=""><figcaption><p>Uncompiled Changes display in the breadcrumbs</p></figcaption></figure>

<figure><img src="/files/j0pHeYICJaeC3NY5Ckgv" alt=""><figcaption><p>Editor differs from available download</p></figcaption></figure>

{% hint style="info" %}
You can always download a copy of the current editor from **File >** **Save** ![](/files/5Ak055IdsQQ73L5xCbKy)
{% endhint %}

## [Bash Bunny](https://hak5.org/products/bash-bunny)

<figure><img src="/files/YyfdhxdbCJlOUDFRRYOr" alt=""><figcaption></figcaption></figure>

The Bash Bunny supports DuckyScript 2.0 + bash scripting

[Bash Bunny Documentation](https://docs.hak5.org/bash-bunny/)

<figure><img src="/files/Hz1PLMb1KvVMFplrS0pI" alt=""><figcaption><p>Bash Bunny Mode</p></figcaption></figure>

### Bunny Payload Deployment

Click ![](/files/NbU8XFrbri2m5wQp7pzZ) or ![](/files/EM3jp3HIX94rQMQFt8PY)

Next, arm and transfer to the device - for more info see [Bash Bunny Documentation](https://docs.hak5.org/bash-bunny/)

## [Key Croc](https://hak5.org/products/key-croc)

<figure><img src="/files/ON7sfxFngDBqSqDovEfk" alt=""><figcaption></figcaption></figure>

The Key Croc supports DuckyScript 2.0 + bash scripting

[Key Croc Documentation](https://docs.hak5.org/key-croc/)

<figure><img src="/files/FI51K0rdMqsxK2AVQBww" alt=""><figcaption><p>Key Croc Mode</p></figcaption></figure>

### Croc Payload Deployment

Click ![](/files/NbU8XFrbri2m5wQp7pzZ) or ![](/files/J0BzdSDqeVOlE1eoVw33)

Next, arm and transfer to the device - for more info see [Key Croc Documentation](https://docs.hak5.org/key-croc/)

## [Shark Jack](https://hak5.org/products/shark-jack)

<figure><img src="/files/fhGaaVyyvxAE6gndRfYO" alt=""><figcaption></figcaption></figure>

The Shark Jack supports DuckyScript 2.0 + bash scripting

[Shark Jack Documentation](https://docs.hak5.org/shark-jack/)

<figure><img src="/files/zjAhTxjw3Qx4oj7VQfDV" alt=""><figcaption><p>Shark Jack Mode</p></figcaption></figure>

### Shark Payload Deployment

Click ![](/files/NbU8XFrbri2m5wQp7pzZ) or ![](/files/4mJ8n3IrdoWzYixhQSDY)

Next, arm and transfer to the device - for more info see [Shark Jack Documentation](https://docs.hak5.org/shark-jack/)

## [Packet Squirrel](https://hak5.org/products/packet-squirrel)

<figure><img src="/files/oLCiZoBCIK3PfDgAjRN4" alt=""><figcaption></figcaption></figure>

The Packet Squirrel supports DuckyScript 2.0 + bash scripting

[Packet Squirrel Documentation](https://docs.hak5.org/packet-squirrel/)

<figure><img src="/files/ggFyNDfx6CEuuoeP4FAr" alt=""><figcaption><p>Packet Squirrel Mode</p></figcaption></figure>

### Squirrel Payload Deployment

Click ![](/files/NbU8XFrbri2m5wQp7pzZ) or ![](/files/kI5Hc6yZ5iLXLqeRbGy2)

Next, arm and transfer to the device - for more info see [Packet Squirrel Documentation](https://docs.hak5.org/packet-squirrel/)

## [LAN Turtle](https://hak5.org/products/lan-turtle)

<figure><img src="/files/PIlGX7dwctiyu9eM1K4e" alt=""><figcaption></figcaption></figure>

The LAN Turtle supports DuckyScript 2.0 + bash scripting

[LAN Turtle Documentation](https://docs.hak5.org/lan-turtle/)

<figure><img src="/files/Uane9uAxSshZyMnPpEZT" alt=""><figcaption><p>LAN Turtle Mode</p></figcaption></figure>

### Turtle Payload Deployment

Click ![](/files/NbU8XFrbri2m5wQp7pzZ) or ![](/files/SWtIxwjXgIaWClGgLiTf)

Next, arm and transfer to the device - for more info see [LAN Turtle Documentation](https://docs.hak5.org/lan-turtle/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.hak5.org/payload-studio/getting-started/editing-basics.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
