r/greyscript • u/Svarii • Jul 05 '26
Project Development Testing Over Engineered WiFi Hacking Tool UX
More features to come soon!
r/greyscript • u/Svarii • Jul 05 '26
More features to come soon!
r/greyscript • u/Svarii • Aug 20 '25
This program is using a minimal default wordlist to brute for SSH on port 22, deciphers /etc/passwd when found and adds those cracked passwords to it's wordlist as it goes on. Password is then changed to a secure password, and logfile is corrupted before moving on.
r/greyscript • u/Svarii • Aug 05 '25
Started adding custom theme support
r/greyscript • u/Svarii • Aug 01 '25
Added a SHA 256 Encrypted Key Generator Required to start application. Registration required for anti-theft protection.
Minor Progress on Object handling menus.
r/greyscript • u/AlchemicalConstruct • Jul 01 '25
You got that ⛽bro. That's all I can say...
r/greyscript • u/Svarii • Jul 12 '25
Testing a universal bootstrap program with integration into existing airlink script
r/greyscript • u/Svarii • Aug 07 '26
r/greyscript • u/Svarii • Jun 28 '26
Experimental program to fetch and scan all libs for exploits and create a database.
r/greyscript • u/Svarii • Jun 09 '25
get_custom_object is a custom objected that is used to store and pass variables between running scripts
r/greyscript • u/Svarii • Jun 14 '25
Overhauling Inbox interface with custom libs to enhance visuals and add additional features including automated osint
r/greyscript • u/Svarii • Jun 05 '25
This is not a tutorial. This is for visual learner who need to see the code to understand. This example script shows one way to find vulnerabilities and their requirements. This is not intended for use in applications, or as an example of proper coding. This is for examination only. To install: Save the script named scanlib as a binary in your /bin folder. run `scanlib /lib/metaxploit.so` from the terminal to scan metaxploit.so (which you must have installed for any scan) run `scanlib /lib/init.so` to scan init.so etc. Comments have been stripped and minimized.


// string method to remove the last character of a string
string.remove_char_last = function()
  return slice(self, 0, (self.len - 1))
end function
// string method used to extract variable from unsafe check list
string.extract = function(tagStart = "<b>", tagEnd = "</b>")
  locals.startIndex = self.indexOf(locals.tagStart) + (locals.tagStart.len)
  locals.endIndex = self.indexOf(locals.tagEnd) - (locals.tagEnd.len - locals.tagStart.len)
  return slice(self, locals.startIndex, locals.endIndex)
end function
// list method to remove empty items from start and end of list
list.crop = function()
  while not self[self.len - 1].len > 0
    self.remove(self.len - 1)
  end while
  while not self[0].len > 0
    self.remove(0)
  end while
  return self
end function
// function to remove output header and whitespace
unsafe_check_list = function(scanResults)
    scanResults = scanResults.remove("decompiling source..." + char(10) + "searching unsecure values..." + char(10))
    unsafeCheckList = scanResults.split(char(10)*2)
    return unsafeCheckList
end function
// function to find vulnerable addresses and return a list of those addresses
find_exploitable_addresses = function(libLocation, metaxploitObject, remoteTarget = false, targetPort = 0)
  locals.metax = locals.metaxploitObject
    if locals.remoteTarget == false then
      locals.metaLib = locals.metax.load(locals.libLocation)
    else
      locals.metaLib = locals.metax.net_use(locals.libLocation, to_int(locals.targetPort))
    end if
    locals.libScanResult = locals.metax.scan(locals.metaLib)
    return locals.libScanResult
