Wireless keystroke injection attack platform

WiFi Duck

WiFi Duck Logo

About

This open-source project aims to provide a user-friendly tool to learn about keystroke injection attacks and 'BadUSBs'.

By emulating a USB keyboard, tools like this can gain full access to any computer with a USB port in a matter of seconds!
This is made possible by the fact that keyboards are trusted by computers. You can have full control over a computer with just a keyboard.
A BadUSB pretends to be a keyboard to the computer to send keystrokes. But unlike a human, it can type hundreds of characters per second. By using a simple scripting language, it's easy to make BadUSBs type whatever you want.

With the WiFi Duck, you can simply connect via WiFi to manage all scripts from within a web interface. This means that, unlike other BadUSBs, you don't need to install an app, log in, compile or copy scripts to an SD card.

Usage

WiFi Duck Video Thumbnail
Watch the full video

  1. Plug in your WiFi Duck
  2. Connect to the WiFi network wifiduck with the password wifiduck
  3. Open a browser and visit 192.168.4.1
  4. Write, save and run your first Ducky Script
  5. [Recommended] Open Settings (top right corner) and update SSID and password

Help I forgot the password: Flash the ESP8266, but make sure that you select Erase Flash: Sketch + WiFi Settings under Tools in the Arduino IDE.

If you have further questions, check out the issue section.

Support us

Hey, do you like this kind of project?
It took a huge amount of effort to create!

To make sure we can keep working on free and open-source projects like this,
please consider becoming a ❤️ Sponsor or support us via Ko-fi.

Visit spacehuhn.com to learn more about us. 🐔

Buy Me a Coffee at ko-fi.com

Buy Hardware

Malduino W

Malduino W
Go to Maltronics.com

A nicely encased, inconspicuous looking BadUSB by Maltronics.
Having USB-A and USB-C makes it compatible with all kind of devices.
It comes flashed with the WiFi Duck firmware and works plug and play.
ℹ️ Documentation can be found here

DSTIKE WiFi Duck

DSTIKE WiFi Duck
Got to DSTIKE.com

A custom designed development board which comes preflashed with this software by Travis Lin.

You can update the ESP8266 over the air and flash the Atmega32u4 via Arduino, all while enclosed in its neat little case.
📺 Watch the How to Update Tutorial here.

If you wish to develop your own software or help improve this one, the 8-bit DIP-switch makes it easy for you to access the Atmega32u4 or ESP8266 independently. For more info see Flash Software.

Mode Atmega32u4 ESP8266 DIP-switch Image
Default Operating Mode USB On 10101101 dstike wifi duck work mode
Atmega32u4 Flash Mode USB Off 10101010 dstike wifi duck atmega mode
ESP8266 Flash Mode Off USB 01011101 dstike wifi duck esp8266 mode

DIY Hardware

WiFi Duck Hardware Tutorial Video Thumbnail
Watch the video tutorial

To build a WiFi Duck yourself, you need the following hardware:

  • An Atmega32u4 development board (see the list below)
  • An ESP8266 or ESP8285 development board (see the list below)
  • Optional: A single Neopixel (WS2812b) or Dotstar (APA102) LED

To flash the microcontrollers you need a computer and USB cable.

If you're a beginner, it's recommended you wire everything together on a breadboard first!
In this case, you'd also need a breadboard with a couple of jumper wires.

If you wish to solder everything together into a small gadget, you also need soldering equipment.

You can use any Atmega32u4 or ESP8266 based development board, but if you have no idea where to start, here's a list.
⚠️ Keep in mind that you will need both microcontrollers!
The Atmega32u4 to act as USB keyboard, and the ESP8266 for WiFi.

Atmega32u4 Development Boards

  • Arduino Leonardo
  • Arduino Micro
  • Sparkfun Pro Micro
  • CJMCU Beetle
  • SS Micro

‼️ DIGISPARK or other ATTINY85 based development boards, are NOT supported! ‼️

