diff --git a/core/main.py b/core/main.py index 3545b83..990ea1f 100755 --- a/core/main.py +++ b/core/main.py @@ -3061,6 +3061,7 @@ def downloading_nodes_list(self): timeout = 5 if self.options.proxy: # set proxy self.proxy_transport(self.options.proxy) + globalnet_ip_list = [] # used to check for repetitions for m in nodes: m = m.replace('\n','') if self.globalnet_msg_sep in m: @@ -3072,6 +3073,10 @@ def downloading_nodes_list(self): self.decrypt(self.crypto_key, enc_globalnet_ip) if self.decryptedtext: globalnet_ip = self.decryptedtext + if globalnet_ip not in globalnet_ip_list: + globalnet_ip_list.append(globalnet_ip) + else: + return self.decryptedtext = "" # clean decryptedtext buffer print("[AI] Trying [Radar] [Blackhole] [Node]:", globalnet_ip, "\n") if self.options.forcessl: diff --git a/core/webgui.py b/core/webgui.py index 0701ed9..cf18e16 100755 --- a/core/webgui.py +++ b/core/webgui.py @@ -2252,6 +2252,26 @@ def html_blackholes(self): } } + +
@@ -3861,7 +3881,7 @@ def __init__(self): if(newcmd=="cmd_list_army"||newcmd=="cmd_list_nodes"||newcmd=="cmd_view_army"||newcmd=="cmd_list_zombies"||newcmd=="cmd_list_aliens"|| newcmd=="cmd_list_droids"||newcmd=="cmd_list_ucavs"||newcmd=="cmd_list_rpcs"||newcmd=="cmd_view_changelog"){ //do not refresh listing army return; } else { - if(newcmd=="cmd_test_army" || newcmd=="cmd_download_nodes" || newcmd=="cmd_test_all" || newcmd=="cmd_test_offline" || newcmd=="cmd_test_rpcs" || newcmd=="cmd_attack" || newcmd=="cmd_refresh_blackholes" || newcmd=="cmd_refresh_news" || newcmd=="cmd_refresh_tv" || newcmd=="cmd_refresh_missions" || newcmd=="cmd_sync_grid" || newcmd=="cmd_sync_board" || newcmd=="cmd_sync_wargames" || newcmd=="cmd_sync_links" || newcmd=="cmd_sync_globalnet" || newcmd=="cmd_sync_streams" || newcmd=="cmd_send_message_board" || newcmd=="cmd_transfer_grid" || newcmd=="cmd_transfer_wargame" || newcmd=="cmd_transfer_link" || newcmd=="cmd_transfer_globalnet" || newcmd=="cmd_transfer_stream" || newcmd=="cmd_decrypt" || newcmd=="cmd_decrypt_moderator_board" || newcmd=="cmd_decrypt_grid" || newcmd=="cmd_decrypt_wargames" || newcmd=="cmd_decrypt_links" || newcmd=="cmd_decrypt_globalnet" || newcmd=="cmd_decrypt_streams" || newcmd=="cmd_decrypt_tv" || newcmd=="cmd_inspect" || newcmd=="cmd_abduction" || newcmd=="cmd_download_community" || newcmd=="cmd_upload_community" || newcmd=="cmd_download_botnet_ip" || newcmd=="cmd_attack_me" || newcmd=="cmd_check_tool" || newcmd=="cmd_check_tor" || newcmd=="cmd_edit_supply" || newcmd=="cmd_job_remove" || newcmd=="cmd_job_remove_all" || newcmd=="cmd_job_add" || newcmd =="cmd_job_add_all" || newcmd=="cmd_job_cancel" || newcmd=="cmd_job_cancel_all" || newcmd=="cmd_job_filter" || newcmd=="cmd_link_filter" || newcmd=="cmd_globalnet_filter" || newcmd=="cmd_stream_filter" || newcmd=="cmd_grid_filter" || newcmd=="cmd_search") newcmd=newcmd+"_update" + if(newcmd=="cmd_test_army" || newcmd=="cmd_download_nodes" || newcmd=="cmd_test_all" || newcmd=="cmd_test_offline" || newcmd=="cmd_test_rpcs" || newcmd=="cmd_attack" || newcmd=="cmd_refresh_blackholes" || newcmd=="cmd_refresh_news" || newcmd=="cmd_refresh_tv" || newcmd=="cmd_refresh_missions" || newcmd=="cmd_sync_grid" || newcmd=="cmd_sync_board" || newcmd=="cmd_sync_wargames" || newcmd=="cmd_sync_links" || newcmd=="cmd_sync_globalnet" || newcmd=="cmd_sync_streams" || newcmd=="cmd_send_message_board" || newcmd=="cmd_transfer_grid" || newcmd=="cmd_transfer_wargame" || newcmd=="cmd_transfer_link" || newcmd=="cmd_transfer_globalnet" || newcmd=="cmd_transfer_stream" || newcmd=="cmd_decrypt" || newcmd=="cmd_decrypt_moderator_board" || newcmd=="cmd_decrypt_grid" || newcmd=="cmd_decrypt_wargames" || newcmd=="cmd_decrypt_links" || newcmd=="cmd_decrypt_globalnet" || newcmd=="cmd_decrypt_streams" || newcmd=="cmd_decrypt_tv" || newcmd=="cmd_inspect" || newcmd=="cmd_abduction" || newcmd=="cmd_download_community" || newcmd=="cmd_upload_community" || newcmd=="cmd_download_botnet_ip" || newcmd=="cmd_upload_botnet_ip" || newcmd=="cmd_attack_me" || newcmd=="cmd_check_tool" || newcmd=="cmd_check_tor" || newcmd=="cmd_edit_supply" || newcmd=="cmd_job_remove" || newcmd=="cmd_job_remove_all" || newcmd=="cmd_job_add" || newcmd =="cmd_job_add_all" || newcmd=="cmd_job_cancel" || newcmd=="cmd_job_cancel_all" || newcmd=="cmd_job_filter" || newcmd=="cmd_link_filter" || newcmd=="cmd_globalnet_filter" || newcmd=="cmd_stream_filter" || newcmd=="cmd_grid_filter" || newcmd=="cmd_search") newcmd=newcmd+"_update" //do not refresh if certain text on response is found if(newcmd.match(/update/) && ( @@ -4087,14 +4107,18 @@ def get(self, request): for blackholes_text in self.list_blackholes: self.decrypt(crypto_key, blackholes_text) if self.decryptedtext: - self.dec_list_blackholes.append(self.decryptedtext) + if self.decryptedtext not in self.dec_list_blackholes: + self.dec_list_blackholes.append(self.decryptedtext) + else: + return self.decryptedtext = "" # clean decryptedtext buffer num_blackholes = 0 # blackholes nodes counter for b in self.dec_list_blackholes: - num_blackholes = num_blackholes + 1 s = b.rsplit(blackhole_sep, 1)[0] ip_b = str(s.rsplit(blackhole_sep, 1)[0].rsplit(":", 1)[1]) - self.decrypted_blackholes.append(ip_b) + if ip_b not in self.decrypted_blackholes: + self.decrypted_blackholes.append(ip_b) + num_blackholes = num_blackholes + 1 self.decrypted_globalnet = [] with open(self.globalnet_file) as f: ls = f.read().splitlines() @@ -4106,9 +4130,10 @@ def get(self, request): globalnet_ip = m[3] # ip self.decrypt(crypto_key, globalnet_ip) if self.decryptedtext: - num_globalnet = num_globalnet + 1 ip_g = self.decryptedtext - self.decrypted_globalnet.append(ip_g) + if ip_g not in self.decrypted_globalnet: + self.decrypted_globalnet.append(ip_g) + num_globalnet = num_globalnet + 1 self.decryptedtext = "" # clean decryptedtext buffer if num_blackholes == 0: ip_b = "-" @@ -4189,6 +4214,16 @@ def get(self, request): open('/tmp/out', 'w').close() with open('/tmp/out', 'r') as f: self.pages["/cmd_upload_community_update"] = "
"+f.read()+"
"
+        if page == "/cmd_upload_botnet_ip":
+            blackhole = pGet["blackhole"]
+            blackhole=urllib.parse.unquote(blackhole)
+            self.pages["/cmd_upload_botnet_ip"] = "
Waiting for uploading results...
" + runcmd = "("+python_version+" -i ufonet --up-to '"+blackhole+"' "+ cmd_options + "|tee /tmp/out) &" + if page == "/cmd_upload_botnet_ip_update": + if not os.path.exists('/tmp/out'): + open('/tmp/out', 'w').close() + with open('/tmp/out', 'r') as f: + self.pages["/cmd_upload_botnet_ip_update"] = "
"+f.read()+"
"
         if page == "/cmd_test_army_update":
             if not os.path.exists('/tmp/out'):
                 open('/tmp/out', 'w').close() 
@@ -6539,18 +6574,21 @@ def get(self, request):
                         self.decryptedtext = "" # clean decryptedtext buffer
                     f = open("/tmp/out", "w")
                     num_blackholes = 0 # blackholes counter
+                    single_ip_num = 0
                     for b in self.decrypted_blackholes:
                         num_blackholes = num_blackholes + 1
                         if blackhole_sep in b: # IP | Mode | Comment | Actions
                             s = b.rsplit(blackhole_sep, 1)[0]
                             ip = str(s.rsplit(blackhole_sep, 1)[0])
-                            mode =  str(s.rsplit(blackhole_sep, 1)[1])
+                            single_ip = ip.replace("IP:","")
+                            single_ip_num = single_ip_num + 1
+                            mode = str(s.rsplit(blackhole_sep, 1)[1])
                             if mode == "D": # Download only mode
-                                mode = "Download"
+                                mode = ""
                             elif mode == "U": # Upload only mode
-                                mode = "Upload"
-                            else: # Upload/Download mode
-                                mode = "Download" + " - " + "Upload"
+                                mode = ""
+                            else: # Download/Upload mode
+                                mode = "" + " - " + ""
                             comment = str(b.rsplit(blackhole_sep, 1)[1])
                             b = ip + " " + blackhole_sep + " Botnet: " + mode + " " + blackhole_sep + " Comment: " + comment
                             f.write("["+str(num_blackholes)+"] " + str(b)+"\n")