#!/usr/bin/env python3 # -*- coding: utf-8 -*-" """ This file is part of the UFONet project, https://ufonet.03c8.net Copyright (c) 2013/2022 | psy You should have received a copy of the GNU General Public License along with UFONet; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ #######WORKAROUND PYTHON(3) VERSIONS#################### import platform python_version = "python"+platform.python_version_tuple()[0]+"."+platform.python_version_tuple()[1] ####################################################### import socket, threading, re, os, time, random, base64 import webbrowser, subprocess, json, sys, requests import urllib.request, urllib.error, urllib.parse from urllib.parse import urlparse as urlparse from core.tools.crypter import Cipher from time import gmtime, strftime, strptime from Crypto.Cipher import AES from hashlib import sha1, sha256 from decimal import Decimal from random import shuffle from .options import UFONetOptions from .main import UFONet from core.tools.abductor import Abductor #######SET-YOUR-BLACKHOLE-CONF-HERE###############################D default_blackhole = '46.163.118.220' # default blackhole # crypto_key = "U-NATi0n!" # default enc/dec (+moderator board) key # ################################################################### browser_init_page = "https://searchencrypt.com" # initial webpage for ship.browser [OK! 16/06/2021] check_ip_service1 = 'https://checkip.org/' # set external check ip service 1 [OK! 23/07/2022] check_ip_service2 = 'https://whatismyip.org/' # set external check ip service 2 [OK! 06/06/2020] check_ip_service3 = 'https://ip.42.pl/ra' # set external check ip service 3 [OK! [23/07/2022] torrent_seed = "https://ufonet.03c8.net/ufonet/ufonet-v1.8.tar.gz.torrent" # current torrent seed blackhole_sep = "|" # blackhole stream separator board_msg_sep = "#!#" # board stream separator grid_msg_sep = "#?#" # grid stream seperator wargames_msg_sep = "#-#" # wargames stream seperator links_msg_sep = "#L#" # links stream separator streams_msg_sep = "#S#" # streams stream separator games_msg_sep = "#G#" # games stream separator globalnet_msg_sep = "#$#" # globalnet stream separator badkeys = [";", "/"] # some bad keys host = "0.0.0.0" port = 9999 class ClientThread(threading.Thread): def __init__(self, ip, port, socket): threading.Thread.__init__(self) self.ip = ip self.port = port self.socket = socket self.pages = Pages() def run(self): req = self.socket.recv(2048) res = self.pages.get(req) if res is None: self.socket.close() return out = "HTTP/1.0 %s\r\n" % res["code"] out += "Content-Type: %s\r\n\r\n" % res["ctype"] out += "%s" % res["html"] try: self.socket.send(out.encode('utf-8')) except: self.socket.send(out) self.socket.close() if "run" in res and len(res["run"]): subprocess.Popen(res["run"], shell=True) class Pages(): def file_len(self, fn): with open(fn) as f: for i, l in enumerate(f): pass return i + 1 def html_army_map(self,target=None): try: target_js="total_zombies = "+str( int(self.file_len(self.zombies_file))+int(self.file_len(self.aliens_file))+int(self.file_len(self.droids_file))+int(self.file_len(self.ucavs_file))+int(self.file_len(self.rpcs_file))+int(self.file_len(self.ntps_file))+int(self.file_len(self.dnss_file))+int(self.file_len(self.snmps_file)) )+"\ninitMap()\n\n" except: target_js="not any zombie available\n\n" if target is not None: target_js += "$('#ufomsg').load('/js/ajax.js?doll="+target+"')\n" return self.pages["/header"] + """
""" + self.pages["/footer"] def html_request_submit(self): return self.pages["/header"]+"""
settings updated"""+self.pages["/footer"] def html_requests(self): # read requests configuration file (json) try: with open(self.mothership_webcfg_file) as data_file: data = json.load(data_file) except: if os.path.exists(self.mothership_webcfg_file) == True: print('[Error] [AI] Cannot open: "core/json/webcfg.json" -> [Aborting!]\n') return else: # generate default requests configuration file print('[Info] [AI] Cannot found: "core/json/webcfg.json" -> [Generating!]') with open(self.mothership_webcfg_file, "w") as f: json.dump({"rproxy": "NONE", "ruseragent": "RANDOM", "rreferer": "RANDOM", "rhost": "NONE", "rxforw": "on", "rxclient": "on", "rtimeout": "10", "rretries": "1", "rdelay": "0", "threads": "5", "rssl": "off"}, f, indent=4) # set values of requests configuration from json file to html form with open(self.mothership_webcfg_file) as data_file: data = json.load(data_file) self.agents = [] # generating available user-agents f = open(self.agents_file) agents = f.readlines() f.close() for agent in agents: self.agents.append(agent) self.user_agent = random.choice(self.agents).strip() self.rproxy = data["rproxy"] if self.rproxy == "NONE": self.rproxy = "" self.ruseragent = data["ruseragent"] if self.ruseragent == "RANDOM": self.ruseragent = self.user_agent # random user-agent self.rreferer = data["rreferer"] if self.rreferer == "RANDOM": self.rreferer = self.referer # random referer self.rhost = data["rhost"] if self.rhost == "NONE": self.rhost = "" self.rxforw = data["rxforw"] if self.rxforw == "on": self.rxforw_check = 'checked' else: self.rxforw_check = '' self.rxclient = data["rxclient"] if self.rxclient == "on": self.rxclient_check = 'checked' else: self.rxclient_check = '' self.rtimeout = data["rtimeout"] self.rretries = data["rretries"] self.rdelay = data["rdelay"] self.threads = data["threads"] self.rssl = data["rssl"] if self.rssl == "on": self.rssl_check = 'checked' else: self.rssl_check = '' return self.pages["/header"] + """
 Configure requests:
