Class: SmbRpc::Samr
- Inherits:
-
Rpc
show all
- Defined in:
- lib/smbRpc/samr.rb,
lib/smbRpc/samr/connect.rb,
lib/smbRpc/samr/openUser.rb,
lib/smbRpc/samr/openAlias.rb,
lib/smbRpc/samr/openGroup.rb,
lib/smbRpc/samr/deleteUser.rb,
lib/smbRpc/samr/openDomain.rb,
lib/smbRpc/samr/closeHandle.rb,
lib/smbRpc/samr/deleteAlias.rb,
lib/smbRpc/samr/deleteGroup.rb,
lib/smbRpc/samr/addMemberToAlias.rb,
lib/smbRpc/samr/addMemberToGroup.rb,
lib/smbRpc/samr/getMembersInAlias.rb,
lib/smbRpc/samr/getMembersInGroup.rb,
lib/smbRpc/samr/lookupIdsInDomain.rb,
lib/smbRpc/samr/changePasswordUser.rb,
lib/smbRpc/samr/createUserInDomain.rb,
lib/smbRpc/samr/setInformationUser.rb,
lib/smbRpc/samr/createAliasInDomain.rb,
lib/smbRpc/samr/createGroupInDomain.rb,
lib/smbRpc/samr/lookupNamesInDomain.rb,
lib/smbRpc/samr/queryInformationUser.rb,
lib/smbRpc/samr/removeMemberFromAlias.rb,
lib/smbRpc/samr/removeMemberFromGroup.rb,
lib/smbRpc/samr/enumerateUsersInDomain.rb,
lib/smbRpc/samr/enumerateGroupsInDomain.rb,
lib/smbRpc/samr/lookupDomainInSamServer.rb,
lib/smbRpc/samr/enumerateAliasesInDomain.rb,
lib/smbRpc/samr/enumerateDomainsInSamServer.rb
Defined Under Namespace
Classes: Sampr_logon_hours, Sampr_rid_enumeration, Sampr_user_all_information, SamrAddMemberToAliasReq, SamrAddMemberToAliasRes, SamrAddMemberToGroupReq, SamrAddMemberToGroupRes, SamrChangePasswordUserReq, SamrChangePasswordUserRes, SamrCloseHandleReq, SamrCloseHandleRes, SamrConnectReq, SamrConnectRes, SamrCreateAliasInDomainReq, SamrCreateAliasInDomainRes, SamrCreateGroupInDomainReq, SamrCreateGroupInDomainRes, SamrCreateUser2InDomainReq, SamrCreateUser2InDomainRes, SamrDeleteAliasReq, SamrDeleteAliasRes, SamrDeleteGroupReq, SamrDeleteGroupRes, SamrDeleteUserReq, SamrDeleteUserRes, SamrEnumerateAliasesInDomainReq, SamrEnumerateAliasesInDomainRes, SamrEnumerateDomainsInSamServerReq, SamrEnumerateDomainsInSamServerRes, SamrEnumerateGroupsInDomainReq, SamrEnumerateGroupsInDomainRes, SamrEnumerateUsersInDomainReq, SamrEnumerateUsersInDomainRes, SamrGetMembersInAliasReq, SamrGetMembersInAliasRes, SamrGetMembersInGroupReq, SamrGetMembersInGroupRes, SamrLookupDomainInSamServerReq, SamrLookupDomainInSamServerRes, SamrLookupIdsInDomainReq, SamrLookupIdsInDomainRes, SamrLookupNamesInDomainReq, SamrLookupNamesInDomainRes, SamrOpenAliasReq, SamrOpenAliasRes, SamrOpenDomainReq, SamrOpenDomainRes, SamrOpenGroupReq, SamrOpenGroupRes, SamrOpenUserReq, SamrOpenUserRes, SamrQueryInformationUser2Req, SamrQueryInformationUser2Res, SamrRemoveMemberFromAliasReq, SamrRemoveMemberFromAliasRes, SamrRemoveMemberFromGroupReq, SamrRemoveMemberFromGroupRes, SamrSetInformationUser2Req, SamrSetInformationUser2Res
Instance Attribute Summary
Attributes inherited from Rpc
#smb
Instance Method Summary
collapse
-
#addMemberToAlias(memberId:) ⇒ Object
-
#addMemberToGroup(memberId:, attributes: SAMR_SE_GROUP_ATTRIBUTES["SE_GROUP_ENABLED_BY_DEFAULT"]) ⇒ Object
-
#changePasswordUser(oldPass:, newPass:) ⇒ Object
-
#close ⇒ Object
-
#closeDomain ⇒ Object
-
#closeServer ⇒ Object
-
#connect5(serverName: @ip, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
-
#createAliasInDomain(name:, desiredAccess: SAMR_ALIAS_ACCESS_MASK["ALIAS_ALL_ACCESS"]) ⇒ Object
-
#createGroupInDomain(name:, desiredAccess: SAMR_GROUP_ACCESS_MASK["GROUP_ALL_ACCESS"]) ⇒ Object
-
#createUserInDomain(name:, accountType: SAMR_CREATE_USER_ACCOUNT["USER_NORMAL_ACCOUNT"], desiredAccess: SAMR_USER_ACCESS_MASK["USER_ALL_ACCESS"]) ⇒ Object
-
#deleteAlias ⇒ Object
-
#deleteGroup ⇒ Object
-
#deleteUser ⇒ Object
-
#enumerateAliasesInDomain ⇒ Object
-
#enumerateDomainsInSamServer ⇒ Object
-
#enumerateGroupsInDomain ⇒ Object
-
#enumerateUsersInDomain(userAccountControl: SAMR_USER_ACCOUNT["USER_NORMAL_ACCOUNT"]) ⇒ Object
-
#getMembersInAlias ⇒ Object
-
#getMembersInGroup ⇒ Object
-
#initialize(**argv) ⇒ Samr
constructor
-
#lookupDomainInSamServer(domainName:) ⇒ Object
-
#lookupIdsInDomain(relativeId:) ⇒ Object
-
#lookupNamesInDomain(name:) ⇒ Object
-
#openAlias(aliasId:, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
-
#openDomain(domainSid:, desiredAccess: ) ⇒ Object
-
#openGroup(groupId:, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
-
#openUser(userId:, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
-
#queryInformationUser ⇒ Object
-
#removeMemberFromAlias(memberId:) ⇒ Object
-
#removeMemberFromGroup(memberId:) ⇒ Object
-
#setInformationUser(password: "", userAccountControl: 0) ⇒ Object
Methods inherited from Rpc
#bind, #connect
Constructor Details
#initialize(**argv) ⇒ Samr
Returns a new instance of Samr.
34
35
36
37
38
|
# File 'lib/smbRpc/samr.rb', line 34
def initialize(**argv)
super(argv)
self.connect
self.bind(pipe:"samr")
end
|
Instance Method Details
#addMemberToAlias(memberId:) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/smbRpc/samr/addMemberToAlias.rb', line 34
def addMemberToAlias(memberId:)
samrAddMemberToAliasReq = SamrAddMemberToAliasReq.new(handle:@aliasHandle, sid:memberId)
samrAddMemberToAliasRes = @file.ioctl_send_recv(samrAddMemberToAliasReq).buffer
samrAddMemberToAliasRes.raise_not_error_success("addMemberToAlias")
return self
end
|
#addMemberToGroup(memberId:, attributes: SAMR_SE_GROUP_ATTRIBUTES["SE_GROUP_ENABLED_BY_DEFAULT"]) ⇒ Object
27
28
29
30
31
32
|
# File 'lib/smbRpc/samr/addMemberToGroup.rb', line 27
def addMemberToGroup(memberId:, attributes:SAMR_SE_GROUP_ATTRIBUTES["SE_GROUP_ENABLED_BY_DEFAULT"])
samrAddMemberToGroupReq = SamrAddMemberToGroupReq.new(handle:@groupHandle, rid:memberId, attr:attributes)
samrAddMemberToGroupRes = @file.ioctl_send_recv(samrAddMemberToGroupReq).buffer
samrAddMemberToGroupRes.raise_not_error_success("addMemberToGroup")
return self
end
|
#changePasswordUser(oldPass:, newPass:) ⇒ Object
56
57
58
59
60
61
|
# File 'lib/smbRpc/samr/changePasswordUser.rb', line 56
def changePasswordUser(oldPass:, newPass:)
samrChangePasswordUserReq = SamrChangePasswordUserReq.new(handle:@userHandle, oldPass:oldPass, newPass:newPass)
samrChangePasswordUserRes = @file.ioctl_send_recv(samrChangePasswordUserReq).buffer
samrChangePasswordUserRes.raise_not_error_success("changePasswordUser")
return self
end
|
#close ⇒ Object
44
45
46
47
48
|
# File 'lib/smbRpc/samr/closeHandle.rb', line 44
def close()
closeDomain()
closeServer()
super
end
|
#closeDomain ⇒ Object
24
25
26
27
28
29
30
31
32
|
# File 'lib/smbRpc/samr/closeHandle.rb', line 24
def closeDomain()
if !@domainHandle.nil?
samrCloseHandleReq = SamrCloseHandleReq.new(handle:@domainHandle)
samrCloseHandleRes = @file.ioctl_send_recv(samrCloseHandleReq).buffer
samrCloseHandleRes.raise_not_error_success("closeDomain")
samrCloseHandleRes = SamrCloseHandleRes.read(samrCloseHandleRes)
@domainHandle = nil
end
end
|
#closeServer ⇒ Object
34
35
36
37
38
39
40
41
42
|
# File 'lib/smbRpc/samr/closeHandle.rb', line 34
def closeServer()
if !@serverHandle.nil?
samrCloseHandleReq = SamrCloseHandleReq.new(handle:@serverHandle)
samrCloseHandleRes = @file.ioctl_send_recv(samrCloseHandleReq).buffer
samrCloseHandleRes.raise_not_error_success("closeServer")
samrCloseHandleRes = SamrCloseHandleRes.read(samrCloseHandleRes)
@serverHandle = nil
end
end
|
#connect5(serverName: @ip, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
35
36
37
38
39
40
41
42
|
# File 'lib/smbRpc/samr/connect.rb', line 35
def connect5(serverName:@ip, desiredAccess:SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"])
samrConnectReq = SamrConnectReq.new(:srvName=> serverName, access:desiredAccess)
samrConnectRes = @file.ioctl_send_recv(samrConnectReq).buffer
samrConnectRes.raise_not_error_success("SamConnect")
samrConnectRes = SamrConnectRes.read(samrConnectRes)
@serverHandle = samrConnectRes.serverHandle
return self
end
|
#createAliasInDomain(name:, desiredAccess: SAMR_ALIAS_ACCESS_MASK["ALIAS_ALL_ACCESS"]) ⇒ Object
34
35
36
37
38
39
40
41
|
# File 'lib/smbRpc/samr/createAliasInDomain.rb', line 34
def createAliasInDomain(name:, desiredAccess:SAMR_ALIAS_ACCESS_MASK["ALIAS_ALL_ACCESS"])
samrCreateAliasInDomainReq = SamrCreateAliasInDomainReq.new(aliasName:name, access:desiredAccess, handle:@domainHandle)
samrCreateAliasInDomainRes = @file.ioctl_send_recv(samrCreateAliasInDomainReq).buffer
samrCreateAliasInDomainRes.raise_not_error_success("createAliasInDomain")
samrCreateAliasInDomainRes = SamrCreateAliasInDomainRes.read(samrCreateAliasInDomainRes)
@aliasHandle = samrCreateAliasInDomainRes.aliasHandle
return self
end
|
#createGroupInDomain(name:, desiredAccess: SAMR_GROUP_ACCESS_MASK["GROUP_ALL_ACCESS"]) ⇒ Object
34
35
36
37
38
39
40
41
42
|
# File 'lib/smbRpc/samr/createGroupInDomain.rb', line 34
def createGroupInDomain(name:, desiredAccess:SAMR_GROUP_ACCESS_MASK["GROUP_ALL_ACCESS"])
samrCreateGroupInDomainReq = SamrCreateGroupInDomainReq.new(groupName:name, access:desiredAccess, handle:@domainHandle)
samrCreateGroupInDomainRes = @file.ioctl_send_recv(samrCreateGroupInDomainReq).buffer
samrCreateGroupInDomainRes.raise_not_error_success("createGroupInDomainRes")
samrCreateGroupInDomainRes = SamrCreateGroupInDomainRes.read(samrCreateGroupInDomainRes)
@groupHandle = samrCreateGroupInDomainRes.groupHandle
return self
end
|
#createUserInDomain(name:, accountType: SAMR_CREATE_USER_ACCOUNT["USER_NORMAL_ACCOUNT"], desiredAccess: SAMR_USER_ACCESS_MASK["USER_ALL_ACCESS"]) ⇒ Object
36
37
38
39
40
41
42
43
44
|
# File 'lib/smbRpc/samr/createUserInDomain.rb', line 36
def createUserInDomain(name:, accountType:SAMR_CREATE_USER_ACCOUNT["USER_NORMAL_ACCOUNT"],
desiredAccess:SAMR_USER_ACCESS_MASK["USER_ALL_ACCESS"])
samrCreateUser2InDomainReq = SamrCreateUser2InDomainReq.new(accName:name, accType:accountType, access:desiredAccess, handle:@domainHandle)
samrCreateUser2InDomainRes = @file.ioctl_send_recv(samrCreateUser2InDomainReq).buffer
samrCreateUser2InDomainRes.raise_not_error_success("createUserInDomain")
samrCreateUser2InDomainRes = SamrCreateUser2InDomainRes.read(samrCreateUser2InDomainRes)
@userHandle = samrCreateUser2InDomainRes.userHandle
return self
end
|
#deleteAlias ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/smbRpc/samr/deleteAlias.rb', line 24
def deleteAlias
samrDeleteAliasReq = SamrDeleteAliasReq.new(handle:@aliasHandle)
samrDeleteAliasRes = @file.ioctl_send_recv(samrDeleteAliasReq).buffer
samrDeleteAliasRes.raise_not_error_success("deleteAlias")
samrDeleteAliasRes = SamrDeleteAliasRes.read(samrDeleteAliasRes)
@aliasHandle = nil
return 0
end
|
#deleteGroup ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/smbRpc/samr/deleteGroup.rb', line 24
def deleteGroup
samrDeleteGroupReq = SamrDeleteGroupReq.new(handle:@groupHandle)
samrDeleteGroupRes = @file.ioctl_send_recv(samrDeleteGroupReq).buffer
samrDeleteGroupRes.raise_not_error_success("deleteGroup")
samrDeleteGroupRes = SamrDeleteGroupRes.read(samrDeleteGroupRes)
@groupHandle = nil
return 0
end
|
#deleteUser ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/smbRpc/samr/deleteUser.rb', line 24
def deleteUser
samrDeleteUserReq = SamrDeleteUserReq.new(handle:@userHandle)
samrDeleteUserRes = @file.ioctl_send_recv(samrDeleteUserReq).buffer
samrDeleteUserRes.raise_not_error_success("deleteUser")
samrDeleteUserRes = SamrDeleteUserRes.read(samrDeleteUserRes)
@userHandle = samrDeleteUserRes.userHandle
return 0
end
|
#enumerateAliasesInDomain ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/smbRpc/samr/enumerateAliasesInDomain.rb', line 37
def enumerateAliasesInDomain
result = 0
enumerationContext = 0
out = []
loop do
samrEnumerateAliasesInDomainReq = SamrEnumerateAliasesInDomainReq.new(handle:@domainHandle, enumContext:enumerationContext)
samrEnumerateAliasesInDomainRes = @file.ioctl_send_recv(samrEnumerateAliasesInDomainReq).buffer
samrEnumerateAliasesInDomainRes = SamrEnumerateAliasesInDomainRes.read(samrEnumerateAliasesInDomainRes)
enumerationContext = samrEnumerateAliasesInDomainRes.enumerationContext
samrEnumerateAliasesInDomainRes.numberOfBuffer.times do |i|
h = {}
h[:rid] = samrEnumerateAliasesInDomainRes.name[i].relativeId
h[:aliasName] = samrEnumerateAliasesInDomainRes.nameNdr[i].str.unpack("v*").pack("c*")
out << h
end
result = samrEnumerateAliasesInDomainRes.windowsError
break if result != WindowsError::NTStatus::STATUS_MORE_ENTRIES end
result == 0? result : (raise "enumerateAliasesInDomain Fail, WinError: %i"%[result])
return out
end
|
#enumerateDomainsInSamServer ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/smbRpc/samr/enumerateDomainsInSamServer.rb', line 35
def enumerateDomainsInSamServer()
samrEnumerateDomainsInSamServerReq = SamrEnumerateDomainsInSamServerReq.new(handle:@serverHandle)
samrEnumerateDomainsInSamServerRes = @file.ioctl_send_recv(samrEnumerateDomainsInSamServerReq).buffer
samrEnumerateDomainsInSamServerRes.raise_not_error_success("enumerateDomainsInSamServer")
samrEnumerateDomainsInSamServerRes = SamrEnumerateDomainsInSamServerRes.read(samrEnumerateDomainsInSamServerRes)
out = []
samrEnumerateDomainsInSamServerRes.countReturned.times do |i|
h = {}
h[:rid] = samrEnumerateDomainsInSamServerRes.name[i].relativeId
h[:domainName] = samrEnumerateDomainsInSamServerRes.nameNdr[i].str.unpack("v*").pack("c*")
out << h
end
return out
end
|
#enumerateGroupsInDomain ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/smbRpc/samr/enumerateGroupsInDomain.rb', line 36
def enumerateGroupsInDomain()
result = 0
enumerationContext = 0
out = []
loop do
samrEnumerateGroupsInDomainReq = SamrEnumerateGroupsInDomainReq.new(handle:@domainHandle, enumContext:enumerationContext)
samrEnumerateGroupsInDomainRes = @file.ioctl_send_recv(samrEnumerateGroupsInDomainReq).buffer
samrEnumerateGroupsInDomainRes = SamrEnumerateGroupsInDomainRes.read(samrEnumerateGroupsInDomainRes)
enumerationContext = samrEnumerateGroupsInDomainRes.enumerationContext
samrEnumerateGroupsInDomainRes.numberOfBuffer.times do |i|
h = {}
h[:rid] = samrEnumerateGroupsInDomainRes.name[i].relativeId
h[:groupName] = samrEnumerateGroupsInDomainRes.nameNdr[i].str.unpack("v*").pack("c*")
out << h
end
result = samrEnumerateGroupsInDomainRes.windowsError
break if result != WindowsError::NTStatus::STATUS_MORE_ENTRIES end
result == 0? result : (raise "enumerateGroupsInDomain Fail, WinError: %i"%[result])
return out
end
|
#enumerateUsersInDomain(userAccountControl: SAMR_USER_ACCOUNT["USER_NORMAL_ACCOUNT"]) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/smbRpc/samr/enumerateUsersInDomain.rb', line 43
def enumerateUsersInDomain(userAccountControl:SAMR_USER_ACCOUNT["USER_NORMAL_ACCOUNT"])
result = 0
enumerationContext = 0
out = []
loop do
samrEnumerateUsersInDomainReq = SamrEnumerateUsersInDomainReq.new(handle:@domainHandle, accountControl:userAccountControl, enumContext:enumerationContext)
samrEnumerateUsersInDomainRes = @file.ioctl_send_recv(samrEnumerateUsersInDomainReq).buffer
samrEnumerateUsersInDomainRes = SamrEnumerateUsersInDomainRes.read(samrEnumerateUsersInDomainRes)
enumerationContext = samrEnumerateUsersInDomainRes.enumerationContext
samrEnumerateUsersInDomainRes.numberOfBuffer.times do |i|
h = {}
h[:rid] = samrEnumerateUsersInDomainRes.name[i].relativeId.to_i
h[:userName] = samrEnumerateUsersInDomainRes.nameNdr[i].str.unpack("v*").pack("c*")
out << h
end
result = samrEnumerateUsersInDomainRes.windowsError
break if result != WindowsError::NTStatus::STATUS_MORE_ENTRIES end
result == 0? result : (raise "SamEnumerateUsersInDomain Fail, WinError: %i"%[result])
return out
end
|
#getMembersInAlias ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/smbRpc/samr/getMembersInAlias.rb', line 29
def getMembersInAlias
samrGetMembersInAliasReq = SamrGetMembersInAliasReq.new(handle:@aliasHandle)
samrGetMembersInAliasRes = @file.ioctl_send_recv(samrGetMembersInAliasReq).buffer
samrGetMembersInAliasRes.raise_not_error_success("getMembersInAlias")
samrGetMembersInAliasRes = SamrGetMembersInAliasRes.read(samrGetMembersInAliasRes)
out = []
samrGetMembersInAliasRes.member.each{|e| out << e.sid.to_s}
return out
end
|
#getMembersInGroup ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/smbRpc/samr/getMembersInGroup.rb', line 31
def getMembersInGroup
samrGetMembersInGroupReq = SamrGetMembersInGroupReq.new(handle:@groupHandle)
samrGetMembersInGroupRes = @file.ioctl_send_recv(samrGetMembersInGroupReq).buffer
samrGetMembersInGroupRes.raise_not_error_success("getMembersInGroup")
samrGetMembersInGroupRes = SamrGetMembersInGroupRes.read(samrGetMembersInGroupRes)
out = []
samrGetMembersInGroupRes.numberOfMembers.times do |i|
out << {:relativeId => samrGetMembersInGroupRes.relativeId[i], :attributes => samrGetMembersInGroupRes.attributes[i]}
end
return out
end
|
#lookupDomainInSamServer(domainName:) ⇒ Object
31
32
33
34
35
36
37
|
# File 'lib/smbRpc/samr/lookupDomainInSamServer.rb', line 31
def lookupDomainInSamServer(domainName:)
samrLookupDomainInSamServerReq = SamrLookupDomainInSamServerReq.new(handle:@serverHandle, domainName:domainName)
samrLookupDomainInSamServerRes = @file.ioctl_send_recv(samrLookupDomainInSamServerReq).buffer
samrLookupDomainInSamServerRes.raise_not_error_success("lookupDomainInSamServer")
samrLookupDomainInSamServerRes = SamrLookupDomainInSamServerRes.read(samrLookupDomainInSamServerRes)
return samrLookupDomainInSamServerRes.domainId.sid.to_s
end
|
#lookupIdsInDomain(relativeId:) ⇒ Object
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/smbRpc/samr/lookupIdsInDomain.rb', line 39
def lookupIdsInDomain(relativeId:)
samrLookupIdsInDomainReq = SamrLookupIdsInDomainReq.new(rid:relativeId, handle:@domainHandle)
samrLookupIdsInDomainRes = @file.ioctl_send_recv(samrLookupIdsInDomainReq).buffer
samrLookupIdsInDomainRes.raise_not_error_success("lookupIdsInDomain")
samrLookupIdsInDomainRes = SamrLookupIdsInDomainRes.read(samrLookupIdsInDomainRes)
return {
:name => samrLookupIdsInDomainRes.nameNdr.str.unpack("v*").pack("c*"),
:type => samrLookupIdsInDomainRes.use
}
end
|
#lookupNamesInDomain(name:) ⇒ Object
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/smbRpc/samr/lookupNamesInDomain.rb', line 42
def lookupNamesInDomain(name:)
samrLookupNamesInDomainReq = SamrLookupNamesInDomainReq.new(accName:name, handle:@domainHandle)
samrLookupNamesInDomainRes = @file.ioctl_send_recv(samrLookupNamesInDomainReq).buffer
samrLookupNamesInDomainRes.raise_not_error_success("lookupNamesInDomain")
samrLookupNamesInDomainRes = SamrLookupNamesInDomainRes.read(samrLookupNamesInDomainRes)
return {
:relativeId => samrLookupNamesInDomainRes.relativeId.to_i,
:type => samrLookupNamesInDomainRes.use.to_i
}
end
|
#openAlias(aliasId:, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/smbRpc/samr/openAlias.rb', line 28
def openAlias(aliasId:, desiredAccess:SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"])
samrOpenAliasReq = SamrOpenAliasReq.new(aid:aliasId, access:desiredAccess, handle:@domainHandle)
samrOpenAliasRes = @file.ioctl_send_recv(samrOpenAliasReq).buffer
samrOpenAliasRes.raise_not_error_success("openAlias")
samrOpenAliasRes = SamrOpenAliasRes.read(samrOpenAliasRes)
@aliasHandle = samrOpenAliasRes.aliasHandle
return self
end
|
#openDomain(domainSid:, desiredAccess: ) ⇒ Object
37
38
39
40
41
42
43
44
|
# File 'lib/smbRpc/samr/openDomain.rb', line 37
def openDomain(domainSid:, desiredAccess:SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"])
samrOpenDomainReq = SamrOpenDomainReq.new(sid:domainSid, access:desiredAccess, handle:@serverHandle)
samrOpenDomainRes = @file.ioctl_send_recv(samrOpenDomainReq).buffer
samrOpenDomainRes.raise_not_error_success("openDomain")
samrOpenDomainRes = SamrOpenDomainRes.read(samrOpenDomainRes)
@domainHandle = samrOpenDomainRes.domainHandle
return self
end
|
#openGroup(groupId:, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/smbRpc/samr/openGroup.rb', line 28
def openGroup(groupId:, desiredAccess:SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"])
samrOpenGroupReq = SamrOpenGroupReq.new(gid:groupId, access:desiredAccess, handle:@domainHandle)
samrOpenGroupRes = @file.ioctl_send_recv(samrOpenGroupReq).buffer
samrOpenGroupRes.raise_not_error_success("openGroup")
samrOpenGroupRes = SamrOpenGroupRes.read(samrOpenGroupRes)
@groupHandle = samrOpenGroupRes.groupHandle
return self
end
|
#openUser(userId:, desiredAccess: SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"]) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/smbRpc/samr/openUser.rb', line 28
def openUser(userId:, desiredAccess:SAMR_COMMON_ACCESS_MASK["MAXIMUM_ALLOWED"])
samrOpenUserReq = SamrOpenUserReq.new(uid:userId, access:desiredAccess, handle:@domainHandle)
samrOpenUserRes = @file.ioctl_send_recv(samrOpenUserReq).buffer
samrOpenUserRes.raise_not_error_success("openUser")
samrOpenUserRes = SamrOpenUserRes.read(samrOpenUserRes)
@userHandle = samrOpenUserRes.userHandle
return self
end
|
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
# File 'lib/smbRpc/samr/queryInformationUser.rb', line 137
def queryInformationUser
samrQueryInformationUser2Req = SamrQueryInformationUser2Req.new(handle:@userHandle)
samrQueryInformationUser2Res = @file.ioctl_send_recv(samrQueryInformationUser2Req).buffer
samrQueryInformationUser2Res.raise_not_error_success("QueryInformationUser")
samrQueryInformationUser2Res = SamrQueryInformationUser2Res.read(samrQueryInformationUser2Res)
buffer = samrQueryInformationUser2Res.buffer
h = {
:rid => buffer.userId,
:gid => buffer.primaryGroupId,
:lastLogon => buffer.lastLogon,
:lastLogoff => buffer.lastLogoff,
:unitsPerWeek => buffer.logonHours.unitsPerWeek,
:badPasswordCount => buffer.badPasswordCount,
:logonCount => buffer.logonCount,
:passwordLastSet => buffer.passwordLastSet,
:passwordCanChange => buffer.passwordCanChange,
:passwordMustChange => buffer.passwordMustChange,
:accountExpires => buffer.accountExpires,
:userAccountControl => buffer.userAccountControl,
:whichFields => buffer.whichFields,
:countryCode => buffer.countryCode,
:codePage => buffer.codePage,
:lmPasswordPresent => buffer.lmPasswordPresent,
:ntPasswordPresent => buffer.ntPasswordPresent,
:passwordExpired => buffer.passwordExpired
}
h[:userName] = buffer.userNameNdr.str.unpack("v*").pack("c*") if buffer.userName.ref_id_buffer > 0
h[:fullName] = buffer.fullNameNdr.str.unpack("v*").pack("c*") if buffer.fullName.ref_id_buffer > 0
h[:homeDirectory] = buffer.homeDirectoryNdr.str.unpack("v*").pack("c*") if buffer.homeDirectory.ref_id_buffer > 0
h[:homeDirectoryDrive] = buffer.homeDirectoryDriveNdr.str.unpack("v*").pack("c*") if buffer.homeDirectoryDrive.ref_id_buffer > 0
h[:scriptPath] = buffer.scriptPathNdr.str.unpack("v*").pack("c*") if buffer.scriptPath.ref_id_buffer > 0
h[:profilePath] = buffer.profilePathNdr.str.unpack("v*").pack("c*") if buffer.profilePath.ref_id_buffer > 0
h[:adminComment] = buffer..str.unpack("v*").pack("c*") if buffer..ref_id_buffer > 0
h[:userComment] = buffer..str.unpack("v*").pack("c*") if buffer..ref_id_buffer > 0
h[:workStations] = buffer.workStationsNdr.str.unpack("v*").pack("c*") if buffer.workStations.ref_id_buffer > 0
h[:parameters] = buffer.parametersNdr.str.unpack("v*").pack("c*") if buffer.parameters.ref_id_buffer > 0
h[:logonHours] = buffer.logonHoursNdr.str if buffer.logonHours.ref_id_logonHours > 0
h[:privateData] = buffer.privateDataNdr.str if buffer.privateData.ref_id_buffer > 0
h[:lmOwfPassword] = buffer.lmOwfPasswordNdr.str if buffer.lmOwfPassword.ref_id_buffer > 0
h[:ntOwfPassword] = buffer.ntOwfPasswordNdr.str if buffer.ntOwfPassword.ref_id_buffer > 0
return h
end
|
#removeMemberFromAlias(memberId:) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/smbRpc/samr/removeMemberFromAlias.rb', line 34
def removeMemberFromAlias(memberId:)
samrRemoveMemberFromAliasReq = SamrRemoveMemberFromAliasReq.new(handle:@aliasHandle, sid:memberId)
samrRemoveMemberFromAliasRes = @file.ioctl_send_recv(samrRemoveMemberFromAliasReq).buffer
samrRemoveMemberFromAliasRes.raise_not_error_success("removeMemberFromAlias")
return self
end
|
#removeMemberFromGroup(memberId:) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/smbRpc/samr/removeMemberFromGroup.rb', line 25
def removeMemberFromGroup(memberId:)
samrRemoveMemberFromGroupReq = SamrRemoveMemberFromGroupReq.new(handle:@groupHandle, rid:memberId)
samrRemoveMemberFromGroupRes = @file.ioctl_send_recv(samrRemoveMemberFromGroupReq).buffer
samrRemoveMemberFromGroupRes.raise_not_error_success("removeMemberFromGroup")
return self
end
|
45
46
47
48
49
50
|
# File 'lib/smbRpc/samr/setInformationUser.rb', line 45
def setInformationUser(password:"", userAccountControl:0)
samrSetInformationUser2Req = SamrSetInformationUser2Req.new(handle:@userHandle, session_key:self.smb.session_key, pass:password, accControl:userAccountControl)
samrSetInformationUser2Res = @file.ioctl_send_recv(samrSetInformationUser2Req).buffer
samrSetInformationUser2Res.raise_not_error_success("setInformationUser")
return self
end
|