diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-pywerview.spec | 297 | ||||
-rw-r--r-- | sources | 2 |
3 files changed, 227 insertions, 73 deletions
@@ -1 +1,2 @@ /pywerview-0.4.1.tar.gz +/pywerview-0.5.0.tar.gz diff --git a/python-pywerview.spec b/python-pywerview.spec index c61349a..42ef867 100644 --- a/python-pywerview.spec +++ b/python-pywerview.spec @@ -1,19 +1,19 @@ %global _empty_manifest_terminate_build 0 Name: python-pywerview -Version: 0.4.1 +Version: 0.5.0 Release: 1 Summary: A Python port of PowerSploit's PowerView License: GNU GPLv3 URL: https://github.com/the-useless-one/pywerview -Source0: https://mirrors.nju.edu.cn/pypi/web/packages/79/4b/b08ce43bdf559685f642cc475f1f63ec1e9d78c7a3831923655f3355d14f/pywerview-0.4.1.tar.gz +Source0: https://mirrors.aliyun.com/pypi/web/packages/2d/b8/62919b3e62083da26c5818866d5d39845b646d8f0a35628d8c20cc2364b9/pywerview-0.5.0.tar.gz BuildArch: noarch -Requires: python3-beautifulsoup4 -Requires: python3-gssapi Requires: python3-impacket -Requires: python3-ldap3 +Requires: python3-beautifulsoup4 Requires: python3-lxml Requires: python3-pyasn1 +Requires: python3-ldap3 +Requires: python3-gssapi Requires: python3-pycryptodome %description @@ -106,14 +106,19 @@ Here's the list of available commands: {get-adobject,get-adserviceaccount,get-objectacl,get-netuser,get-netgroup,get-netcomputer,get-netdomaincontroller,get-netfileserver,get-dfsshare,get-netou,get-netsite,get-netsubnet,get-netdomaintrust,get-netgpo,get-netpso,get-domainpolicy,get-gpttmpl,get-netgpogroup,find-gpocomputeradmin,find-gpolocation,get-netgroupmember,get-netsession,get-localdisks,get-netdomain,get-netshare,get-netloggedon,get-netlocalgroup,invoke-checklocaladminaccess,get-netprocess,get-userevent,invoke-userhunter,invoke-processhunter,invoke-eventhunter} get-adobject Takes a domain SID, samAccountName or name, and return the associated object get-adserviceaccount - Returns a list of all the gMSA of the specified domain (you need privileged account to retrieve passwords) - get-objectacl Takes a domain SID, samAccountName or name, and return the ACL of the associated object + Returns a list of all the gMSA of the specified domain. To retrieve passwords, + you need a privileged account and a TLS connection to the LDAP server (use the + --tls switch). + get-objectacl Takes a domain SID, samAccountName or name, and return the ACL of the + associated object get-netuser Queries information about a domain user - get-netgroup Get a list of all current domain groups, or a list of groups a domain user is member of + get-netgroup Get a list of all current domain groups, or a list of groups a domain user is + member of get-netcomputer Queries informations about domain computers get-netdomaincontroller Get a list of domain controllers for the given domain - get-netfileserver Return a list of file servers, extracted from the domain users' homeDirectory, scriptPath, and profilePath fields + get-netfileserver Return a list of file servers, extracted from the domain users' homeDirectory, + scriptPath, and profilePath fields get-dfsshare Return a list of all fault tolerant distributed file systems for a given domain get-netou Get a list of all current OUs in the domain get-netsite Get a list of all current sites in the domain @@ -125,20 +130,29 @@ Here's the list of available commands: get-gpttmpl Helper to parse a GptTmpl.inf policy file path into a custom object get-netgpogroup Parses all GPOs in the domain that set "Restricted Group" or "Groups.xml" find-gpocomputeradmin - Takes a computer (or OU) and determine who has administrative access to it via GPO - find-gpolocation Takes a username or a group name and determine the computers it has administrative access to via GPO + Takes a computer (or OU) and determine who has administrative access to it via + GPO + find-gpolocation Takes a username or a group name and determine the computers it has + administrative access to via GPO get-netgroupmember Return a list of members of a domain group - get-netsession Queries a host to return a list of active sessions on the host (you can use local credentials instead of domain credentials) - get-localdisks Queries a host to return a list of active disks on the host (you can use local credentials instead of domain credentials) + get-netsession Queries a host to return a list of active sessions on the host (you can use + local credentials instead of domain credentials) + get-localdisks Queries a host to return a list of active disks on the host (you can use local + credentials instead of domain credentials) get-netdomain Queries a host for available domains - get-netshare Queries a host to return a list of available shares on the host (you can use local credentials instead of domain credentials) - get-netloggedon This function will execute the NetWkstaUserEnum RPC call to query a given host for actively logged on users - get-netlocalgroup Gets a list of members of a local group on a machine, or returns every local group. You can use local credentials instead of domain credentials, however, domain credentials are needed - to resolve domain SIDs. + get-netshare Queries a host to return a list of available shares on the host (you can use + local credentials instead of domain credentials) + get-netloggedon This function will execute the NetWkstaUserEnum RPC call to query a given host + for actively logged on users + get-netlocalgroup Gets a list of members of a local group on a machine, or returns every local + group. You can use local credentials instead of domain credentials, however, + domain credentials are needed to resolve domain SIDs. invoke-checklocaladminaccess Checks if the given user has local admin access on the given host - get-netprocess This function will execute the 'Select * from Win32_Process' WMI query to a given host for a list of executed process - get-userevent This function will execute the 'SELECT * from Win32_NTLogEvent' WMI query to a given host for a list of executed process + get-netprocess This function will execute the 'Select * from Win32_Process' WMI query to a + given host for a list of executed process + get-userevent This function will execute the 'SELECT * from Win32_NTLogEvent' WMI query to a + given host for a list of executed process invoke-userhunter Finds which machines domain users are logged into invoke-processhunter Searches machines for processes with specific name, or ran by specific users @@ -156,7 +170,7 @@ an argument, and __not__ `USELESSDOMAIN`. ## GLOBAL ARGUMENTS -### LOGGING +### Logging You can provide a logging level to `pywerview` modules by using `-l` or `--logging-level` options. Supported levels are: @@ -239,10 +253,49 @@ To recap: | SPN in the ticket | Can be used with LDAP functions | Can be used with SMB/RPC functions | | :-----------------------------------: | :-----------------------------: | :--------------------------------: | | `ldap/srv-ad.contoso.com@CONTOSO.COM` | ✔️ | ✔️ | -| `cifs/srv-ad.contoso.com@CONTOSO.COm` | ✔️ | ✔️ | +| `cifs/srv-ad.contoso.com@CONTOSO.COM` | ✔️ | ✔️ | | `ldap/srv-ad@CONTOSO.COM` | ❌ | ✔️ | -### TLS CONNECTION +*NOTE:* The same limitation exists for TGT in your cache credential file: `krbtgt/srv-ad.contoso.com@CONTOSO.COM` will work +but not `krbtgt/srv-ad@CONTOSO.COM`. + +### LDAP SChannel authentication + +SChannel authentication is supported for a subset of the submodules. Functions that support SChannel authentication are: + +* get-adobject +* get-adserviceaccount +* get-objectacl +* get-netuser +* get-netgroup +* get-netcomputer +* get-netdomaincontroller +* get-netfileserver +* get-netou +* get-netsite +* get-netsubnet +* get-netdomaintrust +* get-netpso +* get-netgpo +* get-netgroupmember + +To authenticate via SChannel: + +1. Retrieve the certificate and the key with your favorite tool ([ntlmrelayx.py](https://github.com/fortra/impacket), [certipy](https://github.com/ly4k/Certipy),...) +2. `pywerview` needs a certificate file and a key file, so you need to extract them from the `.pfx`. +3. Use `--cert` and `--key` as in the following example: + +```console +$ python3 pywerview.py get-netuser -w contoso.com --dc-ip 172.16.0.55 --cert stormtroopers.crt --key stormtroopers.key --username administrator --attributes distinguishedname useraccountcontrol --tls +distinguishedname: CN=Administrator,CN=Users,DC=contoso,DC=com +useraccountcontrol: NORMAL_ACCOUNT + +``` + +If you don't specify the `--tls` flag when using certificate authentication, `pywerview` will try to use StartTLS and an `EXTERNAL SASL` bind +as described in the [Microsoft documentation](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/8e73932f-70cf-46d6-88b1-8d9f86235e81) + +### TLS connection You can force a connection to the LDAPS port by using the `--tls` switch. It can be necessary with some functions, for example when retrieving gMSA @@ -266,7 +319,7 @@ description: enabled: True ``` -### JSON OUTPUT +### JSON output Pywerview can print results in json format by using the `--json` switch. @@ -317,8 +370,6 @@ with this program. If not, see - - %package -n python3-pywerview Summary: A Python port of PowerSploit's PowerView Provides: python-pywerview @@ -415,14 +466,19 @@ Here's the list of available commands: {get-adobject,get-adserviceaccount,get-objectacl,get-netuser,get-netgroup,get-netcomputer,get-netdomaincontroller,get-netfileserver,get-dfsshare,get-netou,get-netsite,get-netsubnet,get-netdomaintrust,get-netgpo,get-netpso,get-domainpolicy,get-gpttmpl,get-netgpogroup,find-gpocomputeradmin,find-gpolocation,get-netgroupmember,get-netsession,get-localdisks,get-netdomain,get-netshare,get-netloggedon,get-netlocalgroup,invoke-checklocaladminaccess,get-netprocess,get-userevent,invoke-userhunter,invoke-processhunter,invoke-eventhunter} get-adobject Takes a domain SID, samAccountName or name, and return the associated object get-adserviceaccount - Returns a list of all the gMSA of the specified domain (you need privileged account to retrieve passwords) - get-objectacl Takes a domain SID, samAccountName or name, and return the ACL of the associated object + Returns a list of all the gMSA of the specified domain. To retrieve passwords, + you need a privileged account and a TLS connection to the LDAP server (use the + --tls switch). + get-objectacl Takes a domain SID, samAccountName or name, and return the ACL of the + associated object get-netuser Queries information about a domain user - get-netgroup Get a list of all current domain groups, or a list of groups a domain user is member of + get-netgroup Get a list of all current domain groups, or a list of groups a domain user is + member of get-netcomputer Queries informations about domain computers get-netdomaincontroller Get a list of domain controllers for the given domain - get-netfileserver Return a list of file servers, extracted from the domain users' homeDirectory, scriptPath, and profilePath fields + get-netfileserver Return a list of file servers, extracted from the domain users' homeDirectory, + scriptPath, and profilePath fields get-dfsshare Return a list of all fault tolerant distributed file systems for a given domain get-netou Get a list of all current OUs in the domain get-netsite Get a list of all current sites in the domain @@ -434,20 +490,29 @@ Here's the list of available commands: get-gpttmpl Helper to parse a GptTmpl.inf policy file path into a custom object get-netgpogroup Parses all GPOs in the domain that set "Restricted Group" or "Groups.xml" find-gpocomputeradmin - Takes a computer (or OU) and determine who has administrative access to it via GPO - find-gpolocation Takes a username or a group name and determine the computers it has administrative access to via GPO + Takes a computer (or OU) and determine who has administrative access to it via + GPO + find-gpolocation Takes a username or a group name and determine the computers it has + administrative access to via GPO get-netgroupmember Return a list of members of a domain group - get-netsession Queries a host to return a list of active sessions on the host (you can use local credentials instead of domain credentials) - get-localdisks Queries a host to return a list of active disks on the host (you can use local credentials instead of domain credentials) + get-netsession Queries a host to return a list of active sessions on the host (you can use + local credentials instead of domain credentials) + get-localdisks Queries a host to return a list of active disks on the host (you can use local + credentials instead of domain credentials) get-netdomain Queries a host for available domains - get-netshare Queries a host to return a list of available shares on the host (you can use local credentials instead of domain credentials) - get-netloggedon This function will execute the NetWkstaUserEnum RPC call to query a given host for actively logged on users - get-netlocalgroup Gets a list of members of a local group on a machine, or returns every local group. You can use local credentials instead of domain credentials, however, domain credentials are needed - to resolve domain SIDs. + get-netshare Queries a host to return a list of available shares on the host (you can use + local credentials instead of domain credentials) + get-netloggedon This function will execute the NetWkstaUserEnum RPC call to query a given host + for actively logged on users + get-netlocalgroup Gets a list of members of a local group on a machine, or returns every local + group. You can use local credentials instead of domain credentials, however, + domain credentials are needed to resolve domain SIDs. invoke-checklocaladminaccess Checks if the given user has local admin access on the given host - get-netprocess This function will execute the 'Select * from Win32_Process' WMI query to a given host for a list of executed process - get-userevent This function will execute the 'SELECT * from Win32_NTLogEvent' WMI query to a given host for a list of executed process + get-netprocess This function will execute the 'Select * from Win32_Process' WMI query to a + given host for a list of executed process + get-userevent This function will execute the 'SELECT * from Win32_NTLogEvent' WMI query to a + given host for a list of executed process invoke-userhunter Finds which machines domain users are logged into invoke-processhunter Searches machines for processes with specific name, or ran by specific users @@ -465,7 +530,7 @@ an argument, and __not__ `USELESSDOMAIN`. ## GLOBAL ARGUMENTS -### LOGGING +### Logging You can provide a logging level to `pywerview` modules by using `-l` or `--logging-level` options. Supported levels are: @@ -548,10 +613,49 @@ To recap: | SPN in the ticket | Can be used with LDAP functions | Can be used with SMB/RPC functions | | :-----------------------------------: | :-----------------------------: | :--------------------------------: | | `ldap/srv-ad.contoso.com@CONTOSO.COM` | ✔️ | ✔️ | -| `cifs/srv-ad.contoso.com@CONTOSO.COm` | ✔️ | ✔️ | +| `cifs/srv-ad.contoso.com@CONTOSO.COM` | ✔️ | ✔️ | | `ldap/srv-ad@CONTOSO.COM` | ❌ | ✔️ | -### TLS CONNECTION +*NOTE:* The same limitation exists for TGT in your cache credential file: `krbtgt/srv-ad.contoso.com@CONTOSO.COM` will work +but not `krbtgt/srv-ad@CONTOSO.COM`. + +### LDAP SChannel authentication + +SChannel authentication is supported for a subset of the submodules. Functions that support SChannel authentication are: + +* get-adobject +* get-adserviceaccount +* get-objectacl +* get-netuser +* get-netgroup +* get-netcomputer +* get-netdomaincontroller +* get-netfileserver +* get-netou +* get-netsite +* get-netsubnet +* get-netdomaintrust +* get-netpso +* get-netgpo +* get-netgroupmember + +To authenticate via SChannel: + +1. Retrieve the certificate and the key with your favorite tool ([ntlmrelayx.py](https://github.com/fortra/impacket), [certipy](https://github.com/ly4k/Certipy),...) +2. `pywerview` needs a certificate file and a key file, so you need to extract them from the `.pfx`. +3. Use `--cert` and `--key` as in the following example: + +```console +$ python3 pywerview.py get-netuser -w contoso.com --dc-ip 172.16.0.55 --cert stormtroopers.crt --key stormtroopers.key --username administrator --attributes distinguishedname useraccountcontrol --tls +distinguishedname: CN=Administrator,CN=Users,DC=contoso,DC=com +useraccountcontrol: NORMAL_ACCOUNT + +``` + +If you don't specify the `--tls` flag when using certificate authentication, `pywerview` will try to use StartTLS and an `EXTERNAL SASL` bind +as described in the [Microsoft documentation](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/8e73932f-70cf-46d6-88b1-8d9f86235e81) + +### TLS connection You can force a connection to the LDAPS port by using the `--tls` switch. It can be necessary with some functions, for example when retrieving gMSA @@ -575,7 +679,7 @@ description: enabled: True ``` -### JSON OUTPUT +### JSON output Pywerview can print results in json format by using the `--json` switch. @@ -626,8 +730,6 @@ with this program. If not, see - - %package help Summary: Development documents and examples for pywerview Provides: python3-pywerview-doc @@ -721,14 +823,19 @@ Here's the list of available commands: {get-adobject,get-adserviceaccount,get-objectacl,get-netuser,get-netgroup,get-netcomputer,get-netdomaincontroller,get-netfileserver,get-dfsshare,get-netou,get-netsite,get-netsubnet,get-netdomaintrust,get-netgpo,get-netpso,get-domainpolicy,get-gpttmpl,get-netgpogroup,find-gpocomputeradmin,find-gpolocation,get-netgroupmember,get-netsession,get-localdisks,get-netdomain,get-netshare,get-netloggedon,get-netlocalgroup,invoke-checklocaladminaccess,get-netprocess,get-userevent,invoke-userhunter,invoke-processhunter,invoke-eventhunter} get-adobject Takes a domain SID, samAccountName or name, and return the associated object get-adserviceaccount - Returns a list of all the gMSA of the specified domain (you need privileged account to retrieve passwords) - get-objectacl Takes a domain SID, samAccountName or name, and return the ACL of the associated object + Returns a list of all the gMSA of the specified domain. To retrieve passwords, + you need a privileged account and a TLS connection to the LDAP server (use the + --tls switch). + get-objectacl Takes a domain SID, samAccountName or name, and return the ACL of the + associated object get-netuser Queries information about a domain user - get-netgroup Get a list of all current domain groups, or a list of groups a domain user is member of + get-netgroup Get a list of all current domain groups, or a list of groups a domain user is + member of get-netcomputer Queries informations about domain computers get-netdomaincontroller Get a list of domain controllers for the given domain - get-netfileserver Return a list of file servers, extracted from the domain users' homeDirectory, scriptPath, and profilePath fields + get-netfileserver Return a list of file servers, extracted from the domain users' homeDirectory, + scriptPath, and profilePath fields get-dfsshare Return a list of all fault tolerant distributed file systems for a given domain get-netou Get a list of all current OUs in the domain get-netsite Get a list of all current sites in the domain @@ -740,20 +847,29 @@ Here's the list of available commands: get-gpttmpl Helper to parse a GptTmpl.inf policy file path into a custom object get-netgpogroup Parses all GPOs in the domain that set "Restricted Group" or "Groups.xml" find-gpocomputeradmin - Takes a computer (or OU) and determine who has administrative access to it via GPO - find-gpolocation Takes a username or a group name and determine the computers it has administrative access to via GPO + Takes a computer (or OU) and determine who has administrative access to it via + GPO + find-gpolocation Takes a username or a group name and determine the computers it has + administrative access to via GPO get-netgroupmember Return a list of members of a domain group - get-netsession Queries a host to return a list of active sessions on the host (you can use local credentials instead of domain credentials) - get-localdisks Queries a host to return a list of active disks on the host (you can use local credentials instead of domain credentials) + get-netsession Queries a host to return a list of active sessions on the host (you can use + local credentials instead of domain credentials) + get-localdisks Queries a host to return a list of active disks on the host (you can use local + credentials instead of domain credentials) get-netdomain Queries a host for available domains - get-netshare Queries a host to return a list of available shares on the host (you can use local credentials instead of domain credentials) - get-netloggedon This function will execute the NetWkstaUserEnum RPC call to query a given host for actively logged on users - get-netlocalgroup Gets a list of members of a local group on a machine, or returns every local group. You can use local credentials instead of domain credentials, however, domain credentials are needed - to resolve domain SIDs. + get-netshare Queries a host to return a list of available shares on the host (you can use + local credentials instead of domain credentials) + get-netloggedon This function will execute the NetWkstaUserEnum RPC call to query a given host + for actively logged on users + get-netlocalgroup Gets a list of members of a local group on a machine, or returns every local + group. You can use local credentials instead of domain credentials, however, + domain credentials are needed to resolve domain SIDs. invoke-checklocaladminaccess Checks if the given user has local admin access on the given host - get-netprocess This function will execute the 'Select * from Win32_Process' WMI query to a given host for a list of executed process - get-userevent This function will execute the 'SELECT * from Win32_NTLogEvent' WMI query to a given host for a list of executed process + get-netprocess This function will execute the 'Select * from Win32_Process' WMI query to a + given host for a list of executed process + get-userevent This function will execute the 'SELECT * from Win32_NTLogEvent' WMI query to a + given host for a list of executed process invoke-userhunter Finds which machines domain users are logged into invoke-processhunter Searches machines for processes with specific name, or ran by specific users @@ -771,7 +887,7 @@ an argument, and __not__ `USELESSDOMAIN`. ## GLOBAL ARGUMENTS -### LOGGING +### Logging You can provide a logging level to `pywerview` modules by using `-l` or `--logging-level` options. Supported levels are: @@ -854,10 +970,49 @@ To recap: | SPN in the ticket | Can be used with LDAP functions | Can be used with SMB/RPC functions | | :-----------------------------------: | :-----------------------------: | :--------------------------------: | | `ldap/srv-ad.contoso.com@CONTOSO.COM` | ✔️ | ✔️ | -| `cifs/srv-ad.contoso.com@CONTOSO.COm` | ✔️ | ✔️ | +| `cifs/srv-ad.contoso.com@CONTOSO.COM` | ✔️ | ✔️ | | `ldap/srv-ad@CONTOSO.COM` | ❌ | ✔️ | -### TLS CONNECTION +*NOTE:* The same limitation exists for TGT in your cache credential file: `krbtgt/srv-ad.contoso.com@CONTOSO.COM` will work +but not `krbtgt/srv-ad@CONTOSO.COM`. + +### LDAP SChannel authentication + +SChannel authentication is supported for a subset of the submodules. Functions that support SChannel authentication are: + +* get-adobject +* get-adserviceaccount +* get-objectacl +* get-netuser +* get-netgroup +* get-netcomputer +* get-netdomaincontroller +* get-netfileserver +* get-netou +* get-netsite +* get-netsubnet +* get-netdomaintrust +* get-netpso +* get-netgpo +* get-netgroupmember + +To authenticate via SChannel: + +1. Retrieve the certificate and the key with your favorite tool ([ntlmrelayx.py](https://github.com/fortra/impacket), [certipy](https://github.com/ly4k/Certipy),...) +2. `pywerview` needs a certificate file and a key file, so you need to extract them from the `.pfx`. +3. Use `--cert` and `--key` as in the following example: + +```console +$ python3 pywerview.py get-netuser -w contoso.com --dc-ip 172.16.0.55 --cert stormtroopers.crt --key stormtroopers.key --username administrator --attributes distinguishedname useraccountcontrol --tls +distinguishedname: CN=Administrator,CN=Users,DC=contoso,DC=com +useraccountcontrol: NORMAL_ACCOUNT + +``` + +If you don't specify the `--tls` flag when using certificate authentication, `pywerview` will try to use StartTLS and an `EXTERNAL SASL` bind +as described in the [Microsoft documentation](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/8e73932f-70cf-46d6-88b1-8d9f86235e81) + +### TLS connection You can force a connection to the LDAPS port by using the `--tls` switch. It can be necessary with some functions, for example when retrieving gMSA @@ -881,7 +1036,7 @@ description: enabled: True ``` -### JSON OUTPUT +### JSON output Pywerview can print results in json format by using the `--json` switch. @@ -932,10 +1087,8 @@ with this program. If not, see - - %prep -%autosetup -n pywerview-0.4.1 +%autosetup -n pywerview-0.5.0 %build %py3_build @@ -949,20 +1102,20 @@ if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then - find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then - find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then - find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then - find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then - find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . @@ -975,5 +1128,5 @@ mv %{buildroot}/doclist.lst . %{_docdir}/* %changelog -* Tue May 30 2023 Python_Bot <Python_Bot@openeuler.org> - 0.4.1-1 +* Thu Jun 08 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.0-1 - Package Spec generated @@ -1 +1 @@ -ab13894e31146ec6c5aad72ce35c0797 pywerview-0.4.1.tar.gz +0b7e5ff6790a5c532475d895273a4053 pywerview-0.5.0.tar.gz |