ESP8266 Development Boards

  • NodeMCU 1.0 (ESP-12E Module)
  • LOLIN(WEMOS) D1 Mini
  • LOLIN(WEMOS) D1 Mini Pro
  • LOLIN(WEMOS) D1 Mini Lite

Connections

A map of pins that need to be connected.

ESP8266 Atmega32u4
D1 alias GPIO 5 3 alias SCL
D2 alias GPIO 4 2 alias SDA
GND GND

Ideally, you want the Atmega32u4 to power the ESP8266, so it can run on one USB connection, instead of having to always plug in both.
To share power between both chips, you need a voltage regulator that takes 5V and turns it into 3.3V.
That's because USB runs on 5V, but the ESP8266 only takes 3.3V. Luckily most development boards have such a regulator on board.
DO NOT CONNECT ESP8266 VCC to the ATMEGA32u4 VCC, it will kill the ESP826. Instead look for the 5V or VIN pin on your dev board, as those will be connected to the regulator.

ESP8266 Dev Board Atmega32u4
5V or VIN RAW, 5V or VIN

To add a Neopixel (WS2812b) LED:

Atmega32u4 Neopixel LED
7* DI alias Data, In
5V alias VCC 5V alias VCC
GND GND

* The Data pin can be changed later on in the software, pin 7 is just an example.

Example of a DIY build using a Wemos d1 mini, a Pro Micro and a Neopixel LED

PCB

To make the DIY process easier, I designed a little PCB.

You solder a Pro Micro board on one side and a Wemos d1 mini or NodeMCU board (depending on the PCB) on the other side.
That's it. You don't even have to solder all pins, just the ones mentioned in Connections, excluding the LED.

PCB Layout

Soldered PCBs

Design Files:

You can also order them on OSHPark:

Flash Software

WiFi Duck Hardware Tutorial Video Thumbnail
Watch the video tutorial

  1. Download and install the Arduino IDE.
  2. Start the Arduino IDE, go to File > Preferences.
  3. At Additional Board Manager ULRs enter https://raw.githubusercontent.com/spacehuhn/hardware/master/wifiduck/package_wifiduck_index.json. You can add multiple URLs, separating them with commas.
  4. Go to Tools > Board > Board Manager, search for wifi duck and install WiFi Duck AVR Boards and WiFi Duck ESP8266 Boards.
  5. Download and extract this repository or git clone it.

If you can't find the COM port of ESP8266 board, then you're probably missing the right drivers. Here are links to drivers of the 2 most used UART chips on ESP8266 development boards:

Flash Atmega32u4

  1. Open atmegaduck/atmega_duck.ino with the Arduino IDE.
  2. Under Tools > Board in the WiFi Duck AVR section, select your board; for example, Sparkfun Pro Micro.
  3. Connect the Atmega32u4 board via USB and select its port under Tools > Port.
  4. Optional: Under Tools you can enable the LED and set its pin. You can also change the USB ID to make it appear as a certain type of keyboard.
  5. Press Upload.

Flash ESP8266

  1. Open esp_duck/esp_duck.ino with the Arduino IDE.
  2. Under Tools > Board in the WiFi Duck ESP8266 section, select your board. For example NodeMCU 1.0 (ESP-12E Module).
  3. Connect the ESP8266 board via USB and select its port under Tools > Port.
  4. Press Upload.

Pro Tip: If the ESP8266 is already running this software and you just want to update it, you don't have to connect it via USB. You can update it over the air! Simply connect to the wifiduck network (default password is wifiduck).
Then in Arduino at Tools > Port you should now see a network port. Select it and press Upload.

Note: After the initial flashing, the ESP8266 has to format its memory, so it might take a minute until it's fully ready.

If you connected the RGB LED:

  • Blue LED = Connection working
  • Green LED = Device ready

Unbrick Atmega32u4

