#!/usr/bin/env python # -*- coding: utf-8 -*-" """ UFONet - DDoS Botnet via Web Abuse - 2013/2014/2015/2016 - by psy (epsylon@riseup.net) 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 """ import socket, threading, re, base64, os, time, base64, traceback import webbrowser, subprocess, urllib2, json, sys, shlex from urlparse import urlparse from main import UFONet try: import pygeoip except: print "\n[Error] [AI] Cannot import lib: pygeoip. \n\n To install it try:\n\n $ 'sudo apt-get install python-geoip' or 'pip install geoip'\n" sys.exit(2) class AjaxMap(object): def __init__(self): self.geo_db_mirror1 = 'http://176.28.23.46/bordercheck/maps.tar.gz' # Turina Server self.geo_db_mirror2 = 'http://83.163.232.95/bordercheck/maps.tar.gz' # Mirror self._geoip=None self._geoasn=None self._geoipstatus='nomap' self._err='' ufonet = UFONet() ufonet.create_options() try: self.zombies = ufonet.extract_zombies() aliens_army = ufonet.extract_aliens() droids_army = ufonet.extract_droids() ucavs_army = ufonet.extract_ucavs() rpcs_army = ufonet.extract_rpcs() self.zombies.extend(aliens_army) self.zombies.extend(droids_army) self.zombies.extend(ucavs_army) self.zombies.extend(rpcs_army) except: return def get_err(self): return self._err # check for geoip data status # basic lock file mechanism to avoid multiple downloads def get_status(self): if os.path.exists('maps.downloading'): if not os.path.exists('maps.downloadmsg'): f=open("maps.downloadmsg","wb") f.write("") f.close() print "[Info] [AI] [Control] GeoIP data download started! -> [OK!]\n" self._geoipstatus='downloading' elif os.path.isdir('maps'): if self._geoip == None : self._geoip = pygeoip.GeoIP('maps/GeoLiteCity.dat') if self._geoasn == None : self._geoasn = pygeoip.GeoIP('maps/GeoIPASNum.dat') if os.path.exists("maps.downloadmsg") : os.remove("maps.downloadmsg") self._geoipstatus='ok' return self._geoipstatus def retrieve(self,url,name): try: handle = urllib2.urlopen(url) CHUNK = 16384 with open(name,'wb') as fp: while True: chunk = handle.read(CHUNK) if not chunk: break fp.write(chunk) except: traceback.print_exc() def download_maps(self): # generate geolocation values on a map if self.get_status() != 'nomap': return self._geoipstatus == 'ok' if os.path.exists("maps.downloadmsg"): os.remove("maps.downloadmsg") f=open("maps.downloading",'w') f.write("download started' if os.path.exists('/tmp/ufonet.html'): for x in open(r'/tmp/ufonet.html').readlines(): stat = stat + x else: stat="[Info] [AI] [Control] Generating statistics... -> [Waiting!]" return stat+"" if self.get_status() != "ok": dljs="" if self.get_status() == "nomap": dljs+="$('#ufomsg').load('/js/ajax.js?fetchgeoip=')\n" if 'doll' in pGet.keys(): dljs+="$('#ufomsg').load('/js/ajax.js?fetchdoll="+pGet['doll']+"')\n" dljs+="doll=new Doll('"+pGet["doll"]+"')\n" return "[Info] [AI] GeoIP data download in progress...
See console for errors+" if 'zombie' in pGet.keys(): zn=base64.b64decode(pGet['zombie']) nzn=self.get_next_zombie(zn) if nzn is not None: zombie=self.get_js(nzn) return """ """ else: return "\n" if 'fetchdoll' in pGet.keys(): tn=pGet['fetchdoll'] target = self.geo_ip(tn) if target is None: return "doll waiting for geoip data !" return """ doll up !""" if 'doll' in pGet.keys(): tn=pGet['doll'] return """""" return "\n"