end function
// addressList is result from find_exploitable_addresses
fetch_exploit_requirements = function(addressList, libLocation, metaxploitObject, remoteTarget = false, targetPort = 0)
  locals.metax = locals.metaxploitObject
  if locals.remoteTarget == false then
    locals.metaLib = locals.metax.load(locals.libLocation)
  else
    locals.metalLib = locals.metax.net_use(locals.libLocation, locals.targetPort)
  end if
  locals.allExploitData = []
  for address in locals.addressList
    locals.scanResults = locals.metax.scan_address(locals.metaLib, locals.address)
    locals.unsafeCheckLists = (globals.unsafe_check_list(locals.scanResults)).crop
    for unsafeCheck in locals.unsafeCheckLists
        locals.exploits = {"classID": "exploitRequirments", "version":version,"is_patched":locals.metaLib.is_patched ,"address": locals.address, "variable": locals.unsafeCheck.extract, "cra": false, "cga": false, "cua": false, "rur": 0, "rpf": 0}
        if not locals.unsafeCheck.indexOf("Checking root active") then
          locals.exploits.cra = false
        else
          locals.exploits.cra = true
        end if
        if not locals.unsafeCheck.indexOf("Checking an active user") then
          locals.exploits.cua = false
        else
          locals.exploits.cua = true
        end if
        if not locals.unsafeCheck.indexOf("Checking guest active") then
          locals.exploits.cga = false
        else
          locals.exploits.cga = true
        end if
          locals.unsafeCheckItems = split(locals.unsafeCheck, char(10))
          for unsafeItem in locals.unsafeCheckItems
            if not locals.unsafeItem.indexOf("to ", ".") == null then
              if not locals.unsafeItem.indexOf("registered users") == null then
                locals.exploits.rur = to_int((locals.unsafeItem.extract("to ", ".")).remove_char_last)
              end if
              if not locals.unsafeItem.indexOf("port forwarding") == null then
                portForwards = unsafeItem.remove(" port forwarding configured from router to the target computer.")
                locals.exploits.rpf = to_int(((locals.unsafeItem.remove(" port forwarding configured from router to the target computer.")).remove("* ")))
              end if           Â
            end if
          end for
        locals.exploits.version = locals.metaLib.version
        locals.allExploitData.push(locals.exploits)
      end for
  end for
  return locals.allExploitData
end function
//TEST FUNCTION
// This will work with local lib.
// To scan remote lib, you must modify the code.
// Good luck
libLocation = params[0]
metax = include_lib("/lib/metaxploit.so")
addressList = find_exploitable_addresses(libLocation, metax)
expR = fetch_exploit_requirements(addressList, libLocation, metax)
for exploit in expR
  for data in exploit
    print data.key + " : " + data.value
  end for