Use proxy server:
Use another HTTP User-Agent header:
Use another HTTP Referer header:
Use another HTTP Host header:
Set your HTTP X-Forwarded-For with random IP values:
Set your HTTP X-Client-IP with random IP values:
Select your timeout:
Retries when the connection timeouts:
Delay in seconds between each HTTP request:
Number of threads:
Force usage of SSL/HTTPS requests:

""" + self.pages["/footer"] def html_board_profile_submit(self): return self.pages["/header"]+"""
Board profile updated. Re-enter to see changes..."""+self.pages["/footer"] def html_grid_profile_submit(self): return self.pages["/header"]+"""
Grid profile updated. Re-enter to see changes..."""+self.pages["/footer"] def profile_crew(self, icon): files = os.listdir("core/images/crew/") if icon == "NONE": icon = "link1" html_stream = "" html_stream += "" for f in files: id = str(f.replace(".txt", "")) value = str(f.replace(".txt", "")) if icon == value: checked = " CHECKED" else: checked = "" crew_img = open("core/images/crew/"+value+".txt").read() html_stream += "" html_stream += "
" return html_stream def html_board_profile(self): try: with open(self.mothership_boardcfg_file) as data_file: data = json.load(data_file) except: if os.path.exists(self.mothership_boardcfg_file) == True: print('[Error] [AI] Cannot open: "core/json/boardcfg.json" -> [Aborting!]\n') return else: print('[Info] [AI] Cannot found: "core/json/boardcfg.json" -> [Generating!]') with open(self.mothership_boardcfg_file, "w") as f: json.dump({"profile_token": "NONE", "profile_icon": "NONE", "profile_nick": "Anonymous"}, f, indent=4) f.close() with open(self.mothership_boardcfg_file) as data_file: data = json.load(data_file) self.profile_token = str(random.getrandbits(128)) # generating random token hash self.profile_icon = data["profile_icon"] self.profile_nick = data["profile_nick"] self.profile_nick.encode('utf-8') return self.pages["/header"] + """
 Configure profile:
OPERATOR/LINK: """+self.profile_crew(self.profile_icon)+"""
NICKNAME:

""" + self.pages["/footer"] def html_grid_profile(self): try: with open(self.mothership_gridcfg_file) as data_file: data = json.load(data_file) except: if os.path.exists(self.mothership_gridcfg_file) == True: print('[Error] [AI] Cannot open: "core/json/gridcfg.json" -> [Aborting!]\n') return else: print('[Info] [AI] Cannot found: "core/json/gridcfg.json" -> [Generating!]') with open(self.mothership_gridcfg_file, "w") as f: json.dump({"grid_token": "NONE", "grid_contact": "UNKNOWN!", "grid_nick": "Anonymous"}, f, indent=4) f.close() with open(self.mothership_gridcfg_file) as data_file: data = json.load(data_file) self.grid_token = str(random.getrandbits(128)) # generating random token hash self.grid_contact = data["grid_contact"] self.grid_contact.encode('utf-8') self.grid_nick = data["grid_nick"] self.grid_nick.encode('utf-8') return self.pages["/header"] + """
 Configure grid profile:
NICKNAME:
EMAIL/URL (CONTACT):

""" + self.pages["/footer"] def html_board_remove(self): try: with open(self.mothership_boardcfg_file, "w") as f: json.dump({"profile_token": "NONE", "profile_icon": "NONE", "profile_nick": "Anonymous"}, f, indent=4) except: return return self.pages["/header"]+"""
Board profile updated. Re-enter to see changes..."""+self.pages["/footer"] def html_grid_remove(self): try: with open(self.mothership_gridcfg_file, "w") as f: json.dump({"grid_token": "NONE", "grid_contact": "UNKNOWN!", "grid_nick": "Anonymous"}, f, indent=4) except: return return self.pages["/header"]+"""
Grid profile updated. Re-enter to see changes..."""+self.pages["/footer"] def html_stats(self): total_extra_attacks = int(self.aloic) + int(self.aloris) + int(self.aufosyn) + int(self.aspray) + int(self.asmurf) + int(self.axmas) + int(self.anuke) + int(self.atachyon) + int(self.amonlist) + int(self.afraggle) + int(self.asniper) + int(self.aufoack) + int(self.auforst) + int(self.adroper) + int(self.aoverlap) + int(self.apinger) + int(self.aufoudp) if self.ranking == "Rookie": # Rookie your_ranking = "Rookie [*]" elif self.ranking == "Mercenary": # Mercenary your_ranking = "Mercenary [**]" elif self.ranking == "Bandit": # Bandit your_ranking = "Bandit [***]" elif self.ranking == "UFOmmander!": # UFOmmander! your_ranking = "UFOmmander! [****]" elif self.ranking == "UFOl33t!": # UFOl33t! your_ranking = "UFOl33t! [▼]" else: your_ranking = "[-] ( no0b! )" # no0b hacking attempt! ;-) return self.pages["/header"] + """
STATS device: ON



Globalnet:
GLOBAL.RADAR (nodes):"""+str(len(self.list_globalnet))+"""
SHIP.WARPS (nodes):"""+str(len(self.list_blackholes))+"""

Missions:
Created (launched):""" + str(self.amissions) + """
Attacks (completed):""" + str(self.acompleted) + """
Targets (crashed):""" + str(self.tcrashed) + """
Crashing (T*100/A=C%):""" + str(round(self.mothership_acc, 2)) + """%

General:
Mothership ID:""" + str(self.mothership_id) + """
Model:""" + str(self.mothership_model) + """
Born:""" + str(time.ctime(os.path.getctime('ufonet'))) + """
Ranking:""" + str(your_ranking) + """
Flying (times):""" + str(self.aflying) + """
Botnet:
Total Cargo (now):"""+ self.total_botnet +"""
Scanner (new bots via dorking): """ + str(self.ascanner) + """
Transferred (new bots via blackholes): """ + str(self.atransferred) + """
Max. Chargo (always): """ + str(self.amax_chargo) + """

Weapons (use):
LOIC:""" + str(self.aloic) + """ MONLIST:""" + str(self.amonlist) + """ LORIS:""" + str(self.aloris) + """
UFOSYN:""" + str(self.aufosyn) + """ FRAGGLE:""" + str(self.afraggle) + """ SPRAY:""" + str(self.aspray) + """
SMURF:""" + str(self.asmurf) + """ SNIPER:""" + str(self.asniper) + """ XMAS:""" + str(self.axmas) + """
NUKE:""" + str(self.anuke) + """ UFOACK:""" + str(self.aufoack) + """ TACHYON:""" + str(self.atachyon) + """
UFORST:""" + str(self.auforst) + """ DROPER:""" + str(self.adroper) + """ OVERLAP:""" + str(self.aoverlap) + """
PINGER:""" + str(self.apinger) + """ UFOUDP:""" + str(self.aufoudp) + """ TOTAL:""" + str(total_extra_attacks) +"""


