예제 #1
0
def writeHash(username, userHash):

    bashCommand(['dscacheutil', '-flushcache'])
    time.sleep(2)

    ## Open User's Plist Data
    data = open('/var/db/dslocal/nodes/Default/users/%s.plist' % username, 'r')

    ## Read and buffer the user's Plist Data
    plistData = buffer(data.read())
    data.close

    ## Convert the Plist Data into a Dictionary
    (userPlist, _, _) = (
    NSPropertyListSerialization.propertyListWithData_options_format_error_(plistData, NSPropertyListXMLFormat_v1_0,
                                                                           None, None))

    ## Read and buffer the new ShadowHashData
    userShadowHashData = buffer(userHash.decode('hex'))

    ## Convert the ShadowHashData into a Dictionary
    (userShadowHashPlist, _, _) = (
    NSPropertyListSerialization.propertyListWithData_options_format_error_(userShadowHashData,
                                                                           NSPropertyListXMLFormat_v1_0, None, None))

    ## Remove unsecured hash types
    del userShadowHashPlist['CRAM-MD5']
    del userShadowHashPlist['NT']

    ## Convert the ShadowHashData back to data
    (userShadowHashData, _) = (
    NSPropertyListSerialization.dataWithPropertyList_format_options_error_(userShadowHashPlist,
                                                                           NSPropertyListBinaryFormat_v1_0, 0, None))

    ## Insert the new ShadowHashData into the User's Plist Dictionary
    userPlist['ShadowHashData'][0] = userShadowHashData

    ## Convert the UserPlist back to data
    (plistData, _) = (
    NSPropertyListSerialization.dataWithPropertyList_format_options_error_(userPlist, NSPropertyListBinaryFormat_v1_0,
                                                                           0, None))

    ## Write user's updated plist to disk
    stream = io.open('/var/db/dslocal/nodes/Default/users/%s.plist' % username, 'bw')
    stream.write(plistData)
    stream.close

    bashCommand(['dscacheutil', '-flushcache'])
    time.sleep(2)
    
    print '[+] User ['+username+'] new hash injected'
예제 #2
0
파일: Onset.py 프로젝트: jbaker10/PSU-2016
def writeHash(username, userHash):

    bashCommand(['dscacheutil', '-flushcache'])
    time.sleep(2)

    ## Open User's Plist Data
    data = open('/var/db/dslocal/nodes/Default/users/%s.plist' % username, 'r')

    ## Read and buffer the user's Plist Data
    plistData = buffer(data.read())
    data.close

    ## Convert the Plist Data into a Dictionary
    (userPlist, _, _) = (
        NSPropertyListSerialization.propertyListWithData_options_format_error_(
            plistData, NSPropertyListXMLFormat_v1_0, None, None))

    ## Read and buffer the new ShadowHashData
    userShadowHashData = buffer(userHash.decode('hex'))

    ## Convert the ShadowHashData into a Dictionary
    (userShadowHashPlist, _, _) = (
        NSPropertyListSerialization.propertyListWithData_options_format_error_(
            userShadowHashData, NSPropertyListXMLFormat_v1_0, None, None))

    ## Remove unsecured hash types
    del userShadowHashPlist['CRAM-MD5']
    del userShadowHashPlist['NT']

    ## Convert the ShadowHashData back to data
    (userShadowHashData, _) = (
        NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            userShadowHashPlist, NSPropertyListBinaryFormat_v1_0, 0, None))

    ## Insert the new ShadowHashData into the User's Plist Dictionary
    userPlist['ShadowHashData'][0] = userShadowHashData

    ## Convert the UserPlist back to data
    (plistData, _) = (
        NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            userPlist, NSPropertyListBinaryFormat_v1_0, 0, None))

    ## Write user's updated plist to disk
    stream = io.open('/var/db/dslocal/nodes/Default/users/%s.plist' % username,
                     'bw')
    stream.write(plistData)
    stream.close

    bashCommand(['dscacheutil', '-flushcache'])
    time.sleep(2)
예제 #3
0
def plist(obj):
    from Foundation import NSPropertyListSerialization, NSPropertyListBinaryFormat_v1_0

    b = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
        obj, NSPropertyListBinaryFormat_v1_0, 0, None
    )
    return str(b.bytes())