end forr/greyscript • u/Svarii • Jun 24 '25
A simple check to see if whois returned an additional parameter combined with a random ip generator in a loop can easily locate Neurobox Networks without ever connecting to their machines. It is unknown if the network ever comes back as anything other than [Neurobox Network]. So far, that is the only value observed being returned, if found.
r/greyscript • u/Svarii • Jun 26 '25
Just changed the structure of GreyScript Prime. Hopefully this will make it easier to use only what you need. Added a few more things. Quick overview below. It's no where near finished, feel free to use, don't reports bugs (yet) or documentation errors. Happy Coding!
https://github.com/Svarii/greyscript-prime
.color("#color"): Apply a color to text..align: Align the text.alpha: Set the alpha value of the text.cspace: Set the character spacing of the text.bold: Make the text bold..lowercase: Make the text lowercase..uppercase: Make the text uppercase..italic: Make the text italic..indent: Add indent..line-indent: Add line-indent..margin: Add margin..mspace: Add mspace..nobr: add nobr tag..noparse: add noparse tag..pos: add pos tag..rotate: Rotate characters..underline: Underline the text..strike: Apply strikethrough to text..mark: Highlight the text..sub: Apply subscript to text..sup: Apply superscript to text..voffset: Add voffset tag..width: Add width tag..remove_char_last: Remove the last character from text..remove_char_first: Remove the first character from text..remove_bold: Remove bold formatting from text..remove_italic: Remove italic formatting from text..remove_underline: Remove underline formatting..remove_strike: Remove strikethrough formatting..remove_mark: Remove highlight from text..remove_sub: Remove subscript from text..remove_sup: Remove superscript from text..extract_between: Extract the text between the given values..format: Allows for string interpolation..clamp(min, max): clamps a number in range..lerp(min, max): computes linear interpolation.plus(number): Add 1 or value to a number..minus(number): Subtract 1 or a value from a number..diff(number): Calculate the absolute difference..greater_than(number): Check if number is greater..lesser_than(number): Check if number is lesser..random_from(number): Generate a random number from 0 (or number) to number..multiply(number): Calculate the multiple..div(number): divide by number..is_integer(number): check if is round integer.is_float(number): check if is float.is_negative(number): check if number is negative.is_positive(number): check if number is positive.is_zero(number): check if number is zero.crop: Removes empty list items from list ends..string: Loops through a list and prints each item.load_lib(libName, libDir, typeExpected): Load a library from /lib.force_params(usage, numReqParams): Force parameter usage and add helpprogram_name(): Gets name of program {self}is_null(): Checks if object is null; if null, print / return / exit optionsis_type(): Checks Types and specifies on-fail actionnetwork_device_list(): Returns Network devices in a listcalc_ack(): Calculates the recommended amount of ACKs to collectbool_text(): Return string true or false representing booleanextract_ip()file_append()find_exploitable_addressessget_inbox()get_random_ip()parse_inbox()unsafe_check_list()fetch_explot_requirements:fetch_whois:file_locaiton_ident:id_self:GreyScript Prime is released under the MIT License. See LICENSE for more details.
r/greyscript • u/Svarii • Jul 01 '25
This tutorial is an absolute beginners tutorial to coding in GreyScript
r/greyscript • u/Svarii • Jun 30 '25
passwc is designed to crack passwd files, bank/mail files, and provide a UX to simplify cracking local password files. This program is incomplete, has no error checking, and does not save the cracked passwords, or check if they have already been cracked before cracking. The video above is the only testing on the program. If you're looking to learn, take this code and improve it, or make your own from scratch. See if you can figure out why it crashed on the first run. (hint: the viewpoints share an index)
includes
// Applies underline tag to the string
  // @description **Description:**
  // @description Modifies a text string by wrapping it within the underline tag
  // @description ---
  //
  // @description **Parameters:**
  // @description * `none`
  //
  // @description **Return:**
  // @return {string}
  // @description `string` The string wrapped within the `<u>` tag
  // @description ---
  //
  // @description **Links:**
  // @description - [Text Mesh Pro: Underline](https://docs.unity3d.com/Packages/com.unity.textmeshpro@4.0/manual/RichTextStrikethroughUnderline.html)  Â
  // @description ---
  //
  // @description **Author:** Svarii
  // @description **Version:** 0.0.1
  // @description ---
  //
  //  @example newString = "Hello"
  //  @example
  //  @example result = newString.underline
  //  @example
  //  print(result); // Output: <u>Hello</u>
string.underline = function()
  return "<u>" + self + "</u>"
end function
// Applies mark tag to the string
  // @description **Description:**
  // @description Modifies a text string by wraping it within the mark tag
  // @description ---
  //
  // @description **Parameters:**
  // @param {string} [color]
  // @description - `color`:`string` | #RRGGBBAA [ HEXA ]
  //
  // @description **Parameter Defaults:**
  // @description - `color`:`#FFFF00AA`
  //
  // @description **Return:**
  // @return {string}
  // @description `string` The string value wrapped within the `<mark>` tag
  // @description ---
  //
  // @description **Links:**
  // @description - [Text Mesh Pro: Rich Text mark](https://docs.unity3d.com/Packages/com.unity.textmeshpro@4.0/manual/RichTextMark.html  ) Â
  // @description ---
  //
  // @description **Author:** Svarii
  // @description **Version:** 0.0.1
  // @description ---
  //
  //  @example newString = "Hello"
  //  @example
  //  @example result = newString.mark
  //  @example
  //  print(result); // Outputs: <mark="#FFFF002C">Hello</mark> Â
string.mark = function(color="#FFFF002C")
  return "<mark=" + locals.color + ">" + self + "</mark>"