""" + self.pages["/footer"] def hmac_sha1(self, key, msg): if len(key) > 20: key = sha1(key).digest() key += chr(0).encode('utf-8') * (20 - len(key)) o_key_pad = key.translate(self.trans_5C) i_key_pad = key.translate(self.trans_36) return sha1(o_key_pad + sha1(i_key_pad + msg).digest()).digest() def derive_keys(self, key): key = key.encode('utf-8') h = sha256() h.update(key) h.update('cipher'.encode('utf-8')) cipher_key = h.digest() h = sha256() h.update(key) h.update('mac'.encode('utf-8')) mac_key = h.digest() return (cipher_key, mac_key) def decrypt(self, key, text): KEY_SIZE = 32 BLOCK_SIZE = 16 MAC_SIZE = 20 mode = AES.MODE_CFB try: iv_ciphertext_mac = base64.urlsafe_b64decode(text) except: try: padding = len(text) % 4 if padding == 1: return '' elif padding == 2: text += b'==' elif padding == 3: text += b'=' iv_ciphertext_mac = base64.urlsafe_b64decode(text) except TypeError: return None iv = iv_ciphertext_mac[:BLOCK_SIZE] ciphertext = iv_ciphertext_mac[BLOCK_SIZE:-MAC_SIZE] mac = iv_ciphertext_mac[-MAC_SIZE:] (cipher_key, mac_key) = self.derive_keys(key) expected_mac = self.hmac_sha1(mac_key, iv + ciphertext) if mac != expected_mac: return None aes = AES.new(cipher_key, mode, iv) self.decryptedtext = aes.decrypt(ciphertext) try: self.decryptedtext = self.decryptedtext.decode('utf-8') except: pass def encrypt(self, key, text): try: key = base64.b64encode(str(key)) except: key = base64.b64encode(key.encode('utf-8')) c = Cipher(key, text) msg = c.encrypt() try: msg = msg.decode('utf-8') except: pass c.set_text(msg) self.encryptedtext = str(msg) def html_news(self): return self.pages["/header"] + """
Blackhole/IP:

Your key:
Try decryption!


Last update: """+ self.news_datetime + """

"""+self.news_text+"""


""" + self.pages["/footer"] def html_tv(self): return self.pages["/header"] + """
Blackhole/IP:

Your key:
Try decryption!



Last update: """+ self.tv_datetime + """

"""+self.tv_text+"""


""" + self.pages["/footer"] def html_missions(self): return self.pages["/header"] + """
Blackhole/IP:

Your key:
Try decryption!


Last update: """+ self.missions_datetime + """

"""+self.missions_text+"""


""" + self.pages["/footer"] def html_board(self): self.board_welcome = "" # board hardcoded warning (hehe) self.board_topic = "" self.board_send_msg = "" if '"profile_token": "NONE"' in open(self.mothership_boardcfg_file).read(): device_state = "OFF" device = "BOARD device: OFF
" else: device_state = "ON" self.moderator_text = ''.join(random.sample(self.moderator_text,len(self.moderator_text))) boardcfg_json_file = open(self.mothership_boardcfg_file, "r") # extract mothership boardcfg data = json.load(boardcfg_json_file) boardcfg_json_file.close() profile_token = data["profile_token"] profile_icon = data["profile_icon"] profile_nick = data["profile_nick"] self.profile_nick.encode('utf-8') operator_img = open("core/images/crew/"+profile_icon+".txt").read() device = "OPERATOR/LINK: ON
-NICKNAME: "+str(self.profile_nick)+"
-ID: "+str(profile_token)+"
" if device_state == "OFF": board_filter = "" else: board_filter = "
/ALL
/GENERAL/#OPSEC
/FAQ/BUGS/MEDIA
" if device_state == "OFF": sync_panel = "" else: sync_panel = "
Blackhole/IP:


" if device_state == "OFF": board_panel = "" else: with open(self.board_file) as f: for line in f: line = line.strip() self.board_warning += "\n" + " " + line + " " + "\n" f.close() self.moderator_text = re.sub("(.{100})", "\\1\n", self.moderator_text, 0, re.DOTALL) # regex magics! (set visual stream to 100 chars after \n) l = time.ctime(os.path.getmtime(self.board_file)) # get last modified time board_panel = "
READ
WRITE
KEY:
"+board_filter+"
Try decryption!
"+self.board_welcome+"



CRYPTO-BOARD: (Last Update: "+str(l)+")

"+self.moderator_text+"


" if device_state == "OFF": remove_profile = "" else: remove_profile = '| | ' return self.pages["/header"] + """
"""+device+"""
"""+remove_profile+"""


