Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epsylon
GitHub Repository: epsylon/ufonet
Path: blob/master/core/options.py
1205 views
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-"
3
"""
4
This file is part of the UFONet project, https://ufonet.03c8.net
5
6
Copyright (c) 2013/2022 | psy <[email protected]>
7
8
You should have received a copy of the GNU General Public License along
9
with UFONet; if not, write to the Free Software Foundation, Inc., 51
10
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
11
"""
12
import optparse, math
13
14
class UFONetOptions(optparse.OptionParser):
15
def __init__(self, *args):
16
self.zombies_file = "botnet/zombies.txt" # set source path to retrieve 'zombies'
17
self.aliens_file = "botnet/aliens.txt" # set source path to retrieve 'aliens'
18
self.droids_file = "botnet/droids.txt" # set source path to retrieve 'droids'
19
self.ucavs_file = "botnet/ucavs.txt" # set source path to retrieve 'ucavs'
20
self.rpcs_file = "botnet/rpcs.txt" # set source path to retrieve 'rpcs'
21
self.dnss_file = "botnet/dns.txt" # set source path to retrieve 'dnss'
22
self.ntps_file = "botnet/ntp.txt" # set source path to retrieve 'ntps'
23
self.snmps_file = "botnet/snmp.txt" # set source path to retrieve 'snmp'
24
self.dorks_file = "botnet/dorks.txt" # set source path to retrieve 'dorks'
25
self.nodes_file = "data/nodes.txt" # set source path to retrieve 'nodes'
26
self.globalnet_file = "data/globalnet.txt" # set source path to retrieve 'globalnet'
27
self.sengines = self.extract_sengines()
28
self.zombies = int(self.extract_zombies())
29
self.aliens = int(self.extract_aliens())
30
self.droids = int(self.extract_droids())
31
self.ucavs = int(self.extract_ucavs())
32
self.rpcs = int(self.extract_rpcs())
33
self.dnss = int(self.extract_dnss())
34
self.ntps = int(self.extract_ntps())
35
self.snmps = int(self.extract_snmps())
36
self.dorks = int(self.extract_dorks())
37
self.nodes = int(self.extract_nodes())
38
self.globalnet = int(self.extract_globalnet())
39
self.tools = self.extract_tools()
40
self.etools = self.extra_tools()
41
self.weapons = self.extract_weapons()
42
self.ebotnet = self.electronic_botnet()
43
self.eweapons = self.extra_weapons()
44
self.total_botnet = str(self.zombies+self.aliens+self.droids+self.ucavs+self.rpcs+self.dnss+self.ntps+self.snmps)
45
self.d_energy = self.extract_d_energy()
46
self.y_energy = self.extract_y_energy()
47
self.x_energy = self.extract_x_energy()
48
self.formula = self.formula_x_energy()
49
optparse.OptionParser.__init__(self,
50
description='\n{(D)enial(OFF)ensive(S)ervice[ToolKit]}-{by_(io=psy+/03c8.net)}',
51
prog='./ufonet',
52
version='\nVersion: 1.9 '+"\u25BC "+'[F4T] F4ll0uT! '+"\u25BC"+'\n')
53
self.add_option("-v", "--verbose", action="store_true", dest="verbose", help="active verbose on requests")
54
self.add_option("--examples", action="store_true", dest="examples", help="print some examples")
55
self.add_option("--timeline", action="store_true", dest="timeline", help="show program's code timeline")
56
self.add_option("--update", action="store_true", dest="update", help="check for latest stable version")
57
self.add_option("--check-tor", action="store_true", dest="checktor", help="check to see if Tor is used properly")
58
self.add_option("--force-ssl", action="store_true", dest="forcessl", help="force usage of SSL/HTTPS requests")
59
self.add_option("--force-yes", action="store_true", dest="forceyes", help="set 'YES' to all questions")
60
self.add_option("--gui", action="store_true", dest="web", help="start GUI (UFONet Web Interface)")
61
group9 = optparse.OptionGroup(self, "*Tools*")
62
group9.add_option("--crypter", action="store_true", dest="cryptomsg", help="Crypt/Decrypt messages using AES256+HMAC-SHA1")
63
group9.add_option("--network", action="store_true", dest="shownet", help="Show info about your network (MAC, IPs)")
64
group9.add_option("--xray", action="store", dest="xray", help="Fast port scanner (ex: --xray 'http(s)://target.com')")
65
group9.add_option("--xray-ps", action="store", dest="xrayps", help="Set range of ports to scan (ex: --xray-ps '1-1024')")
66
self.add_option_group(group9)
67
group1 = optparse.OptionGroup(self, "*Configure Request(s)*")
68
group1.add_option("--proxy", action="store", dest="proxy", help="Use proxy server (ex: --proxy 'http://127.0.0.1:8118')")
69
group1.add_option("--user-agent", action="store", dest="agent", help="Use another HTTP User-Agent header (default: SPOOFED)")
70
group1.add_option("--referer", action="store", dest="referer", help="Use another HTTP Referer header (default: SPOOFED)")
71
group1.add_option("--host", action="store", dest="host", help="Use another HTTP Host header (default: NONE)")
72
group1.add_option("--xforw", action="store_true", dest="xforw", help="Set your HTTP X-Forwarded-For with random IP values")
73
group1.add_option("--xclient", action="store_true", dest="xclient", help="Set your HTTP X-Client-IP with random IP values")
74
group1.add_option("--timeout", action="store", dest="timeout", type="int", help="Select your timeout (default: 5)")
75
group1.add_option("--retries", action="store", dest="retries", type="int", help="Retries when the connection timeouts (default: 0)")
76
group1.add_option("--threads", action="store", dest="threads", type="int", help="Max number of concurrent HTTP requests (default: 5)")
77
group1.add_option("--delay", action="store", dest="delay", type="int", help="Delay between each HTTP request (default: 0)")
78
self.add_option_group(group1)
79
group2 = optparse.OptionGroup(self, "*Search for 'Zombies'*")
80
group2.add_option("--auto-search", action="store_true", dest="autosearch", help="Search automatically for 'zombies' (may take time!)")
81
group2.add_option("-s", action="store", dest="search", help="Search from a 'dork' (ex: -s 'proxy.php?url=')")
82
group2.add_option("--sd", action="store", dest="dorks", help="Search from 'dorks' file (ex: --sd 'botnet/dorks.txt')")
83
group2.add_option("--sn", action="store", dest="num_results", help="Set max number of results for engine (default: 10)")
84
group2.add_option("--se", action="store", dest="engine", help="Search engine for 'dorking' (default: DuckDuckGo)")
85
group2.add_option("--sa", action="store_true", dest="allengines", help="Search massively using all engines (may take time!)")
86
group2.add_option("--sax", action="store", dest="ex_engine", help="Exclude engines when mass searching (ex: 'Bing')")
87
self.add_option_group(group2)
88
group3 = optparse.OptionGroup(self, "*Test Botnet*")
89
group3.add_option("--test-offline", action="store_true", dest="testoffline", help="Fast check to discard offline bots")
90
group3.add_option("--test-all", action="store_true", dest="testall", help="Update ALL botnet status (may take time!)")
91
group3.add_option("-t", action="store", dest="test", help="Update 'zombies' status (ex: -t 'botnet/zombies.txt')")
92
group3.add_option("--test-rpc", action="store_true", dest="testrpc", help="Update 'reflectors' status (ex: --test-rpc)")
93
group3.add_option("--attack-me", action="store_true", dest="attackme", help="Order 'zombies' to attack you (NAT required!)")
94
self.add_option_group(group3)
95
group4 = optparse.OptionGroup(self, "*Community*")
96
group4.add_option("--deploy", action="store_true", dest="deploy", help="Deploy data to share in '/var/www/ufonet/'")
97
group4.add_option("--grider", action="store_true", dest="grider", help="Create a 'grider' to share 'stats/wargames/messages'")
98
group4.add_option("--blackhole", action="store_true", dest="blackhole", help="Generate a 'blackhole' to share 'zombies'")
99
group4.add_option("--download-nodes", action="store_true", dest="download_nodes", help="Download 'zombies' from Radar")
100
group4.add_option("--up-to", action="store", dest="upip", help="Upload 'zombies' to IP (ex: --up-to '<IP>')")
101
group4.add_option("--down-from", action="store", dest="dip", help="Download 'zombies' from IP (ex: --down-from '<IP>')")
102
group4.add_option("--upload-zombies", action="store_true", dest="upload", help="Upload 'zombies' to Community")
103
group4.add_option("--download-zombies", action="store_true", dest="download", help="Download 'zombies' from Community")
104
group4.add_option("--upload-github", action="store_true", dest="upload_github", help="Upload 'zombies' to GitHub")
105
group4.add_option("--download-github", action="store_true", dest="download_github", help="Download 'zombies' from GitHub")
106
self.add_option_group(group4)
107
group5 = optparse.OptionGroup(self, "*Research Target*")
108
group5.add_option("-i", action="store", dest="inspect", help="Search biggest file (ex: -i 'http(s)://target.com')")
109
group5.add_option("-x", action="store", dest="abduction", help="Examine webserver configuration (+CVE, +WAF detection)")
110
self.add_option_group(group5)
111
group6 = optparse.OptionGroup(self, "*Configure Attack(s)*")
112
group6.add_option("-a", action="store", dest="target", help="[DDoS] attack a target (ex: -a 'http(s)://target.com')")
113
group6.add_option("-f", action="store", dest="target_list", help="[DDoS] attack a list of targets (ex: -f 'targets.txt')")
114
group6.add_option("-b", action="store", dest="place", help="Set place to attack (ex: -b '/path/big.jpg')")
115
group6.add_option("-r", action="store", dest="rounds", help="Set number of rounds (ex: -r '1000') (default: 1)")
116
self.add_option_group(group6)
117
group7 = optparse.OptionGroup(self, "*Extra Configuration(s)*")
118
group7.add_option("--no-droids", action="store_true", dest="disabledroids", help="Disable 'DROIDS' redirectors")
119
group7.add_option("--no-ucavs", action="store_true", dest="disableucavs", help="Disable 'UCAVS' checkers")
120
group7.add_option("--no-aliens", action="store_true", dest="disablealiens", help="Disable 'ALIENS' web abuse")
121
group7.add_option("--no-rpcs", action="store_true", dest="disablerpcs", help="Disable 'XML-RPCs' reflectors")
122
group7.add_option("--no-head", action="store_true", dest="disablehead", help="Disable 'Is target up?' starting check")
123
group7.add_option("--no-scan", action="store_true", dest="disablescanner", help="Disable 'Scan shields' round check")
124
group7.add_option("--no-purge", action="store_true", dest="disablepurge", help="Disable 'Zombies purge' round check")
125
group7.add_option("--expire", action="store", dest="expire", help="Set expire time for 'Zombies purge' (default: 30)")
126
self.add_option_group(group7)
127
group8 = optparse.OptionGroup(self, "*Extra Attack(s)*")
128
group8.add_option("--fraggle", action="store", dest="fraggle", help="[DDoS] 'UDP amplification' (ex: --fraggle 101)")
129
group8.add_option("--tachyon", action="store", dest="tachyon", help="[DDoS] 'DNS amplification' (ex: --tachyon 101)")
130
group8.add_option("--monlist", action="store", dest="monlist", help="[DDoS] 'NTP amplification' (ex: --monlist 101)")
131
group8.add_option("--smurf", action="store", dest="smurf", help="[DDoS] 'ICMP amplification' (ex: --smurf 101)")
132
group8.add_option("--sniper", action="store", dest="sniper", help="[DDoS] 'SNMP amplification' (ex: --sniper 101)")
133
group8.add_option("--spray", action="store", dest="spray", help="[DDoS] 'TCP-SYN reflection' (ex: --spray 101)")
134
group8.add_option("--db", action="store", dest="dbstress", help="[DDoS] 'HTTP-DB flood' (ex: --db 'search.php?q=')")
135
group8.add_option("--loic", action="store", dest="loic", help="[ DoS] 'HTTP-FAST flood' (ex: --loic 101)")
136
group8.add_option("--loris", action="store", dest="loris", help="[ DoS] 'HTTP-SLOW flood' (ex: --loris 101)")
137
group8.add_option("--ufosyn", action="store", dest="ufosyn", help="[ DoS] 'TCP-SYN flood' (ex: --ufosyn 101)")
138
group8.add_option("--xmas", action="store", dest="xmas", help="[ DoS] 'TCP-XMAS flood' (ex: --xmas 101)")
139
group8.add_option("--nuke", action="store", dest="nuke", help="[ DoS] 'TCP-STARVATION flood' (ex: --nuke 101)")
140
group8.add_option("--ufoack", action="store", dest="ufoack", help="[ DoS] 'TCP-ACK flood' (ex: --ufoack 101)")
141
group8.add_option("--uforst", action="store", dest="uforst", help="[ DoS] 'TCP-RST flood' (ex: --uforst 101)")
142
group8.add_option("--droper", action="store", dest="droper", help="[ DoS] 'IP-FRAGMENTATION flood' (ex: --droper 101)")
143
group8.add_option("--overlap", action="store", dest="overlap", help="[ DoS] 'IP-OVERLAP flood' (ex: --overlap 101)")
144
group8.add_option("--pinger", action="store", dest="pinger", help="[ DoS] 'ICMP flood' (ex: --pinger 101)")
145
group8.add_option("--ufoudp", action="store", dest="ufoudp", help="[ DoS] 'UDP flood' (ex: --ufoudp 101)")
146
self.add_option_group(group8)
147
148
def extract_sengines(self):
149
sengines = ["Bing", "DuckDuckGo"]
150
sengines = len(sengines)
151
return sengines
152
153
def extract_tools(self):
154
tools = ["CYPTER", "NETWORK", "XRAY", "WARPER", "INSPECTOR", "ABDUCTOR", "AI.BOTNET", "AI.GUI", "AI.STATS", "AI.EVASIVE", "BLACKHOLE", "AI.LINKS", "AI.STREAMS", "AI.BROWSER", "AI.GLOBALNET", "AI.GAMES"]
155
tools = len(tools)
156
return tools
157
158
def extra_tools(self):
159
etools = '\n _> ABDUCTOR * Defensive Shield Detector'
160
etools += '\n _> AI.BOTNET * Intelligent Attack System'
161
etools += '\n _> AI.BROWSER * Private Sandbox Browser'
162
etools += '\n _> AI.EVASIVE * Automatic Evasion System'
163
etools += '\n _> AI.GAMES * Fun & Games Center'
164
etools += '\n _> AI.GEO * Geomapping System'
165
etools += '\n _> AI.GLOBAL_NET * Global UFONET Network'
166
etools += '\n _> AI.LIBRARY * Public (data.Links) Library'
167
etools += '\n _> AI.STATS * Live Stats Reporter'
168
etools += '\n _> AI.STREAMING * Video (data.Streams) Player'
169
etools += '\n _> AI.WEB * Graphical User Web-Interface'
170
etools += '\n _> BLACKHOLE * Warper (p2p.Botnet) Generator'
171
etools += '\n _> CRYPTER * Telegram (crypto.Community) System'
172
etools += '\n _> INSPECTOR * Objective Scanning Crawler'
173
etools += '\n _> AI.NETWORK * Network (MACs, IPs) Reporter'
174
etools += '\n _> XRAY * Ultra-Fast Ports Scanner'
175
return etools
176
177
def extract_weapons(self):
178
weapons = ["SMURF", "TACHYON", "MONLIST", "SNIPER", "SPRAY", "DBSTRESS", "LOIC", "LORIS", "UFOSYN", "XMAS", "NUKE", "UFOACK", "UFORST", "DROPER", "OVERLAP", "PINGER", "UFOUPD", "FRAGGLE"]
179
weapons = len(weapons)
180
return weapons
181
182
def extra_weapons(self):
183
eweapons = '\n _> FRAGGLE * [DDoS] UDP Amplificator'
184
eweapons += '\n _> TACHYON * [DDoS] DNS Amplificator'
185
eweapons += '\n _> MONLIST * [DDoS] NTP Amplificator'
186
eweapons += '\n _> SMURF * [DDoS] ICMP Amplificator'
187
eweapons += '\n _> SNIPER * [DDoS] SNMP Amplificator'
188
eweapons += '\n _> SPRAY * [DDoS] TCP SYN Reflector'
189
eweapons += '\n _> DBSTRESS * [DDoS] HTTP-DB Stresser'
190
eweapons += '\n _> LOIC * [ DoS] HTTP-FAST Requester'
191
eweapons += '\n _> LORIS * [ DoS] HTTP-SLOW Requester'
192
eweapons += '\n _> UFOSYN * [ DoS] TCP-SYN Flooder'
193
eweapons += '\n _> XMAS * [ DoS] TCP-XMAS Flooder'
194
eweapons += '\n _> NUKE * [ DoS] TCP-STARVATION Flooder'
195
eweapons += '\n _> UFOACK * [ DoS] TCP-ACK Flooder'
196
eweapons += '\n _> UFORST * [ DoS] TCP-RST Flooder'
197
eweapons += '\n _> DROPER * [ DoS] IP-FRAGMENTATION Flooder'
198
eweapons += '\n _> OVERLAP * [ DoS] IP-OVERLAP Flooder'
199
eweapons += '\n _> PINGER * [ DoS] ICMP Flooder'
200
eweapons += '\n _> UFOUDP * [ DoS] UDP Flooder'
201
return eweapons
202
203
def electronic_botnet(self):
204
ebotnet = '\n _> ZOMBIES [ '+ format(int(self.zombies), '08d')+ ' ] * HTTP GET (simple)'
205
ebotnet += '\n _> DROIDS [ '+ format(int(self.droids), '08d')+ ' ] * HTTP GET (complex)'
206
ebotnet += '\n _> UCAVs [ '+ format(int(self.ucavs), '08d')+ ' ] * WebAbuse (multiple)'
207
ebotnet += '\n _> ALIENS [ '+ format(int(self.aliens), '08d')+ ' ] * HTTP POST'
208
ebotnet += '\n _> X-RPCs [ '+ format(int(self.rpcs), '08d')+ ' ] * XML-RPC'
209
ebotnet += '\n _> DNSs [ '+ format(int(self.dnss), '08d')+ ' ] * DNS'
210
ebotnet += '\n _> NTPs [ '+ format(int(self.ntps), '08d')+ ' ] * NTP'
211
ebotnet += '\n _> SNMPs [ '+ format(int(self.snmps), '08d')+ ' ] * SNMP'
212
return ebotnet
213
214
def extract_zombies(self):
215
try:
216
f = open(self.zombies_file)
217
zombies = len(f.readlines())
218
f.close()
219
except:
220
zombies = "broken!"
221
return zombies
222
223
def extract_aliens(self):
224
try:
225
f = open(self.aliens_file)
226
aliens = len(f.readlines())
227
f.close()
228
except:
229
aliens = "broken!"
230
return aliens
231
232
def extract_droids(self):
233
try:
234
f = open(self.droids_file)
235
droids = len(f.readlines())
236
f.close()
237
except:
238
droids = "broken!"
239
return droids
240
241
def extract_ucavs(self):
242
try:
243
f = open(self.ucavs_file)
244
ucavs = len(f.readlines())
245
f.close()
246
except:
247
ucavs = "broken!"
248
return ucavs
249
250
def extract_rpcs(self):
251
try:
252
f = open(self.rpcs_file)
253
rpcs = len(f.readlines())
254
f.close()
255
except:
256
rpcs = "broken!"
257
return rpcs
258
259
def extract_dnss(self):
260
try:
261
f = open(self.dnss_file)
262
dnss = len(f.readlines())
263
f.close()
264
except:
265
dnss = "broken!"
266
return dnss
267
268
def extract_ntps(self):
269
try:
270
f = open(self.ntps_file)
271
ntps = len(f.readlines())
272
f.close()
273
except:
274
ntps = "broken!"
275
return ntps
276
277
def extract_snmps(self):
278
try:
279
f = open(self.snmps_file)
280
snmps = len(f.readlines())
281
f.close()
282
except:
283
snmps = "broken!"
284
return snmps
285
286
def extract_dorks(self):
287
try:
288
f = open(self.dorks_file)
289
dorks = len(f.readlines())
290
f.close()
291
except:
292
dorks = "broken!"
293
return dorks
294
295
def extract_nodes(self):
296
try:
297
f = open(self.nodes_file)
298
nodes = len(f.readlines())
299
f.close()
300
except:
301
nodes = "broken!"
302
return nodes
303
304
def extract_globalnet(self):
305
try:
306
f = open(self.globalnet_file)
307
globalnet = len(f.readlines())
308
f.close()
309
except:
310
globalnet = "broken!"
311
return globalnet
312
313
def extract_d_energy(self): # Dark Energy Density = (Fluctuations)*(Baryon)*(Event horizont sphere)/(Age of the Universe)
314
d_density = 0.8288*0.05
315
d_sphere = d_density * 4 * math.pi * 16 **2
316
d_energy = d_sphere/13.64**2
317
return d_energy
318
319
def extract_y_energy(self): # Y-Energy = (Momento Entropy)*(Energy of Invariability lost)
320
y_entropy = int(self.total_botnet)+int(self.dorks)+int(self.sengines)+int(self.tools)+int(self.weapons)+int(self.nodes)+int(self.globalnet)
321
y_energy = y_entropy * 0.49
322
return y_energy
323
324
def extract_x_energy(self): # X-Energy = (Y-Energy)*(Dark Energy Density)
325
x_energy = self.y_energy / self.d_energy
326
return x_energy
327
328
def formula_x_energy(self): # X-Energy Final Formula
329
formula = 'X'+"\u2091"+''+"\N{SUBSCRIPT EIGHT}"' = '+"\u03A8"+'/'+"\u03A9"+''+"\u028C"+' = ('+"\u03A3"+''+"\u2091"+')/('+"\u03C3"+''+"\N{SUBSCRIPT EIGHT}"+'*'+"\u03A9"+'b*A'+"\u2091"+''+"\u2095"+'/t'+"\N{SUPERSCRIPT TWO}"+')\n '+ str(self.y_energy) + '*0.49/0.8288*0.05*4'+"\u03A0"+'16'+"\N{SUPERSCRIPT TWO}"+'/13.64'+"\N{SUPERSCRIPT TWO}"+''
330
return formula
331
332
def get_options(self, user_args=None):
333
(options, args) = self.parse_args(user_args)
334
if (not options.test and not options.testrpc and not options.target and not options.target_list and not options.checktor and not options.search and not options.dorks and not options.inspect and not options.abduction and not options.update and not options.download_nodes and not options.download and not options.download_github and not options.upload and not options.upload_github and not options.web and not options.attackme and not options.upip and not options.dip and not options.blackhole and not options.grider and not options.cryptomsg and not options.shownet and not options.xray and not options.timeline and not options.examples and not options.autosearch and not options.testoffline and not options.testall and not options.deploy):
335
print('='*75, "\n")
336
print("888 888 8888888888 .d88888b. 888b 888 888 ")
337
print("888 888 888 d88P" "Y888b 8888b 888 888 ")
338
print("888 888 888 888 888 88888b 888 888 ")
339
print("888 888 8888888 888 888 888Y88b 888 .d88b. 888888 ")
340
print("888 888 888 888 888 888 Y88b888 d8P Y8b 888 ")
341
print("888 888 888 888 888 888 Y88888 88888888 888 ")
342
print("Y88b. .d88P 888 Y88b. .d88P 888 Y8888 Y8b. Y88b. ")
343
print(" 'Y88888P' 888 'Y88888P' 888 Y888 'Y8888 'Y8888")
344
print(self.description, "\n")
345
print('='*75)
346
self.version = self.version.replace("\n","")
347
print('\n '+"\u25BC "+self.version+'\n')
348
print("-"*75+"\n")
349
print(' -> _BOTNET [DDoS]: [', format(int(self.total_botnet), '08d'),'] '+"\u25BC"+' Bots (Available)'+ self.ebotnet)
350
print('\n -> _DORKS: [', format(int(self.dorks), '08d'), '] '+"\u25BC"+' Open Redirect (CWE-601) patterns')
351
print(' _> ENGINES [', format(int(self.sengines), '08d'), '] * Dorking providers (Working)')
352
print('\n -> _PEERS: [', format(int(self.globalnet)+int(self.nodes), '08d'), '] '+"\u25BC"+' Blackholes (Community)')
353
print(' _> WARPS [', format(int(self.nodes), '08d'), '] * Static W.A.R.P.S')
354
print(' _> NODES [', format(int(self.globalnet), '08d'), '] * Dynamic Radar Detector')
355
print('\n -> _TOOLS: [', format(int(self.tools), '08d'),'] '+"\u25BC"+' Extra Tools (Misc)'+self.etools)
356
print('\n -> _WEAPONS: [', format(int(self.weapons), '08d'),'] '+"\u25BC"+' Extra Attacks (DDoS & DoS)'+ self.eweapons)
357
print('\n -> _X-ENERGY [X'+"\u2091"+''+"\N{SUBSCRIPT EIGHT}"+']: [', format(int(self.x_energy), '08d'),'] '+"\u25BC"+' '+self.formula+'\n')
358
print("-"*75+"\n")
359
print(" -> _HELP: ./ufonet --help (or ./ufonet -h)")
360
print(' -> _EXAMPLES: ./ufonet --examples')
361
print("\n -> _WEB_INTERFACE: ./ufonet --gui\n")
362
print('='*75, "\n")
363
return False
364
return options
365
366