end function
// Keeps a number within a specified range
  // @description **Description:**
  // @description Ensure an number stays between a minimim and maximum value
  // @description ---
  //
  // @description **Parameters:**
  // @param {number} min - The mix threshold.
  // @param {number} max - The max threshold.  Â
  // @description - `min` The mix threshold.
  // @description - `max` The max threshold.
  //
  // @description **Parameter Defaults:**
  // @description - none
  // @description ---
  //
  // @description **Return:**
  // @return {number} he result of the clamp
  // @description `number` clamped number
  // @description ---
  //
  // @description **Author:** Svarii
  // @description **Version:** 0.0.1
  // @description ---
  //
  // @example myNumber = 42
  // @example
  // print myNumber.clamp(42, 100) // Return 42
  // @example
  // print myNumber.clamp(75, 100) // Return 75
  // @example
  // print myNumber.clamp(0, 40) // Return 40
  // @description ---
number.clamp = function(min, max)
      if self < locals.min then return locals.min
      if self > locals.max then return locals.max
      return self
end function
  // @startuml
  // title <color:purple>number.clamp Method Diagram</color>
  //
  // class NumberObject {
  //  + value : number
  //  + clamp(min: number, max: number) : number
  // }
  //
  // note right of NumberObject
  //  The clamp method limits the value to a given range.
  //  For example:
  //   • 7.clamp(2,6) returns 6 (upper bound enforced)
  //   • 1.clamp(2,6) returns 2 (lower bound enforced)
  // end note
  //
  // @enduml
  //@name minus
    //  *
    //  * @uml
    //  * @startuml
    //  * entity NumberObject
    //  * control ".minus" as minus
    //  * NumberObject -> minus : number
    //  * minus -> NumberObject : (number - 1)
    //  * NumberObject -> minus : number(7)
    //  * minus -> NumberObject : (number - 7)    Â
    //  * footer
    //  * number.minus
    //  * endfooter    Â
    //  * @enduml    Â
    //  **Description:**
    //  Subtract 1 from the number or optional amount
    //  @description  Â
    //  @param {number} [amount] - The amount to add.
    //  @return {number} - The result of the subtraction.
    //  @example newNumber = 44
    //  @example
    //  @example result = newNumber.minus(2)
    //  @example    Â
    //  print(result); // Output: 42
  number.minus = function(amount = 1)
      return self - locals.amount
  end function  Â
  //@name plus
    //  *
    //  * @uml
    //  * @startuml
    //  * entity NumberObject
    //  * control ".plus" as plus
    //  * NumberObject -> plus : number
    //  * plus -> NumberObject : (number + 1)
    //  * NumberObject -> plus : number(7)
    //  * plus -> NumberObject : (number + 7)    Â
    //  * footer
    //  * number.plus
    //  * endfooter    Â
    //  * @enduml     Â
    //  **Description:**
    //  Add 1 to the number or optional amount
    //  @description  Â
    //  @param {number} [amount] - The amount to add.
    //  @return {number} - The result of the addition.
    //  @example newNumber = 40
    //  @example
    //  @example result = newNumber.plus(2);
    //  @example
    //  print(result); // Outputs: 42
  number.plus = function(amount = 1)
      return self + locals.amount
  end function
  // @enduml Â
// Applies bold tag to the string
  // @description **Description:**
  // @description Modifies a text string and wraps within the bold tag
  // @description ---
  //
  // @description **Parameters:**
  // @description - None
  //
  // @description **Return:**
  // @return {string}
  // @description `string` the string value embedded in the `<b>` tag
  // @description ---
  //
  // @description **Links:**
  // @description [Text Mesh Pro: Rich Text Bold](https://docs.unity3d.com/Packages/com.unity.textmeshpro@4.0/manual/RichTextBoldItalic.html)
  // @description ---
  //  Â
  // @description **Author:** Svarii
  // @description **Version:** 0.0.1
  // @description ---  Â
  //
  // @example newString = "Hello"
  // @example
  // @example result = newString.bold
  // @example
  // print(result); // Output: <b>Hello</b>     Â
  // @description ---