"""+board_panel+""" """ + self.pages["/footer"] def generate_grid(self): with open(self.grid_file) as f: for line in f: line = line.strip() f.close() mothership_members = 0 # mothership_members stats bonus unknown_members = 0 # unknown (or non decrypted) mothership members grid_table = "
MEMBERS STATS:

" for m in self.list_grid: # msg = nickname, ranking, chargo, dorking, transf, maxchargo, missions, attacks, loic, loris, ufosyn, spray, smurf, xmas, nuke, tachyon, monlist, fraggle, sniper, ufoack, uforst, droper, overlap, pinger, ufoudp, contact, ID if grid_msg_sep in m: version = m.count(grid_msg_sep) # check UFONet stream version (made for compatibility with old motherships) m = m.split(grid_msg_sep) mothership_members = mothership_members + 1 grid_nickname = m[0][0:12] grid_nickname = ''.join(random.sample(grid_nickname,len(grid_nickname))) # nickname (obfuscation+str12) grid_ranking = m[1][0:4] # ranking (is parsed later using a symbol) grid_ranking = ''.join(random.sample(grid_ranking,len(grid_ranking))) # ranking (obfuscation) grid_totalchargo = m[2][0:4] # total chargo grid_totalchargo = ''.join(random.sample(grid_totalchargo,len(grid_totalchargo))) # totalchargo (obfuscation) grid_dorking = m[3][0:4] # dorking grid_dorking = ''.join(random.sample(grid_dorking,len(grid_dorking))) # dorking (obfuscation) grid_transferred = m[4][0:4] # transferred grid_transferred = ''.join(random.sample(grid_transferred,len(grid_transferred))) # transferred (obfuscation) grid_maxchargo = m[5][0:4] # maxchargo grid_maxchargo = ''.join(random.sample(grid_maxchargo,len(grid_maxchargo))) # maxchargo (obfuscation) grid_missions = m[6][0:4] # missions grid_missions = ''.join(random.sample(grid_missions,len(grid_missions))) # missions (obfuscation) grid_attacks = m[7][0:4] # attacks grid_attacks = ''.join(random.sample(grid_attacks,len(grid_attacks))) # attacks (obfuscation) grid_loic = m[8][0:4] # loic grid_loic = ''.join(random.sample(grid_loic,len(grid_loic))) # loic (obfuscation) if version > 18: # v1.5 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = m[10][0:4] # ufosyn grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = m[11][0:4] # spray grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = m[12][0:4] # smurf grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = m[13][0:4] # xmas grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = m[14][0:4] # nuke grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = m[15][0:4] # tachyon grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = m[16][0:4] # monlist grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = m[17][0:4] # fraggle grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = m[18][0:4] # sniper grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = m[19][0:4] # ufoack grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = m[20][0:4] # uforst grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = m[21][0:4] # droper grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = m[22][0:4] # overlap grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = m[23][0:4] # pinger grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = m[24][0:4] # ufoudp grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) try: grid_contact = "View" # js contact view (obfuscation) except: grid_contact= "invalid" try: grid_id = m[26] # id (plain id) except: grid_id = "invalid!" if version == 18: # v1.4 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = m[10][0:4] # ufosyn grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = m[11][0:4] # spray grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = m[12][0:4] # smurf grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = m[13][0:4] # xmas grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = m[14][0:4] # nuke grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = m[15][0:4] # tachyon grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = m[16][0:4] # monlist grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) try: grid_contact = "View" # js contact view (obfuscation) except: grid_contact= "invalid" try: grid_id = m[18] # id (plain id) except: grid_id = "invalid!" if version == 17: # v1.3 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = m[10][0:4] # ufosyn grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = m[11][0:4] # spray grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = m[12][0:4] # smurf grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = m[13][0:4] # xmas grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = m[14][0:4] # nuke grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = m[15][0:4] # tachyon grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not monlist present grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) try: grid_contact = "View" # js contact view (obfuscation) except: grid_contact= "invalid" try: grid_id = m[17] # id (plain id) except: grid_id = "invalid!" elif version == 16: # v1.2.1 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = m[10][0:4] # ufosyn grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = m[11][0:4] # spray grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = m[12][0:4] # smurf grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = m[13][0:4] # xmas grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = m[14][0:4] # nuke grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not tachyon present grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not monlist present grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) try: grid_contact = "View" # js contact view (obfuscation) except: grid_contact= "invalid" try: grid_id = m[16] # id (plain id) except: grid_id = "invalid!" elif version == 15: # v1.2 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = m[10][0:4] # ufosyn grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = m[11][0:4] # spray grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = m[12][0:4] # smurf grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = m[13][0:4] # xmas grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not nuke present grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not tachyon present grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not monlist present grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) try: grid_contact = "View" # js contact view (obfuscation) except: grid_contact= "invalid" try: grid_id = m[15] # id (plain id) except: grid_id = "invalid!" elif version == 12: # v1.1 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = m[10][0:4] # ufosyn grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not spray present grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not smurf present grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not xmas present grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not nuke present grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not tachyon present grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not monlist present grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) grid_contact = "View" # js contact view (obfuscation) try: grid_id = m[12] # id (plain id) except: grid_id = "invalid!" elif version == 11: # v1.0 grid_loris = m[9][0:4] # loris grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufosyn present grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not spray present grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not smurf present grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not xmas present grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not nuke present grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not tachyon present grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not monlist present grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) grid_contact = "View" # js contact view (obfuscation) try: grid_id = m[11] # id (plain id) except: grid_id = "invalid!" elif version == 10: # v0.9 grid_loris = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not loris present grid_loris = ''.join(random.sample(grid_loris,len(grid_loris))) # loris (obfuscation) grid_ufosyn = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufosyn present grid_ufosyn = ''.join(random.sample(grid_ufosyn,len(grid_ufosyn))) # ufosyn (obfuscation) grid_spray = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not spray present grid_spray = ''.join(random.sample(grid_spray,len(grid_spray))) # spray (obfuscation) grid_smurf = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not smurf present grid_smurf = ''.join(random.sample(grid_smurf,len(grid_smurf))) # smurf (obfuscation) grid_xmas = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not xmas present grid_xmas = ''.join(random.sample(grid_xmas,len(grid_xmas))) # xmas (obfuscation) grid_nuke = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not nuke present grid_nuke = ''.join(random.sample(grid_nuke,len(grid_nuke))) # nuke (obfuscation) grid_tachyon = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not tachyon present grid_tachyon = ''.join(random.sample(grid_tachyon,len(grid_tachyon))) # tachyon (obfuscation) grid_monlist = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not monlist present grid_monlist = ''.join(random.sample(grid_monlist,len(grid_monlist))) # monlist (obfuscation) grid_fraggle = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not fraggle present grid_fraggle = ''.join(random.sample(grid_fraggle,len(grid_fraggle))) # fraggle (obfuscation) grid_sniper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not sniper present grid_sniper = ''.join(random.sample(grid_sniper,len(grid_sniper))) # sniper (obfuscation) grid_ufoack = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoack present grid_ufoack = ''.join(random.sample(grid_ufoack,len(grid_ufoack))) # ufoack (obfuscation) grid_uforst = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not uforst present grid_uforst = ''.join(random.sample(grid_uforst,len(grid_uforst))) # uforst (obfuscation) grid_droper = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not droper present grid_droper = ''.join(random.sample(grid_droper,len(grid_droper))) # droper (obfuscation) grid_overlap = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not overlap present grid_overlap = ''.join(random.sample(grid_overlap,len(grid_overlap))) # overlap (obfuscation) grid_pinger = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not pinger present grid_pinger = ''.join(random.sample(grid_pinger,len(grid_pinger))) # pinger (obfuscation) grid_ufoudp = str("2OwgWPTsDw8k6f6sgnGLOw8vAb1PSrs+NkeLNPxEyJO3ahKV0Q==")[0:4] # not ufoudp present grid_ufoudp = ''.join(random.sample(grid_ufoudp,len(grid_ufoudp))) # ufoudp (obfuscation) grid_contact = "View" # js contact view (obfuscation) try: grid_id = m[10] # id (plain id) except: grid_id = "invalid!" else: # no valid version pass grid_table += "" else: # not valid stream data pass grid_table += "
NICKNAME:RANK:CHARGO:DORKING:TRANSF:MAX.CHARGO:MISSIONS:ATTACKS:LOIC:LORIS:UFOSYN:SPRAY:SMURF:XMAS:NUKE:TACHYON:MONLIST:FRAGGLE:SNIPER:UFOACK:UFORST:DROPER:OVERLAP:PINGER:UFOUDP:CONTACT:
"+str(grid_nickname)+""+str(grid_ranking)+""+str(grid_totalchargo)+""+str(grid_dorking)+""+str(grid_transferred)+""+str(grid_maxchargo)+""+str(grid_missions)+""+str(grid_attacks)+""+str(grid_loic)+""+str(grid_loris)+""+str(grid_ufosyn)+""+str(grid_spray)+""+str(grid_smurf)+""+str(grid_xmas)+""+str(grid_nuke)+""+str(grid_tachyon)+""+str(grid_monlist)+""+str(grid_fraggle)+""+str(grid_sniper)+""+str(grid_ufoack)+""+str(grid_uforst)+""+str(grid_droper)+""+str(grid_overlap)+""+str(grid_pinger)+""+str(grid_ufoudp)+""+str(grid_contact)+"
" if mothership_members == 0: mothership_members = "¿?" if unknown_members == 0: unknown_members = "¿?" l = time.ctime(os.path.getmtime(self.grid_file)) # get last modified time mother_grid = "

MOTHERSHIP STATS: (Last Update: "+str(l)+")

MEMBERS:"+str(mothership_members)+"-"+str(unknown_members)+"*¿?**¿?***¿?****¿?¿?

MISSIONS:¿?ATTACKS:¿?CHARGO (ACTIVE!):¿?DORKING:¿?TRANSF:¿?MAX.CHARGO:¿?

LOIC:¿?LORIS:¿?UFOSYN:¿?SPRAY:¿?SMURF:¿?
XMAS:¿?NUKE:¿?TACHYON:¿?MONLIST:¿?
FRAGGLE:¿?SNIPER:¿?UFOACK:¿?UFORST:¿?
DROPER:¿?OVERLAP:¿?PINGER:¿?UFOUDP:¿?



" grid_table = mother_grid + grid_table + "
" return grid_table def html_grid(self): if self.ranking == "Rookie": # Rookie your_ranking = "Rookie [*]" elif self.ranking == "Mercenary": # Mercenary your_ranking = "Mercenary [**]" elif self.ranking == "Bandit": # Bandit your_ranking = "Bandit [***]" elif self.ranking == "UFOmmander!": # UFOmmander! your_ranking = "UFOmmander! [****]" elif self.ranking == "UFOl33t!": # UFOl33t! your_ranking = "UFOl33t! [▼]" else: your_ranking = "[-] ( no0b! )" # no0b hacking attempt! ;-) if '"grid_token": "NONE"' in open(self.mothership_gridcfg_file).read(): device_state = "OFF" device = "GRID device: OFF
" else: device_state = "ON" gridcfg_json_file = open(self.mothership_gridcfg_file, "r") # extract mothership gridcfg data = json.load(gridcfg_json_file) gridcfg_json_file.close() grid_token = data["grid_token"] grid_contact = data["grid_contact"] grid_contact.encode('utf-8') grid_nick = data["grid_nick"] grid_nick.encode('utf-8') device = "
-CONTACT: "+str(grid_contact)+"
-NICKNAME: "+str(grid_nick)+"
-RANKING: "+str(your_ranking)+"
-ID: "+str(grid_token)+"
" if device_state == "OFF": grid_panel = "" else: grid_table = self.generate_grid() grid_panel = grid_table + "

" if device_state == "OFF": dec_panel = "" else: dec_panel = "
Your key:
Try decryption!
" if device_state == "OFF": sync_panel = "" else: sync_panel = "
Blackhole/IP:

" if device_state == "OFF": transfer_panel = "" else: transfer_panel = "
Blackhole/IP:
Key (encryption):

" if device_state == "OFF": remove_grid = "" else: remove_grid = '| | | | | ' return self.pages["/header"] + """
"""+device+"""
"""+remove_grid+"""

