Turtle Virus has destroyed my pipeline - How to annihilate it?


#1

I have ~100 Maya Binary files with the turtle node in them. My files all ‘require’ turtle and will force re-enable turtle and further infect every other scene I open if I don’t realize it happened.

Converting all to ascii is not ideal, I could write a python script to assist and possibly a notepad++ script to remove the line then another python script to convert back but…

A lot of them can’t be converted due to nodes that Maya doesn’t recognize that are used by unreal engine tools. There isn’t a missing plugin involved here, they must remain binary. And I need the nodes or all is lost regardless.

What can I do? The files that are generated end up with these turtle nodes in them and my software can’t import them or even recognize them anymore because of it…

This is unforgivable Autodesk… Do not purchase industry standard software if you don’t have the ability to develop it!


#2

In Maya 2015 SP6, they added the ability to remove required nodes.

The relevant MEL commands are:


#3

[QUOTE=marcuso;27982]In Maya 2015 SP6, they added the ability to remove required nodes.

The relevant MEL commands are:

I tried it :frowning:

I deleted the turtle plugin altogether. Then I intended to go through my scenes but…

oldplugins = cmds.unknownPlugin(q = 1, list = 1)
for plugin in oldplugins:
    if "Turtle" in plugin:
        cmds.unknownPlugin(plugin, r = 1)
        print "removed a turtle",

Result:

# Error: RuntimeError: file <maya console> line 4: Plug-in cannot be removed - node/data type defined by it still in use. # 

So I tried this:

import maya.cmds as cmds

# Delete turtle virus
for i in cmds.ls("Turtle*"):
    cmds.lockNode(i, l = 0)
    cmds.delete(i)

It deleted the nodes, however…

If I have file A and file B. And file B references file A, when I remove the nodes from file A it is fine. There are no nodes and no error about unknown nodes resulting in data loss pop up anymore, it’s gone.

However, file B references file A. File B has the offending Turtle nodes. I run the script, they get deleted, I save the file. All should be fine, neither file A nor file B have the turtle nodes anymore. I re-open file B to be greeted with the error. File A does not have this error.

The turtle virus will always return unless all references are removed (unloading means they’ll come back when you load it the next time).

That might be a solution if removing a reference wouldn’t result in my losing a lot of work each time. But it’s not.

(ps… what is a 3 letter name for a game dev software? I can only think M3D as short for Milkshake 3D… I have to refresh to get the Python question…)


#4

try removing all the reference edits in file B?


#5

Another classic case of why MB files should be treated with caution. with MA you can (a) find and fix by hand and (b) check the files before they get saved to source control and reject the infected ones. I don’t allow MA checkins anymore for exactly this reason


#6

i have nothing to add but my empathy, the whole requires thing is a virus for your scenes. We’ve switched to ma because of turtle specifically. I like theodox’s suggestion of gatekeeping your source control too.


#7

Yeah, we bumped into something similar here last week. Except instead of Turtle it was Mentalray messing with us. Turns out not installing mentalray by default with 2016 broke some files. Also sadly because the Mentalray plugin defines some custom data types, you can’t properly clean it without the plugin being installed, unknownPlugin and unkownNode are awesome, but they were only able to clean up 99% of the problem.

Luckily we’re like 95% MA files these days, and I think this is going to finally push me to go back and swap everything else over so I can avoid this mess in the future.


#8

Just reading the title of this thread gives me a migraine.

I was able to do this and get rid of the dependency, but in the context of our pipeline we didn’t have to worry about references.


types = cmds.pluginInfo('Turtle.mll', dependNode=True, q=True)
nodes = cmds.ls(type=types, long=True)

if nodes:
    cmds.lockNode(nodes, lock=False)
    cmds.delete(nodes)

cmds.flushUndo()
cmds.unloadPlugin('Turtle.mll')


#9

as a junior td with 9 years experience working in IT security I was given the choice of establishing a pipeline goal and lecturing my entire team on MB and MA files and the impacts and withdrawals of working with both files. In the end only die to the fact that i set up a major DMZ and Outsnapped Firewall with IDS involved I chose to switch to MA.

If we did not have a DMZ up my boss wanted the MB for security reason along with this really odd encryption plugin that an old TD had used with it.

On top of all of this all i can say is use common sense, not only from turtle in maya but there are other horrific things that can happen.

train the user to be smarter and test them on their knowledge every few months :slight_smile:


#10

train the user to be smarter and test them on their knowledge every few months :slight_smile:

If that worked we’d all be out of jobs. But in the real world – job security for life!


#11

PS – the notion that MB is ‘secure’ when anybody with a cracked copy of maya can open it (and insert auto-executing script nodes with root privileges!) is absurd. You can’t inspect an MB file without opening it in an environment where it will execute its payload before you can do anything. It’s way less secure than MA.


#12

I too ran into this issue with both Turtle and Mental Ray. To say the least it’s annoying as hell.
For Turtle, instead of having to batch hundreds of MA files would it be reasonable to add a File New, Open and Save scriptJob in userSetup to try unload plugin and delete the nodes? Assume it would have to be evalDeferred.
It’s not really resolving the issue and is a quick band-aid but at least it would cut it off from creeping back in.


#13

we use a Post Scene Read callback to strip out unwanted/unknown plugin’s.
for earlier versions of maya without the unknownPlugin command, we scan the first 20 lines of the ASCII looking for the “requires” statements and strip them, then re-open the file.


#14

The Turtle virus has been fixed: https://forums.autodesk.com/t5/maya-ideas/remove-turtle/idc-p/7993472/highlight/true#M474
Apparently it has been fixed since Maya 2017. But I just found out today. Thought I’d share in case it slipped past others’ notice, too. (Still, this thread provides valuable info for dealing with other pesky plugins.)