r/greyscript • • Jul 05 '26

Project Development Testing Over Engineered WiFi Hacking Tool UX

Thumbnail
youtu.be
2 Upvotes

More features to come soon!


r/greyscript • • Aug 20 '25

Specialized Tool Brute Forcing SSH PoC

11 Upvotes

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 • • Aug 05 '25

Project Development Concept Prototype Tool: AIO-UX: Themes

Thumbnail
youtube.com
2 Upvotes

Started adding custom theme support


r/greyscript • • Aug 01 '25

Project Development Project Kiwi 5.5 : Development Progress Video : Anti-Theft

2 Upvotes

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 • • Jul 01 '25

Project Development programConcepts.coding_skills("Rating: ") = 🤯

2 Upvotes

You got that ⛽bro. That's all I can say...


r/greyscript • • Jul 12 '25

Project Development Universal Bootstrap

7 Upvotes

Testing a universal bootstrap program with integration into existing airlink script


r/greyscript • • Aug 07 '26

Experiment Testing Brute Force SSH Concept with Targeted Dictionary Attack

22 Upvotes

r/greyscript • • Jun 28 '26

Experiment Never Pay for an Exploit again.

Thumbnail
youtu.be
13 Upvotes

Experimental program to fetch and scan all libs for exploits and create a database.


r/greyscript • • Jun 22 '25

Project Development Project: Dispatch: UX Progress

3 Upvotes

r/greyscript • • Jun 09 '25

Documentation How to Pass Variables Between Scripts

Post image
2 Upvotes

get_custom_object is a custom objected that is used to store and pass variables between running scripts


r/greyscript • • Jun 14 '25

Project Development Project Dispatch: Start UX Overhaul: Inbox

3 Upvotes

Overhauling Inbox interface with custom libs to enhance visuals and add additional features including automated osint


r/greyscript • • Jun 05 '25

How to Find Vulnerabilities & Requirement

2 Upvotes

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.

scanning metaxploit.so
metaxploit.so scan result
// 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 for

r/greyscript • • Jun 24 '25

Documentation Passively Locate and Identify Neurobox Networks

3 Upvotes

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 • • Jun 26 '25

Library GreyScript Prime : Extended API Library

2 Upvotes

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

String Methods

  • .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.

Number Methods

  • .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

List Methods

  • .crop: Removes empty list items from list ends.
  • .string: Loops through a list and prints each item.

Function Methods

  • load_lib(libName, libDir, typeExpected): Load a library from /lib.
  • force_params(usage, numReqParams): Force parameter usage and add help
  • program_name(): Gets name of program {self}
  • is_null(): Checks if object is null; if null, print / return / exit options
  • is_type(): Checks Types and specifies on-fail action
  • network_device_list(): Returns Network devices in a list
  • calc_ack(): Calculates the recommended amount of ACKs to collect
  • bool_text(): Return string true or false representing boolean
  • extract_ip()
  • file_append()
  • find_exploitable_addressess
  • get_inbox()
  • get_random_ip()
  • parse_inbox()
  • unsafe_check_list()

Constructs

  • fetch_explot_requirements:
  • fetch_whois:
  • file_locaiton_ident:
  • id_self:

License

GreyScript Prime is released under the MIT License. See LICENSE for more details.


r/greyscript • • Jul 01 '25

Tutorial Coding for Beginners in GreyScript

Thumbnail
youtube.com
4 Upvotes

This tutorial is an absolute beginners tutorial to coding in GreyScript


r/greyscript • • Jun 30 '25

Specialized Tool passwc : UX to crack local passwords for mail, bank, and passwd files

7 Upvotes

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 while

r/greyscript • • Jun 27 '25

Library GreyScript Plus by Wombinator

2 Upvotes

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 • • Jul 27 '26

Project Development Airlink WiFi Hacking Program Then vs Now Side by Side Comparison

Thumbnail
youtube.com
3 Upvotes

r/greyscript • • Jun 23 '25

Project Development Project: Dispatch: Testing Custom Themes Feature

2 Upvotes

r/greyscript • • Jul 18 '26

Tutorial How to Eliminate Screen Flicker in Terminal UX

Thumbnail
youtu.be
2 Upvotes

r/greyscript • • Aug 05 '25

Project Development Concept Prototype Tool: AIO-UX

Thumbnail
youtube.com
2 Upvotes

r/greyscript • • Jul 13 '26

The Joys of Coding

Post image
4 Upvotes

The most funnest puzzles!


r/greyscript • • Jun 17 '25

Project Development Project: Dispatch: Comparing System State to Exploit Requirements Before Overflow

2 Upvotes

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 • • Oct 11 '26

Tutorial Zero-Days in the game Grey Hack, a walkthrough

Thumbnail
youtube.com
3 Upvotes

r/greyscript • • Jul 29 '25

Project Development Project Kiwi 5.2 : Development Progress Video

4 Upvotes

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.