Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


This game is cool and fun. You have to be a coder type person to enjoy it (like, at least minimal exposure to code) but it's awesome. I say that as a non-developer day-job.

Adbot
ADBOT LOVES YOU

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!




basically, I wrote a script that cracks all t1 for 10k

then I wrote another script that gets all npc locations from the fullsec scripts and chatspams the general chat with ad links

I don't think people like it though

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Envy Insanity posted:

Yet another reason I want to team up with goons.

Sidenote, would you be willing to share those scripts? I'd like to see how they're put together so I can understand a bit more. If not, no worries, just figured I'd ask.

Lol just realized I spammed broken links, it's t:, not t=

Sure, when I'm at my comp tomorrow night I'll pastebin them and post them in the thread. Steep initial learning curve for sure.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Highblood posted:

This intrigues me very much, I wanted to be productive tonight but gently caress that I wanna play whatever this is. Is it worth buying right now or should I wait for things to be sorted out?

I'd get it if you think you'd be into it. It's a lot of fun if you enjoy this sort of thing.


Lichtenstein posted:

The limit is upgradable and let me tell you, even the v1 +500 char upgrade makes a world of difference.

Yeah, I'm up to 4k characters (the majority of my upgrade slots), I mean what are the other useful upgrades anyway? My t1 cracker (all locks) uses about 2500.

Also you noted that whitespace doesn't count, but commented code doesn't either. That all really helps to keep some semblance of organization.


Phrosphor posted:

I noticed this from a mod in the discord, it looks like they are refunding GC to people getting caught out by typo hacks?

This is kinda a shame because I feel like the typo / autocompletes are a neat way of introducing accidental possibilities to execute malicious scripts. Yeah, sucks if you get caught out, but not hard to avoid.



Few tips and notes:
- If you're worried about getting hacked, just keep your cash on your alt. As long as you store your money somewhere not exposed and not running scripts, you're not going to lose it even if you get outed.
- If you're worried about getting caught by autocompletes and typos, make macros for your common stuff. For instance, I have /hl set to kernel.hardline.
- If you're running other people's scripts, check their validity EVERY TIME. People can publish a FULLSEC script, advertise it, and then toss in some malicious code without you knowing. A sort of bait and switch.
- ESC clears your current line of code. Took me a while to figure this out, lifesaver.
- If you need a t1 cracker, I have one published (ruggan.t1) and will post the code tonight. Most of it is stolen from someone else with some minor modifications, but it works well.
- If you need a t1 finder, check dtr's scripts - he has one published that works well.
- Almost everything available in javascript is available to use. If you need to figure out how to do something, just google it in generic terms (e.g. javascript distinct word list).
- You cannot dynamically call scripts from within other scripts - you either need to pass them as a parameter or hardcode them. For example, you can specify #s.user.script in your script (it will be called immediately when the line is hit), and you can pass #s.user.script to the script through a parameter (it will be called when args.parameter.call is run). What you can't do, which people commonly want to do, is parse out a script location (e.g. an NPC) from output and immediately call that in the same script. That means you can't create a self-looping find-NPC crack-NPC script. This is actually a good thing - being able to do this sort of thing would cause the security levels to collapse on themselves.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


You know what this game really needs? The ability to install malicious code on a user that self-replicates or locks out the ability to remove itself. I'm thinking worms and ransomware.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Mindblast posted:

Bookmarked. Seems cool but I don't know if I have the chops for it.

So how do people defend themselves exactly. How do people hide or successfully repel attacks? I assume your poo poo is online no matter what?

I'm kinda curious about this too, actually.

I don't think you need to hide, just don't let yourself get exposed. Players need your loc to attack you, and your loc is private unless you expose it yourself through running malicious code. In terms of repelling attacks, I don't think it's really that possible. You can put up whatever locks you want, but if someone has a script that can efficiently crack them, you're hosed.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Lichtenstein posted:

Hey Ruggan, as I spend most of my time with this game* staring at my terrible, terrible script, I'd love if you'd post the code to your finder too, to tinker and reverse-engineer.


* not counting stalking the Discord at work.

Yeah, I will when I get home tonight.

The only part of the finder I automate is scraping a distinct list of words in the blog/news walls and trying each of those as a "project". I have to hardcore the corp loc and password atm.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Lichtenstein posted:

Ok duders, coding problem:

I made a t1 universal cracking script I'm finally fairly happy with. The code currently takes two args:
- target: which is the #s. I'm hacking
- lock: a simple variable to guide the script to proper cracking method (will probably try and automate that, once I solve my little problem)

My trouble is, what if I want to crack a second lock? I need to add ez_21:"open" or whatever the solution to the first one was to target.calls and I'm kinda confused as to how to handle this.

Easiest way is to make a separate function for each lock type. In your main code area, make a loop that runs while a lock type can be identified. If no lock type, you cracked them all. Otherwise call the appropriate function for the lock type you identified.

You'll need to pass your existing args in and continuously append to it.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Lemon posted:

Just got this and it seems pretty cool so far. But I can't find any T1 NPCs? I used the harvest script and it's all empty. I went through the scripts.fullsec route and got into a few places which gave me lists of loc's, but none of them worked. Apparently they are all farmed out and need to reset each day? If true that doesn't seem too fun.


Also, I think "thirst" is a perfectly acceptable answer to the "If you feed me I grow, but give me water and I'll die" riddle. gently caress you, game!

Game is getting a lot of attention and it's exhausted the npcs. Not good for us, but I think it's due to the game doing better than expected. Hopefully they crank up the reset rate.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!




Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Highblood posted:

Ok so I'm a bit stumped with a script and I don't know if I can do anything about it with only 1 script and 500 character limit. Basically I made an EZ_40 script because it's the only t1 that's pretty impossible to do manually. It works except I don't know what to do if I get an NPC with multiple locks. Like this one here has an EZ_21 followed by the EZ_40, is there a way to pass the EZ_21 to my EZ_40 script?

You can upgrade your char count, but at 500 you're only really able to fit one or two breakers in a single script.

The easiest way is to build a function for each lock. Your main code should loop until it detects the unlock message. If it isn't unlocked, call the function that cracks the lock you're up against. Make sure to pass arguments forward in case there are multiple locks.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


By the way, if I'm around and anyone needs some starter help, I can probably spare you a couple mil to get your first sys.init, along with some spare upgrades. Just message me in discord.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Ciaphas posted:

Ahh, interesting

Is said security checker recursive or do you have to pray there's not some double blind callback bullshit going on

It's recursive and you can't dynamically call other scripts using input strings (they need to be formally passed as "scriptors" as a parameter by the caller OR hardcoded into the script itself to call them) so you can rely on the result to be accurate.

If you pass a malicious script as a parameter all bets are off, obviously. Also, the dev script returns the state at the time you call it, so there's always the chance that the owner will throw some malicious code in between when you check its safety and when you execute it.


Ciaphas posted:

So a) How avoidable is PvP, or is it entirely the basis of the game; b) how long does it take to get back on your feet if you get deaded; c) when y'all talk about alts on the first page does that mean registering for the game with multiple email addresses or something because that kind of chicanery drives me loving irrationally nuts

PvP is pretty avoidable? Idk, but I haven't engaged in it or been engage yet the entire time I've played so far (a week or so pretty heavily). The only way people can get at you now is if they have your loc, which is a randomly generated alphanumeric value of 8 chars in length or something. The only way they get that is by brute forcing it (haven't heard of this happening yet) or by you revealing it. You can reveal your loc by running a malicious script (perhaps accidentally, by misspelling a script you'd like to run) or by cracking other players (it leaves your loc in their access log).

The game allows you to have two character slots, and switch between them with a single command. That's what people mean by alts - their alternate account. For instance, I use my alt to hold money so that I'm not really at risk of losing much if I were to get raided. If you or your alt get their loc exposed, you can retire your user account and create another, although you lose whatever sys.init level you're at (1MGC for L1, 10MGC for L2, 1BGC for L3, etc). That's usually pretty easy to get back. The game lets you retire up to 10 user accounts per month (you have 10 slots for retired accounts, and they perma delete after 30 days or something).

If you like coding or whatever and find puzzle solving fun, you'll enjoy the game. It doesn't force you to interact with people and when you get griefed it's due to your own misplaced trust or mistakes you made.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


siggy2021 posted:

Someone explain to me how acct_nt locks work before I pull out my hair:


Part of Transaction Log:

code:

time: "161001.1334",
amount: "10MGC",

