so i now reworked this to use firebase and an android app... NSFL (not safe for linux)
This commit is contained in:
		
							parent
							
								
									5736cbe1ab
								
							
						
					
					
						commit
						de0fca7419
					
				
							
								
								
									
										59
									
								
								certAlert.py
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								certAlert.py
									
									
									
									
									
								
							| @ -1,14 +1,13 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| import datetime, sys, re, urllib2, logging | import datetime, sys, re, urllib2, logging | ||||||
| import pushnotify | #before running this you might want to export PYTHONIOENCODING=UTF-8 | ||||||
| #TODO: replace pushnotify with a simple HTTP_POST | #TODO: replace pushnotify with a simple HTTP_POST | ||||||
| from bs4 import BeautifulSoup | from bs4 import BeautifulSoup | ||||||
|  | from pyfcm import FCMNotification | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ERRSTR = '!!!!!!!!!!!!! ' | ERRSTR = '!!!!!!!!!!!!! ' | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # REMEMBER TO CHANGE THESE!!! | # REMEMBER TO CHANGE THESE!!! | ||||||
| TARGET_URL = 'https://www.cert-bund.de/overview/AdvisoryShort' | TARGET_URL = 'https://www.cert-bund.de/overview/AdvisoryShort' | ||||||
| MEMORY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\certAlert\out.txt' | MEMORY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\certAlert\out.txt' | ||||||
| @ -16,17 +15,21 @@ MEMORY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\certAlert\out.txt' | |||||||
| #TODO: Put all this in a single file | #TODO: Put all this in a single file | ||||||
| USER_KEY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\pushover_user' | USER_KEY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\pushover_user' | ||||||
| API_KEY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\pushover_key' | API_KEY_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\pushover_key' | ||||||
| PUSHOVER_DEVICE = 'chromehome' | REG_KEYS_PATH = 'C:\Users\Panki\Desktop\Privat\Dev\device_list' | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| # To monitor more programs, simply add a string here | # To monitor more programs, simply add a string here | ||||||
| PROGRAMS = [u'Chrome', u'OpenSSH', u'Java', u'Linux', u'Apache', u'Windows'] | PROGRAMS = [u'Git', u'Chrome', u'OpenSSH', u'Java', u'Linux', u'Apache', u'Windows'] | ||||||
| 
 | 
 | ||||||
| with open(USER_KEY_PATH, 'r') as userKeyFile: | with open(USER_KEY_PATH, 'r') as userKeyFile: | ||||||
|         USER_KEY = userKeyFile.read() |     USER_KEY = userKeyFile.read() | ||||||
|         userKeyFile.close() |     userKeyFile.close() | ||||||
| with open(API_KEY_PATH, 'r') as apiKeyFile: | with open(API_KEY_PATH, 'r') as apiKeyFile: | ||||||
|     API_KEY = apiKeyFile.read() |     API_KEY = apiKeyFile.read() | ||||||
|     userKeyFile.close() |     apiKeyFile.close() | ||||||
|  | with open(REG_KEYS_PATH, 'r') as regKeyFile: | ||||||
|  |     REG_KEYS = regKeyFile.readlines() | ||||||
|  |     regKeyFile.close() | ||||||
| 
 | 
 | ||||||
| # object to store a single cert alert | # object to store a single cert alert | ||||||
| class Advisory: | class Advisory: | ||||||
| @ -53,9 +56,10 @@ def startLogger(): | |||||||
|     logger.addHandler(handler) |     logger.addHandler(handler) | ||||||
| 
 | 
 | ||||||
