Difference between revisions of "Pywinrm"

From UVOO Tech Wiki
Jump to navigation Jump to search
(Created page with "``` import winrm from decouple import config USERNAME = config('USERNAME') USERPASS = config('USERPASS') USERPASS = config('HOST') s = winrm.Session(HOST, auth=(USERNAME, USE...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 +
# Pywinrm
 +
 +
## Install Latest Version in virtual environment
 +
```
 +
python3 -v venv .venv
 +
. .venv/bin/activate
 +
pip install pywinrm
 +
```
 +
 +
.env
 +
```
 +
set -a
 +
RHOST="myhostorip"
 +
USERNAME="myuser@example.com"
 +
USERPASS="mysecretpass"
 +
```
 +
 +
source nv
 +
```
 +
. .env
 +
```
 +
 +
## Code
 +
example.py
 +
```
 +
#!/usr/bin/env python3
 +
import winrm
 +
import os
 +
 +
USERNAME = os.environ["USERNAME"]
 +
USERPASS = os.environ["USERPASS"]
 +
RHOST = os.environ["RHOST"]
 +
s = winrm.Session(RHOST, auth=(USERNAME, USERPASS), transport='ntlm')
 +
# transport='ssl'
 +
ps_script="""
 +
$mstring = (hostname)
 +
$certs = (ls Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*$mstring*" })
 +
echo "$certs"
 +
"""
 +
# r = s.run_cmd('ipconfig', ['/all'])
 +
r = s.run_ps(ps_script)
 +
if r.status_code == 0:
 +
    print(r.std_out.decode())
 +
else:
 +
    print(r.std_err.decode())
 
```
 
```
 +
 +
```
 +
chmod +x example.py
 +
./example.py
 +
```
 +
 +
 +
 +
## More
 +
 +
```
 +
 
import winrm
 
import winrm
 
from decouple import config
 
from decouple import config
  
 +
# pulls from .env file
 
USERNAME = config('USERNAME')
 
USERNAME = config('USERNAME')
 
USERPASS = config('USERPASS')
 
USERPASS = config('USERPASS')
USERPASS = config('HOST')
+
HOST = config('HOST')
 
s = winrm.Session(HOST, auth=(USERNAME, USERPASS), transport='ntlm')
 
s = winrm.Session(HOST, auth=(USERNAME, USERPASS), transport='ntlm')
 
r = s.run_cmd('ipconfig', ['/all'])
 
r = s.run_cmd('ipconfig', ['/all'])
Line 14: Line 72:
 
```
 
```
  
# low-level without wrapper
+
### low-level without wrapper
 
```
 
```
 
from winrm.protocol import Protocol
 
from winrm.protocol import Protocol

Latest revision as of 17:25, 15 December 2023

Pywinrm

Install Latest Version in virtual environment

python3 -v venv .venv
. .venv/bin/activate
pip install pywinrm

.env

set -a
RHOST="myhostorip"
USERNAME="myuser@example.com"
USERPASS="mysecretpass"

source nv

. .env

Code

example.py

#!/usr/bin/env python3
import winrm
import os

USERNAME = os.environ["USERNAME"]
USERPASS = os.environ["USERPASS"]
RHOST = os.environ["RHOST"]
s = winrm.Session(RHOST, auth=(USERNAME, USERPASS), transport='ntlm')
# transport='ssl'
ps_script="""
$mstring = (hostname)
$certs = (ls Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*$mstring*" })
echo "$certs"
"""
# r = s.run_cmd('ipconfig', ['/all'])
r = s.run_ps(ps_script)
if r.status_code == 0:
    print(r.std_out.decode())
else:
    print(r.std_err.decode())
chmod +x example.py
./example.py

More

<br />import winrm
from decouple import config

# pulls from .env file
USERNAME = config('USERNAME')
USERPASS = config('USERPASS')
HOST = config('HOST')
s = winrm.Session(HOST, auth=(USERNAME, USERPASS), transport='ntlm')
r = s.run_cmd('ipconfig', ['/all'])
if r.status_code == 0:
    print(r.std_out.decode())
else:
    print(r.std_err.decode())

low-level without wrapper

from winrm.protocol import Protocol

p = Protocol(
    endpoint='https://windows-host:5986/wsman',
    transport='ntlm',
    username=r'somedomain\someuser',
    password='secret',
    server_cert_validation='ignore')
shell_id = p.open_shell()
command_id = p.run_command(shell_id, 'ipconfig', ['/all'])
std_out, std_err, status_code = p.get_command_output(shell_id, command_id)
p.cleanup_command(shell_id, command_id)
p.close_shell(shell_id)