first commit
This commit is contained in:
commit
d12a92f5ba
62 changed files with 46991 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
greyhackscripts.code-workspace
|
||||||
1506
FoxTrot.src
Normal file
1506
FoxTrot.src
Normal file
File diff suppressed because it is too large
Load diff
3
README.md
Normal file
3
README.md
Normal 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
76
advnmap.src
Normal 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
220
autohack.src
Normal 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
33
automail.src
Normal 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
98
autoproxy.src
Normal 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
297
calc.src
Normal 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
175
calcfree.src
Normal 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
287
cloudsafe.src
Normal 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
126
cookieclicker.src
Normal 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
816
corTech.html
Normal 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">• Open Browser.exe and search for 'mail'<br>
|
||||||
|
• 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">• Click the home icon to return to search and search for 'bank'<br>
|
||||||
|
• Select a website and follow the prompts to create a new bank account<br>
|
||||||
|
• 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">• Select a website and navigate to the "shop"<br>
|
||||||
|
• 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">• Open Mail.exe<br>
|
||||||
|
• The first email will be the log in credentials for your new server<br>
|
||||||
|
• 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">• 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">• 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">• Enter 'nmap [ip]' in the terminal for port and library details<br>
|
||||||
|
• 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">• 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">• Social Engineering has many uses, including ways to obtain user credentials<br>
|
||||||
|
• 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">• Once a password is obtained, use 'ssh' to connect to the user<br>
|
||||||
|
• 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">• Once the password has been deciphered, reply to the email with only the password<br>
|
||||||
|
• 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">• 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">
|
||||||
|
•<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">
|
||||||
|
•<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">
|
||||||
|
•<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">
|
||||||
|
•<b style="color:white;">decipher:</b> Password deciphering tool. Utilizes crypto.so library.</p>
|
||||||
|
<p class="text-body">
|
||||||
|
•<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">
|
||||||
|
•<b style="color:white;">scanrouter:</b> Firewall detection tool. Returns firewall information for a router.</p>
|
||||||
|
<p class="text-body">
|
||||||
|
•<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">
|
||||||
|
•Finding your ip in logs from websites, servers, shops, etc<br>
|
||||||
|
•Tricking you into running a malicious file or visiting a server<br>
|
||||||
|
•Using social engineering to obtain useful information<br>
|
||||||
|
•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>
|
||||||
|
•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>
|
||||||
|
|
||||||
|
•The entire file system can be changed with<br>
|
||||||
|
•Individual folders and files can be changed with<br>
|
||||||
|
•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 | ©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
811
cryptlib.src
Normal 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
225
cyphlib.src
Normal 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
24
decipher.src
Normal 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
255
enigmatic_theme_3.3.txt
Normal 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
38
file.src
Normal 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
46
fourman.src
Normal 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
160
foxcoin.html
Normal 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
1025
foxlib.src
Normal file
File diff suppressed because it is too large
Load diff
274
foxtrothtml.html
Normal file
274
foxtrothtml.html
Normal 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
8
ghs.code-workspace
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {}
|
||||||
|
}
|
||||||
31
intcount.src
Normal file
31
intcount.src
Normal 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
455
intlib.src
Normal 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
94
ipgen.src
Normal 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
113
keygen.src
Normal 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
67
login.html
Normal 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
2945
lunarcmd.src
Normal file
File diff suppressed because it is too large
Load diff
28
mail_finder.src
Normal file
28
mail_finder.src
Normal 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
199
mailservers.txt
Normal 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
25
maintenance.html
Normal 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
131
minifoxos.src
Normal 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
891
minifoxoscmds.src
Normal 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
427
msfconsole.src
Normal 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
150
nexus.html
Normal 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
228
nexus.src
Normal 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
735
nightlunar.src
Normal 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
80
passwd_vir.src
Normal 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
29468
password.txt
Normal file
File diff suppressed because it is too large
Load diff
111
playerfinder.src
Normal file
111
playerfinder.src
Normal 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
73
ps.src
Normal 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
84
randomart.src
Normal 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
50
rcon.src
Normal 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
27
rss.src
Normal 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
354
sandboxy.src
Normal 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
50
saved.txt
Normal 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
58
scanlib.src
Normal 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
763
spark.src
Normal 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
279
sparki.html
Normal 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 | ©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
87
ssh_vir.src
Normal 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
63
sysmon.src
Normal 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
461
tempered.src
Normal 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
290
theInternet/Bytes.html
Normal 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 | ©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>
|
||||||
111
theInternet/TreasureClient.src
Normal file
111
theInternet/TreasureClient.src
Normal 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
1035
theInternet/byteClient.src
Normal file
File diff suppressed because it is too large
Load diff
189
theInternet/primBrowser.src
Normal file
189
theInternet/primBrowser.src
Normal 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
|
||||||
|
|
||||||
16
theInternet/sites_help.txt
Normal file
16
theInternet/sites_help.txt
Normal 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
20
theInternet/the_byte.txt
Normal 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
16
tracelib.src
Normal 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
38
tree.src
Normal 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
209
weaselhtml.html
Normal 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
35
wificrack.src
Normal 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"))
|
||||||
Reference in a new issue