You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[ ] add interpretation of pipes to command get_cmd() (ie. if something gets piped into a command that can be parsed, parse the output based the program getting piped into.)
7
7
8
+
-[ ] add interpretation of pipes to command get_cmd() (ie. if something gets piped into a command that can be parsed, parse the output based the program getting piped into.)
8
9
-[ ] make the python parsers use objects to output data and make the objects printable via, `__str__(self)`
10
+
-[x] base_nmap.py
11
+
-[ ] feroxbuster
12
+
-[ ] gobuster
13
+
-[ ] fping
14
+
-[ ] hydra
15
+
-[ ] dig
16
+
-[ ] john
17
+
-[ ] john_show
18
+
-[ ] rustscan
9
19
10
20
-[x] add an exit status column to the commands table. (this would allow me to only parse certain commands with they exit successfully and not parse commands like ffuf or wfuzz if the user exits the command prematurely bc they're changing parameters and command line arguments.)
11
-
12
21
-[x] update install instructions
13
-
14
22
-[ ] write documentation.
15
-
16
23
-[x] allow each engagement file to declare its own sql-server conf? (not sure if i wanna do this one.) (i did it.)
17
-
18
24
-[ ] add listing of engagements.
19
-
20
25
-[ ] clear out old TODOS. :P (there are many old TODOs in the [cleared](#Cleared) section that date back to the beginning of the project) (they give me motivation but they also clutter this file.)
21
-
22
26
-[ ] flush out client and server terminal args.
23
-
24
27
-[ ] test client server mode.
25
-
26
28
-[x] add `SELECT DISTINCT` to the SQL queries generated by command line arguments.
27
-
-[x] add `DISTINCT` to the query generator.
28
-
-[x] ignore `DISTINCT` key word when generating the list of columns selected.
29
-
29
+
-[x] add `DISTINCT` to the query generator.
30
+
-[x] ignore `DISTINCT` key word when generating the list of columns selected.
30
31
-[x] add `SELECT TOP` to the keyword generator
31
-
-[x] ignore the `TOP` keyword.
32
-
-[x] skip the next token (the number).
33
-
32
+
-[x] ignore the `TOP` keyword.
33
+
-[x] skip the next token (the number).
34
34
-[ ] improve the dig parser.
35
-
-[ ] change understanding of the difference between ipv4 and ipv6 to be based on record type ('A' vs 'AAAA').
36
-
-[ ] add 'CNAME' parsing.
37
-
35
+
-[ ] change understanding of the difference between ipv4 and ipv6 to be based on record type ('A' vs 'AAAA').
36
+
-[ ] add 'CNAME' parsing.
38
37
-[ ]~~do [this](https://www.codegrepper.com/code-examples/whatever/sed+remove+ansi+color+codes) instead of using the strip_ansi_escape crate.~~ even better, do it per parser in python using regex. (the crate removes tabs inserted by ANSI as well.)
39
-
40
38
-[ ] write a dog parser. (dog is like dig but simpler, and more elegant imo).
41
-
42
-
-[ ] move the removal of ANSI control codes to the python parsers bc not all parsers need it and it was interfearing with some parsers.
43
-
-[ ] find a python module that can strip ANSI control codes (only the color codes).
44
-
-[ ] remove from the rust code.
45
-
-[ ] add to the python parsers where its important.
46
-
-[ ] add to feroxbuster.py
47
-
-[ ] add to rustscan.py
48
-
39
+
-[ ] move the removal of ANSI control codes to the python parsers bc not all parsers need it and it was interfearing with some parsers. ~~(or maybe add a config option to only strip ansi on certain parsers).~~
40
+
-[ ] find a python module that can strip ANSI control codes (only the color codes).
41
+
-[ ] remove from the rust code.
42
+
-[ ] add to the python parsers where its important.
43
+
-[ ] add to feroxbuster.py
44
+
-[ ] add to rustscan.py
49
45
-[ ] switch to DGraph back end
50
-
-[x] make the dgraph schema
51
-
52
-
-[ ] figure out how to segregate engagements.
53
-
54
-
-[ ] figure out a clean way to add each entity to the database (and write a GraphQL file to do it)
55
-
56
-
-[x] figure out how to add the data.
57
-
58
-
-[ ] change parsers to output json/RDF that can be parsed and sent to the server. for example the nmap parser run against the command `nmap youtube.com` might output something like: ~~~
59
-
60
-
~~~json
61
-
[
62
-
{
63
-
"uid": "_:dns_name_0",
64
-
"type": "DNSName",
65
-
...
66
-
"machine": "_:machine_0"
67
-
},
68
-
{
69
-
"uid": "_:machine_0"
70
-
"type": "Machine",
71
-
...
72
-
"ports": ["_:port_0", "_:port_1"],
73
-
"dns_name": "_:dns_name_0"
74
-
},
75
-
{
76
-
"uid": "_:port_0",
77
-
"type": "Port",
78
-
...
79
-
"machine": "_:machine_0"
80
-
},
81
-
{
82
-
"uid": "_:port_1",
83
-
"type": "Port",
84
-
...
85
-
"machine": "_:machine_0"
86
-
}
87
-
]
88
-
~~~
89
-
90
-
- [ ] add adding of parser data in an idempotent way.
91
-
92
-
- [ ] figure out a clean way to modify any entity to the database (and write a GraphQL file to do it)
93
-
94
-
- [ ] figure out querying from rust (in either DQL (Dgraph Query Language) or GraphQL)
95
-
96
-
- [ ] remove all the SQL specific stuff from the config files
97
-
98
-
- [ ] make feroxbuster and gobuster parsers output the a host, which points to the a DNSNames node.
46
+
-[x] make the dgraph schema
47
+
-[ ] figure out how to segregate engagements.
48
+
-[ ] add an engagement type. that stores a list of each type used in dgraph and search based on that presence in the engagement type with a given name.
49
+
-[x] figure out a clean way to add each entity to the database (and write a GraphQL file to do it)
99
50
51
+
-[x] figure out how to add the data.
52
+
-[x] change parsers to also output a uid and the things its connected to.
53
+
54
+
-[x] add adding of parser data in an idempotent way.
55
+
-[ ] figure out a clean way to modify any entity to the database (and write a GraphQL file to do it)
56
+
-[ ] figure out querying from rust (in either DQL (Dgraph Query Language) or GraphQL)
57
+
-[ ] remove all the SQL specific stuff from the config files
58
+
-[ ] make feroxbuster and gobuster parsers output the a host, which points to the a DNSNames node.
59
+
-[ ] bring back sql as an optional feature and allow the user to choose between dgraph and sql.
100
60
101
61
## Maybe Do/Future TODOs
62
+
102
63
-[] add date and time check to client and engagement conf. so it'll not process data before the start date and time. AND alert the user after the engagement is over. set the complete flag to true after the end date and time. (i think this will requires finding a new DateTime library)
103
64
-[]~~add optional IP address ranges to engagement conf. that way the program can check to see if the server is in scope. (maybe use nmap IP formatting) then the client can stop you from going out of scope by making a call in `preexec`~~ maybe much later on down the line.
104
65
-[]~~make numeric values numerically typed in the sql db~~ (not worth it at the time being)
105
66
-[]~~split up local_time column from commands database (on column for year, one for month, day, hour, min, and one fore the time zone offset.)~~ (not worth it at the time being. probably wont be worth it for a while tbh.)
106
67
107
-
108
68
## Cleared
69
+
109
70
-[x] add an SQL file and a shell script to make the PostgreSQL db.
110
71
-[x] add interaction with SQL
111
72
-[x] add password configuration for SQL
@@ -125,11 +86,11 @@ a list of todos.
125
86
-[x] fixed manual exec setting via cmd line args.
126
87
-[x] add terminal based play/pause functionality.
127
88
-[x] add a flag to query subcmd to query for then column names of the table.
128
-
- [x] add multiple sql server configs
89
+
-[x] add multiple sql server configs
129
90
-[x] add subcmd to switch sql server configs (just like `engagement -a`). (achieved with `config -s`)
130
91
-[x] split config into global and user configs.
131
92
-[x] add `info` subcmd that will print information like: postgres server host, current engagement completeness, and active status (paused vs. actively parsing).
132
-
- [x] give the `quiet_log` server config file param functionality.
93
+
-[x] give the `quiet_log` server config file param functionality.
133
94
-[x] fix get_cmd() issue where you can't pass arguments to sudo, time, doas, or proxychains. (this is particularly a problem with proxychains.)
134
95
-[x] fix feroxbuster parser crashing when outputing help menu on empty args
135
-
- [x] add a way to ignore parsers if the command contains the help args.
96
+
-[x] add a way to ignore parsers if the command contains the help args.
0 commit comments