Skip to content

Commit 5673f92

Browse files
committed
update creds_manager.py
1 parent d80c8c0 commit 5673f92

6 files changed

Lines changed: 133 additions & 8 deletions

File tree

basic/play.py renamed to alpha_learning/play.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# helper script to create the hashtable
2+
13
from math import sqrt
24

35
MAX = 10 ** 6

‎ds_algo/dict/test/test_dict.py‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ def main():
2020
"carol": "it"
2121
}
2222

23+
print(f"{name_dept}") # ordered structure
24+
2325
# look up: method 1
2426
try:
2527
dept = name_dept["no_key"] # throws exception when the key is not found
@@ -44,11 +46,11 @@ def main():
4446
print(f"{name_dept.items()}") # returns a list, each entry is tuple
4547

4648
# print the dict: method 1
47-
for key, value in name_dept.items():
49+
for key, value in name_dept.items(): # unpacks the tuples
4850
print(f"{key}: {value}")
4951

5052
# print the dict: method 2
51-
for key, value in name_dept:
53+
for key in name_dept: # __iter__() => iterates over the keys, similar to name_dept.keys()
5254
print(f"{key}: {name_dept[key]}")
5355

5456

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
## Description
2+
`creds_manager.py` - a wrapper to the linux `keyring` that manages the credential in a secure way.
3+
4+
5+
### Usage
6+
```
7+
usage: creds_manager.py [-h] {set,get,del} ...
8+
9+
a helper script / wrapper to perform all keyring operations
10+
11+
optional arguments:
12+
-h, --help show this help message and exit
13+
14+
commands:
15+
{set,get,del} See '[command] --help' for details
16+
set set up a keyring
17+
get get credentials from a keyring
18+
del delete a keyring
19+
20+
```
21+
22+
```
23+
usage: creds_manager.py set [-h] -n -u -p
24+
25+
set up a keyring
26+
27+
optional arguments:
28+
-h, --help show this help message and exit
29+
-n , --name provide the keyring name
30+
-u , --username provide the username
31+
-p , --password provide the password
32+
```
33+
34+
35+
36+
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#!/usr/bin/env python3
2+
3+
# author: greyshell
4+
# description: a helper script / wrapper to perform all keyring operations
5+
6+
7+
import argparse
8+
import sys
9+
10+
import keyring
11+
12+
13+
class UserInput:
14+
def __init__(self):
15+
self.parser = argparse.ArgumentParser(
16+
description="a helper script / wrapper to perform all keyring operations")
17+
self.subparsers = self.parser.add_subparsers(title="commands", help="See '[command] --help' for details")
18+
19+
# set a keyring
20+
self.set_keyring_parser = self.subparsers.add_parser("set", description="set up a keyring",
21+
help="set up a keyring")
22+
self.set_keyring_parser.add_argument("-n", "--name", metavar="",
23+
help="provide the keyring name", required=True)
24+
self.set_keyring_parser.add_argument("-u", "--username", metavar="",
25+
help="provide the username", required=True)
26+
self.set_keyring_parser.add_argument("-p", "--password", metavar="",
27+
help="provide the password", required=True)
28+
self.set_keyring_parser.set_defaults(cmd="set")
29+
30+
# get a keyring
31+
self.get_keyring_parser = self.subparsers.add_parser("get", description="get credentials from a keyring",
32+
help="get credentials from a keyring")
33+
self.get_keyring_parser.add_argument("-n", "--name", metavar="",
34+
help="provide the keyring name", required=True)
35+
self.get_keyring_parser.set_defaults(cmd="get")
36+
37+
# delete a keyring
38+
self.del_keyring_parser = self.subparsers.add_parser("del", description="delete a keyring",
39+
help="delete a keyring")
40+
self.del_keyring_parser.add_argument("-n", "--name", metavar="",
41+
help="provide the keyring name", required=True)
42+
self.del_keyring_parser.set_defaults(cmd="del")
43+
44+
45+
def set_keyring(keyring_name, username, password):
46+
keyring.set_password(keyring_name, "username", username)
47+
keyring.set_password(keyring_name, username, password)
48+
49+
50+
def get_keyring(keyring_name):
51+
username = keyring.get_password(keyring_name, "username")
52+
password = keyring.get_password(keyring_name, str(username))
53+
return username, password
54+
55+
56+
def del_keyring(keyring_name):
57+
username, password = get_keyring(keyring_name)
58+
try:
59+
keyring.delete_password(keyring_name, "username")
60+
keyring.delete_password(keyring_name, username)
61+
except keyring.errors.PasswordDeleteError as e:
62+
print(e)
63+
return False
64+
return True
65+
66+
67+
if __name__ == "__main__":
68+
my_input = UserInput()
69+
args = my_input.parser.parse_args()
70+
71+
if len(sys.argv) == 1:
72+
my_input.parser.print_help(sys.stderr)
73+
sys.exit(0)
74+
75+
if args.cmd == "set":
76+
set_keyring(args.name, args.username, args.password)
77+
print(f"credential is set !!")
78+
elif args.cmd == "get":
79+
usr, passwd = get_keyring(args.name)
80+
print(f"username: {usr}, password: {passwd}")
81+
elif args.cmd == "del":
82+
if del_keyring(args.name):
83+
print(f"deleted -> {args.name}")
84+
else:
85+
my_input.parser.print_help(sys.stderr)

‎utility_scripts/lab_vpn/README.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
## Description
2-
`lab-vpn.py` helps to automate the openvpn connection for the InfoSec labs (i.e. PWK / CTP / WAPTx / AWAE).
2+
`lab_vpn.py` helps to automate the openvpn connection for the InfoSec labs (i.e. PWK / CTP / WAPTx / AWAE).
33

4-
note: store your vpn and email password inside linux keyring.
4+
note:
5+
- you can use `creds_manager.py` helper script to store your vpn and email password in linux keyring.
56

67
### Usage
78
```
@@ -16,17 +17,16 @@ optional arguments:
1617
example:
1718
python lab_vpn.py -c asinha.json
1819
19-
2020
# set email creds into the keyring
2121
keyring set email username
2222
- provide the email_id
2323
keyring set email email_id
2424
- provide the password
2525
2626
# set offsec vpn creds into the keyring
27-
keyring set offsec_asinha username
28-
- provide the offsecID
29-
keyring set offsec_asinha offsecID
27+
keyring set offsec username
28+
- provide the userid
29+
keyring set offsec user_id
3030
- provide the password
3131
```
3232

0 commit comments

Comments
 (0)