diff --git a/lib/rex/user_agent.rb b/lib/rex/user_agent.rb index 3e76b0b14fbe..1255db741c06 100644 --- a/lib/rex/user_agent.rb +++ b/lib/rex/user_agent.rb @@ -9,20 +9,16 @@ module Rex::UserAgent # Taken from https://www.whatismybrowser.com/guides/the-latest-user-agent/ # COMMON_AGENTS = [ - # Chrome - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36', + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36', # Chrome Windows + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36', # Chrome MacOS - # Edge - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.2420.65', + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.2792.79', # Edge Windows - # Safari - 'Mozilla/5.0 (iPad; CPU OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Mobile/15E148 Safari/604.1', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Safari/605.1.15', + 'Mozilla/5.0 (iPad; CPU OS 17_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1', # Safari iPad + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15', # Safari MacOS - # Firefox - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.4; rv:124.0) Gecko/20100101 Firefox/124.0' + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0', # Firefox Windows + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.7; rv:131.0) Gecko/20100101 Firefox/131.0' # Firefox MacOS ] # @@ -60,4 +56,3 @@ def self.most_common end end - diff --git a/tools/dev/update_user_agent_strings.py b/tools/dev/update_user_agent_strings.py new file mode 100644 index 000000000000..bac548d78fd0 --- /dev/null +++ b/tools/dev/update_user_agent_strings.py @@ -0,0 +1,56 @@ +#!/usr/bin/python3 +import requests +import re + +def replace_agent_string(lines, replace_marker, url, regex): + VALID_CHARS = 'a-zA-Z0-9\\(\\);:\\.,/_ ' + regex = regex.replace('{VALID_CHARS}', VALID_CHARS) + print(f'Updating {replace_marker}') + for x in range(0, len(lines)): + if replace_marker in lines[x]: + break + else: + raise RuntimeError(f"Couldn't find marker {replace_marker}") + + response = requests.get(url) + if response.status_code != 200: + raise RuntimeError(f"Can't retrieve {url}") + + match = re.search(regex, response.text) + if match is None: + raise RuntimeError(f"Couldn't match regex {regex}") + + new_string = match.groups()[0] + print(f'New value is: {new_string}') + old_line = lines[x] + if f"'{new_string}'" in old_line: + print('(This is unchanged from the previous value)') + else: + new_line = re.sub("'(.*)'", f"'{new_string}'", old_line) + if old_line == new_line: + raise RuntimeError(f"Line didn't change: {old_line}") + + lines[x] = new_line + + +chrome_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome" +edge_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/edge" +safari_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/safari" +firefox_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/firefox" + +user_agent_filename = 'lib/rex/user_agent.rb' +with open(user_agent_filename,'r') as f: + lines = f.read().splitlines() + +replace_agent_string(lines, 'Chrome Windows', chrome_url, '