Update project
This commit is contained in:
		
							parent
							
								
									96342a2b2c
								
							
						
					
					
						commit
						6cb4cacaf9
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,3 @@ | |||||||
| __pycache__/ | __pycache__/ | ||||||
| __pycache__/** | __pycache__/** | ||||||
|  | **.swp | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ from parsing.base import ParsingBase | |||||||
| class Parsing(ParsingBase): | class Parsing(ParsingBase): | ||||||
|     def __init__(self, objects, audit): |     def __init__(self, objects, audit): | ||||||
|         self._parsing = dict() |         self._parsing = dict() | ||||||
|         self._results = dict() |         self._reports = dict() | ||||||
|         self._objects = objects |         self._objects = objects | ||||||
|         self._audit = audit |         self._audit = audit | ||||||
| 
 | 
 | ||||||
| @ -24,35 +24,61 @@ class Parsing(ParsingBase): | |||||||
| 
 | 
 | ||||||
|         self._constructResults(filename='/etc/sysctl.conf') |         self._constructResults(filename='/etc/sysctl.conf') | ||||||
| 
 | 
 | ||||||
|  |         resultsFlag = dict() | ||||||
|  | 
 | ||||||
|  |         # I create an array which contains all flag we need to find | ||||||
|  |         # After that, for each data, I put the number of occurence I found. | ||||||
|  |         # If the array is empty, no entry found for a flag, otherwise, we check the value | ||||||
|  |         for obj in self._objects['sysctl']: | ||||||
|  |             resultsFlag[obj['flag']] = list() | ||||||
|  | 
 | ||||||
|  |         print(resultsFlag) | ||||||
|  | 
 | ||||||
|         for line in lines: |         for line in lines: | ||||||
|             line = line.decode("utf-8") |             line = line.decode("utf-8") | ||||||
| 
 | 
 | ||||||
|             for obj in self._objects['sysctl']: |             for obj in self._objects['sysctl']: | ||||||
|                 result = self._parsingFile(line, obj) |                 result = self._parsingFile(line, obj, resultsFlag) | ||||||
|                 if len(result) == 0: |                 if result: | ||||||
|                     pass |                     print(resultsFlag[obj['flag']][ | ||||||
|                 # If the flag is found |                             len(resultsFlag[obj['flag']]) - 1: | ||||||
|                 else: |                             len(resultsFlag[obj['flag']]) | ||||||
|                     # And if the current value is not setted corectly for the vulnerability |                     ]) | ||||||
|                     print(result) |                 # If not exist, we recommand to put the flag | ||||||
|                      |                 #if len(result) == 0: | ||||||
|                     self._results[obj['flag']].append({ |                 #    # print("Not find") | ||||||
|                         'lineNumber': numLines, |                 #    pass | ||||||
|                         'value': obj['value'], |                 ## If the flag is found | ||||||
|                         'audit': 'failed' # Or success |                 #else: | ||||||
|                     }) |                 #    # And if the current value is not setted corectly for the vulnerability | ||||||
|                      |                 #    print(result) | ||||||
|                     if result['value'] != result['current_value']: |                 #     | ||||||
|                         print(f"You must change the value to {obj['value']} for fixing the vulnerabilities") |                 #    self._reports[obj['flag']].append({ | ||||||
|  |                 #        'lineNumber': numLines, | ||||||
|  |                 #        'value': obj['value'], | ||||||
|  |                 #        'audit': 'failed' # Or success | ||||||
|  |                 #    }) | ||||||
|  |                 #     | ||||||
|  |                 #    #if result['value'] != result['current_value']: | ||||||
|  |                 #    #    print(f"You must change the value to {obj['value']} for fixing the vulnerabilities") | ||||||
| 
 | 
 | ||||||
|             numLines += 1 |             numLines += 1 | ||||||
|         print(self._results) |         print(self._reports) | ||||||
| 
 | 
 | ||||||
|     def _parsingFile(self, line, obj) -> dict: |         # Now, we can check if the value is specified or not | ||||||
|  |         # And check if the flag is specified and need to put on the sysctl config | ||||||
|  |         print("") | ||||||
|  |         for entry in resultsFlag: | ||||||
|  |             print(entry) | ||||||
|  |             print(resultsFlag[entry]) | ||||||
|  | 
 | ||||||
|  |         # We can generate the report | ||||||
|  | 
 | ||||||
|  |     def _parsingFile(self, line, obj, resultsFlag) -> bool: | ||||||
|         """ |         """ | ||||||
|             This function parse the line and try to find the item in it |             This function parse the line and try to find the item in it | ||||||
|         """ |         """ | ||||||
|         result = dict() |         result = bool() | ||||||
| 
 | 
 | ||||||
|         groupLine = re.search(obj['flag'], line) |         groupLine = re.search(obj['flag'], line) | ||||||
|         if groupLine: |         if groupLine: | ||||||
| @ -61,15 +87,20 @@ class Parsing(ParsingBase): | |||||||
|                 sLine = line.split('=') |                 sLine = line.split('=') | ||||||
|                 flag = sLine[0] |                 flag = sLine[0] | ||||||
|                 value = int(sLine[1].strip('')) |                 value = int(sLine[1].strip('')) | ||||||
|  |                 result = True | ||||||
|                 #print(sLine) |                 #print(sLine) | ||||||
| 
 | 
 | ||||||
|                 result['found'] = flag |                 resultsFlag[flag].append({ | ||||||
|                 result['current_value'] = value |                     'current_value': value, | ||||||
|                 result['value'] = obj['value'] |                     'value': obj['value'] | ||||||
|  |                 }) | ||||||
|  |                 #result['found'] = flag | ||||||
|  |                 #result['current_value'] = value | ||||||
|  |                 #result['value'] = obj['value'] | ||||||
| 
 | 
 | ||||||
|                 if value != obj['value']: |                 #if value != obj['value']: | ||||||
|                     print("Need to change the value") |                 #    print("Need to change the value") | ||||||
|                     print(sLine) |                 #    print(sLine) | ||||||
| 
 | 
 | ||||||
|         return result |         return result | ||||||
| 
 | 
 | ||||||
| @ -84,11 +115,11 @@ class Parsing(ParsingBase): | |||||||
|               - description: description of the vulnerabilities |               - description: description of the vulnerabilities | ||||||
|               - level: high, medium or low |               - level: high, medium or low | ||||||
|         """ |         """ | ||||||
|         self._results['filename'] = filename |         self._reports['filename'] = filename | ||||||
| 
 | 
 | ||||||
|         for sysctl in self._objects['sysctl']: |         for sysctl in self._objects['sysctl']: | ||||||
|             self._results[sysctl['flag']] = list() |             self._reports[sysctl['flag']] = list() | ||||||
|         print(self._results) |         print(self._reports) | ||||||
|         print("") |         print("") | ||||||
| 
 | 
 | ||||||
|     def getResults(self) -> dict: |     def getResults(self) -> dict: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 gbucchino
						gbucchino