If you flashed your Atmega32u4 board with the wrong bootloader, it will no longer appear in the port selection after you connect it.
To solve this, you need to:

  1. Connect the reset pin RST to ground GND. Preferably with a jumper wires, because you need to be able to disconnect it quickly.
  2. Open a sketch, atmegaduck/atmega_duck.ino or an empty sketch.
    Make sure to have the correct board selected under Tools > Board!
  3. Connect the board with the wire still connected.
  4. Press Upload and as soon as you see Compiling... turn to Uploading..., disconnect the wire.

Now it should flash the sketch and the correct bootloader.

Scripting

Basics

Keys are separated by a single space.
Everything written in a single line gets pressed and released at the same time.
To write text, use the STRING function.
It's compatible to Ducky Script, which was developed by the wonderful people at Hak5.

Example Explanation
WINDOWS
r
Type the Windows key and then the r key
WINDOWS r Press the Windows key and the r key simultaneously
STRING WINDOWS r Write WINDOWS r

Functions

Command Example Description
REM REM Hello World! Comment
DEFAULTDELAY or DEFAULT_DELAY DEFAULTDELAY 200 Time in ms between every command
DELAY DELAY 1000 Delay in ms
STRING STRING Hello World! Types the following string
REPEAT or REPLAY REPEAT 3 Repeats the last command n times
LOCALE LOCALE DE Sets the keyboard layout. Available: DE, ES, GB, US, DK, RU, FR
KEYCODE KEYCODE 0x02 0x04 Types a specific key code (modifier, key1[, ..., key6]) in decimal or hexadecimal
LED LED 40 20 10 Changes the color of the LED in decimal RGB values (0-255)

Standard Keys

Key
a - z
A - Z
0 - 9
F1 - F12

Modifier Keys

Key
CTRL or CONTROL
SHIFT
ALT
WINDOWS or GUI

Other Keys

Key
ENTER
MENU or APP
DELETE
HOME
INSERT
PAGEUP
PAGEDOWN
UP or UPARROW
DOWN or DOWNARROW
LEFT or LEFTARROW
RIGHT or RIGHTARROW
TAB
END
ESC or ESCAPE
SPACE
PAUSE or BREAK
CAPSLOCK
NUMLOCK
PRINTSCREEN
SCROLLLOCK

Examples

REM Hello World for Windows PCs
DEFAULTDELAY 200
GUI r
STRING notepad
ENTER
STRING Hello World!

CLI Commands

The command line interface or CLI is accessible using a serial connection to the ESP8266 (115200 baud, Newline ending) or via the web interface at 192.168.4.1/terminal.html.

General

Command Description Example
help Returns all available commands help
ram Returns available memory in bytes ram
version Returns version number version
settings Returns list of settings settings
set -n/ame -v/alue Sets value of a specific setting set ssid "why fight duck"
reset Resets all settings to their default values reset
status Returns status of i2c connection with Atmega32u4 status
run <...> Starts executing a Ducky script run example.txt
stop <...> Stops executing a Ducky script stop example.txt

SPIFFS File Management

Command Description Example
mem Returns available, used and free memory of SPIFFS in bytes mem
format Formats SPIFFS format
ls <...> Returns list of files ls /
create <...> Creates file create example.duck
remove <...> Deletes file remove example.duck
cat <...> Returns content of file cat example.duck
rename -fileA,a -fileB,b Renames file rename example.duck example.txt
write -f/ile -c/ontent Writes (appends) data to file write example.txt "Hello World!"
stream <...> Opens file stream stream example.txt
close Closes file stream close
read Read and return the result from file stream read

If a stream is open, everything you type (except messages containing exactly close or read) will be written to the file until you type close!

How to Debug

To properly debug, you need to have both the Atmega32u4 and the ESP8266 connected via USB to your computer.

That can be tricky when you only have a all in one board, so it might be useful you built one yourself. You don't need to solder it, for example you can use an Arduino Leonardo and a NodeMCU and connect them with jumper cables.

Now open 2 instances of Arduino (so they run as separate processes!), select the COM port and open the serial monitor for each device. You might need to reset the Atmega32u4 to see serial output. If that causes problems with the i2c connection, try to reset the ESP8266 too.

Development

Edit Web Files

