Hiding SETI@home clients on computers at work
By Sami Gabizon
The procedure I'm outlining here has been tested and worked on every win95/98 I installed it on. I think it'll work on NT as well, with minor changes, but I strongly recommend testing it for some time on a single computer and then continue to others.
Steps to follow in the first (or test) computer. These steps you do only once because after that you'll only copy the directory with all its contents to the other computers.
1. Create a subdirectory named SHELLSET (or any other unsuspicious name you come up with) under the SYSTEM (or SYSTEM32) directory in the WINDOWS directory. In this subdir (we'll call it setidir from now) the seti client will run.
2. Copy the Seti client to setidir and rename it to shellrun.exe (again - something unsuspicious). This is important because, when the client will be hidden, it will be visible in the running processes list, so choosing an unsuspicious name is crucial in undetction.
3. copy SetiSpy to setidir. I chose to rename it also because i didn't want any program in the computer to start with seti. It is not necessary, but it is a result of experience (someone once found SetiSpy by using find files with seti* and deleted it).
4. From any running client, copy the "state.sah" and the "user_info.sah" files to setidir. "user_info.sah" is necessary for the client to automatically connect to the seti server the first time you'll run it. The "state.sah" file is needed to prevent SetiSpy from displaying an error message about not finding the "state.sah" file. As of version 2.5.1 of SetiSpy, there is an option to ignore the presence of state file on (SetiSpy's) startup. This option is needed because from time to time there is a connection problem that causes the client to stop running after it completed a WU, sent its result file but not been able to get a new WU. This leaves the setidir with no state.sah file and the next time SetiSpy (prior to version 2.5.1) run, an error message is displayed on the screen - which ofcourse exposes the fact that a seti client or something is running on the p.c.
5. Run SetiSpy. Now, because it is the first time SetiSpy is launched a disclaimer window will be shown. Choosing "Agree" will get you to the first page of info on the current WU. This disclaimer is only shown when there is no "setispy.ini" file in the directory in which SetiSpy is run from.
6. Go to the Client page and into Configure. Enter the client path, any client parameters if you need some (the proxy for example) and **VERY IMPRTANT** the client window title. This is the name that is shown in the title of the client when it runs. If you renamed the client to shellrun.exe then the title will be : shellrun (to be sure, run the client and see). Now check the "This is the full title". The "Keep alive" section is needed if you want SetiSpy to run always (I don't use it). In the "Client control" check "Hide client after (re)start", "Restore client minimized" and "Start client on SETI Spy start". Press the "OK" and you'll return to the Client page. You can test your configuration by pressing "(Re)start". You should see the client launched on the taskbar and then disappear. Notice the check that appeared in "Hide client". You can uncheck it to see the client running and check it again to again hide it. Just don't forget to leave it checked.
7. Go to the Setup page. This page is mainly for the operation behaviour of SetiSpy. The most important here is in the Client section: PUT A CHECK IN "Ignore presence of state file on startup".
8. Now exit SetiSpy. A setispy.ini file is generated in setidir and it should look like the following:
CPUType=Intel Pentium III (Coppermine) processor
9. If all is well, you have created a configuration to run the client hidden. Now you have to decide how to run SetiSpy. There is an option to run it all the time and an option to run it for a brief time just to hide the client without it staying resident. I chose the second option for the following reasons: a) I don't want more than one extra program to show in the process list if someone hit the ALT-CTRL-DEL. b) The connection to the Internet in my work is stable most of the time, so I don't need SetiSpy to monitor the client's progress and administer it if it fails to connect. c) Last but most important for you NT users, I don't know if SetiSpy is able to run as a sevice with no visible icon in the task bar. I have asked the creator of SetiSpy (Roelof J. Engelbrecht) if he can implement an option to run SetiSpy without the icon visible. He answered that It is a little complicated for him (something about tweaking the windows messaging subsystem), so he didn't promise anything. Maybe the next versions wil
10. The next thing you have to decide is where to put the command to launch SetiSpy. One option and this is my chosen one, is to put the appropriate line in the registry, under run services key (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices). This is better than the run key (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run) because when the computer starts, it stops at a login screen. All programs in the Runservices key will run even if nobody logs in to the computer. Only after the login takes place all programs under the Run key are executed. If you have a computer that nobody works on for sometime in a day, then you'll have to use the RunServices key. But if there is no such key under winNT, either look for the right key or use the run key. If that key also is not to be found in NT, then you have other three options. a) Use the Task Scheduler (but then the command will be visible to anyone who opens it). b) Use the StartUp folder (again, visible). c) Put the line in the "win.ini" file (Run=...).
11. After you decided where to put the call for SetiSpy, this is my recommended line. Note the use of the "-loader" option: c:\windows\system\shellset\setispy.exe -loader c:\windows\system\shellset\
12. There is a problem to close the client when the user shuts down the computer under win95/98. I don't know if the problem exists under WinNT, but in any case there is a solution at least under win9x. Copy from the \windows\system directory a program named "conagent.exe" to the setidir directory. Enter its properties and uncheck "Warn if still active" in the Termination section of the Misc page. This will allow the client to be closed quietly. I think there is another way to do it under WinNt, but I don't know how.
At this point you have one computer configured for running seti hidden. This is the time to test it working under some special conditions. For example: restart the computer and watch carefully how SetiSpy launches the client. There is a brief moment both SetiSpy and the client are visible in the task bar, then they both disappear, but it is hardly noticeable by the average user. Make sure the client is running at startup. Exit windows in all sorts of way: by shutdown and then restart, by restart the computer, by pressing the resset button (users do that from time to time) etc. In each case, make sure the pc recovers and the client is running hidden and unnoticeable.
After making sure that SetiSpy is working o.k. , you can copy the setidir directory to another computers. You must replace the work unit in the other computers. These 2 steps (copying the setidir directory and replacing the WU) you can do from your computer provided that you have administartor capabilities. The only thing you have to do in the other computer is putting the launch line where you decided to put it (If it is in the registry. Otherwise, you can do even this step from your pc).
This concludes the procedure I have implemented in my work.
TIP: If you have users who shuts down their pc at the end of the day, you might consider configuring the pc bios (under the power section), to automatically restart the computer at a specified time.
Hope it is detailed enough.