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'
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)
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())
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')
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)
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)
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)
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)
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)
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)
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
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)
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
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
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)
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))
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)
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())