许多程序,如runas
Windows 和su
*nix 上的程序都采取措施确保用户不会做一些愚蠢的事情,例如在批处理文件中写入密码,方法是确保密码不能通过管道传递给它或作为参数提供。
在工作中,有一项任务需要由另一名员工重复完成,需要以域的管理员帐户登录。我正在编写一个存根应用程序,该应用程序调用CreateProcessWithLogonW
以完成此操作,而他们不可能看到纯文本密码,也不必给他们管理员密码。
我担心的是,如果使用十六进制编辑器(甚至是纯文本编辑器)打开密码,密码可能会在可执行文件中显示为纯文本。我是否应该采取措施确保在此应用程序中以混淆方式生成密码?
例如,从这样的结构开始:
typedef struct _MYPASS
{
unsigned int first4;
unsigned int next4;
unsigned short next2;
unsigned char last1;
} MYPASS;
然后对位进行运算以生成与登录密码对应的 ASCII。
这对于内部应用程序来说是否过大?