| def getHTML(url): | def getHTML(url): | ||||||
|  |     import urllib2 | ||||||
|     try: |     try: | ||||||
|         response = urllib2.open(url) |         response = urllib2.urlopen(url) | ||||||
|     except urllib2.URLError: |     except URLError: | ||||||
|         print(ERRSTR + 'Failed getting webpage!') |         print(ERRSTR + 'Failed getting webpage!') | ||||||
|         print(ERRSTR + 'Check your internet connection or TARGET_URL.') |         print(ERRSTR + 'Check your internet connection or TARGET_URL.') | ||||||
|         sys.exit(ERRSTR + 'Stopping execution!') |         sys.exit(ERRSTR + 'Stopping execution!') | ||||||
| @ -64,26 +68,13 @@ def getHTML(url): | |||||||
|         print(ERRSTR + 'Error getting Webpage!') |         print(ERRSTR + 'Error getting Webpage!') | ||||||
|         print(e) |         print(e) | ||||||
|         sys.exit(ERRSTR + 'Stopping execution!') |         sys.exit(ERRSTR + 'Stopping execution!') | ||||||
|     result = response.read(); |     result = response.read() | ||||||
|     return result |     return result | ||||||
|     |     | ||||||
| def main(): | def main(): | ||||||
|     import pushnotify |     #import pushnotify | ||||||
|     startLogger() |     #startLogger() | ||||||
|     client = pushnotify.get_client('pushover', API_KEY, 'certAlert') |     client = FCMNotification(api_key=API_KEY) | ||||||
|     client.add_key(USER_KEY, PUSHOVER_DEVICE) |  | ||||||
|     #try: |  | ||||||
|     #    response = urllib2.urlopen(TARGET_URL) |  | ||||||
|     #except urllib2.URLError: |  | ||||||
|     #    print(ERRSTR + 'Failed getting webpage!') |  | ||||||
|     #    print(ERRSTR + 'Check your internet connection or TARGET_URL.') |  | ||||||
|     #    sys.exit(ERRSTR + 'Stopping execution!') |  | ||||||
|     #except: |  | ||||||
|     #    e = sys.exc_info()[0] |  | ||||||
|     #   print(ERRSTR + 'Error getting Webpage!') |  | ||||||
|     #    print(e) |  | ||||||
|     #    sys.exit(ERRSTR + 'Stopping execution!') |  | ||||||
|     #html = response.read() |  | ||||||
|     html = getHTML(TARGET_URL) |     html = getHTML(TARGET_URL) | ||||||
|     soup = BeautifulSoup(html, 'html.parser') |     soup = BeautifulSoup(html, 'html.parser') | ||||||
|     # create a list of results and add objects created with the data of each table row |     # create a list of results and add objects created with the data of each table row | ||||||
| @ -111,10 +102,18 @@ def main(): | |||||||
|         if result.risk > 3: |         if result.risk > 3: | ||||||
|             # here we're checking if the is related to our programs |             # here we're checking if the is related to our programs | ||||||
|             for prog in PROGRAMS: |             for prog in PROGRAMS: | ||||||
|                 if re.match(prog, result.description, re.IGNORECASE): |                 if re.search(prog, result.description, re.IGNORECASE): | ||||||
|                     if result.identifier not in checkedIDs: |                     if result.identifier not in checkedIDs: | ||||||
|                         #this means we have found an alert that we have not seen before! lets alert the user... |                         #this means we have found an alert that we have not seen before! lets alert the user... | ||||||
|                         client.notify(result.description, result.identifier, kwargs={'priority': 1, 'url': result.link,'url_title': result.identifier}); |                         for key in REG_KEYS: | ||||||
|  |                             print(type(key)) | ||||||
|  |                             try: | ||||||
|  | 
 | ||||||
|  |                                 response = client.notify_single_device(registration_id=key, message_body=result.description, message_title=result.identifier) | ||||||
|  |                             except: | ||||||
|  |                                 e = sys.exc_info()[0] | ||||||
|  |                                 print(e) | ||||||
|  |                                 print("we fucked up!") | ||||||
|                         result.debug() |                         result.debug() | ||||||
|                         print('========================================================================') |                         print('========================================================================') | ||||||
|                     else: |                     else: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user