"""+grid_panel+""" """ + self.pages["/footer"] def generate_wargames(self): with open(self.wargames_file) as f: for line in f: line = line.strip() f.close() wargames_table = "" for m in self.list_wargames: # list = creation, target, estimated if wargames_msg_sep in m: m = m.split(wargames_msg_sep) wargame_creation = m[0][0:12] # creation date wargame_creation = ''.join(random.sample(wargame_creation,len(wargame_creation))) # creation date (obfuscation) wargame_target = m[1][0:12] # target (obfuscation) wargame_target = ''.join(random.sample(wargame_target,len(wargame_target))) # target (obfuscation) wargame_estimated = m[2][0:12] # estimated date wargame_estimated = ''.join(random.sample(wargame_estimated,len(wargame_estimated))) # estimated date (obfuscation) wargame_state = str("HSvtfBFwQBSms8h/7Ra/tKGNYp7KqiiNeOMPzDmrChJqyBJ+yuRiHpY9H+/LDQ==")[0:12] # state ("ENCRYPTED!") wargame_state = ''.join(random.sample(wargame_state,len(wargame_state))) # state (obfuscation) wargame_status = wargame_state # status (obfuscated like state) wargames_table += "" wargames_table += "
CREATION:TARGET:DATE:ETA:STATUS:
"+str(wargame_creation)+""+str(wargame_target)+""+str(wargame_estimated)+""+str(wargame_state)+""+str(wargame_status)+"
" mother_wargame = "
" wargames_table = mother_wargame + wargames_table + "
" return wargames_table def html_wargames(self): l = time.ctime(os.path.getmtime(self.wargames_file)) # get last modified time now = strftime("%d-%m-%Y %H:%M:%S", gmtime()) wargames_table = self.generate_wargames() return self.pages["/header"] + """
This feature will allow you to propose/join some real 'wargames'.


