summaryrefslogtreecommitdiff
path: root/source3/rpcclient
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1998-11-25 19:57:04 +0000
committerLuke Leighton <lkcl@samba.org>1998-11-25 19:57:04 +0000
commit59d4087160ba41aac724722dc29c4b6e4e3b69b0 (patch)
tree33f6d26853fdb2fbb2c7e249bef81e49bab96316 /source3/rpcclient
parent73106d9baeb325d1d89d0242d0045695a71acf4d (diff)
downloadsamba-59d4087160ba41aac724722dc29c4b6e4e3b69b0.tar.gz
samba-59d4087160ba41aac724722dc29c4b6e4e3b69b0.tar.bz2
samba-59d4087160ba41aac724722dc29c4b6e4e3b69b0.zip
LsaLookupNames client call (first used as lookupnames command in rpcclient).
(This used to be commit 68342a29a892e515cf2b22d759476d61944bcd59)
Diffstat (limited to 'source3/rpcclient')
-rw-r--r--source3/rpcclient/cmd_lsarpc.c92
-rw-r--r--source3/rpcclient/rpcclient.c1
2 files changed, 92 insertions, 1 deletions
diff --git a/source3/rpcclient/cmd_lsarpc.c b/source3/rpcclient/cmd_lsarpc.c
index a23e7a650b..4a907fa344 100644
--- a/source3/rpcclient/cmd_lsarpc.c
+++ b/source3/rpcclient/cmd_lsarpc.c
@@ -121,7 +121,97 @@ void cmd_lsa_query_info(struct client_info *info)
}
/****************************************************************************
-nt lsa query
+lookup names
+****************************************************************************/
+void cmd_lsa_lookup_names(struct client_info *info)
+{
+ fstring temp;
+ int i;
+ fstring srv_name;
+ int num_names = 0;
+ char *names[10];
+ DOM_SID *sids;
+ int num_sids = 0;
+#if 0
+ DOM_SID sid[10];
+ DOM_SID *sids[10];
+#endif
+ BOOL res = True;
+
+ fstrcpy(srv_name, "\\\\");
+ fstrcat(srv_name, info->myhostname);
+ strupper(srv_name);
+
+ DEBUG(4,("cmd_lsa_lookup_names: server: %s\n", srv_name));
+
+ while (num_names < 10 && next_token(NULL, temp, NULL, sizeof(temp)))
+ {
+ names[num_names] = strdup(temp);
+ num_names++;
+ }
+
+ if (num_names == 0)
+ {
+ fprintf(out_hnd, "lookupnames <name> [<name> ...]\n");
+ return;
+ }
+
+ /* open LSARPC session. */
+ res = res ? cli_nt_session_open(smb_cli, PIPE_LSARPC) : False;
+
+ /* lookup domain controller; receive a policy handle */
+ res = res ? do_lsa_open_policy(smb_cli,
+ srv_name,
+ &info->dom.lsa_info_pol, True) : False;
+
+ /* send lsa lookup sids call */
+ res = res ? do_lsa_lookup_names(smb_cli,
+ &info->dom.lsa_info_pol,
+ num_names, names,
+ &sids, &num_sids) : False;
+
+ res = res ? do_lsa_close(smb_cli, &info->dom.lsa_info_pol) : False;
+
+ /* close the session */
+ cli_nt_session_close(smb_cli);
+
+ if (res)
+ {
+ DEBUG(5,("cmd_lsa_lookup_names: query succeeded\n"));
+ }
+ else
+ {
+ DEBUG(5,("cmd_lsa_lookup_names: query failed\n"));
+ }
+
+ if (sids != NULL)
+ {
+ fprintf(out_hnd,"Lookup Names:\n");
+ for (i = 0; i < num_sids; i++)
+ {
+ sid_to_string(temp, &sids[i]);
+ fprintf(out_hnd, "SID: %s -> %s\n", names[i], temp);
+#if 0
+ if (sids[i] != NULL)
+ {
+ free(sids[i]);
+ }
+#endif
+ }
+ free(sids);
+ }
+
+ for (i = 0; i < num_names; i++)
+ {
+ if (names[i] != NULL)
+ {
+ free(names[i]);
+ }
+ }
+}
+
+/****************************************************************************
+lookup sids
****************************************************************************/
void cmd_lsa_lookup_sids(struct client_info *info)
{
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
index 80d66a3af4..220c81d61e 100644
--- a/source3/rpcclient/rpcclient.c
+++ b/source3/rpcclient/rpcclient.c
@@ -122,6 +122,7 @@ struct
{"srvfiles", cmd_srv_enum_files, "List files on a server"},
{"lsaquery", cmd_lsa_query_info, "Query Info Policy (domain member or server)"},
{"lookupsids", cmd_lsa_lookup_sids, "Resolve names from SIDs"},
+ {"lookupnames",cmd_lsa_lookup_names, "Resolve SIDs from names"},
{"enumusers", cmd_sam_enum_users, "SAM User Database Query (experimental!)"},
{"ntpass", cmd_sam_ntchange_pwd, "NT SAM Password Change"},
{"samuser", cmd_sam_query_user, "<username> SAM User Query (experimental!)"},