time: "161001.1334",
amount: "10MGC",

time: "161001.1329"
amount: "53M420K741GC",

time: "161001.1329",
amount: "10MGC",

time: "161001.1328",
amount: "1MGC",

time: "160930.2327",
amount: "64M420K741GC",

In my mind the answer should be 53M420K741GC or 10MGC, but neither was right, nor was anything else anywhere in there.

The locks are a little bs but they're not accurate with their time constraints.

Someone earlier posted that the amount needs to be formatted as an int, but that's wrong. From my experience (probably cracked about 25 of em) the string is what works (e.g. "12M340K2GC")

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Lichtenstein posted:

I got confused about scriptors, being the coding noob I am.

What I wanted to do, is make a script where I dump all npc locks I dug up, with calls to my cracker, for the convenience of only entering a single line of script after kernel.hardline (I find it more convenient to paste from the shell log file to a text editor, than deal with the lovely in-game text selector). So the entire code is meant to basically look like this:
code:
function (context, args)
{
	#s.dickbutt.mycracker({target:#s.npc.loc1})
	#s.dickbutt.mycracker({target:#s.npc.loc2})
	#s.dickbutt.mycracker({target:#s.npc.loc3})
	#s.dickbutt.mycracker({target:#s.npc.loc4})
	#s.dickbutt.mycracker({target:#s.npc.loc5})
 	...
}
My trouble being, I can't really pass a scriptor as an argument other than making it a call, like ({target:args.npc1.}). Which feels like a dumb and wrong way to do what I'm trying to do here. I think I'm supposed to wrap this poo poo in a small function whose sole purpose is to return the scriptor in question, but apparently Ican't get them right.

Can anyone show me how my bad pseudocode should have been written?

it's the age old problem, you can't do what you want based on the game's restrictions. I even tried to decompile the scriptor .call function so I could reverse engineer build my own scriptor objects, but that's fairly impossible to do without this / prototype.

The best way to do what you want to do without forcing you to pass a scriptor as an argument, is to build some big fuckoff function like this:

code:
function returnData (i, args)
{
	if (i == 1) { return #s.npc.loc(args} }
	else if (i == 2) { return #s.npc2.loc(args) }
	else if (i == 3) { return #s.npc3.loc(args) }
	...
}
Then you call it with your target number and the arguments you want to pass (e.g. {} or {open:"news"} or whatever).

The upside to this approach is that it works. The downside is that it breaks every time npc locs reset and you need to update your code.

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Usenet Magic-User posted:

thanks, also i posted in the discord for auth if thats an active thing

So um I guess there isn't a default human easily readable one?
This is mine:
<color=#FFFFFFFF>>><color=#9B9B9BFF>halperyon</color>.<color=#1EFF00FF>helpdesk</color> { <color=#00FFFFFF>password</color>:<color=#FF00ECFF>"sky"</color>, <color=#00FFFFFF>option</color>:<color=#FF00ECFF>"helpdesk_roster"</color>, <color=#00FFFFFF>roster_pass</color>:<color=#FF00ECFF>"lassie"</color> }</color>
<color=#9B9B9BFF>abandoned_ldi221</color>.<color=#1EFF00FF>info_6aiwqp</color>
<color=#9B9B9BFF>anon_anuw21</color>.<color=#1EFF00FF>extern_94a5b3</color>
<color=#9B9B9BFF>uknown_ih72qq</color>.<color=#1EFF00FF>access_h59dn2</color>

<color=#FFFFFFFF>>><color=#9B9B9BFF>anon_anuw21</color>.<color=#1EFF00FF>extern_94a5b3</color> {}</color>
<color=#FF00ECFF>LOCK_ERROR</color>
Missing <color=#00FFFFFF>ez_35</color> unlock parameter. Current parameters {}


I can filter it but it would have been cool to have by default

With a single regex find and replace in Notepad++ you can remove every single color tag. It's about the only reasonable way to go about things.

Adbot
ADBOT LOVES YOU

Ruggan
Feb 20, 2007
WHAT THAT SMELL LIKE?!


Mr. Jive posted:

So writing scripts that read shell.txt isn't out of bounds? I thought that was mega haram.

No, the whole reason I used it in the first place was for multi-line copying, which wasn't supported last I checked.

  • Locked thread