/* Function: setCompnameFromFile command line command to set computer name from file. Uses a list of files to find computer name. List consists of command line parameters and hard coded *\\device\\floppy0\\compname.txt*. Tries to read each file and extract the computer name in the list till a valid one is found. This is set as computer name afterwards. Parameters: io - <IO>-Controller args - command line */ void setCompnameFromFile(IO &io,char *args) { Indenter i(io); int numFiles=mainSingleton->getArgc(); char **valueNames=(char**)io.malloc(4*numFiles); char **cmdargs=mainSingleton->getArgs(); io.print("Computername file pipe: "); for (int i=1;i<numFiles;i++) { io.print(cmdargs[i]); io.print(", "); valueNames[i-1]=cmdargs[i]; } valueNames[numFiles-1]="\\device\\floppy0\\compname.txt"; io.println(valueNames[numFiles-1]); io.println("Reading computer-name from ..."); for (int i=0;i<numFiles;i++) { io.println(valueNames[i]); wchar_t *buffer2=readComputerNameFromFile(io,io.char2wchar(valueNames[i])); if (buffer2!=0) { setComputerName(io,buffer2); io.free(buffer2); io.free(valueNames); return; } } io.free(valueNames); }
int main(int argv, char** argc) { if (parseArgs(argv, argc)){ return Config::EXIT_NORMAL; } Util::init(); string key = entry(); if (key.empty()){ printc("no key provided!\n", ANSI_RED); print("run cle --help for more information\n"); return Config::EXIT_NO_ENTRY; } printc("cle " + Config::vn + "\n", ANSI_BLUE); if (verbose()){ print("opening entry " + entry() + "\n"); } Util::hideText(); print("enter passphrase > "); string pass = IO::readPass(); Util::showText(); print(); unsigned char* hash = new unsigned char[32]; Util::fileHash((pass + key).c_str(), pass.size() + key.size(), hash); string path = Util::hexstr(hash, 32); if (verbose()){ print("key hash:\n"); print(path + "\n"); } auto file = IO::readFile(path); if (file.fail()){ print("key does not exist under passphrase.\n"); if (IO::prompt("create it? [Y/n] > ") == "Y"){ IO::newKey(path); Crypt crypt(const_cast<char*>(pass.c_str()), pass.size()); crypt.encrypt(path, path); } else{ print("not creating key.\n"); } } else{ printc("entry for " + key + "\n\n", ANSI_BLUE); unsigned char* salt = Util::readSalt(path); Crypt crypt(const_cast<char*>(pass.c_str()), pass.size(), salt); crypt.decrypt(path, path); } return Config::EXIT_NORMAL; }
/* Function: setComputerNameCmd command line command for setting the computer name manually Parameters: io - <IO>-Controller args - command line argument string */ void setComputerNameCmd(IO &io,char *args) { Indenter i(io); if (strlen(args)<2) { io.println("Syntax: setComputerName <newComputerName>"); return; } io.print("Setting Computer Name to: "); io.println(args+1); setComputerName(io,io.char2wchar(args+1)); }
void showName(IO &io,char *args) { if (!*args) { io.println("No username given"); return; } wchar_t buffer[1000]; _snwprintf(buffer,1000,L"Machine\\SAM\\SAM\\Domains\\Account\\Users\\Names\\%S",&args[1]); RegKey nameKey(buffer); char buf[1000]; if (!nameKey.valid()) { _snprintf(buf,sizeof(buf),"User not found: %s",&args[1]); io.println(buf); return; } ULONG type; int length = nameKey.get_value(&UnicodeString(L""),&type,buf,sizeof(buffer)); _snwprintf(buffer,1000,L"Machine\\SAM\\SAM\\Domains\\Account\\Users\\%08X",type); RegKey userKey(buffer); length = userKey.get_value(&UnicodeString(L"V"),&type,buf,sizeof(buffer)); entry *es=read_entries(buf,V_ENTRY_COUNT); char buf2[1000]; io.print("Name: "); io.println(UnicodeString((wchar_t *)es[USERNAME_E].data,(unsigned short)es[USERNAME_E].length).chars(buf2,sizeof(buf2))); io.print("Voller Name: "); io.println(UnicodeString((wchar_t *)es[FULLNAME_E].data,(unsigned short)es[FULLNAME_E].length).chars(buf2,sizeof(buf2))); }