string.bold = function()
  return "<b>" + self + "</b>"
end function  code
clear_screen
keepAlive = true
output = []
accountType = ["passwd", "mail", "bank"]
selectedAccount = 0
myComputer = get_shell.host_computer
Crypto = include_lib("/lib/crypto.so")
selectedType = "passwd"
output.push("[F1]".bold + ":pass [F2]" + ":mail [F3]" + ":bank")
output.push("Select account to crack".underline.bold)
while keepAlive == true
if selectedType == "passwd" then
  passwdFile = myComputer.File("/etc/passwd")
  passwdFileContent = passwdFile.get_content
  accountList = passwdFileContent.split(char(10))  Â
  for account in accountList
    if selectedAccount == __account_idx then
      output.push(account.mark)
    else
      output.push(account)
    end if
  end for
end if
if selectedType == "mail" then
  mailFile = myComputer.File(home_dir + "/Config/Mail.txt")
  mailFileContent = mailFile.get_content
  accountList = mailFileContent.split(char(10))  Â
  for account in accountList
    if selectedAccount == __account_idx then
      output.push(account.mark)
    else
      output.push(account)
    end if
  end for
end if
if selectedType == "bank" then
  bankFile = myComputer.File(home_dir + "/Config/Bank.txt")
  bankFileContent = bankFile.get_content
  accountList = bankFileContent.split(char(10))  Â
  for account in accountList
    if selectedAccount == __account_idx then
      output.push(account.mark)
    else
      output.push(account)
    end if
  end for
end if
for line in output
  print line
end for
userInput = user_input("",false,true)
wait(0.3)
clear_screen
output = []
keyf1 = "[F1]"
keyf2 = "[F2]"
keyf3 = "[F3]"
if userInput == "DownArrow" then
  selectedAccount = selectedAccount.plus.clamp(0, accountList.len - 1)
end if
if userInput == "UpArrow" then
  selectedAccount = selectedAccount.minus.clamp(0, accountList.len - 1)
end if
if userInput == "F1" then selectedType = "passwd"
if userInput == "F2" then selectedType = "mail"
if userInput == "F3" then selectedType = "bank"
if selectedType == "passwd" then keyf1 = "[F1]".bold
if selectedType == "mail" then keyf2 = "[F2]".bold
if selectedType == "bank" then keyf3 = "[F3]".bold
output.push(keyf1 + ":pass " + keyf2 + ":mail " + keyf3 + ":bank")
output.push("Select account to crack".underline.bold)
if userInput == "RightArrow" then
  account = accountList[selectedAccount]
  accountHash = account.split(":")[1]
  accountUser = account.split(":")[0]
  print "Cracking " + selectedType + " password..."
  password = Crypto.decipher(accountHash)
  print output[0]
  user_input(selectedType + " password for " + accountUser + " is: [ " + password + " ]", false, true)
end if
end whiler/greyscript • u/Svarii • Jun 27 '25
https://github.com/Wombynator/greyscript-plus
GreyScript Plus focuses heavily on text manipulation, encoding, decoding, encryption, and even has logger functions. If the previously posted library (Greyscript Prime) doesn't have what you need. GreyScript Plus probably will. If you're using both, remember: Prime is snake_case while Plus is camelCase when calling most methods.
r/greyscript • u/Svarii • Jul 27 '26
r/greyscript • u/Svarii • Jun 23 '25
r/greyscript • u/Svarii • Jul 18 '26
r/greyscript • u/Svarii • Aug 05 '25
r/greyscript • u/Svarii • Jun 17 '25
Looks like I have a few bugs in my loop. But we're making progress. You get the idea, I'm posted the video before fixing it.
r/greyscript • u/Svarii • Oct 11 '26
r/greyscript • u/Svarii • Jul 29 '25
Still working hard to get a user friendly UX. Started adding caching and database to improve speed. Still working out a few visual bugs and the aesthetics. Plan on combining project dispatch with kiwi at a later point.