■ ■ ■ ■ ■ ■
aardwolf/examples/aardpclient.py
| skipped 32 lines |
33 | 33 | | self.keyboard:int = True |
34 | 34 | | self.url:str = url |
35 | 35 | | self.iosettings:RDPIOSettings = iosettings |
| 36 | + | # file path of the ducky file (if used) |
| 37 | + | self.ducky_file = None |
| 38 | + | # ducky script start delay, None means that typing will not start automatically |
| 39 | + | self.ducky_autostart_delay = 5 |
36 | 40 | | |
37 | 41 | | class RDPImage: |
38 | 42 | | def __init__(self,x,y,image,width,height): |
| skipped 52 lines |
91 | 95 | | |
92 | 96 | | async def ducky_exec(self, bypass_delay = False): |
93 | 97 | | try: |
| 98 | + | if self.settings.ducky_file is None: |
| 99 | + | return |
94 | 100 | | from aardwolf.keyboard.layoutmanager import KeyboardLayoutManager |
95 | 101 | | from aardwolf.utils.ducky import DuckyExecutorBase, DuckyReaderFile |
96 | 102 | | if bypass_delay is False: |
97 | | - | if self.settings.iosettings.ducky_autostart_delay is not None: |
98 | | - | await asyncio.sleep(self.settings.iosettings.ducky_autostart_delay) |
| 103 | + | if self.settings.ducky_autostart_delay is not None: |
| 104 | + | await asyncio.sleep(self.settings.ducky_autostart_delay) |
99 | 105 | | else: |
100 | 106 | | return |
101 | 107 | | |
102 | 108 | | layout = KeyboardLayoutManager().get_layout_by_shortname(self.settings.iosettings.client_keyboard) |
103 | 109 | | executor = DuckyExecutorBase(layout, self.ducky_keyboard_sender, send_as_char = True if self.conn.target.dialect == RDPConnectionDialect.VNC else False) |
104 | | - | reader = DuckyReaderFile.from_file(self.settings.iosettings.ducky_file, executor) |
| 110 | + | reader = DuckyReaderFile.from_file(self.settings.ducky_file, executor) |
105 | 111 | | await reader.parse() |
106 | 112 | | except Exception as e: |
107 | 113 | | traceback.print_exc() |
| skipped 11 lines |
119 | 125 | | #asyncio.create_task(self.inputhandler()) |
120 | 126 | | input_handler_thread = asyncio.get_event_loop().run_in_executor(None, self.inputhandler, asyncio.get_event_loop()) |
121 | 127 | | self.loop_started_evt.set() |
122 | | - | if self.settings.iosettings.ducky_file is not None: |
| 128 | + | if self.settings.ducky_file is not None: |
123 | 129 | | x = asyncio.create_task(self.ducky_exec()) |
124 | 130 | | while not self.gui_stopped_evt.is_set(): |
125 | 131 | | data = await self.conn.ext_out_queue.get() |
| skipped 324 lines |
450 | 456 | | iosettings.video_bpp_max = args.bpp |
451 | 457 | | iosettings.video_out_format = VIDEO_FORMAT.QT5 |
452 | 458 | | iosettings.client_keyboard = args.keyboard |
453 | | - | iosettings.ducky_file = args.ducky |
454 | | - | iosettings.ducky_autostart_delay = duckydelay |
455 | 459 | | |
456 | 460 | | |
457 | 461 | | settings = RDPClientConsoleSettings(args.url, iosettings) |
458 | 462 | | settings.mhover = args.no_mouse_hover |
459 | 463 | | settings.keyboard = args.no_keyboard |
| 464 | + | settings.ducky_file = args.ducky |
| 465 | + | settings.ducky_autostart_delay = duckydelay |
460 | 466 | | |
461 | 467 | | |
462 | 468 | | app = QApplication(sys.argv) |
| skipped 7 lines |