Blackhole/IP:
Try decryption!


Your proposal:
Date time (UTC): (ex: """+str(now)+""")
Blackhole/IP:


WARGAMES: (Last Update: """+str(l)+""")

"""+wargames_table+"""


"""+ self.pages["/footer"] def generate_links(self): with open(self.links_file) as f: for line in f: line = line.strip() f.close() links_table = "" for m in self.list_links: # list = creation, topic, url if links_msg_sep in m: m = m.split(links_msg_sep) link_creation = m[0][0:12] # creation date link_creation = ''.join(random.sample(link_creation,len(link_creation))) # creation date (obfuscation) link_topic = m[1][0:12] # topic link_topic = ''.join(random.sample(link_topic,len(link_topic))) # topic (obfuscation) link_url = m[2][0:12] # url link_url = ''.join(random.sample(link_url,len(link_url))) # link url (obfuscation) links_table += "" links_table += "
CREATION:TOPIC:URL:
"+str(link_creation)+""+str(link_topic)+""+str(link_url)+"
" mother_link = "" return links_table def generate_streams(self): with open(self.streams_file) as f: for line in f: line = line.strip() f.close() streams_table = "" for m in self.list_streams: # list = creation, topic, stream if streams_msg_sep in m: m = m.split(streams_msg_sep) stream_creation = m[0][0:12] # creation date strean_creation = ''.join(random.sample(stream_creation,len(stream_creation))) # creation date (obfuscation) stream_topic = m[1][0:12] # topic stream_topic = ''.join(random.sample(stream_topic,len(stream_topic))) # topic (obfuscation) stream_url = m[2][0:12] # url stream_url = ''.join(random.sample(stream_url,len(stream_url))) # stream url (obfuscation) streams_table += "" streams_table += "
CREATION:TOPIC:STREAM:
"+str(stream_creation)+""+str(stream_topic)+""+str(stream_url)+"
" mother_stream = "
" streams_table = mother_stream + streams_table + "
" return streams_table def generate_games(self): games_table = "" with open(self.games_file) as f: for line in f: line = line.strip() if games_msg_sep in line: line = line.split(games_msg_sep) game_name = line[0] # name game_description = line[1] # description games_table += "" games_table += "
NAME:DESCRIPTION:ACTION:
"+str(game_name)+""+str(game_description)+"
" f.close() mother_games = "
" games_table = mother_games + games_table + "
" return games_table def generate_browser(self): browser_table = "