?
Solved

Convert SID to HEX

Posted on 2006-07-17
15
Medium Priority
?
7,383 Views
Last Modified: 2011-09-30

I have a SID that I want to convert to Hex.
I found the following script on the web but it isnt' working.

Set oConvert = CreateObject("ADs.ArrayConvert")
objSid="S-1-5-21-603733758-2039161187-5522801-19473"
strHexSid = oConvert.CvOctetStr2vHexStr(objSid)

WScript.Echo strhexsid

When I execute the above script I receive error box.
Script:    C:\sidtohex.vbs
Line:       3
Char:      1
Error:     ActiveX component can't vreate object: 'ADs.ArrayConvert'
Code:     800A01AD
Source:  Microsoft VBScript runtime error

If anyone could let me know what I'm doing wrong or if any dlls need to be registered or what ever I need to do I'd appreciate is.

Or if you could tell me how to pull a users SID in an NT4 domain in a Hex format that will work as well.
0
Comment
Question by:Yohaheho
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
15 Comments
 
LVL 34

Expert Comment

by:flavo
ID: 17126810
From the looks of things, you need to install this from MS:

SAMPLE: ARRAYCONVERT.EXE Variant Conversion Functions
http://support.microsoft.com/kb/q250344/
0
 

Author Comment

by:Yohaheho
ID: 17126999
I placed the files in the system32 directory and I registered ADs.dll
I now get the following error.

Script:    C:\sidtohex.vbs
Line:       5
Char:      1
Error:     Type mismatch
Code:     800A000D
Source:  ADs
0
 

Author Comment

by:Yohaheho
ID: 17127058
Actually if I can pull the SID from an NT4 domain in Binary, Decimal or Hex.
Or convert a SID S-1-5-21-603733758-2039161187-5522801-19473 to Binary, Decimal or Hex
That would solve the problem.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 10

Expert Comment

by:sakuya_su
ID: 17127654
http://froosh.wordpress.com/2005/10/21/hex-sid-to-decimal-sid-translation/

this was a site i used to convert an old SID to Decimal
0
 

Author Comment

by:Yohaheho
ID: 17127732
Sakuya su,
I found that site but was unable to make heads or tails of it.
If you post the script you used I can place my own SID in it and run it.
Thanks
0
 
LVL 9

Expert Comment

by:pradapkumar
ID: 17127899
have you included that ADs.dll to your project in references(library reference)?
If not try to include it through menu Project->References.
0
 

Author Comment

by:Yohaheho
ID: 17128067
I should have listed in the beginning that I not a programmer.
I'm not sure what you mean by Project->References.
The above lines of code are all that exist in the .vbs
There is no larger program that this is a piece of.
I registered the ADs.dll from the system32 directory.
All I need is for this to convert the SID to either Binary, Decimal or Hex.
Or pull the SID from an NT4 domain in Binary, Decimal or Hex.
Thanks
0
 
LVL 10

Expert Comment

by:sakuya_su
ID: 17128154
yous SID in the xample come out as:
010500000000000515000000FE3EFC2363218B7971455400114C0000

in Hex

If you want please let me know your email and I'll give you the Converter I made, which converts string to Hex, it can be modded to do the otherway round too and maybe to add Endian Format, its from the code I showed oyu in the ealier post
0
 

Author Comment

by:Yohaheho
ID: 17128582
Sakuya su,
That sounds great. Please email it to:
Yohaheho@yahoo.com
I'm not at work now but will try it tomorrow then award the points.
Thanks
0
 
LVL 10

Accepted Solution

by:
sakuya_su earned 2000 total points
ID: 17128959
ill email u tomorrow night i am not at the computer atm.
0
 
LVL 14

Expert Comment

by:dlwyatt82
ID: 17140564
Do you want a string value that contains the Hex representation of a SID, or an actual number variable in your VB program?  SIDs are quite large in memory, and VB doesn't handle numbers larger than 32 bit signed.

If you just want a string, that's pretty straightforward.  Since Sakuya's going to email you a solution, I won't spend time on writing one right now.  I only have a function to convert in the other direction handy (from Hex to SDDL).  For giggles, I'll post that one:

Function HexStrToSDDL(strSid)
  ' Function to convert hex Sid to decimal (SDDL) Sid.
  Dim arrbytSid, lngTemp, i, j, nSubDWords
  Dim nLowIndex, nHighIndex
 
  ReDim arrbytSid(Len(strSid) / 2 - 1)
  For j = 0 To UBound(arrbytSid)
    arrbytSid(j) = CInt("&H" & Mid(strSid, 2 * j + 1, 2))
  Next
 
  ' Read revision, authority identifier, and number of subauthority identifier DWORDs
 
  nSubDWords = arrbytSid(1)
 
  lngTemp = arrbytSid(2)
  lngTemp = lngTemp * 256 + arrbytSid(3)
  lngTemp = lngTemp * 256 + arrbytSid(4)
  lngTemp = lngTemp * 256 + arrbytSid(5)
  lngTemp = lngTemp * 256 + arrbytSid(6)
  lngTemp = lngTemp * 256 + arrbytSid(7)
 
  HexStrToSDDL = "S-" & CStr(arrbytSid(0)) & "-" & CStr(lngTemp)
 
  ' Read subauthority values (little-endian DWORDs)
 
  For i = 0 To (nSubDWords - 1)
    nLowIndex = (4 * i) + 8
    nHighIndex = nLowIndex + 3
    If (nHighIndex > UBound(arrbytSid)) Then nHighIndex = UBound(arrbytSid)
   
    lngTemp = 0
    For j = nHighIndex To nLowIndex Step -1
      lngTemp = lngTemp * 256 + arrbytSid(j)
    Next
   
    HexStrToSDDL = HexStrToSDDL & "-" & CStr(lngTemp)
  Next
End Function
0
 

Author Comment

by:Yohaheho
ID: 17142002
Sakuya,

Works like a champ.

Thanks a lot
Yohaheho
0
 
LVL 10

Expert Comment

by:sakuya_su
ID: 17143283
no problem, if you ever want the source code let me know
0
 

Expert Comment

by:mrdavidjc
ID: 22044415
Sakuya Su,

Could you please send me the source code for the script that will convert a SID to hex format?
Please email it to me at david@txsys.com

Thanks
0
 
LVL 10

Expert Comment

by:sakuya_su
ID: 22044988
Sadly I no longer have the original source, it was done overnight and the HDD corrupted about 3 or 4 months ago
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question