1. This forum is obsolete and read-only. Feel free to contact us at support.keenswh.com

Virus scripts for assault hacking

Discussion in 'Programming (In-game)' started by Tony Hughes, Jan 4, 2015.

Thread Status:
This last post in this thread was made more than 31 days old.
  1. Tony Hughes

    Tony Hughes Junior Engineer

    Messages:
    715
    I've been looking through the steam workshop at in-game scripts and noticed a couple that have been tailored for use in assaulting ships. Hopefully the author won't mind me extracting their scripts capability comments, as I'm unsure of the forum rules around linking directly to their slightly dubious releases.

    - Turns off batteries
    - Turns off turrets
    - Turn off gravity
    - Reverses all pistons
    - Messes with gyro settings
    - Screws up all part labels
    - Turns off beacons
    - Turns off all remote control blocks(for any drones connected)
    - Kills cockpit controls(Thrusters,dampeners,wheels)
    - Throws everything from connectors
    - Closes doors, locks people in
    - Turns off all lights
    - Activates any drills, grinders
    - Turns off med room(no more respawn)
    - Turns off all merge blocks
    - Spins up rotors before detaching them. - WIP
    - Turns up volume of all sound blocks/activates them
    - Turns off any welder(s)
    - Removes all friction/power/strengh from wheels
    - Makes everything use the conveyor
    - Turns off safety on any warheads, detonates them.
    - Turns off ore detector
    - Changes ownership button panels to "anyone can use"
    - Turns off antennas

    This all happens at once and the example above also renames every ship component to a blank, making it very hard for the victim to fix things. Basically anything that can be messed with is.

    Another script variation allows you to basically take full control of the target ship.

    I've tested them on some of the easy start ships and they work as advertised.

    To me, it seems that the inevitable outcome of the above is that the in-game scripting capabilities will be nerfed considerably in future, probably to the point of being more or less useless, which would be a great shame.

    Can I ask in advance that the developers take a somewhat considered approach when dealing with this, please? Could we allow these kinds of script to be run on single player mode, but not on multi-player?

    While they are destructive in multi-player and I wouldn't want to be on the receiving end of one, they're actually really fun in single-player mode because if you're running them then you're not the target and no-one else will have their creations and probably their entire game ruined.

    I think they're actually pretty good tutorials on how to use the different block actions, even if it's for nefarious purposes.

    They have high role-play value also; after all where would Luke Skywalker be without R2-D2 hacking the doors of the death star? Would earth have survived if the virus hadn't been transmitted to the alien ship in Independence Day. Probably not.

    What do people think about them?
     
    Last edited by a moderator: Jan 4, 2015
  2. Tilted

    Tilted Trainee Engineer

    Messages:
    10
    Ive used them also but its actually easy to prevent some of them
     
  3. Morte

    Morte Trainee Engineer

    Messages:
    29
    I find it quite funny that there are so many of these.

    Almost every page has a few viruses but only 1 or 2 that I seem that claim to be "anti-virsu" or "firewalls".

    Stopping I would assume would be as simple as making sure then any block that is added to the grid is turned off even before a script can be run from said block. But that means a lot of effort of naming every block to make sure that no one can hack it.

    Then what happens when you can send data across Antennas? You can't even use a naming convention unless you do it to all stations and ships, even thats not safe unless you have turrets guarding every single functional block that can be tapped into with a simple grinder and welder.

    Personally, ownership should not be allowed to change. That is what I find broken the most.
     
  4. bladedpenguin

    bladedpenguin Apprentice Engineer

    Messages:
    207
    It seems to me that the cure is to sandbox programmable blocks so they respect ownership. It's not a problem if a troll has a script that eats your lunch and kicks your dog if his programmable block can't affect your ship any more than the troll itself can.

    The problem I see is that a troll can gift someone programmable blocks, so perhaps programmable blocks need an "authorized" checkbox that gets checked when the block is built and unchecked whenever ownership changes. In order to use a script someone gave you, you would open up the block and manually authorize the script to mess with your stuff.
     
  5. Cagatay

    Cagatay Trainee Engineer

    Messages:
    70
    Most of the effects of this script could be reverted with no harm using the right code. As I am working on one right now. I have the revert part ready now, and tested a lot. Now its time to make real-time protection :thumb:
    Its a rather easy virus to make and even easier to revert damage done if you know what you are doing even a little bit.(excluding detached rotors and exploded warheads)
    So I do not think that the script is overpowered nor should be excluded from mp. The effects & damage can be easly prevented and reverted.
     
  6. soat7ch

    soat7ch Junior Engineer

    Messages:
    605
    I think things like this make warfare more interesting. I don't think it should be changed much as well, because i see very little chance of someone flying up to a armed warship and having a successful docking.
    If someone manages to board a ship and install that virus then you as defender have failed.

    But you're probably right, others shouldn't be able to change the ownership of your blocks just so easily.
     
  7. Cagatay

    Cagatay Trainee Engineer

    Messages:
    70
    Others already cant change ownership of your blocks.
    It is like this; Timer0 10s (Run the script) + Programmable block(some evil script)
    You start the timer and change both of the blocks ownership to enemy's. So they could affect your enemy's blocks.

    Edit: Also you are right, having such evil scripts make you to be more creative when designing your ship and kind of forces you to either to get or write scripts. Therefore it makes the game more insteresting. Atleast for me.
     
    Last edited by a moderator: Jan 4, 2015
  8. a2457

    a2457 Senior Engineer

    Messages:
    1,366
    but scripts can only affect the same grid the computer block is on.
    you would have to build all this on a blockgrid that you do not own.
     
  9. Cagatay

    Cagatay Trainee Engineer

    Messages:
    70
    You can have it connected with connector too
     
  10. 0xicl33n

    0xicl33n Trainee Engineer

    Messages:
    2
    Heh my code really evolved... Im surprised it was posted here. Thats literally the workshop description for Shi'ido :D

    Lots more evil things have been added to it. When replication is possible,it will try to take over prog blocks too. Though i cant take all the credit, i do have a few people working with me. When the api allows it, i personally would like it to do a little less things when its first launched. The Trojan version is also very evil, very very evil. I love it.
     
  11. Volfram

    Volfram Senior Engineer

    Messages:
    1,564
    "No fight is fair if some methods are restricted and others are not."
    -Opticam

    E-warfare has come to Space Engineers, like it or not. Personally, I look forward to seeing how it develops.
     
  12. a2457

    a2457 Senior Engineer

    Messages:
    1,366
    yess, but for that you need to find an connector you can attach to, i mean make your way there under fire, connect, switch ownership, yadada.


    now do not get me wrong, i just do not want those who are not familiar with scripting or programming to think, someone can just log in to a multiplayer game and pull off a virus infection on every "stuff" with no effort.

    actualy it just forces the usage of clever mechanisms (not software) to have sealed connectors for example. behind a door, for example.

    quite nice if you ask me :D
     
  13. Zourin

    Zourin Apprentice Engineer

    Messages:
    142
    better script simply reassigns ownership. Useful both in intrusion and capturing cargo ships. This is just a troll script.
     
  14. PaladinX333

    PaladinX333 Apprentice Engineer

    Messages:
    234
    Give some people programming and the first thing they do is make a virus.

    :p
     
  15. Tony Hughes

    Tony Hughes Junior Engineer

    Messages:
    715
    Thanks for your comments. I ran the scripts in creative after switching one of the easy start ships to an NPC faction. I only had to build a programmable block and didn't gift it to the NPC faction. It didn't seem to have any difficulty with affecting any of the blocks, regardless of faction. Maybe that's on the ToDo: list or maybe it's different to survival/m.p. games, not sure. Haven't had time to test that yet.

    Perhaps I was premature in saying that the M.P. games should be limited, while solo games shouldn't. I would like to see both, with as much capability as possible regarding the in-game programming. Ideally, if and when the attennas transmit code, I'd like to be able to find an abandoned military base in solo exploration mode that warned me not to approach and then applied all of the above to my ship if I continued on. Would make it challenging and fun...and I could always reload.

    Ultimately though that would be initiated by my actions, not by those of someone else. In multi-player games, that's not really true and I foresee a lot of bug-reports being generated by m.p. players who don't really know or wish to know about scripting, relating to strange behaviour when simply flying around.

    Eventually, the m.p. game admins and Keen may get a little tired of having to pick out real bugs from those generated by in-game scripts and may choose to remove the capabilities of in-game programming rather than try go to the effort of resolving them in a way that allows the behaviour, just with rules. Even if rules are applied, I suggest that they differ between game modes. What's acceptable in single player mode may not be in multi-player and I would like to see both treated appropriately rather than lumped together.

    It's more the loss of functionality made available to the in-game scripter that I'm concerned about really. Most of the utility scripts that I've seen use at least some aspects of the systems affected by the virus scripts in a benign way and I worry that the developers will clamp down at some point rendering them pretty much useless. I just ask that they do so in a measured way. Hopefully they will, given the amount of effort that they've put into adding it in the first place.
     
    Last edited by a moderator: Jan 5, 2015
  16. seeker0003

    seeker0003 Trainee Engineer

    Messages:
    49
    Perhaps an option for blocks to require player input.

    Pros: Virus immune, no need for script protection.

    Cons: Zero automation. No helpful scripts, no timer blocks, no sensors, no drones, nada. Maybe even no antenna control, if you want to be more realistic in the code idea. Wouldn't go so far as direct access only, but you could.

    As an idea, this would be a checkbox option. Scripts would throw a handled exception when trying to access one directly or via loops.
     
  17. Tony Hughes

    Tony Hughes Junior Engineer

    Messages:
    715
    The more evil the better, so far as I'm concerned, so long as I'm in single player mode.

    I look forwards to the day when I'm in the heart of another 18,000 tonne Mary Celeste drifting empty in exploration space and hit the on button, only to find my world turned upside down... quite literally.

    Would give it a valid reason for being there.

    Good luck with your scripting efforts and I hope they make it to exploration some-day in all their evil goodness. Fun code comments by the way, chuckled at the implications, all the way through reading the script.
     
  18. Sharpshoter740

    Sharpshoter740 Trainee Engineer

    Messages:
    14
    I wholeheartedly agree. This means a lot to combat in Space Engineers, and I would hate to see restrictions on scripts just because someone might "troll" someone else in a multiplayer game.
     
  19. elch

    elch Apprentice Engineer

    Messages:
    241
    "Virus" is not really an appropriate name and maybe that affected some of the reactions in this thread.
    As it is, if some grid is assigned to player, code can be executed only by the owner( possibly by a faction guy ) .

    That means some "enemy" would have to:
    1. Get personal access to your grid -> grind few things and rebuild them.
    2. Input the script into the programing block.
    3. Start it and run away instead just stealing your stuff.

    When ships starts doing crazy stuff, first thing you do is to turn off the programing block and that's it.
    After that you can remove the program and fly uninterrupted.

    It can't spread, it's not <a rel="nofollow" target="_blank">disguised </a>as known, well working program, everyone can read it.
    Everyone knows where it is...
    It's not virus.

    EDIT: Fixes
     
    Last edited by a moderator: Jan 6, 2015
  20. AutoMcD

    AutoMcD Senior Engineer

    Messages:
    2,369
    just this, really.

    combined with: a computer should not be able to control anything that doesn't have the same owner!

    problem solved. If you think gaining access to a computer will let you shut down the reactors and all defenses, think again.
     
  21. Cuber

    Cuber Apprentice Engineer

    Messages:
    262
    Here's an interesting concept: if any sensors aboard the ship detect asteroids, turn the ship parallel to the roid, get some distance and ram it :)
     
  22. seeker0003

    seeker0003 Trainee Engineer

    Messages:
    49
    On the one hand, the fact that scripts can ignore ownership is a problem. Being able to flat out override ownership so easily is an issue. On the other, e-warfare has great potential, and ignoring it seems a waste. Maybe if grids and blocks had a defense level property. For a script to be able to call methods of unauthorized blocks, it would first have to bring the defense level down, at a speed limited per second. A defense repair method could be used to restore the value, and keep hacks at bay. And methods used by programming blocks could have power requirements.
    Code:
    public float codeIntegrity;
    public void HackBlock();
    public void HackGrid();
    
    By making in-game programming possible, Keen has made it necessary to use them, at least in multiplayer, and there are changes that must be made to balance the potential. The safest would be to make in-game programming nothing more than additional automation, but now that the community has e-warfare, that option is almost off the table. Now, they need to make limits to the OP nature scripts represent, without removing their potential. Rough task. Good thing we now their up to it.
     
  23. Bobylein

    Bobylein Apprentice Engineer

    Messages:
    201
    As long as thrusters doesn't have any ownership and are controlled by every chair I don't see too much of a problem with the scripts.
     
  24. ijdles

    ijdles Trainee Engineer

    Messages:
    45
    Maybe they should make it that if you add a chair to a ship, you cannot control thrusters with WASD/scripts while at least one enemy chairs control them.
     
  25. ijdles

    ijdles Trainee Engineer

    Messages:
    45
    instead of wires, all powered blocks could have an option "get power from " (Anywhere/ReactorA/ReactorX/ReactorGroupY)
     
  26. Tony Hughes

    Tony Hughes Junior Engineer

    Messages:
    715
    It isn't a virus yet, but I understand that the author intends it to be as and when the capability to do so is either found or added to the game. So far as I understand it is intended to be an in-game virus, not one that rips your machine to shreds in the background while you're playing, and so will presumably spread from p.b. to p.b. when within antenna range.

    I really hope that it remains in-game and doesn't try to mess with your system for real, otherwise I think I'll just turn off in-game programming full-stop for a few months until the loop-holes are sorted out.

    You can pretty much fit all of the core components, all easily ground from a starter/respawn ship, that are needed to build a programmable block and timer (although you can still turn off the ship defences with just a p.b. alone) into even a x1 inventory and it's not hard to grind anything that you're missing from the target ship (in fact that may help the hacker, because it may cause the owner to leave their control station to try and find them when their hacking alarms go off). Saying that, the author has already developed at least one deployment vehicle to allow it to be run through a connector. On the video that didn't work very well, but in principle it can be done.

    While it's a bug that will probably be patched on the next update, currently you can run the code on blocks that aren't controlled by you and they seem to be affected just as easily as if you owned them. If they do fix that then there is still the gifting method mentioned above and for which people are thankfully thinking of constructive ways to resolve without loosing the basic ability to run utility scripts.

    Gaining access to your ship isn't really that difficult for some I guess. I've never even manged to board one of the armed cargo ships, but others don't seem to have any problems with that, and I guess people have developed methods for doing so in m.p. or will.

    While you can turn off the timer that controls the programming block, getting to a control station in time if you're not quick off the mark, can be difficult. If you're mining at the time then it's particularly hard to notice due to the natural shake and you're almost certainly going to loose your drill head, at least, in the time that it takes to act.

    Finding the timing block isn't so hard, it's usually somewhere at the end of the blank list of components, however there's no guarantee that it's the only one that's been setup and you might find that the timer block just gets switched back on again. Actually, I'm not even sure you can turn off those blocks currently, without using another p.b., since if you don't gift it then the victim may not be able to change the state of the block due to it belonging to another faction. So you might be forced to find it manually and deactivate it with your grinder. Haven't tested that, so don't know.

    Grouping components seems to help, as the last time I looked, the names couldn't be modified, so with some preventative setup, you can at least turn off the gyros and thrusters in one go once you've found and deactivated the timer and p.b.

    I've died trying to do all of the above, several times over, in a reasonably large ship that I found in exploration. Once you die, you don't respawn in the ship medical room because it's been turned off and so it's reload in single player and game-over in multi-player, unless you've got a secondary base somewhere.

    In terms of finding a control station in time, if you're outside of the ship or not at a control station already, I found that grinding into a deep wall and then placing a block behind me so that I wasn't thrown around as much by the ship lurching, was the best method once the ship really started to spin. From there, so long as I had even one construction component in my inventory, I could build enough of a button panel to be able to access the ships systems. But that still took time and I did run out of energy at least once while trying to get there.

    As I said, the more functionality that the virus can affect the more we have available to us for more benign uses and it is fun in single player to try to apply the script and to fix the results, mostly because you can reload when you finally give up and watch your ship lurching off into the distance or when you return to your starter platform after being melted by your own thrusters, swatted by your flailing hull, ground into mush by your drills and grinders, crushed inside your ship as it hits an asteroid at high speed, blown to bits by your own torpedoes or simply when you run out of energy while trying to fix it all. In m.p. though I imagine that this would probably be enough to turn some people off playing again.

    I would welcome any other practical and tested hints on how to avoid, counter or survive this kind of script being applied to a ship. Ultimately the devs will probably patch out a lot of the flaws, in the ownereship and other systems, but I would rather they did so guided by the player (and lets be honest, tester) community rather than just turning everything off or making changes and then hoping for the best.

    Ultimately, if this kind of script can be neutralised as consistently and easily as it can be applied, by any player and without using in-game scripting, then there may be less need for the devs to actually chop out the most useful functionallity available to the p.b. The methods for doing so would just need to be advertised.

    Thanks for all the feedback..
     
    Last edited by a moderator: Jan 7, 2015
  27. ijdles

    ijdles Trainee Engineer

    Messages:
    45
    Take 20 construction +30 interior when you got into an enemy ship to make a passenger seat. Build that in your little hiding hole and sit on it. Then you get 100% energy + safety + control access + 3rd person view, and wait until they fly back to their hidden base.
    They won't know you are there unless they have a script to detect enemy blocks!!
     
  28. BlueG

    BlueG Apprentice Engineer

    Messages:
    119
    First of all, I agree with those who say these aren't yet viruses. They are malicious scripts, nothing more. Viruses are programs that spread themselves. To create a virus would require modifying (or replacing) the program in another block with the virus. If it can also run the other block (rather than requiring a user to do it), then it would be a worm. None of the current scripts can do this, but it seems clear that is the eventual intent.

    Now that scripts respect ownership (at least, according to the news about the last update), this shouldn't be possible. Nor should it ever be. A virus script would be too powerful since it would be exploiting bugs in SE as opposed to any faults in the systems built by players. If a player is careless and doesn't assign ownership, then that's one thing. But if a virus is made that can control assets that aren't owned by the player spreading the virus, then that isn't a fair element to the game. It would be as if, in real life, you somehow hacked the universe and controlled other people's stuff that way as opposed to hacking their stuff.
     
  29. Blaster

    Blaster Trainee Engineer

    Messages:
    49
    A simple solution would be that cubegrid ownership would have its own owner security. If you set owner for an attached part or connected part, it should require the new owner to authorize the transfer via the Info menu before it can do anything. Reasons being private keys not accesible to anyone but the owner. This does not eliminate virus, but it makes it something you have to work for.
     
    Last edited by a moderator: Jan 13, 2015
  30. Rizzitoni

    Rizzitoni Apprentice Engineer

    Messages:
    306
    The issues I have with virus/malicious programs like this is that:

    1. Not everyone is a programmer, so you can completely ruin it for some players who can't defend themselves or have to go find someone else's script and hope it is reliable enough.
    2. New viruses are popping up daily, some of which can crash servers, like the self-replicating ship virus (a true virus in my opinion) and that is no fun for anyone else on the server!

    Now I like the concept of programming, but I think the current implementation needs to be tapered somewhat so that programmers aren't capable of writing the "one script to rule them all".
     
Thread Status:
This last post in this thread was made more than 31 days old.