Skip to content
This repository was archived by the owner on Dec 3, 2024. It is now read-only.

Commit 71190a6

Browse files
authored
Merge pull request #104 from GoVanguard/development
3.5 release
2 parents 753ebe3 + 5223f00 commit 71190a6

30 files changed

Lines changed: 1071 additions & 527 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,5 @@ scripts/snmpbrute.py
118118
scripts/installDeps.sh
119119
scripts/smtp-user-enum.pl
120120
scripts/snmpcheck.rb
121+
122+
scripts/CloudFail

CHANGELOG.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
LEGION 0.3.5
2+
3+
* Bug Fixes
4+
* Copy from tables using double click
5+
* CVE -> ExploitDB redesign using pyExploitDb and bugfixes
6+
17
LEGION 0.3.4
28

39
* Depnendancy polish

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Legion, a fork of SECFORCE's Sparta, is an open source, easy-to-use, super-exten
1616
* Modular functionality allows users to easily customize Legion and automatically call their own scripts/tools
1717
* Highly customizable stage scanning for ninja-like IPS evasion
1818
* Automatic detection of CPEs (Common Platform Enumeration) and CVEs (Common Vulnerabilities and Exposures)
19+
* Ties CVEs to Exploits as detailed in Exploit-Database
1920
* Realtime autosaving of project results and tasks
2021

2122
### NOTABLE CHANGES FROM SPARTA
@@ -36,6 +37,7 @@ Legion, a fork of SECFORCE's Sparta, is an open source, easy-to-use, super-exten
3637
![](https://govanguard.io/wp-content/uploads/2019/02/LegionDemo.gif)
3738

3839
## INSTALLATION
40+
It is preferable to use the docker image over a traditional installation. This is because of all the dependancy requirements and the complications that occur in environments which differ from a clean, non-default installation.
3941

4042
### TRADITIONAL METHOD
4143
Assumes Ubuntu, Kali or Parrot Linux is being used with Python 3.6 installed.

app/auxiliary.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,16 +199,16 @@ def add(self, word):
199199
class MyQProcess(QProcess):
200200
sigHydra = QtCore.pyqtSignal(QObject, list, list, name="hydra") # signal to indicate Hydra found stuff
201201

202-
def __init__(self, name, tabtitle, hostip, port, protocol, command, starttime, outputfile, textbox):
202+
def __init__(self, name, tabTitle, hostIp, port, protocol, command, startTime, outputfile, textbox):
203203
QProcess.__init__(self)
204204
self.id = -1
205205
self.name = name
206-
self.tabtitle = tabtitle
207-
self.hostip = hostip
206+
self.tabTitle = tabTitle
207+
self.hostIp = hostIp
208208
self.port = port
209209
self.protocol = protocol
210210
self.command = command
211-
self.starttime = starttime
211+
self.startTime = startTime
212212
self.outputfile = outputfile
213213
self.display = textbox # has its own display widget to be able to display its output in the GUI
214214
self.elapsed = -1

app/cvemodels.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def headerData(self, section, orientation, role):
4747

4848
def data(self, index, role): # this method takes care of how the information is displayed
4949

50-
if role == QtCore.Qt.DisplayRole: # how to display each cell
50+
if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: # how to display each cell
5151
value = ''
5252
row = index.row()
5353
column = index.column()
@@ -63,6 +63,12 @@ def data(self, index, role): # this metho
6363
value = self.__cves[row]['url']
6464
elif column == 5:
6565
value = self.__cves[row]['source']
66+
elif column == 6:
67+
value = self.__cves[row]['exploitId']
68+
elif column == 7:
69+
value = self.__cves[row]['exploit']
70+
elif column == 8:
71+
value = self.__cves[row]['exploitUrl']
6672
return value
6773

6874

@@ -88,6 +94,15 @@ def sort(self, Ncol, order):
8894
elif Ncol == 5:
8995
for i in range(len(self.__cves)):
9096
array.append(self.__cves[i]['source'])
97+
elif Ncol == 6:
98+
for i in range(len(self.__cves)):
99+
array.append(self.__cves[i]['exploitId'])
100+
elif Ncol == 7:
101+
for i in range(len(self.__cves)):
102+
array.append(self.__cves[i]['exploit'])
103+
elif Ncol == 8:
104+
for i in range(len(self.__cves)):
105+
array.append(self.__cves[i]['exploitUrl'])
91106

92107
sortArrayWithArray(array, self.__cves) # sort the services based on the values in the array
93108

@@ -97,12 +112,15 @@ def sort(self, Ncol, order):
97112
self.layoutChanged.emit()
98113

99114
def flags(self, index): # method that allows views to know how to treat each item, eg: if it should be enabled, editable, selectable etc
100-
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
115+
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable
101116

102117
### getter functions ###
103118

104119
def getCveDBIdForRow(self, row):
105120
return self.__cves[row]['name']
121+
122+
def getCveForRow(self, row):
123+
return self.__cves[row]
106124

107125
def getRowForDBId(self, id):
108126
for i in range(len(self.__cves)):

app/hostmodels.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def headerData(self, section, orientation, role):
4646
def data(self, index, role): # this method takes care of how the information is displayed
4747
if role == QtCore.Qt.DecorationRole: # to show the operating system icon instead of text
4848
if index.column() == 1: # if trying to display the operating system
49-
os_string = self.__hosts[index.row()]['os_match']
49+
os_string = self.__hosts[index.row()]['osMatch']
5050
if os_string == '': # if there is no OS information, use the question mark icon
5151
return QtGui.QIcon("./images/question-icon.png")
5252

@@ -78,7 +78,7 @@ def data(self, index, role): # this metho
7878
if column == 0:
7979
value = self.__hosts[row]['id']
8080
elif column == 2:
81-
value = self.__hosts[row]['os_accuracy']
81+
value = self.__hosts[row]['osAccuracy']
8282
elif column == 3:
8383
if not self.__hosts[row]['hostname'] == '':
8484
value = self.__hosts[row]['ip'] + ' ('+ self.__hosts[row]['hostname'] +')'
@@ -133,7 +133,7 @@ def sort(self, Ncol, order): # sort funct
133133
elif Ncol == 1: # if sorting by OS
134134
for i in range(len(self.__hosts)):
135135

136-
os_string = self.__hosts[i]['os_match']
136+
os_string = self.__hosts[i]['osMatch']
137137
if os_string == '':
138138
array.append('')
139139

0 commit comments

Comments
 (0)