From 1d9bb43f1e1441118621194f99a5b5d413d05a18 Mon Sep 17 00:00:00 2001 From: Olivier Bilodeau Date: Sat, 24 Aug 2019 12:44:20 -0400 Subject: [PATCH] Changelog and copyright bumps (#144) * Updated CHANGELOG since last release * Copyright years bumped on files touched since last release * controversial: text files *need* a newline at the end of the file Updated only those changed by the copyright bump because vim fixed them all * CHANGELOG update to address review comments --- CHANGELOG.adoc | 32 +++++++++++++++++-- pyrdp/enum/rdp.py | 2 +- pyrdp/layer/rdp/security.py | 2 +- pyrdp/layer/tcp.py | 4 +-- pyrdp/mitm/__init__.py | 2 +- pyrdp/parser/rdp/connection.py | 4 +-- pyrdp/parser/rdp/licensing.py | 4 +-- pyrdp/parser/rdp/negotiation.py | 4 +-- .../rdp/virtual_channel/device_redirection.py | 4 +-- pyrdp/pdu/__init__.py | 2 +- pyrdp/pdu/rdp/connection.py | 2 +- pyrdp/pdu/rdp/negotiation.py | 2 +- pyrdp/player/BaseWindow.py | 4 +-- pyrdp/player/LiveTab.py | 4 +-- pyrdp/player/MainWindow.py | 4 +-- pyrdp/player/PlayerEventHandler.py | 4 +-- pyrdp/security/crypto.py | 2 +- pyrdp/security/settings.py | 2 +- 18 files changed, 55 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index b1c0b2484..7da6cf409 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -6,17 +6,43 @@ This document provides a high-level view of the changes introduced in {project-name} by release. For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub. -== _Unreleased_ +== 0.3.0 - + +A special BlackHat USA Arsenal 2019 release! + +* https://docs.google.com/presentation/d/17P_l2n-hgCehQ5eTWilru4IXXHnGIRTj4ftoW4BiX5A/edit?usp=sharing[BlackHat USA Arsenal 2019 slides] + + +=== Enhancements + +* Added Windows support ({uri-issue}129[#129]) +* Improved documentation for operation with Bettercap ({uri-issue}107[#107]) +* Added a heuristics-based credential logger to enable credentials collection at scale ({uri-issue}106[#106]) +* Dependency update: Replaced pycrypto with pycryptodome ({uri-issue}128[#128]) +* UX improvements to the PyRDP-Player ({uri-issue}119[#119], {uri-issue}124[#124]) +* Improved handling of X224 Negotiation Failures like NLA ({uri-issue}102[#102]) +* Accept and log connections from scanners better ({uri-issue}136[#136]) +* Added BlueKeep specific detection and logging ({uri-issue}114[#114]) +* Added a log entry that summarizes a connection, useful to hunt specific connections ({uri-issue}117[#117]) +* Logging minor improvements ({uri-issue}123[#123], {uri-issue}112[#112]) + === Bug fixes +* Added support for RDP v10.7 in the connection handshake ({uri-issue}135[#135]) * Fixed issue with `virtualenv` setup ({uri-issue}110[#110]) +* Fixed connections to Windows servers with RDS enabled ({uri-issue}118[#118]) +* Shared Folders: Fixed a case where DOSName had no nullbyte ({uri-issue}121[#121]) -//// +=== Credits + +Thanks to the following people who contributed to this release: + +Maxime Carbonneau, Émilio Gonzalez, Francis Labelle and Olivier Bilodeau -Enhancements:: +//// === Release meta * Released on: diff --git a/pyrdp/enum/rdp.py b/pyrdp/enum/rdp.py index 9ba2d7ccd..6cf7f3a9a 100644 --- a/pyrdp/enum/rdp.py +++ b/pyrdp/enum/rdp.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/layer/rdp/security.py b/pyrdp/layer/rdp/security.py index 605c77d40..56e5519d3 100644 --- a/pyrdp/layer/rdp/security.py +++ b/pyrdp/layer/rdp/security.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/layer/tcp.py b/pyrdp/layer/tcp.py index ea3bb1776..154dfcf29 100644 --- a/pyrdp/layer/tcp.py +++ b/pyrdp/layer/tcp.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -175,4 +175,4 @@ def sendBytes(self, data: bytes): self.transport.write(data) def shouldForward(self, pdu: PDU) -> bool: - return True \ No newline at end of file + return True diff --git a/pyrdp/mitm/__init__.py b/pyrdp/mitm/__init__.py index 50812d9c6..81f83e4c9 100644 --- a/pyrdp/mitm/__init__.py +++ b/pyrdp/mitm/__init__.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/parser/rdp/connection.py b/pyrdp/parser/rdp/connection.py index 4a0f947b8..30e5f3f13 100644 --- a/pyrdp/parser/rdp/connection.py +++ b/pyrdp/parser/rdp/connection.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -493,4 +493,4 @@ def writePublicKey(self, publicKey: RSA.RsaKey) -> bytes: Uint32LE.pack(publicExponent, stream) stream.write(modulusBytes) stream.write(b"\x00" * 8) - return stream.getvalue() \ No newline at end of file + return stream.getvalue() diff --git a/pyrdp/parser/rdp/licensing.py b/pyrdp/parser/rdp/licensing.py index b51ab749f..46dbc0b4f 100644 --- a/pyrdp/parser/rdp/licensing.py +++ b/pyrdp/parser/rdp/licensing.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -127,4 +127,4 @@ def writeErrorAlert(self, stream, pdu): stream.write(Uint32LE.pack(pdu.errorCode)) stream.write(Uint32LE.pack(pdu.stateTransition)) stream.write(Uint16LE.pack(pdu.blob.type)) - stream.write(Uint16LE.pack(0)) \ No newline at end of file + stream.write(Uint16LE.pack(0)) diff --git a/pyrdp/parser/rdp/negotiation.py b/pyrdp/parser/rdp/negotiation.py index 88de48c6d..1bdbe1146 100644 --- a/pyrdp/parser/rdp/negotiation.py +++ b/pyrdp/parser/rdp/negotiation.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -119,4 +119,4 @@ def write(self, pdu): Uint16LE.pack(8, stream) Uint32LE.pack(pdu.selectedProtocols, stream) - return stream.getvalue() \ No newline at end of file + return stream.getvalue() diff --git a/pyrdp/parser/rdp/virtual_channel/device_redirection.py b/pyrdp/parser/rdp/virtual_channel/device_redirection.py index e636b97ec..f62362b4f 100644 --- a/pyrdp/parser/rdp/virtual_channel/device_redirection.py +++ b/pyrdp/parser/rdp/virtual_channel/device_redirection.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -756,4 +756,4 @@ def convertWindowsTimeStamp(self, timeStamp: int) -> int: # Difference between Unix time epoch and Windows time epoch offset = 116444736000000000 # in 100-ns result = timeStamp - offset # in 100-ns - return result // 10 # in ms \ No newline at end of file + return result // 10 # in ms diff --git a/pyrdp/pdu/__init__.py b/pyrdp/pdu/__init__.py index 94250148c..ac9386e9a 100644 --- a/pyrdp/pdu/__init__.py +++ b/pyrdp/pdu/__init__.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/pdu/rdp/connection.py b/pyrdp/pdu/rdp/connection.py index 75fec2fe8..da9b5b77b 100644 --- a/pyrdp/pdu/rdp/connection.py +++ b/pyrdp/pdu/rdp/connection.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/pdu/rdp/negotiation.py b/pyrdp/pdu/rdp/negotiation.py index a54421da4..229283d3f 100644 --- a/pyrdp/pdu/rdp/negotiation.py +++ b/pyrdp/pdu/rdp/negotiation.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/player/BaseWindow.py b/pyrdp/player/BaseWindow.py index 2886ffc44..c4801ae58 100644 --- a/pyrdp/player/BaseWindow.py +++ b/pyrdp/player/BaseWindow.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -47,4 +47,4 @@ def onTabCloseRequest(self, index: int): def onCtrlW(self): if self.options.get("closeTabOnCtrlW") and self.count() > 0: - self.onTabCloseRequest(self.currentIndex()) \ No newline at end of file + self.onTabCloseRequest(self.currentIndex()) diff --git a/pyrdp/player/LiveTab.py b/pyrdp/player/LiveTab.py index db16bb163..7251bdc87 100644 --- a/pyrdp/player/LiveTab.py +++ b/pyrdp/player/LiveTab.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -63,4 +63,4 @@ def sendKeySequence(self, keys: [Qt.Key]): self.rdpWidget.sendKeySequence(keys) def sendText(self, text: str): - self.rdpWidget.sendText(text) \ No newline at end of file + self.rdpWidget.sendText(text) diff --git a/pyrdp/player/MainWindow.py b/pyrdp/player/MainWindow.py index 7d8054146..aa9bed74c 100644 --- a/pyrdp/player/MainWindow.py +++ b/pyrdp/player/MainWindow.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -132,4 +132,4 @@ def updateTabConnectionCount(self): Update the first tab (Live connections) with the current number of tabs """ - self.tabManager.setTabText(0, "Live connections (%d)" % self.liveWindow.count()) \ No newline at end of file + self.tabManager.setTabText(0, "Live connections (%d)" % self.liveWindow.count()) diff --git a/pyrdp/player/PlayerEventHandler.py b/pyrdp/player/PlayerEventHandler.py index 516aaf3fb..8ba308b69 100644 --- a/pyrdp/player/PlayerEventHandler.py +++ b/pyrdp/player/PlayerEventHandler.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # @@ -239,4 +239,4 @@ def handleBitmap(self, bitmapData: BitmapUpdateData): def onDeviceMapping(self, pdu: PlayerDeviceMappingPDU): - self.writeText(f"\n<{DeviceType.getPrettyName(pdu.deviceType)} mapped: {pdu.name}>") \ No newline at end of file + self.writeText(f"\n<{DeviceType.getPrettyName(pdu.deviceType)} mapped: {pdu.name}>") diff --git a/pyrdp/security/crypto.py b/pyrdp/security/crypto.py index 716c29cdb..1922111a3 100644 --- a/pyrdp/security/crypto.py +++ b/pyrdp/security/crypto.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. # diff --git a/pyrdp/security/settings.py b/pyrdp/security/settings.py index fc61545e5..c86e8d1a9 100644 --- a/pyrdp/security/settings.py +++ b/pyrdp/security/settings.py @@ -1,6 +1,6 @@ # # This file is part of the PyRDP project. -# Copyright (C) 2018 GoSecure Inc. +# Copyright (C) 2018, 2019 GoSecure Inc. # Licensed under the GPLv3 or later. #