If you would like to modify the web interface, you can!
The web/ folder contains all .html, .css, .js files.
You can edit and test them locally as long as you're connected to the WiFi Duck network thanks to the websocket connection handled by JavaScript in the background.

To get the new files onto the ESP8266, run python3 webconverter.py in the repository folder.
It gzips all files inside web/, converts them into a hex array and saves it in esp_duck/webfiles.h.
Now you just need to flash the ESP8266 again.

Translate Keyboard Layout

Currently supported keyboard layouts:

All standard keys are defined in usb_hid_keys.h.
To translate a keyboard layout, you have to match each character on your keyboard to the one(s) of a US keyboard.
This stuff is hard to explain in writing and requires a lot of manual work and testing.

  1. Copy one of the existing layouts files, like locale_us.h.
    Preferably one that is close to your keyboard layout, it will save you time!
  2. Add #include "locale_xx.h" to the end of the locales.h file.
  3. Rename the file and its variables to your language code. For example:
    locale_xx.h -> locale_de.h,
    ascii_xx -> ascii_de,
    locale_xx -> locale_de,
    extended_ascii_xx -> extended_ascii_de,
    utf8_xx -> utf8_de.
  4. Modify the ASCII array.
    The ASCII array has a fixed size. Each row describes a key. First a modifier key like KEY_MOD_LSHIFT, then a character key. Some ASCII characters can't be typed or don't require a modifier, that's where you must place KEY_NONE. Check usb_hid_keys.h for the available keys.
    If multiple modifiers are required, you must use a bitwise OR to connect them: KEY_MOD_RALT | KEY_MOD_LSHIFT.
    For example, in locale_de.h Z is saved as KEY_MOD_LSHIFT, KEY_Y.
    This is because German keyboards use QWERTZ instead of the QWERTY layout and since the letter is uppercase, shift must be pressed as well.
    Thankfully you don't have to trial and error everything, the Hak5 Community translated a lot of layouts already here. It's just written in a different syntax. For example, ASCII_20 (20 in hexadecimal) is the 32th character in our ascii array.
  5. Modify or create the extended ASCII array.
    The extended ASCII array doesn't have a fixed size and is only as long as you make it. First the character code. For example, ä has the index 132, or 84 in hex. It doesn't use a modifier and sits where the apostrophe key is on a US keyboard: 0x84, KEY_NONE, KEY_APOSTROPHE, // ä.
  6. Modify or create the UTF-8 array.
    The UTF-8 array is variable in length, too.
    The first 4 bytes are the character code.
    For example, Ä has the hex code c384 or 0xc3 0x84. The other 2 bytes are not used so we set them to 0. Because the letter is uppercase, we need to press the shift key and like before, the letter is typed by pressing the same key as the apostrophe key of a US keyboard: 0xc3, 0x84, 0x00, 0x00, KEY_MOD_LSHIFT, KEY_APOSTROPHE, // Ä.
  7. Edit the hid_locale_t structure.
    If you renamed all variables accordingly, there's nothing left to do.
  8. Go to duckparser.cpp at // LOCALE (-> change keyboard layout) you can see a bunch of else if statements. You need to copy one for your layout.

Before adding GB layout:

str, w->len, "DE", CASE_SENSETIVE)) { keyboard::setLocale(&locale_de); } ">
if (compare(w->str, w->len, "US", CASE_SENSETIVE)) {
    keyboard::setLocale(&locale_us);
} else if (compare(w->str, w->len, "DE", CASE_SENSETIVE)) {
    keyboard::setLocale(&locale_de);
}

After adding GB layout:

str, w->len, "DE", CASE_SENSETIVE)) { keyboard::setLocale(&locale_de); } else if (compare(w->str, w->len, "GB", CASE_SENSETIVE)) { keyboard::setLocale(&locale_gb); } ">
if (compare(w->str, w->len, "US", CASE_SENSETIVE)) {
    keyboard::setLocale(&locale_us);
} else if (compare(w->str, w->len, "DE", CASE_SENSETIVE)) {
    keyboard::setLocale(&locale_de);
} else if (compare(w->str, w->len, "GB", CASE_SENSETIVE)) {
   keyboard::setLocale(&locale_gb);
}
  1. Test your layout with a Ducky Script that contains all characters of your keyboard. For example:
