Glosure is a Lisp-like programming language built into Grey Hack's Shell that allows executing arbitrary code at runtime without recompilation, enabling dynamic customization of game hacking tools. Marinette is a plugin framework written entirely in Glosure that extends Shell's functionality by adding new commands, configurations, and tools like Akari (an automated hacking tool) and Nemesis (a decision-making attack tool), demonstrating how game shells can be extended through runtime code execution and plugin ecosystems.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
Grey Hack: Zero to Hero ep 21 || Glosure, Marinette, and Plugins, Oh My!Added:
Greetings sentient being and welcome back to Punk Works. I'm Pluto and today I'm going to talk about Oh gosh, quite a few things. Grey Hack has received numerous updates over the past month or so, few weeks, even as recently as the past couple days. It is constantly being updated and one of the new things that we have to play with now, we have procedural missions. There are a bunch of different kinds, they scale depending on your level up to I think it's level 16 or something like that and they pay a lot more money at the higher levels and they're a lot more intricate and again they're procedural so they're generated in a lot of different ways. You have a lot of different paths that you might have to take to get to the missions. They're really super cool. So we're going to try to take a look at that. The other new thing is there's a new tutorial for the game or rather the tutorial has been updated. So now when you start the game off there's a whole lot more information and guidance as to how to get started and what to do which is great. So I'm not going to go over the tutorial today.
It's actually good enough for you if you jump into the game and start it no problem. You'll you'll you'll go right on through it, no problem. And it's of course going to continue to be updated as well. So if you had do have any feedback to give on it, definitely give it up. But for today I want to go over some things in shell that I think are really cool. Closure is a a lisp I guess you would call it. I'm not too familiar with I've just learned thing about uh things like closure and lisps and things like that recently because of closure which is if you head on over to the shell GitHub and you scroll down here and you take a look at some of these little things here. You got your document extractor here made by Arcane which super useful.
You've got your link to closure which is the thing we're going to talk about today along with the link to Marinette which is the other thing that we're going to talk about today, and Marinette is written entirely in Closure. Closure being a list-like language that allows you to execute arbitrary code arbitrary code at runtime without recompiling.
Um yeah, it's exactly you can load custom scripts, code, that sort of thing right there at runtime uh without restarting shell, without compiling it. Uh you just write it in go executing it right along with basic shell commands. You can chain all of these things together. You can call shell commands and globals with Closure.
And Marinette has a bunch of configurations and improvements and additions and modifications to help Closure and shell work together even better along with a whole bunch of tools written uh to to to get you it's it's it's pretty big. Uh it's pretty big. So, let's let me jump back here and take you to Closure. And so, with Closure uh it's got its own repo on GitHub, but it's also built into shell as a contribution.
So, it's it's already in the source code for shell, so you don't need to do anything different in order to use Closure. But, you can pop on over here to get some documentation on it some and check out some examples.
Uh that sort of thing of different things that you can do. Uh here is htop written in Closure. Uh you can take a look here. Uh it's 24 lines. A lot of them are kind of long.
>> [laughter] >> Uh but, you can write up an entire uh program to act as htop uh for your machine completely from scratch using Closure code instead of MiniScript or whatever else depending on what you like. Obviously, you don't have to make something that, you know, complicated.
Uh here's postscript uh written in Closure. It's a little bit easier to see. You've got print format columns. dot dot get shell. dot host computer. dot show procs. Uh so, you see it's using the uh games, you know, objects and API in a slightly different method than mini script, but this allows you to write everything on one line and then execute this within shell along with other commands, and you can also put this as a macro within shell. Uh let me let me let me show you what that looks like. So, let me copy this and then we'll pop back over to shell.
Okay. So, two ways you can run a closure. One way that you can do it is to just use the closure command and wrap your code in quotes. Use your single quotes on each end in order to wrap the actual code that you want to run.
Remember, that's all one line right there. And then you just run it. And there you go.
Same as if you were to type PS.
I mean, not not a whole lot.
You know, um magical going on there because it's you know, these are doing the exact same thing. Uh so, you but this is an example of how you would put together a very, you know, short, simple, straight to the point closure.
Another thing that you can do is use the REPL.
I don't know if that's really how you say it. Uh that's how I say it, the ripple REPL. And you can just paste that line in there and you know, you're just executing closure as you're typing it in as you know, an RP REPL does. And then when you want to exit, you can quit out of that. So, in this way you can actually do something like macro set uh new P or we'll call it GPS, just to be cheeky.
Okay. And so, we're going to put that in there like that.
And now we have a macro that is the closure script and Oh, I'm sorry. I I did that wrong. I did that wrong. Let me correct this.
Let me correct this.
Uh macro set GPS. Um we actually want closure {dash} e. Let's go ahead and more quotes and then we escape that one and we throw a new one on like that. So, let me expand this so you can see the whole thing.
All right, so the macro is wrapped in quotes and then the closure stuff that needs to be quoted is in escaped quote. That way when we do it, it saves it as a single quote and then when we do GPS, it runs the actual code. Sorry, so I kind of messed that up a little bit. You have to put with with this one because I forgot the part that actually executes the closure code.
Now, one one thing that I could do is I could actually store that closure code in the clipboard. All right, now watch this. I'm going to show you something cool. So, I guess there's an additional way you can do it. So, I've stored that in the clipboard. So, now if I recall that, it just echoes the string but it doesn't execute. But, if I do this, closure-e @a, then it executes the code in @a.
So, once again, a simple example of code that is simply printing using the format columns function get shell.
get shell. host computer. show procs.
You see that? So, that's that's what that's this is doing and you can get away more complicated in your closures.
If I if I may, I will show you do.gls. This is Marinette code now that we're looking at that is written in closure, okay?
So, these are comments. Yes, you see that? That's a comment. But, the actual code is down here.
And a lot of these are macros and things that are defined in another file that I'll show you here in a second. But, these are this is an example of how Marinette works is it makes all these things that are it make basically makes closure a lot easier to use because it gives you pre-built to and and easier ways to do things. So, this right here is a is a Clojure macro to load your theme cuz you can now adjust Shell's theme using Marinette.
Um I'm not the greatest at this code because I am still learning myself. But, I do want to make it known to folks that are familiar with this sort of thing so that you can see that there are even more ways to customize Shell than than you might have thought. Um and you of course don't have to do this This is all optional. These are plugins and extras if you're looking for hashtag more.
Um here's another one where this is has been defined to run a Shell command within Clojure scripts, and this is the Marinette addition that allows you to do that directly as if you were calling clip A with this parameter right out the gate. And that's that's Shell's prompt if you recall.
It's It's Shell's prompt like it For instance, if you turn the full prompt off, you're left with simply that symbol, and that's how you type your Shell command. So, it's very fitting, I think, that that was the macro choice macro choice. So, that's how that was defined how you can call Shell commands within your Clojure scripts, so you don't have to completely rewrite a Shell command. You can just call it and then write your own relevant code.
Okay?
Uh let's take a look at another one in here.
And let's take a look at I think yeah, shell.gls.
Let's take a look at what this looks like in here.
Yeah, you know, your guess is as good as mine. I still haven't gone through all of this, and deciphering this code for me is actually a little bit difficult because all the parentheses, it kind of messes with my brain there a little bit. Again, if you're into the the the list kind of thing, the closure kind of thing, closure and Marinette are going to be wonderful for you. But also, Marinette actually, you don't have to learn closure in order to use Marinette.
Marinette is built on in using closure, but Marinette itself functions the same way shell functions. You call commands, they all have help and that sort of thing. So, let me show you what that looks like real quick.
Okay.
Uh one thing you can do is help dash ask Marinette when it's installed.
And let me move my face out the way.
There we go.
Okay. So, if you do a help that dash S, the the main things that it uh adds, it's going to give you a little thing to hey, Marinette's in these help files and these are some things you can do. You also have the Marinette command itself down here, which can tell you the additions and modifications that it makes. So, if we look at additions, you'll see all of these new commands that you can use that are um added to the shell command index. And if I go and do help, let me show you what I did there. Help dash I indexes all of shell's commands in the order that they appear in the code.
So, if you go all the way down here, everything listed after the shell command, which the shell command is the last in shell's standard source code, it's the last command to get loaded.
Um everything after that, touch, delete, all these guys, these are all added by Marinette. And these all have help uh usage info that you can look up just like any other shell command.
Uh which I think is pretty cool and I'm pretty sure Let me Let me double check that uh Yeah. Um the Marinette additions also are searchable using the help search function. Okay?
So you looks like it was duplicated there, but that's fine. No big deal.
But yeah, that's one way you can find out different stuff. But yeah, if you use the additions parameter, it'll show you all the different commands that it adds that you can then get additional help on. Like if we look at Akaza Akari help, it gives you, you know, it's a smart NPC hacking tool made by Akaza Akari and has been added to Marinette by Hekate who's made Marinette and um this is also the person who made Closure.
Just to give you some background. Also goes by Mahou Citrus, but this person made Closure.
And so Marinette's built on Closure and then Akari is also made by the person who made Closure and is now inside of Marinette. And all of that's built into the shell and it's a big giant ecosystem. And who doesn't love an ecosystem where tools are built on top of tools on top of tools and it's just it's wonderful, you know, it's a whole community here in GMod making making things together. It's great.
Good stuff. It's I mean, what could be better, you know? And this does require a little bit of extra setup, too.
There's an extra source code that you can get along with Marinette. They're on the GitHub that you'll want to copy into the game as well in order for this to run. And I'm pretty sure I already have that. Let me double check.
Let me double check.
Okay, yeah. Yeah, I've got Akari in there. All right, yeah. I didn't know if I had already set it up for this particular demonstration or not, but I do already have that on there. So we'll take a look at that.
For it cuz lazy. Okay. So, you know uh this is the source code for that. I'm not going to dive too into it cuz it's you know, it's pretty in there. But it's basically it's a full-on automated thing that just does the hacking intelligently. It's going to hack at all the ports and it's going to try to escalate as best it can. Let me Let Um so it's going to it's going to hack every port, it's going to gather shells, and it's going to attempt to escalate.
And if it's a root shell, it's going to pop on in. And then what Marinette does is everything Akari hacks, it's going to push it to shell standard uh buffer, which you are most likely familiar with. It's this thing that stores all of your stuff.
Um so Akari and Marinette and shell, once again, they all work together, the whole you know, interoperability.
Um it's going to all feel like you're using one integrated tool, which is the whole point.
Okay.
Uh What else can I show you? Uh let's take a look at Nemesis.
Okay, so what Nemesis does is uh kind of does a couple um commands together for you. It It's going to link you against a remote gateway. If it's successful, it's going to blast all of the attacks against it. If it's not successful, it's going to database uh all of the vulnerabilities on there, which also involves blasting all the vulnerabilities. Uh so really it's like if you probe a target, you know, you probe a random target and you're in instead of you probe it first and then you decide, "Okay, well, I'm going to database that since I don't know it or I'm just going to go ahead and attack it cuz I do know it." It makes that determination for you.
If that makes sense. Um and does the one that you need. So what I'm I'm going to go ahead and just do this one right here, and you'll see uh let's see, Nemesis.
Uh IP, port, and optional injective value.
So, I'm going to do this one and that one, and I'm not going to send an inject.
You can see it didn't that particular uh one was it wasn't in the database, so it databased it. Now, I'm going to do that exact same command again, and you'll see that it didn't database that time, it simply fired all the shots.
That's Nemesis in a nutshell. It's just going to do it for you. It's going to make that decision for you. It already knows you want one or the other, so it's going to do it.
Let's take a look at some more.
Merenel additions.
Okay.
Um, you've got match, you've got Mimi, you've got breach. Uh let's take a look at Net Stalk.
Okay. So, what this is going to do is it's going to to go through random networks, and it's going to use pattern matching to find what you want. You know, maybe you want to find a mail server with an SMTP port, maybe you're looking for an FTP port, maybe you're looking for a gateway, maybe you're looking for a criminal's network.
>> [snorts] >> Uh so, let's let's take a look at what that looks like. I'm going to clear this out. Uh let's see here. Net Stalk help.
Just we have that back up.
And I want to look for a in an internal uh criminal's network. Um, I don't care what version it is.
Uh because I just want it to kind of go faster. And I'm going to pipe that to the clipboard, uh so that I have Actually, no. I'm going to probe directly, cuz this is going to return the IP address. So, I'm going to probe that IP address as soon as it finds it.
And so, what it's going to do is it's going to go ahead and go through and search for those IP addresses.
And once it finds one that has a criminal's network, it's going to probe it. And then you can see, boom, there is our criminal's network uh this particular IP. That's a cop uh website. You go there and it's got a police webpage. You can get police missions from it where you can report crimes to it.
Or you can access uh criminal records if you have such such a mission. Or you can uh access the traffic network cameras uh in the event that you want to find someone's car and crash it.
Let's go ahead and jump back over here and take a another look at the Shell GitHub and you'll see the link down here for Marinette. Now, we took a look at the Closure GitHub. It tells you about, you know, where you can look at the language itself, which of course is also built into Shell inside of contrib.fivepack. Um so, it's already uploaded. You don't have to install Closure separately. Marinette, however, is a separate uh plugin that you would um install uh based on the extensive, well-written, and cheerful documentation as you can see here. Um All the stuff that you would need to know is here um chaptered and whatnot and written and maintained by Natsufi.
Okay.
Uh also goes by Hecate, so you can think um Hecate is guiding you through Shell with her torch, making things easier for you, and you know, lighting the way, that sort of thing. Okay. So, anyway, I don't have any clue if you get that reference or not.
But, besides that, yeah, uh instructions for for for using it and installing it are pretty simple. Let me Let me skip down to Okay. So, here's where we're going to go ahead Here's where we're going to go ahead and and look at Marinette's install instructions.
It's um it's not too terrible. Uh all you have to do is first make sure you have the do.rc file. do.rc is what shell uses for startup resource configuration.
Uh you can think.bashrc if you were using bash. It's just um everything in there is run as a shell script that gets, you know, loaded up at run time.
So, you start up shell and if you have macros that you want to set, you put them in there. If you have environment variables you want to set, you put them in there. If you have closure stuff that you want to run, you put it in there.
Any any commands you put in there get run when you launch shell. So, your do.rc is the first thing you're going to edit and you're going to add these lines right here. Okay?
You're going to go into the do.rc file and you're going to copy this right in there. It's this actual line right here.
These are all comments. Um but that actual line right there is what's going to set up the environment for installing Marinette. It's going to create a folder structure within your rkit folder. Okay?
Once you do that, the next thing you're going to do is you're going to copy three more files.
Let me go back down to There. It's uh the shell.gls, the do.gls, and the marinette.gls. Okay? And these uh you're going to paste in inside of the root rkit Marinette closure folder.
So, so let me go over to uh my rkit folder. If you look down here, uh I've got all my stuff in my rkit folder right here. I've got the Marinette folder. Within it is the closure folder. And within it there's shell.gls, marinette.gls, and do.gls.
There's also the other uh stuff that I got in here, but we'll get to those later. Uh there's my theme that goes in your themes folder. Uh there's the akari.source that goes in your binaries folder in the event that you're going to use the akari uh command.
Okay.
Okay.
Okay.
Real quick, let's take a look at the different themes that we could potentially load using Mary load theme.
Currently, I'm using the Kiki theme because I think it's just wonderful. And also, I think it totally matches my regular setup desktop theme. We're going to load a different one. I'm going to load What's this one? This is a new one that was just recently added. So, I'm going to I'm going to add this one.
Let me Let me copy the file. And then I'm going to go ahead and load that into shuts.
Go.
All right. So, I'm going to go ahead and paste this in there, and I'm going to save this in my arcade marrionette themes folder, and I'm going to call it um Stir What was it called?
Dingy Rose, whatever that is. It's a dinosaur. So, Dingy Rose.
Probably pronouncing that incorrectly.
Um but yeah. Okay. So, here How do we load it up? Okay. So, well, it's a closure. So, we load it up. We execute closure. We open this up, and we simply call, I believe it was Mary load, oops, theme.
And then in quotes, we put uh Dingy Rose dot source. I think it's dot source.
And I had a balance parenthesis.
Oops.
There we go.
Okay. And did that work?
Maybe I spelled that wrong.
Uh Yeah, let me Let me Let me see. Oh, yeah. No, it totally worked. There we go.
There we go. Now, my theme has changed.
Um the colors have all changed. If I look in the different menus.
And then, if I go and do it again and go back to my khaki theme.
And boom, everything's back to uh new color scheme. And you can And just like that, you can either set You can set a default uh theme in your uh do do GLAS or and you can also change it at runtime using a simple closure execution uh like we did.
So, pretty cool, right?
Okay, let's look at another marinate modification the that has been done to the run command. Uh and with run, you have different options on where you can pass your parameters, um but you can't pass a shell by default as the first parameter.
Um I don't have it set up for that.
However, marinate overrides that, and now you can. Simply by installing marinate, you suddenly have that functionality. You can specify a shell right here.
Um so, you can do like run at um some object, you know, in the custom object, and then pass a path to it instead of run path at my LS zero, okay?
Uh that's that's basically the difference there.
I know, these are macros that it adds.
So, let me let me show you some of those. That's I didn't even um cuz my macros list, there we go. This is a shorter macros list I have these uh concatenated concatenated now. Uh marinate will also sort your macros for you to let you know what you can do.
Um oh yeah, and this is how you fire your your closures uh that you have in your scripts folder. See, it's all kinds of cool right there at your fingertips tips stuff. It's so um this is kind of an unorganized demonstration um because a lot of this I'm learning as I'm going to. So, you got stuff like uh zoomies and GL2 and that sort of thing. Um if we look, Zoomies is a closure here, which you can see is Cerebrum and then Brutus, and that's it's executing shell commands for you. So, in many ways, Zoomies is doing uh this. It's doing Cerebrum and then it's doing Brutus Brutus to load up the dictionary and then get root.
If you go down here, you can see that there are more uh commands on and this is more macro stuff added by Marinette.
So, if you want to write some custom stuff, you can copy how this is done, and this is uh so, okay, let's go over here to the delete command. So, we're going to creating a new command, okay, that is called delete. It takes four parameters.
Shell commands take four parameters. So, this is kind of a a standard. So, you're just going to want This is the line that you copy to add your new uh command, okay?
So, that invokes it, that names it, this defines parameters, then you go down here and you fill in your code. Don't forget to balance your parentheses, okay? If we're getting uh -h as our first parameter, return the usage info, which is standard for shell commands. If you pass -h or help, it returns usage info.
Otherwise, it's going to remove um the directory for you or the file for you, just like as if you were using rm.
It's basically just an alias for the command rm. Yeah, so you can use delete instead of del. Uh same with nmap, it's an alias for probe.
Uh dir is an alias for ls, and then su is an alias for a combination of things of sudo and glasspool um because sudo is my p s u d o it's a fake sudo. Sudo sudo, it's not even sudo, it's like sudo sudo sudo um is a little clunky.
>> Okay.
>> Um so s u is Marinette's way of making it a little less clunky.
Uh uc is a command for undercover, which is invoked through a command added to shell through it's all kinds of stuff.
And remember, you don't have to learn all of this in order to use Marinette.
I'm just showing you this as a way of you can see how Marinette does this and you can make your own additions to shell.
The shell is designed to be personalized, make it your own personal shell.
And this is just a glorious way to to continue doing that is what I think. So, I think you should know about it.
Um more stuff in here.
Uh let's see, there's there's net stock and this is how net stock is written.
Again, using ClojureScript and you can see it's not like a lot of code to pump all of this extra functionality into shell. You can see it's it's all making use of stuff that already exists within shell and libraries that are shared and you can just pump it out. And it's a lot for me cuz like I'm you know, this like stuff like right here is that's going to take me a while to to parse through.
I'm dyslexic and that's that's hard for me.
But for those of you that are of greater ability, um you know, this is going to be a treasure trove of information for you to dive through. And oh, right here, this is important one. So, you see right here, silent is a global variable for shell.
Zero is normal print mode, one is clear screen mode, and then two is don't print anything mode. All prints are disabled.
So, when you want to turn on silent mode, you set the silent global to two.
There's the breach command that gets added, there's the Marinette command.
You can see that one's pretty in-depth.
Um but what you But what you're really what you're looking here is Marinette is like it's own entire um, hacking tool. Closure is its own entire programming language that has everything that MiniScript and GreyHack has available to it.
Um, you can do anything you you can do in GreyHack with Closure.
And therefore, you can make anything that you can make in GreyHack with Closure, and you don't have to recompile or restart shell in order to use it.
You just write it up and execute it and on the fly or as we've seen again in the um, in the ripple. Okay, let's see what this does.
So, I'm going to paste that. I don't need it. I can just do this. What is What happens if I do objects? Okay, that tells me the objects that I have in memory right now. So, that's that's pretty cool. If I were to do this from the command line, objects, since it's only one word, I don't even need the quotes. But, as you can see, if I if I just want to do something like that and then do something else, I can. Uh, let me see.
Zoomies. Let's go over these.
Oh.
>> [laughter] >> Duh. Um, I forgot the um, parentheses. Derp.
Okay. So, I'm I This is getting kind of long, so I'm hoping that you kind of get the idea um, that you can just have super extensibility, um, update live plugins, like hot swapping plugins live on the fly, you know, inline from scripts, like whatever you want to do. It's an additional way to customize and utilize shell. And I know I promised you guys like doing a mission with this, but this one's getting kind of long. So, I'm going to do a part two mission or part two video that shows me doing a mission.
So, this will be the introduction and then um, just tune in for the one right after this. It'll be me actually using this stuff to do one of those procedure roll missions. Okay? All right, I'll catch you there. All right. Peace out.
Bye.
Question for you all.
Are your pupils in the center of your eye eye because mine are not. And I don't know if that's normal.
Related Videos
Agentforce NOW AMA: Build with React and Salesforce Multi-Framework
SalesforceDevs
490 views•2026-05-28
How agent o11y differs from traditional o11y — Phil Hetzel, Braintrust
aiDotEngineer
450 views•2026-05-28
WEB TECHNOLOGIES UNIT-2 | Degree 4th sem BCOM Computers web technologies unit-2 full explanation💯✅
LearnwithSahera
1K views•2026-05-29
More tests are always better? How to use AI to identify tests that bring little value
Alliance4Qualification
335 views•2026-05-29
Search Algorithms Explained in 60 Seconds! 🤖💨
samarthtuliofficial
218 views•2026-06-01
People of Game of Thrones using JavaScript DOM
AltCampus
296 views•2026-05-30
Introduction to Problem Solving Part - 1 | Lecture 1 | Intermediate DSA
ascensionix
107 views•2026-05-29
🚀 BCS613C Compiler Design | Module 1 to 5 Schema Evaluation 🔥 | VTU 6th Sem 💯 #VTU #bcs613c #exam
Pranavaa-y4y
104 views•2026-06-02