예제 #4
0
def ShadowData(user):
	
	## Open User's Plist Data
	data = open('/var/db/dslocal/nodes/Default/users/%s.plist' % user, 'r')
	
	## Read and buffer the user's Plist Data
	plistData = buffer(data.read())
	data.close
	
	## Convert the Plist Data into a Dictionary
	(userPlist, _, _) = (NSPropertyListSerialization.propertyListWithData_options_format_error_(plistData, NSPropertyListXMLFormat_v1_0, None, None)) 
	
	## Read and buffer the user's ShadowHashData
	userShadowHashData = buffer(userPlist['ShadowHashData'][0])
	
	## Convert the ShadowHashData Data into a Dictionary
	(userShadowHashPlist, _, _) = (NSPropertyListSerialization.propertyListWithData_options_format_error_(userShadowHashData, NSPropertyListXMLFormat_v1_0, None, None))
	
	## Remove unsecured hash types
	del userShadowHashPlist['CRAM-MD5']
	del userShadowHashPlist['NT']
		
	## Convert the ShadowHashData back to data
	(userShadowHashData, _) = (NSPropertyListSerialization.dataWithPropertyList_format_options_error_(userShadowHashPlist, NSPropertyListBinaryFormat_v1_0, 0, None))
	return str(userShadowHashData).encode('hex')
예제 #5
0
def writePlistToString(rootObject):
    '''Return 'rootObject' as a plist-formatted string.'''
    (plistData, error) = (
        NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            rootObject, NSPropertyListXMLFormat_v1_0, 0, None))
    if error:
        raise NSPropertyListSerializationException(error)
    else:
        return str(plistData)
예제 #6
0
def writePlistToString(rootObject):
    '''Return 'rootObject' as a plist-formatted string.'''
    (plistData, error) = (
        NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            rootObject, NSPropertyListXMLFormat_v1_0, 0, None))
    if error:
        raise NSPropertyListSerializationException(error)
    else:
        return str(plistData)
예제 #7
0
 def write_recipe(self, path):
     """Write a recipe to path."""
     path = os.path.expanduser(path)
     plist_data, error = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
         self._xml, NSPropertyListXMLFormat_v1_0, 0, None)
     if error:
         raise Exception(error)
     else:
         if plist_data.writeToFile_atomically_(path, True):
             return
         else:
             raise Exception("Failed writing data to %s" % path)
예제 #8
0
def writePlist(dataObject, filepath):
    '''Write 'rootObject' as a plist to filepath.'''
    (plistData, error) = (
        NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            dataObject, NSPropertyListXMLFormat_v1_0, 0, None))
    if error:
        raise NSPropertyListSerializationException(error)
    else:
        if plistData.writeToFile_atomically_(filepath, True):
            return
        else:
            raise NSPropertyListWriteException(
                u"Failed to write plist data to %s" % filepath)
예제 #9
0
def writePlist(dataObject, filepath):
    '''Write 'rootObject' as a plist to filepath.'''
    (plistData, error) = (
        NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            dataObject, NSPropertyListXMLFormat_v1_0, 0, None))
    if error:
        raise NSPropertyListSerializationException(error)
    else:
        if plistData.writeToFile_atomically_(filepath, True):
            return
        else:
            raise NSPropertyListWriteException(
                u"Failed to write plist data to %s" % filepath)
예제 #10
0
def export_command(args):
    """Export EAPClientProfile Command."""
    if args.uuid:
        p = profile_with_uuid(args.uuid)
        plist_data = p.__plist__()
        d, err = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            plist_data,
            NSPropertyListXMLFormat_v1_0,
            0,
            None,
        )

        print(d)
예제 #11
0
def _plistToData(plistObject):
    """low-level function that creates NSData from a plist object"""
    darwin_vers = int(os.uname()[2].split(".")[0])
    if darwin_vers > 10:
        (data, error) = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            plistObject, NSPropertyListXMLFormat_v1_0, 0, None
        )
    else:
        # use the older NSPropertyListSerialization function on 10.6 and 10.5
        (data, error) = NSPropertyListSerialization.dataFromPropertyList_format_errorDescription_(
            plistObject, NSPropertyListXMLFormat_v1_0, None
        )
    if error:
        raise NSPropertyListSerializationException(error)
    return data