[email protected][\]^_abcdefghijklmnopqrstuvwxyz{|}~²³äöüÄÖÜ߀°§` ENTER ">
LOCALE DE
STRING !"#$%&'()*+,-./0123456789:;<=>[email protected][\]^_abcdefghijklmnopqrstuvwxyz{|}~²³äöüÄÖÜ߀°§`
ENTER
  1. Add a link to your layout to README, to web/index.html and please feel free to improve this tutorial to help future translators!
  2. Create a Pull Request

Disclaimer

This tool is intended to be used for testing, training, and educational purposes only.
Never use it to do harm or create damage!

The continuation of this project counts on you!

License

This software is licensed under the MIT License. See the license file for details.

Credits

Software libraries used in this project:

Owner
Spacehuhn Technologies
Open Source Hacking Tools
Spacehuhn Technologies
Comments
  • [CA-FR] Keyboard Locale Programming

    [CA-FR] Keyboard Locale Programming

    Hi! I'm trying to create a keyboard locale for the CA_FR keyboard and I'm really struggling. While I did manage to convert most of the keyboard layout, I'm really struggling with the accented letters. For the éÉ keys (which should be the easiest since they're available in the extended ASCII tables, I found the code, converted it to hex in the following fashion const uint8_t extended_ascii_ca_fr[] PROGMEM = { 0x82, KEY_NONE, KEY_SLASH, // é 0x90, KEY_MOD_LSHIFT, KEY_SLASH, // É }; but the letters just won't print on the screen when I send them to the duck.

    Also, we have a bunch of letters (èêëôîçï) which are made using "sticky keys" where you first press the accent key and then the letter you want accented ^+e=ê How in the world do I program those?

    Thanks!

  • ATMEGA32U4 ESP8266 - Steps to be followed

    ATMEGA32U4 ESP8266 - Steps to be followed

    I have the ATMEGA32U4 ESP8266, which has both the Microcontroller part and the WIFI part in a single board. How do I use these scripts in this case?

    Do I need to follow the same steps?

  • When I connect to the wifi duck it says that there is an internal connection problem

    When I connect to the wifi duck it says that there is an internal connection problem

    Describe the error After connecting to the duck there is a yellow bar at the top saying that there is an internal connection problem. There is no output to the serial monitor and I can't type anything using the duck

    Environment:

    • OS: Windows 10
    • Version: 1.0.4 (0)
    • Hardware: Arduino Pro Micro, Weimos D1 Mini, Spacehuhn's PCB

    Attempts I have tried connecting to the serial monitor without success and I have checked all the solder connections which are fine

    Does anyone have any idea what the issue might be?

  • Internal connection  problem

    Internal connection problem

    https://github.com/SpacehuhnTech/WiFiDuck/blob/40456264ddff330b6c2c4310cfebbb472a0e6458/esp_duck/esp_duck.ino#L19

    please update the delay to 1000ms to resolve the internal connection issue

  • i2c connection problem

    i2c connection problem

    It gives an i2c connection problem when I run a script with this line

    STRING msedge https://youtube.com

    When that error came I can't run scripts until I replug the board.

  • string doesn't finish typing before next command

    string doesn't finish typing before next command

    Having an issue where I have a string that is types out followed by another command. In this case ENTER. What happens is it types out ENTER instead of pressing the enter key. It only types out: https://grabify.link/8ESENTER Where it should be typing out https://grabify.link/8ESCC1

    This is the code:

    DEFAULTDELAY 200
    GUI r
    STRING https://grabify.link/8ESCC1
    ENTER
    

    But splitting them onto 2 lines solves the issue e.g

    DEFAULTDELAY 100
    GUI r
    STRING https://grabify.link/
    STRING 8ESCC1
    ENTER
    
  • Internal connection problem [Help]

    Internal connection problem [Help]

    Capture

    Anytime I attempt to run a script I am given this error and nothing is typed. I've tried multiple boards with no success. Am currently using Leonardo with D1 mini.

  • new .bin official releases

    new .bin official releases

    Hi big boss, since precompiled .bin v1.0.0 release, you've made several updates to the sources. https://github.com/SpacehuhnTech/WiFiDuck/releases i read that 43 changes have been made, would you like to re-run the sources and publish a .bin v1.0.1? so we can upgrade easily directly from the web interface ♥

  • SSID (and password) won't save

    SSID (and password) won't save

    SSID, password and channel won't save.

    This I think is either 2 thing. It's not saving the eeprom or the front end is not passing it through correctly. I'll investigate and push a fix through

  • Internal Connection Problem Yellow warning when trying to run any script on the WiFi Duck from DSTike

    Internal Connection Problem Yellow warning when trying to run any script on the WiFi Duck from DSTike

    Just received a pre-built version of the WiFiDuck from Travis Lin. When connected, it seems to work and allows association to the wifiduck hotstop, nonetheless when trying to execute any script, pressing the run button or enabling the auto-run feature, a yellow warning appears saying "Internal Connection Problem". As I said, this is a pre-built model and not the separate boards featured on other topics with the same error message. I tried to import an existing ducky script as well, which works perfectly on the Rubber Ducky, and it does not work on the WiFiDuck either.

    I also tried re-flashing both parts of the firmware, but I was able to do just one of them. The other (atmega) does not respond, according to the instructions on the videos. It is not even recognized in the Arduino IDE interface as a valid port, which is strange, since it works and as I said, allows association to the default WiFiDuck hotspot.

    When issuing the command "status" on the terminal window of the tool, it generates the same error. Any help would be appreciated. Tried on Windows, Mac and Linux without results.

    Is there a way to run any diagnostics to rule out a hardware failure?

    Thanks for your help.

  • help error running script!

    help error running script!

    I am running wifiduck on a Debkit NodeMcu v3 and I have an error, the error is from the attached image.

    the version i am using for wifi duck is 1.0.0

    Screenshot_2020-06-13-00-37-13

  • WIFI WHID

    WIFI WHID

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Your Question

    Does it work on the wifi WHID

    Description

    Hi, I have a WHID usb, and the older firmware of wifi duck used to work with whid, I want to start using again, does this work on the wifi whid ?

  • Hardware

    Hardware

    Is there an existing issue for this?

    • [x] I have searched the existing issues

    Your Question

    Will I be able to use this with my esp32-wroom-32d

    Description

    I just was curious if I could use this with my esp32. I tried searching for hardware requirements, but I couldn't find any.

  • WiFi not visible to mobile device

    WiFi not visible to mobile device

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Describe your problem

    Wifi visible to computer & iPhone but not to my Android device (2

    Steps to reproduce

    The two devices in question is a Samsung Galaxy S22 stock and Moto g power (2020 model) Things I did: Formatted Wi-Fi duck Changed Wi-Fi channel Changed SSID Pulled out and we inserted still didn't detect. Even used Wigle WiFi but it still didn't detect.

    What hardware are you using?

    Samsung Galaxy S22 stock, Moto g power (2020) bootloader unlocked, iPhone 6s, Xmobile tablet

    Anything else?

    No response

  • Keystroke fix

    Keystroke fix

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Describe your problem

    ARROW commands not working

    Steps to reproduce

    DELAy 1000 LEFT DELAY 100 ENTER

    Having to choose between yes and no in a prompt So I type LEFT representing the left arrow

    Do I need to type STRING LEFT no that doesn't make sense

    Dstike wifi duck

    What hardware are you using?

    DStike Wifi duck

    Anything else?

    No response

  • Commands don´t work

    Commands don´t work

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Describe your problem

    Whenever i write a new scrip it comes the error Command not Foung e.g STring don´t work

    Steps to reproduce

    1. Go to editor
    2. Type any script and...

    What hardware are you using?

    Wifiduck

    Anything else?

    No response

Brutally effective DNS amplification ddos attack tool. Can cripple a target machine from a single host. Use with extreme caution.

Brutally effective DNS amplification ddos attack tool. Can cripple a target machine from a single host. Use with extreme caution.

Sep 16, 2022
DNS amplification DDOS attack tool.

DNS amplification DDOS attack tool.

Sep 23, 2022
Thc-ipv6 - IPv6 attack toolkit

THC-IPV6-ATTACK-TOOLKIT (c) 2005-2022 [email protected] https://github.com/vanhauser-thc/thc-ipv6 Licensed under AGPLv3 (see LICENSE file) INTRODUCTION Th

Oct 2, 2022
WiFi Attack + Recon Suite for the ESP8266 WiFi Nugget

Nugget-Invader Welcome to the Nugget Invader repository! The Invader is a WiFi attack suite developed for the WiFi Nugget, an ESP8266 based platform d

Sep 27, 2022
DI: C++14 Dependency Injection Library
DI: C++14 Dependency Injection Library

[Boost::ext].DI Your C++14 one header only Dependency Injection library with no dependencies https://www.youtube.com/watch?v=yVogS4NbL6U Quick start D

Sep 24, 2022
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use

What Is RESTinio? RESTinio is a header-only C++14 library that gives you an embedded HTTP/Websocket server. It is based on standalone version of ASIO

Sep 24, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Sep 20, 2022
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers.

WAFer WAFer is a C language-based ultra-light scalable server-side web applications framework. Think node.js for C programmers. Because it's written i

Aug 16, 2022
LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

LibVNCServer: A library for easy implementation of a VNC server. Copyright (C) 2001-2003 Johannes E. Schindelin If you already used LibVNCServer, you

Sep 29, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Sep 20, 2022
An extensible, cross-platform, single-header C/C++ OpenGL loader library.

Simple OpenGL Loader An extensible, cross-platform, single-header C/C++ OpenGL loader library. Usage For Windows Win32 or Linux X11 applications, the

Aug 26, 2022
Mars is a cross-platform network component developed by WeChat.
Mars is a cross-platform network component  developed by WeChat.

Mars is a cross-platform infrastructure component developed by WeChat Mobile Team

Sep 27, 2022
Cross-platform library for building Telegram clients

TDLib (Telegram Database library) is a cross-platform library for building Telegram clients. It can be easily used from almost any programming language.

Sep 24, 2022
OpenBoard is a cross-platform interactive whiteboard application intended for use in a classroom setting.

OpenBoard is an open source cross-platform interactive white board application designed primarily for use in schools. It was originally forked from Open-Sankoré, which was itself based on Uniboard.

Sep 23, 2022
LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.
LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.

LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.

Sep 25, 2022
Online chess platform (client-server) in Python with StockFish API

PyChess Gra w szachy tylko w Pythonie :) Wymagania Python 3.8 Instalacja Wchodzimy i pobieramy najnowsze wydanie aplikacji. https://github.com/Rafixe

Oct 7, 2021
Using Visual Studio C++ to read IP addresses and comport number (Serial number) on Windows platform

Using Visual Studio C++ to read IP addresses on Windows platform

Feb 2, 2022
modern c++(c++17), cross-platform, header-only, easy to use http framework
modern c++(c++17), cross-platform, header-only, easy to use http framework

cinatra--一个高效易用的c++ http框架 English | 中文 目录 使用cinatra常见问题汇总(FAQ) cinatra简介 如何使用 快速示例 性能测试 注意事项 roadmap 联系方式 cinatra简介 cinatra是一个高性能易用的http框架,它是用modern

Sep 25, 2022
Brynet - Header Only Cross platform high performance TCP network library using C++ 11.
Brynet - Header Only Cross platform high performance TCP network library using C++ 11.

Brynet Header Only Cross platform high performance TCP network library using C++ 11. Build status Windows : Linux/MacOS : Features Header only Cross p

Oct 1, 2022