-
Posts
3,432 -
Joined
-
Last visited
-
Days Won
289
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by hooovahh
-
Oh yeah I forgot about that. This is the Salt that gets applied to the MD5 of the password. Starting in 2012 NI started salting the block diagram passwords. The salt that gets applied is something like the number of all String, Path, and Numeric controls connected to terminals. I think this does go into clusters and arrays so the work actually needs to be recursive. This ends up being a 12 byte salt, but I think 9 bytes are always 0. Of course you don't need to do all of this, to figure out what the salt is. I mean all you need to do is guess three numbers, all of which are the number of controls on a terminal so you know that the value will probably be small. So when I wanted to figure out what the salt was I would just keep guessing until a match was found. It was easier than trying to look into the VCTP block to find all objects, and then all terminals, and blah blah blah. If you have a VI that is passworded correctly then the only unknown in the equation is the salt. I mean lets use this example equation (note that the actual one is different): Result = MD5(Hash 1 + Hash 2 + Hash 3 + Salt) In a valid passworded VI I can pull out each of the variables from the VI other than the salt. So I just made a VI that sets salt to 0,0,0, then 0,0,1, then 0,0,2, etc, until the equation matches. Fun story: Years ago we were in a meeting with a few LabVIEW champions and LabVIEW R&D and the discussion of protecting intellectual property came up. Someone was asking NI about ways they could tighten up their security. I made a suggestion of encrypting the password with the number of string terminals in a VI, knowing that this was something NI already was doing. Another LabVIEW Champion said that was a bad idea since that could be figured out by simply opening the VI and looking at it. I had to inform them that I said that knowing that that scheme was actually used by NI, and I put that out there to subtly let R&D know we know about it.
-
When a VI is in a library, the password is stored in the VI, and in the library, and there is some kind of link in the password of the VI to the library, in the VI. So if you recreate a VI, and it doesn't have a password but the library does, or if the two passwords don't match, then you will get that error. Now that I'm searching for it I can't find much, but Flarn also had some code for getting file structures of a VI. His personal site had a few things but seems to be down at the moment. http://flarn2006.dyndns.org/llvim/#downloads Just be aware that most of his stuff is viewing and editing the objects in a VI, so I'm not sure how useful it will be. But he should have some general file parsing stuff.
-
I reversed the PHP code into LabVIEW here as well, adding just a few features. Also you've probably come across Flarn's stuff, he has some code for object deconstruction getting into pulling out and manipulating objects in the LabVIEW source. Which is neat but probably isn't what helpful for what you are doing.
-
It is not. They will not. As stated this is how all programs work. You cannot keep the executable safe, while also having it be open enough to execute it. I do hope you share anything you discover with the community, I just expect what you will discover is that reversing a binary of any kind to its source will take forever, be error prone, will be incomplete, and won't be very useful. This will especially be true for LabVIEW as the tools for this disassembly are less mature than other languages.
-
This likely won't get you very far. Yes you have the files that are in the EXE extracted which is useful. And in theory you should be able to add all those files to a project and rebuild it. But if you are trying to do this so you can rebuild in a newer version of LabVIEW, or so you can edit some part of the EXE, then you aren't going to be able to. When a set of VIs are turned into a binary, they are compiled for that that target and runtime version. Then in almost all situations the block diagrams are removed, and in many cases the front panels are removed. What is in the EXE is then still VI files but most are just the compiled component with no source, and no way to edit them. If when you built the EXE debugging was enabled then block diagrams and front panels will still be included, and then extracting the files will mean you can get the VI source out, and then it can be recompiled or edited like any normal VI. So the files you extracted could probably be added to a project, and then rebuilt, but you won't be able to edit anything in any of the VIs. I guess you might be able to replace one of the VIs with a new one from source if you recreate all the functionality of it, and have the same connector pane and name but I've never tried that. Still anything you discover is good information and the community welcomes any thing you are able to figure out.
-
VIPM packages support Post Install VIs, and Post Uninstall VIs, and in there you could have a VI that edits the LabVIEW.ini file to add or remove things. I also don't have a 2009 machine to test it with, but if this ever became an official thing I'd encourage the use only after the point NI made VIMs official. I didn't use VIMs in pre-2016 for anything real just experimenting and don't know the stability of it in earlier versions.
-
Oh another consideration with this is currently OpenG Array tools work in LabVIEW 2009+. This would make a version which would only be compatible with 2017+.
-
Poll on Architecture and Frameworks
hooovahh replied to drjdpowell's topic in Application Design & Architecture
SMorRES - Scalable, Modular, Reusable, Extensible, Simple. I do like architectures and frameworks to be simple, but not at the cost of scalability, modularity, reusability, or extensibility. -
Sure, why not. OpenG array tools are great but could have used improvements over the years, from inlining, to conditional terminals, and now VIMs. But to pump the brakes a little, I heard some rumors NI might also be in the works trying to make their own VIM array functions. No solid timeline and no idea what functions they are tackling, or distribution method. Then again we don't need a rumor about what NI might be doing to dictate what we are doing. Also I have no idea who is in charge of OpenG, or how to contribute to it. <shrugs>.
-
I just tested on a fresh 2019 machine and I also needed SuperSecretListboxStuff=True in my INI.
-
Well some of these posts are from 11 years ago, and there have been lots of back end changes since then. We try to keep all the content we can but in some migrations things are lost. That being said I can download the newest attachments. A while ago before I was a moderator there was a pretty catastrophic crash with all content of the forum being lost. One such awesome engineer realized he had setup subscriptions to the forum, and would get an email for every reply someone made. Because of this he had a record of all communications made on the forum and provided it to the site admin. I wasn't a mod then so I don't have all the details but with the help of Michael and this guy they were able to bring back lots of the old content as LAVA 1.0 Content which you'll see from time to time. I'm unaware of what happened to attachments then, but I assume they were all lost, or manually reuploaded. Edit: Here's more info on the crash.
-
How do I open the right-click menu when I can't click the object?
hooovahh replied to Sparkette's topic in User Interface
Well I'm a bit confused. When I made this post I know that I was able to copy the 0px splitter, but now that I'm attempting to I can't get it to work. I'm in 2018 SP1 f4 now but doubt that extra patch level broke this feature and more likely I did something different then, or it copied it as 2px and I didn't realize it. I think a more useful thing would be to have a VI that can turn a selection of splitters into 0px ones, or back into 2px ones. This VI could be invoked on a VI and then it would make editing and positioning them a normal process. But Flarn's magic eludes me. -
Poll on Architecture and Frameworks
hooovahh replied to drjdpowell's topic in Application Design & Architecture
Since 2011 I've been refining what I call Glued (Global User Event Driven) architecture. It is User Event driven using a publisher and subscriber model, with variants and variant attributes as the data containing things like the Request Data, event name, who requested the action, who is to perform the action, and GUID among other things. These parallel actors default to non-reentrant so that probing and debugging is easy (and possible on RT), and don't get spun up or down but instead have a known number of them at test start. They all start at once, and they all stop at once. If an actor needs to restart it can go through the queued message handler states that perform initialization but the only way to actually stop the actor is to stop the application with a global event, which is an event that all actors subscribe to. The actors are part of a Library but not Class. The architecture also supports events that are request only, or ones that will wait on a reply, and can do this by leveraging Futures or Promises. There is scripting tools for generating actors, template projects, or adding methods to existing actors. Manual panels, error actor, configuration actor, and probe actor are included with a template project since the majority of projects I have use them. Actors can be ran as the top level VI and events can be sent to itself. This way individual actors can be developed and debugged without the whole application, and without any other actors needed. Each actor can publish to a Sensor which is a scalar double or a string and is name based, or publish to it's own global which is a variant and can contain any data as a variant attribute and read with VIMs. These globals are read only to actors other than itself. Over the years this has been improved to support remote actors running on other targets such as RT with Network Streams being the back end for this. Requests for action can be sent to these remote actors, and reading the actor's global, or Sensors can also be done locally or remotely. It sounds like a lot of extra bells and whistles and there are times I'll start a new project just doing my own thing from scratch. And every time I've done this I ended up regretting it because some feature was built into Glued that I would have to re-write or hack in my custom project. Over the years I've just convinced myself that even small projects should start with some actor based design. -
A group is randomly missing from a TDMS file
hooovahh replied to russellb78's topic in Database and File IO
Show us your code if you can. You can invoke a flush TDMS, but I suspect it is something with errors that aren't being handled. -
I didn't plan on git or Tools Network. The Tools Network has a larger barrier to entry than I want to mess with for something like this. And I've been lazy and just never done anything with Git. The source is all there when you install it, the only thing missing is the VIPM config, and a Pre-Build VI. I use Remove Duplicates From Array probably the most, and also I think I use Foreign Key sort quite a bit.
-
Silent Install of LV2019 RTE
hooovahh replied to Neil Pate's topic in Application Builder, Installers and code distribution
What are the popup dialogs you are seeing? Like the normal ones asking for what software options? Or asking to accept eula? I haven't messed with silently doing things since the the package manager got involved, but the NI installers I've been using have needed "/qb /AcceptLicenses yes /r". -
The only thing to add to Neil is that the Wait Until Completion should be True if you are going to read the standard output after it is complete.
-
Negatory, I've been going every other year and NI Week every other year.
-
Your file doesn't exist, or you typed it wrong. I just did a test where I made a batch file with ping localhost as the only thing in the file then did the same thing you did and it worked. I'd suggest putting an output on your error, and Standard Error to see if it returns anything like file not found. Also you may want to test small with a batch file like dir or ping.
-
Popup warning when using Set Source Scope
hooovahh replied to pktl's topic in Object-Oriented Programming
Breaking News: R&D expert at technology company predicts the end of the world within the next year! -
Object-Oriented Programming — The Trillion Dollar Disaster
hooovahh replied to styrum's topic in Object-Oriented Programming
I had this discussion with a good friend of mine who is a senior developer in a texted based language. He has 15 years of experience in real world development, has probably 10 developers under him, and he keeps up with all the latest in the tech and software development world. He mentioned to me a few times that in his experience he sees the projects that have many many layers of abstraction, and code hiding behind code, only to find that debugging them is difficult. And even searching for what a function is actually doing leads down many holes of things calling things. Where the intermediate developers make a program that is straight forward, and does what it needs to. His conclusion is that his years of experience of seeing when things work well and when they don't, help guide him how complex or how simple a set of code needs to be. And when he talks about OO he very much is open to the idea that he just doesn't fully get it, but all of his experiences are summarized with "It looks great and it sounds like it solves my problems, but then in practice it falls apart" and I followed it up with a reply I've heard and that was "Well maybe you just don't fully grasp the right way to use it." And his reply was "That's what OO experts tell me." When it comes to LabVIEW I feel like I have a good mix of OO and non-OO code. Having no classes in a large project is probably a bad sign. And having all clusters be a class, is also probably a bad sign. Hardware abstraction, and plugin architectures is a couple places that OO just fits in really well in my mind. Reuse code in general also works well. Everywhere else I'm not apposed to it, but I can see some draw backs. -
Oh for pete's sake! I guess AppData is probably a more appropriate place to store this stuff. The source is actually here on LAVA. It is the full installer that I hosted somewhere else because I didn't want to store a large single EXE on LAVA, but the source seemed appropriate enough to host here. Work hasn't pushed Windows 10 on me for my main development machine yet so I haven't tried this in that OS.
-
If your front panel is broken up into panes (which I think would help you if it was) then you can also set the color of the pane programatically with the Pane Color property.
-
So I wasn't there but there was a public announcement at GDevCon about a new edition of LabVIEW called Community Edition which is the LabVIEW Professional version (I read that as application builder included), and completely free with no watermarks for non-commercial use. NI hasn't made any post about timelines, or other details yet but I hear those are in the works. This is obviously a huge thing for LabVIEW as any monetary barrier to entry will discourage new developers from experimenting with LabVIEW. And then there is the fact that those that are familiar with LabVIEW, can keep up with the newest version outside of their company, or when they are between jobs.
-
I sent Michael an email. Not sure where that Contact Us goes but I don't see it.