",
+ crt_result,
+ re.IGNORECASE,
+ ):
domain = domain.split("@")[-1]
domains.add(domain)
@@ -4787,34 +4996,40 @@ def crtscan(self):
def vtsubdomain(self):
result = []
try:
- urlapi = "https://www.virustotal.com/vtapi/v2/domain/report?apikey=%s&domain=%s" % (self.apikey, self.query)
+ urlapi = (
+ "https://www.virustotal.com/vtapi/v2/domain/report?apikey=%s&domain=%s"
+ % (self.apikey, self.query)
+ )
ho = urllib2.OpenerDirector()
ho.add_handler(urllib2.HTTPSHandler())
req = urllib2.Request(urlapi)
if proxy_type and proxy_host:
if proxy_type == "http":
- ho.add_handler(urllib2.ProxyHandler({"https":proxy_host}))
+ ho.add_handler(urllib2.ProxyHandler({"https": proxy_host}))
elif proxy_type == "socks5":
proxy_h, proxy_port = proxy_host.split(":")
- ho.add_handler(SocksiPyHandler(socks.SOCKS5, proxy_h, int(proxy_port) ))
+ ho.add_handler(
+ SocksiPyHandler(socks.SOCKS5, proxy_h, int(proxy_port))
+ )
elif proxy_type == "socks4":
proxy_h, proxy_port = proxy_host.split(":")
- ho.add_handler(SocksiPyHandler(socks.SOCKS4, proxy_h, int(proxy_port) ))
+ ho.add_handler(
+ SocksiPyHandler(socks.SOCKS4, proxy_h, int(proxy_port))
+ )
r = ho.open(req, timeout=30)
r = json.loads(r.read())
- if "subdomains" in r.keys() :
+ if "subdomains" in r.keys():
for res in r["subdomains"]:
result.append(res.split("." + self.query)[0])
vtsing = info("VTS Request ") + str(len(result)) + " | "
sys.stdout.write(vtsing)
sys.stdout.flush()
except Exception as e:
- vtsing = PASSAT("VTS Request error") + " | "
+ vtsing = PASSAT("VTS Request error") + " | "
sys.stdout.write(vtsing)
sys.stdout.flush()
return result
-
def passivetotal_get(self, path, json_using=True):
"""
passivetotal api for get subdomain
@@ -4822,13 +5037,14 @@ def passivetotal_get(self, path, json_using=True):
keylist = Account().Riskiqkey()
- # Adaptor python3
+ # Adaptor python3
if PYVERSION > "3.0":
from urllib.parse import quote
+
urllib.quote = quote
def readapi():
-
+
auth = random.choice(keylist)
auth_index = keylist.index(auth)
@@ -4838,9 +5054,9 @@ def readapi():
querys = urllib.quote(self.query)
data = {"query": querys}
- headers = {"Content-Type":"application/json"}
+ headers = {"Content-Type": "application/json"}
- # Adaptor python3
+ # Adaptor python3
try:
base64string = base64.b64encode("%s:%s" % auth)
@@ -4849,11 +5065,10 @@ def readapi():
b2encode = b2encode.encode("gb2312")
base64string = base64.b64encode(b2encode).decode("utf-8")
-
try:
if json_using:
- # Adaptor python3
+ # Adaptor python3
if PYVERSION > "3.0":
d = json.dumps(data)
d = d.encode("utf-8")
@@ -4864,7 +5079,6 @@ def readapi():
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % base64string)
-
res = urllib2.urlopen(request, timeout=10)
return res.read()
except urllib2.HTTPError as e:
@@ -4881,11 +5095,12 @@ def readapi():
if "timed out" in str(e):
return "timeout"
return None
+
result = readapi()
- while result =="402" or result == "401" or result == "timeout" :
+ while result == "402" or result == "401" or result == "timeout":
if len(keylist) < 1:
pass
- result=readapi()
+ result = readapi()
return result
def bing_domain(self):
@@ -4896,17 +5111,23 @@ def bing_domain(self):
# Location banner of bing
ho = urllib2.OpenerDirector()
ho.add_handler(urllib2.HTTPSHandler())
- ho.add_handler(urllib2.HTTPSHandler(context=_create_unverified_https_context()))
+ ho.add_handler(
+ urllib2.HTTPSHandler(context=_create_unverified_https_context())
+ )
req = urllib2.Request("https://bing.com", headers=bing_header)
if proxy_type and proxy_host:
if proxy_type == "http":
- ho.add_handler(urllib2.ProxyHandler({"https":proxy_host}))
+ ho.add_handler(urllib2.ProxyHandler({"https": proxy_host}))
elif proxy_type == "socks5":
proxy_h, proxy_port = proxy_host.split(":")
- ho.add_handler(SocksiPyHandler(socks.SOCKS5, proxy_h, int(proxy_port) ))
+ ho.add_handler(
+ SocksiPyHandler(socks.SOCKS5, proxy_h, int(proxy_port))
+ )
elif proxy_type == "socks4":
proxy_h, proxy_port = proxy_host.split(":")
- ho.add_handler(SocksiPyHandler(socks.SOCKS4, proxy_h, int(proxy_port) ))
+ ho.add_handler(
+ SocksiPyHandler(socks.SOCKS4, proxy_h, int(proxy_port))
+ )
r = ho.open(req, timeout=3)
localhost = r.info()["Location"]
@@ -4916,19 +5137,19 @@ def bing_domain(self):
req = urllib2.Request(localhost, headers=bing_header)
r = ho.open(req, timeout=3)
- bing_header.update({
- "Cookie": r.info()["Set-Cookie"]
- })
+ bing_header.update({"Cookie": r.info()["Set-Cookie"]})
first = 0
while True:
- urlapi = localhost + "/search?q=site:%s&first=%d&count=50" % (self.query, first)
+ urlapi = localhost + "/search?q=site:%s&first=%d&count=50" % (
+ self.query,
+ first,
+ )
try:
req = urllib2.Request(urlapi, headers=bing_header)
r = ho.open(req, timeout=15)
except Exception as e:
break
-
data = r.read().decode()
pattern = re.compile(r"\")
patchs = pattern.findall(data)
@@ -4954,15 +5175,16 @@ def bing_domain(self):
sys.stdout.flush()
except Exception as e:
- binging = PASSAT("BING Request error") + " | "
+ binging = PASSAT("BING Request error") + " | "
sys.stdout.write(binging)
sys.stdout.flush()
return result
+
def to_ips(raw):
- # TODO: calculate the capacity
+ # TODO: calculate the capacity
if containenglish(raw):
yield raw
@@ -4970,14 +5192,20 @@ def to_ips(raw):
addr, mask = raw.split("/")
mask = int(mask)
- bin_addr = "".join([ (8 - len(bin(int(i))[2:])) * "0" + bin(int(i))[2:] for i in addr.split(".")])
+ bin_addr = "".join(
+ [
+ (8 - len(bin(int(i))[2:])) * "0" + bin(int(i))[2:]
+ for i in addr.split(".")
+ ]
+ )
start = bin_addr[:mask] + (32 - mask) * "0"
end = bin_addr[:mask] + (32 - mask) * "1"
# num = int(start, 2) ^ int(end, 2)
for i in range(int(start, 2), int(end, 2) + 1):
bin_addr = (32 - len(bin(int(i))[2:])) * "0" + bin(i)[2:]
- yield ".".join([str(int(bin_addr[8 * i: 8 * (i + 1)], 2)) for i in range(0, 4)])
-
+ yield ".".join(
+ [str(int(bin_addr[8 * i : 8 * (i + 1)], 2)) for i in range(0, 4)]
+ )
elif "-" in raw:
@@ -4990,11 +5218,14 @@ def to_ips(raw):
for i in range(start, end + 1):
yield prefix + "." + str(i)
- elif re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", raw):
+ elif re.match(
+ r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$",
+ raw,
+ ):
start, end = [ip2num(x) for x in raw.split("-")]
# num = end - start
for num in range(start, end + 1):
- if not num & 0xff:
+ if not num & 0xFF:
continue
yield num2ip(num)
@@ -5016,58 +5247,58 @@ def nbns_name(addr):
if isinstance(rep, str):
rep = bytes(rep)
- num = ord(rep[56:57].decode())
- data = rep[57:]
+ num = ord(rep[56:57].decode())
+ data = rep[57:]
group, unique = "", ""
-
+
msg += "--------------------------" + "\n"
for i in range(num):
- name = data[18 * i:18 *i + 15].decode()
- flag_bit = bytes(data[18 * i + 15:18 *i + 16])
-
- if flag_bit in GROUP_NAMES and flag_bit != b"\x00":
+ name = data[18 * i : 18 * i + 15].decode()
+ flag_bit = bytes(data[18 * i + 15 : 18 * i + 16])
+
+ if flag_bit in GROUP_NAMES and flag_bit != b"\x00":
msg += "%s\t%s\t%s" % (name, "G", GROUP_NAMES[flag_bit]) + "\n"
- elif flag_bit in UNIQUE_NAMES and flag_bit != b"\x00":
+ elif flag_bit in UNIQUE_NAMES and flag_bit != b"\x00":
msg += "%s\t%s\t%s" % (name, "U", UNIQUE_NAMES[flag_bit]) + "\n"
-
+
elif flag_bit in b"\x00":
- name_flags = data[18*i + 16: 18*i + 18]
+ name_flags = data[18 * i + 16 : 18 * i + 18]
if ord(name_flags[0:1]) >= 128:
group = name.strip()
-
+
msg += "%s\t%s\t%s" % (name, "G", GROUP_NAMES[flag_bit]) + "\n"
else:
unique = name
msg += "%s\t%s\t%s" % (name, "U", UNIQUE_NAMES[flag_bit]) + "\n"
else:
msg += "%s\t-\t-" % name + "\n"
-
+
msg += "--------------------------" + "\n"
-
+
msg = "%s\\%s" % (group, unique) + "\n" + msg
- return { "group": group, "unique": unique, "msg": msg }
-
+ return {"group": group, "unique": unique, "msg": msg}
+
except socket.error as e:
return False
-def netbios_encode(src):
-
+def netbios_encode(src):
+
src = src.ljust(16, "\x20")
names = []
for c in src:
char_ord = ord(c)
high_4_bits = char_ord >> 4
- low_4_bits = char_ord & 0x0f
+ low_4_bits = char_ord & 0x0F
names.append(high_4_bits)
names.append(low_4_bits)
-
+
res = b""
for name in names:
-
+
res += chr(0x41 + name).encode()
return res
@@ -5080,19 +5311,19 @@ def smb_detect(addr, lock, ports=139):
if ports == "":
port = 139
else:
- port=int(ports)
+ port = int(ports)
if port == 139:
nbns_result = nbns_name(addr)
if not nbns_result:
return
elif not nbns_result["unique"]:
-
+
msg += "nbns_result_error"
lock.acquire()
print(addr + " " + msg)
lock.release()
return
-
+
msg += nbns_result["msg"]
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@@ -5108,82 +5339,92 @@ def smb_detect(addr, lock, ports=139):
if port == 139:
name = netbios_encode(nbns_result["unique"])
-
- payload0 = b"\x81\x00\x00D " + name + b"\x00 EOENEBFACACACACACACACACACACACACA\x00"
-
+
+ payload0 = (
+ b"\x81\x00\x00D " + name + b"\x00 EOENEBFACACACACACACACACACACACACA\x00"
+ )
+
s.send(payload0)
s.recv(1024)
-
+
payload1 = b"\x00\x00\x00\x85\xff\x53\x4d\x42\x72\x00\x00\x00\x00\x18\x53\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xfe\x00\x00\x00\x00\x00\x62\x00\x02\x50\x43\x20\x4e\x45\x54\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c\x4d\x20\x30\x2e\x31\x32\x00"
payload2 = b"\x00\x00\x01\x0a\xff\x53\x4d\x42\x73\x00\x00\x00\x00\x18\x07\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xfe\x00\x00\x40\x00\x0c\xff\x00\x0a\x01\x04\x41\x32\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\xd4\x00\x00\xa0\xcf\x00\x60\x48\x06\x06\x2b\x06\x01\x05\x05\x02\xa0\x3e\x30\x3c\xa0\x0e\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x02\x0a\xa2\x2a\x04\x28\x4e\x54\x4c\x4d\x53\x53\x50\x00\x01\x00\x00\x00\x07\x82\x08\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x02\xce\x0e\x00\x00\x00\x0f\x00\x57\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x73\x00\x20\x00\x53\x00\x65\x00\x72\x00\x76\x00\x65\x00\x72\x00\x20\x00\x32\x00\x30\x00\x30\x00\x33\x00\x20\x00\x33\x00\x37\x00\x39\x00\x30\x00\x20\x00\x53\x00\x65\x00\x72\x00\x76\x00\x69\x00\x63\x00\x65\x00\x20\x00\x50\x00\x61\x00\x63\x00\x6b\x00\x20\x00\x32\x00\x00\x00\x00\x00\x57\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x73\x00\x20\x00\x53\x00\x65\x00\x72\x00\x76\x00\x65\x00\x72\x00\x20\x00\x32\x00\x30\x00\x30\x00\x33\x00\x20\x00\x35\x00\x2e\x00\x32\x00\x00\x00\x00\x00"
-
+
s.send(payload1)
s.recv(1024)
s.send(payload2)
-
ret = s.recv(1024)
- length = ord(ret[43: 44]) + ord(ret[44: 45]) * 256
- os_version = ret[47 + length:]
-
- msg += os_version.replace(b"\x00\x00", b"|").replace(b"\x00", b"").decode("UTF-8", errors="ignore") + "\n"
+ length = ord(ret[43:44]) + ord(ret[44:45]) * 256
+ os_version = ret[47 + length :]
+
+ msg += (
+ os_version.replace(b"\x00\x00", b"|")
+ .replace(b"\x00", b"")
+ .decode("UTF-8", errors="ignore")
+ + "\n"
+ )
start = ret.find(b"NTLMSSP")
-
-
- length = ord(ret[start + 40: start + 41]) + ord(ret[start + 41: start + 42]) * 256
-
-
-
- offset = ord(ret[start + 44: start + 45])
-
-
-
- msg += "Major Version: %d" % ord(ret[start + 48: start + 49]) + "\n"
-
- msg += "Minor Version: %d" % ord(ret[start + 49: start + 50]) + "\n"
-
- msg += "Bulid Number: %d" % (ord(ret[start + 50: start + 51]) + 256 * ord(ret[start + 51: start + 52])) + "\n"
-
-
- msg += "NTLM Current Revision: %d" % (ord(ret[start + 55: start + 56]) ) + "\n"
+ length = ord(ret[start + 40 : start + 41]) + ord(ret[start + 41 : start + 42]) * 256
+
+ offset = ord(ret[start + 44 : start + 45])
+
+ msg += "Major Version: %d" % ord(ret[start + 48 : start + 49]) + "\n"
+
+ msg += "Minor Version: %d" % ord(ret[start + 49 : start + 50]) + "\n"
+
+ msg += (
+ "Bulid Number: %d"
+ % (ord(ret[start + 50 : start + 51]) + 256 * ord(ret[start + 51 : start + 52]))
+ + "\n"
+ )
+
+ msg += "NTLM Current Revision: %d" % (ord(ret[start + 55 : start + 56])) + "\n"
index = start + offset
while index < start + offset + length:
- item_type = ret[index:index + 2]
-
- item_length = ord(ret[index + 2:index +3]) + ord(ret[index + 3:index +4]) * 256
-
- item_content = ret[index + 4: index + 4 + item_length].replace(b"\x00", b"")
+ item_type = ret[index : index + 2]
+
+ item_length = (
+ ord(ret[index + 2 : index + 3]) + ord(ret[index + 3 : index + 4]) * 256
+ )
+
+ item_content = ret[index + 4 : index + 4 + item_length].replace(b"\x00", b"")
if item_type == b"\x07\x00":
-
+
if PYVERSION > "3.0":
- timestamp = int.from_bytes(item_content, byteorder="little")
- else:
- timestamp = int("".join(reversed(item_content)).encode("hex"), 16)
+ timestamp = int.from_bytes(item_content, byteorder="little")
+ else:
+ timestamp = int("".join(reversed(item_content)).encode("hex"), 16)
-
- EPOCH_AS_FILETIME = 116444736000000000; HUNDREDS_OF_NANOSECONDS = 10000000
- timestamp = datetime.fromtimestamp((timestamp - EPOCH_AS_FILETIME) / HUNDREDS_OF_NANOSECONDS)
+ EPOCH_AS_FILETIME = 116444736000000000
+ HUNDREDS_OF_NANOSECONDS = 10000000
+ timestamp = datetime.fromtimestamp(
+ (timestamp - EPOCH_AS_FILETIME) / HUNDREDS_OF_NANOSECONDS
+ )
-
msg += "%s: %s" % (NetBIOS_ITEM_TYPE[item_type], timestamp) + "\n"
elif item_type in NetBIOS_ITEM_TYPE:
-
- msg += "%s: %s" % (NetBIOS_ITEM_TYPE[item_type], item_content.decode(errors="ignore")) + "\n"
- elif item_type == b"\x00\x00":
+
+ msg += (
+ "%s: %s"
+ % (NetBIOS_ITEM_TYPE[item_type], item_content.decode(errors="ignore"))
+ + "\n"
+ )
+ elif item_type == b"\x00\x00":
break
else:
-
+
msg += "Unknown: %s" % (item_content) + "\n"
-
- index += 4 + item_length
+
+ index += 4 + item_length
lock.acquire()
- print(addr + " " + msg)
+ print(addr + " " + msg)
resAlivedomainFile.write(addr + " " + msg + "\n")
resAlivedomainFile.flush()
lock.release()
@@ -5202,9 +5443,11 @@ def unzip(data):
gz.close()
return data
+
def containenglish(str0):
return bool(re.search("[a-z]", str0))
+
def openFile(filename):
hostlist = []
try:
@@ -5217,18 +5460,19 @@ def openFile(filename):
line = line.decode("utf-8")
except:
pass
-
+
line = line.strip("\n")
if "/" in line and "//" not in line and not containenglish(line):
tempiplist = to_ips(line)
hostlist += list(tempiplist)
elif "//" in line:
- hostlist.append(line.strip().replace("http://","").replace("https://",""))
+ hostlist.append(line.strip().replace("http://", "").replace("https://", ""))
else:
hostlist.append(line.strip())
return hostlist
+
def opensubDomainFile(filename):
hostlist = []
try:
@@ -5238,15 +5482,20 @@ def opensubDomainFile(filename):
sys.exit(0)
if "[fuzz]" in args.host:
for line in f:
- hostlist.append(args.host.replace("http://","").replace("https://","").replace("[fuzz]",line.decode().strip()))
+ hostlist.append(
+ args.host.replace("http://", "")
+ .replace("https://", "")
+ .replace("[fuzz]", line.decode().strip())
+ )
else:
for line in f:
- hostlist.append(line.decode().strip()+args.host)
+ hostlist.append(line.decode().strip() + args.host)
f.close()
return hostlist
+
def opensubFile(filename):
# hostscan read file
hostlist = []
@@ -5260,9 +5509,10 @@ def opensubFile(filename):
hostlist.append(line.decode().strip() + "." + args.domain)
return hostlist
+
def openUrlFile(filename):
urllist = []
- try:
+ try:
f = open(filename, "r")
except:
print(info("File not find"))
@@ -5272,30 +5522,41 @@ def openUrlFile(filename):
urllist.append(urlpath.strip("\n").strip("\r"))
return urllist
+
def ip2num(ip):
-
+
ips = [int(x) for x in ip.split(".")]
return ips[0] << 24 | ips[1] << 16 | ips[2] << 8 | ips[3]
+
def num2ip(num):
- return "%s.%s.%s.%s" % ((num >> 24) & 0xff, (num >> 16) & 0xff, (num >> 8) & 0xff, (num & 0xff))
+ return "%s.%s.%s.%s" % (
+ (num >> 24) & 0xFF,
+ (num >> 16) & 0xFF,
+ (num >> 8) & 0xFF,
+ (num & 0xFF),
+ )
+
def gen_ip(ip):
if type(ip) is not list:
for ips in to_ips(ip.strip()):
yield ips
+
return
+
for i in ip:
for ips in to_ips(i.strip()):
yield ips
+
def getHttpCert(host, port):
if args.nocert:
return "null", "null"
try:
ip = socket.gethostbyname(host)
- sock= socket.socket()
+ sock = socket.socket()
sock.settimeout(4)
c = ssl.wrap_socket(sock, cert_reqs=ssl.CERT_REQUIRED, ca_certs="cacert.pem")
c.settimeout(4)
@@ -5311,21 +5572,23 @@ def getHttpCert(host, port):
class FingerStruct:
def __init__(self):
self.fail = 0
- self.child = [0 for i in range(91)] # Character word ord("z") - ord("/x20") + 1
+ self.child = [0 for i in range(91)] # Character word ord("z") - ord("/x20") + 1
self.exist = []
+
class CFingerStruct:
def __init__(self):
self.fail = 0
- self.child = [0 for i in range(1000)]
+ self.child = [0 for i in range(1000)]
self.exist = []
+
class Fingerident:
def __init__(self):
self.fin = {"SHORTCUT ICON\" href=\"img/logo_small.ico\"":"用友nc!!","spring.cloud.bootstrap.location":"spring location yaml","spring.datasource.hikari.connection-test-query":"spring hikari","spring.cloud.bootstrap.location":"srping location","logo/images/logo.gif":"用友nc_gif", "ch.qos.logback.classic": "spring jolokia logback", "defaultZone": "srping env defaultZone", "servletContextInitParams": "Spring env!!", "logback": "Spring env!!", "Error 401--Unauthorized": "Weblogic!!", "Error 404--Not Found": "Weblogic!!", "Error 403--": "Weblogic!!", "Error 500--": "Weblogic!!", "/por/login_psw.csp": "Sangfor SSL VPN!!","weaver,e-mobile":"e-mobile!!", "ecology":"ecology!!", "\"/r/cms/":"JEECMS!!", "e-Bridge":"e-Bridge!!", "wx.weaver":"e-Bridge!!", "Swagger":"Swagger UI!!", "4008 111 000":"Ruijie", "Script/SmcScript.js?version=":"Huawei SMC", "/wnm/ssl/web/frame/login.html": "H3C Router", "/+CSCOE+/logon.html": "Cisco SSLVPN!!", "Huawei":"Huawei", "huawei":"Huawei", "Hicloud":"Huawei", "hicloud":"Huawei", "Vmall":"Huawei", "vmall":"Huawei", "../zentao/theme/zui/css/min.css":"Zentao!!", "/webmail/client/index.php?module=operate&action=login":"U-Mail!!", "UI_component/commonDefine/UI_regex_define.js":"Huawei Firewall","/zcms/":"ZCMS!!", "gHasSecureMail":"亿邮!!", "any_rsa_pass": "anymacro!!", "https://sec.anymacro.com":"anymacro!!", "action=\"/coremail/index.jsp?cus=1\"":"Coremail!!", "/coremail/common/":"Coremail!!", "href=\"/seeyon/skin/dist":"致远OA!!", "/seeyon/main.do":"致远OA!!", "StylePath:\"/resource/style":"蓝凌ekp!!", "Office Anywhere":"通达OA!!", "general/login_code.php":"通达OA!!", "webmail/se/account/download.do":"Richmail!!", "url=/webmail/\"":"Richmail!!", "Zabbix SIA":"Zabbix!!", "Powered by Discuz!":"Discuz!!", "content=\"Discuz!":"Discuz!!", "/bds/stylesheets/fds.css":"Biscom-Delivery-Server", "/bds/includes/fdsJavascript.do":"Biscom-Delivery-Server", "/ewebeditor.htm?":"ewebeditor", "align=center>HP Officejet": "HP-OfficeJet-Printer", "/bds/stylesheets/fds.css": "Biscom-Delivery-Server", "/bds/includes/fdsJavascript.do": "Biscom-Delivery-Server", "style/pwc/ddwrt.css": "DD-WRT", "/ewebeditor.htm?": "ewebeditor", "new FCKeditor": "fckeditor", "xheditor_lang/zh-cn.js": "xheditor", "class=xheditor": "xheditor","free_nbr_login_form.png": "锐捷NBR路由器", "passWithWarnings": "arrisi_Touchstone", "Forms/rpAuth_1": "ZyXEL", "mon. Tell me your username": "Ruckus", "/jscripts/rap_util.js": "rap", "__admin_media_prefix__": "Django", "csrfmiddlewaretoken": "Django", "axis2-web/css/axis-style.css": "axis2-web", "xmlns:wicket=": "Apache-Wicket", "/org.apache.wicket.": "Apache-Wicket", "
BEA WebLogic Server": "BEA-WebLogic-Server", "WebLogic": "BEA-WebLogic-Server", "": "EDK", "target=_blank>eDirectory&trade": "eDirectory", "Powered by Replica set status