| import jcifs.smb.*; |
| import java.util.*; |
| import java.io.*; |
| |
| public class SidLookup { |
| private static final int MAX_TRIES = 5; |
| private Map<String, String> sidCache; |
| |
| private final String dc; |
| private final NtlmPasswordAuthentication creds; |
| |
| public SidLookup(String dc, String domain, String username, String password) { |
| this.dc = dc; |
| this.creds = new NtlmPasswordAuthentication(domain, username, password); |
| this.sidCache = new HashMap<>(); |
| } |
| |
| public String resolve(String sid) throws IOException, SmbException { |
| String cached = sidCache.get(sid); |
| if (cached != null) { |
| return cached; |
| } |
| |
| int tries = 0; |
| while (true) { |
| try { |
| SID sidObject = new SID(sid); |
| sidObject.resolve(dc, creds); |
| sidCache.put(sid, sidObject.toDisplayString()); |
| return sidObject.toDisplayString(); |
| } catch (SmbException e) { |
| if (tries == MAX_TRIES) { |
| throw e; |
| } |
| } |
| tries++; |
| } |
| } |
| |
| public static void main(String[] argv) throws Exception { |
| SidLookup lookup = new SidLookup("172.25.51.36", "gsa-connectors", "Administrator", "p@assword123"); |
| System.out.println(lookup.resolve("S-1-5-21-3993744865-3521423997-1479072767-513")); |
| System.out.println(lookup.resolve("S-1-5-21-3993744865-3521423997-1479072767-513")); |
| } |
| } |