예제 #12
0
 def write_recipe(self, path):
     """Write a recipe to path."""
     path = os.path.expanduser(path)
     plist_data, error = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
         self._xml,
         NSPropertyListXMLFormat_v1_0,
         0,
         None
     )
     if error:
         raise Exception(error)
     else:
         if plist_data.writeToFile_atomically_(path, True):
             return
         else:
             raise Exception("Failed writing data to %s" % path)
예제 #13
0
def _plistToData(plistObject):
    '''low-level function that creates NSData from a plist object'''
    darwin_vers = int(os.uname()[2].split('.')[0])
    if darwin_vers > 10:
        (data, error) = (
            NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
                plistObject, NSPropertyListXMLFormat_v1_0, 0, None))
    else:
        # use the older NSPropertyListSerialization function on 10.6 and 10.5
        (data, error) = (
            NSPropertyListSerialization.dataFromPropertyList_format_errorDescription_(
                plistObject, NSPropertyListXMLFormat_v1_0, None))
    if data is None:
        if error is None:
            error = "Property list invalid for format."
        raise NSPropertyListSerializationException(error)
    return data
예제 #14
0
def _plistToData(plistObject):
    '''low-level function that creates NSData from a plist object'''
    darwin_vers = int(os.uname()[2].split('.')[0])
    if darwin_vers > 10:
        (data, error) = (
            NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
                plistObject, NSPropertyListXMLFormat_v1_0, 0, None))
    else:
        # use the older NSPropertyListSerialization function on 10.6 and 10.5
        (data, error) = (
            NSPropertyListSerialization.dataFromPropertyList_format_errorDescription_(
                plistObject, NSPropertyListXMLFormat_v1_0, None))
    if data is None:
        if error is None:
            error = "Property list invalid for format."
        raise NSPropertyListSerializationException(error)
    return data
예제 #15
0
    def write_plist(self, path="."):
        """Write plist to path.

        Args:
            path: String path to desired plist file.

        Raises:
            PlistDataError: There was an error in the data.
            PlistWriteError: Plist could not be written.
        """
        plist_data, error = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            self, NSPropertyListXMLFormat_v1_0, 0, None)
        if plist_data is None:
            if error is None:
                error = "Failed to serialize data to plist."
            raise PlistDataError(error)
        else:
            if not plist_data.writeToFile_atomically_(os.path.expanduser(path),
                                                      True):
                raise PlistWriteError("Failed writing data to %s" % path)
예제 #16
0
def write(plist_contents: Dict,
          plist_path: str,
          plist_format: Format = Format.BINARY) -> None:
    """Write dictionary to a plist file."""
    exc.raise_if_falsy(plist_contents=plist_contents,
                       plist_path=plist_path,
                       plist_format=plist_format)

    data, error = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
        plist_contents, plist_format.value, 0, objc.nil)

    if not data:
        _raise_ioerror_from_nserror(error,
                                    'Failed to serialize plist contents.')

    success, error = data.writeToFile_options_error_(plist_path,
                                                     NSDataWritingAtomic,
                                                     objc.nil)

    if not success:
        _raise_ioerror_from_nserror(
            error, 'Failed to write plist to path: {}'.format(plist_path))
예제 #17
0
    def write_plist(self, path):
        """Write plist to path.

        Args:
            path: String path to desired plist file.

        Raises:
            PlistDataError: There was an error in the data.
            PlistWriteError: Plist could not be written.
        """
        plist_data, error = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
            self,
            NSPropertyListXMLFormat_v1_0,
            0,
            None)
        if plist_data is None:
            if error is None:
                error = "Failed to serialize data to plist."
            raise PlistDataError(error)
        else:
            if not plist_data.writeToFile_atomically_(
                    os.path.expanduser(path), True):
                raise PlistWriteError("Failed writing data to %s" % path)
예제 #18
0
def plist(obj):
    from Foundation import NSPropertyListSerialization, NSPropertyListBinaryFormat_v1_0
    b = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(
        obj, NSPropertyListBinaryFormat_v1_0, 0, None)
    return str(b.bytes())