Localizations

This commit is contained in:
Patrick Wardle
2024-08-24 16:07:56 -10:00
parent 11ecd9b0ee
commit 53494bd352
47 changed files with 2287 additions and 306 deletions
+25 -76
View File
@@ -57,9 +57,6 @@
//defaults
NSUserDefaults* defaults = nil;
//app's (self) signing status
OSStatus signingStatus = -1;
//init filter object
itemFilter = [[Filter alloc] init];
@@ -79,19 +76,6 @@
// work-around for menu not showing since we set Application is agent(UIElement): YES
[[[NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.objective-see.KnockKnock"] firstObject] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
//verify self
signingStatus = verifySelf();
//show error if app (self) cannot be verified
if(noErr != signingStatus)
{
//show alert
[self showUnverifiedAlert:signingStatus];
//exit
exit(0);
}
//load defaults
defaults = [NSUserDefaults standardUserDefaults];
@@ -171,7 +155,7 @@
[self.scanButtonLabel setStringValue:START_SCAN];
//set version info
[self.versionString setStringValue:[NSString stringWithFormat:@"version: %@", getAppVersion()]];
[self.versionString setStringValue:[NSString stringWithFormat:NSLocalizedString(@"version: %@", @"version: %@"), getAppVersion()]];
//init tracking areas
[self initTrackingAreas];
@@ -246,16 +230,16 @@
infoAlert = [[NSAlert alloc] init];
//main text
infoAlert.messageText = @"Open 'System Preferences' to give KnockKnock Full Disk Access?";
infoAlert.messageText = NSLocalizedString(@"Open 'System Preferences' to give KnockKnock Full Disk Access?", @"Open 'System Preferences' to give KnockKnock Full Disk Access?");
//detailed test
infoAlert.informativeText = @"This allows the app to perform a comprehensive scan.\n\nIn System Preferences:\r ▪ Click the 🔒 to authenticate\r ▪ Click the to add KnockKnock.app\n";
infoAlert.informativeText = NSLocalizedString(@"This allows the app to perform a comprehensive scan.\n\nIn System Preferences:\r ▪ Click the 🔒 to authenticate\r ▪ Click the to add KnockKnock.app\n", @"This allows the app to perform a comprehensive scan.\n\nIn System Preferences:\r ▪ Click the 🔒 to authenticate\r ▪ Click the to add KnockKnock.app\n");
//ok button
[infoAlert addButtonWithTitle:@"OK"];
[infoAlert addButtonWithTitle:NSLocalizedString(@"OK", @"OK")];
//alert button
[infoAlert addButtonWithTitle:@"Cancel"];
[infoAlert addButtonWithTitle:NSLocalizedString(@"Cancel", @"Cancel")];
//show 'alert' and capture user response
// user clicked 'OK'? -> open System Preferences
@@ -270,36 +254,6 @@
return;
}
//display alert about OS not being supported
-(void)showUnsupportedAlert
{
//alert box
NSAlert* unsupportedAlert = nil;
//alloc/init alert
unsupportedAlert = [NSAlert alertWithMessageText:[NSString stringWithFormat:@"OS X %@ is not supported", [[NSProcessInfo processInfo] operatingSystemVersionString]] defaultButton:@"Ok" alternateButton:nil otherButton:nil informativeTextWithFormat:@"sorry for the inconvenience!"];
//show it
[unsupportedAlert runModal];
return;
}
//display alert about app being unverifable
-(void)showUnverifiedAlert:(OSStatus)signingError
{
//alert box
NSAlert* modifiedAlert = nil;
//alloc/init alert
modifiedAlert = [NSAlert alertWithMessageText:@"ERROR: application could not be verified" defaultButton:@"Ok" alternateButton:nil otherButton:nil informativeTextWithFormat:@"code: %d\nplease re-download, and run again", signingError];
//show it
[modifiedAlert runModal];
return;
}
//init tracking areas for buttons
// provides mouse over effects (i.e. image swaps)
-(void)initTrackingAreas
@@ -380,7 +334,7 @@
for(NSUInteger i=0; i < pluginCount; i++)
{
//init plugin
pluginObj = [(PluginBase*)([NSClassFromString(SUPPORTED_PLUGINS[i]) alloc]) init];
pluginObj = [[NSClassFromString(SUPPORTED_PLUGINS[i]) alloc] init];
//save it
[pluginObjects addObject:pluginObj];
@@ -484,7 +438,7 @@
self.statusText.hidden = NO;
//update
[self.statusText setStringValue:[NSString stringWithFormat:@"Scanning: %@", plugin.name]];
[self.statusText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Scanning: %@", @"Scanning: %@"), plugin.name]];
});
@@ -519,7 +473,7 @@
dispatch_sync(dispatch_get_main_queue(), ^{
//update
[self.statusText setStringValue:[NSString stringWithFormat:@"Awaiting VirusTotal results"]];
[self.statusText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Awaiting VirusTotal results", @"Awaiting VirusTotal results")]];
});
@@ -626,7 +580,7 @@
{
//open URL
// ->invokes user's default browser
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://objective-see.com"]];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://objective-see.org"]];
return;
}
@@ -985,7 +939,7 @@
flaggedItemCount += plugin.flaggedItems.count;
//init detailed msg
details = [NSMutableString stringWithFormat:@"■ Found %lu items", (unsigned long)itemCount];
details = [NSMutableString stringWithFormat:NSLocalizedString(@"■ Found %lu items", @"■ Found %lu items"), (unsigned long)itemCount];
}
//otherwise just unknown items
else
@@ -1006,7 +960,7 @@
}
//init detailed msg
details = [NSMutableString stringWithFormat:@"■ Found %lu non-OS items", (unsigned long)itemCount];
details = [NSMutableString stringWithFormat:NSLocalizedString(@"■ Found %lu non-OS items", @"■ Found %lu non-OS items"), (unsigned long)itemCount];
}
}
@@ -1019,14 +973,14 @@
if(YES != self.isConnected)
{
//add disconnected msg
[details appendFormat:@" \r\n■ Unable to query VirusTotal (network)"];
[details appendFormat:NSLocalizedString(@" \r\n■ Unable to query VirusTotal (network)", @" \r\n■ Unable to query VirusTotal (network)")];
}
//otherwise
// ->add details about # of flagged items
else
{
//add flagged items
[details appendFormat:@" \r\n■ %lu item(s) flagged by VirusTotal", flaggedItemCount];
[details appendFormat:NSLocalizedString(@" \r\n■ %lu item(s) flagged by VirusTotal", @" \r\n■ %lu item(s) flagged by VirusTotal"), flaggedItemCount];
}
}
@@ -1105,7 +1059,7 @@
if(SCAN_BUTTON_TAG == tag)
{
//scan running?
if(YES == [self.scanButtonLabel.stringValue isEqualToString:@"Stop Scan"])
if(YES == [self.scanButtonLabel.stringValue isEqualToString:NSLocalizedString(@"Stop Scan", @"Stop Scan")])
{
//set
imageName = @"stopScan";
@@ -1147,7 +1101,7 @@
if(SCAN_BUTTON_TAG == tag)
{
//scan running
if(YES == [self.scanButtonLabel.stringValue isEqualToString:@"Stop Scan"])
if(YES == [self.scanButtonLabel.stringValue isEqualToString:NSLocalizedString(@"Stop Scan", @"Stop Scan")])
{
//set
imageName = @"stopScanOver";
@@ -1305,17 +1259,12 @@
NSLog(@"OBJECTIVE-SEE ERROR: saving output to %@ failed with %@", [panel URL], error);
//init popup w/ error msg
saveResultPopup = [NSAlert alertWithMessageText:@"ERROR: failed to save output" defaultButton:@"Ok" alternateButton:nil otherButton:nil informativeTextWithFormat:@"details: %@", error];
saveResultPopup = [NSAlert alertWithMessageText:NSLocalizedString(@"ERROR: failed to save output", @"ERROR: failed to save output") defaultButton:NSLocalizedString(@"Ok",@"Ok") alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedString(@"details: %@", @"details: %@"), error];
}
//happy
// ->set result msg
else
{
//init popup w/ msg
saveResultPopup = [NSAlert alertWithMessageText:@"Succesfully saved output" defaultButton:@"Ok" alternateButton:nil otherButton:nil informativeTextWithFormat:@"file: %s", [[panel URL] fileSystemRepresentation]];
}
//TODO: show in Finder
//show popup
[saveResultPopup runModal];
@@ -1431,10 +1380,10 @@
case UPDATE_ERROR:
//set details
details = @"error, failed to check for an update.";
details = NSLocalizedString(@"error, failed to check for an update.", @"error, failed to check for an update.");
//set action
action = @"Close";
action = NSLocalizedString(@"Close", @"Close");
break;
@@ -1442,10 +1391,10 @@
case UPDATE_NOTHING_NEW:
//set details
details = [NSString stringWithFormat:@"you're all up to date! (v. %@)", getAppVersion()];
details = [NSString stringWithFormat:NSLocalizedString(@"you're all up to date! (v. %@)", @"you're all up to date! (v. %@)"), getAppVersion()];
//set action
action = @"Close";
action = NSLocalizedString(@"Close", @"Close");
break;
@@ -1453,10 +1402,10 @@
case UPDATE_NEW_VERSION:
//set details
details = [NSString stringWithFormat:@"a new version (%@) is available!", newVersion];
details = [NSString stringWithFormat:NSLocalizedString(@"a new version (%@) is available!", @"a new version (%@) is available!"), newVersion];
//set action
action = @"Update";
action = NSLocalizedString(@"Update", @"Update");
break;
}
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22690"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -53,7 +53,7 @@
<window title="KnockKnock" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="371" userLabel="Main Window">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="0.0" y="0.0" width="1295" height="671"/>
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<value key="minSize" type="size" width="1000" height="597"/>
<value key="maxSize" type="size" width="2500" height="1000"/>
<view key="contentView" misplaced="YES" id="372">
@@ -100,7 +100,7 @@
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSColorPanel" id="JBT-rT-wqy"/>
</imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="xGV-Tx-yH1">
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="xGV-Tx-yH1">
<rect key="frame" x="54" y="33" width="282" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="278" id="EuR-1k-VH6"/>
@@ -111,7 +111,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="749" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="8wd-TY-VtF">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="749" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="8wd-TY-VtF">
<rect key="frame" x="54" y="15" width="325" height="13"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Item Category Description" id="5m9-ob-we9">
<font key="font" size="11" name="Menlo-Regular"/>
@@ -119,7 +119,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="COl-vm-3pc">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="COl-vm-3pc">
<rect key="frame" x="340" y="43" width="40" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="36" id="UXg-0o-sWR"/>
@@ -200,7 +200,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="577">
<rect key="frame" x="5" y="8" width="40" height="51"/>
<rect key="frame" x="5" y="8" width="40" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="kB1-L8-KFN"/>
<constraint firstAttribute="width" constant="40" id="wxT-p0-paD"/>
@@ -215,7 +215,7 @@
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="signed" id="gVd-oB-yPP"/>
</imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="578">
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="578">
<rect key="frame" x="66" y="39" width="586" height="15"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Item Name" id="579">
<font key="font" size="13" name="Menlo-Regular"/>
@@ -234,7 +234,7 @@
<constraint firstAttribute="height" constant="29" id="ahw-QZ-Z1R"/>
</constraints>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="104" translatesAutoresizingMaskIntoConstraints="NO" id="CiH-Az-c01">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="104" translatesAutoresizingMaskIntoConstraints="NO" id="CiH-Az-c01">
<rect key="frame" x="654" y="4" width="65" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="6jt-Ne-3IA"/>
@@ -260,7 +260,7 @@
<action selector="showInfo:" target="8VH-uv-w4O" id="pNK-sy-1L0"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="106" translatesAutoresizingMaskIntoConstraints="NO" id="Mkq-Uk-nSg">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="106" translatesAutoresizingMaskIntoConstraints="NO" id="Mkq-Uk-nSg">
<rect key="frame" x="714" y="4" width="49" height="12"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="1s0-Zf-mjM"/>
@@ -286,7 +286,7 @@
<action selector="showInFinder:" target="8VH-uv-w4O" id="elc-yI-cGX"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="108" translatesAutoresizingMaskIntoConstraints="NO" id="rjr-rW-ScS">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="108" translatesAutoresizingMaskIntoConstraints="NO" id="rjr-rW-ScS">
<rect key="frame" x="758" y="4" width="49" height="12"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="2RI-E3-pmm"/>
@@ -298,7 +298,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="BUm-sJ-dtF">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="BUm-sJ-dtF">
<rect key="frame" x="51" y="24" width="606" height="13"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="item path" id="mds-5g-doD">
<font key="font" size="11" name="Menlo-Regular"/>
@@ -306,7 +306,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="u9p-Kt-bod">
<textField hidden="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="u9p-Kt-bod">
<rect key="frame" x="51" y="14" width="606" height="13"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="item plist" id="Xud-mK-lFp">
<font key="font" size="11" name="Menlo-Regular"/>
@@ -359,7 +359,7 @@
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="binaryIcon" id="dVo-AX-092"/>
</imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="s2m-Ro-25U">
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="s2m-Ro-25U">
<rect key="frame" x="51" y="38" width="712" height="15"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Command" id="66D-SU-ADH">
<font key="font" size="13" name="Menlo-Regular"/>
@@ -367,7 +367,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="ZOQ-sX-OJ3">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="ZOQ-sX-OJ3">
<rect key="frame" x="51" y="22" width="712" height="13"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="item path" id="W7z-UG-RS9">
<font key="font" size="11" name="Menlo-Regular"/>
@@ -389,7 +389,7 @@
<action selector="showInFinder:" target="8VH-uv-w4O" id="9Dd-FG-R1Y"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="108" translatesAutoresizingMaskIntoConstraints="NO" id="W4S-lZ-nlD">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="108" translatesAutoresizingMaskIntoConstraints="NO" id="W4S-lZ-nlD">
<rect key="frame" x="758" y="4" width="49" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="WzJ-X9-e7f"/>
@@ -441,7 +441,7 @@
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="768">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="768">
<rect key="frame" x="563" y="567" width="129" height="24"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Start Scan" id="769">
<font key="font" size="20" name="Menlo-Bold"/>
@@ -464,7 +464,7 @@
<constraint firstAttribute="height" constant="32" id="aeM-9z-lBy"/>
</constraints>
</progressIndicator>
<textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="745">
<textField hidden="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="745">
<rect key="frame" x="1120" y="19" width="75" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="1aa-3i-5H9"/>
@@ -519,7 +519,7 @@
<action selector="saveResults:" target="494" id="uNp-yV-2St"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" alphaValue="0.14999999999999999" translatesAutoresizingMaskIntoConstraints="NO" id="LfL-UI-usm">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" alphaValue="0.14999999999999999" translatesAutoresizingMaskIntoConstraints="NO" id="LfL-UI-usm">
<rect key="frame" x="1125" y="613" width="128" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="124" id="Ad2-tH-lq6"/>
@@ -554,7 +554,7 @@
</constraints>
<color key="borderColor" red="0.57623034719999999" green="0.75666517020000001" blue="0.23727124929999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kNk-UY-Y8u">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kNk-UY-Y8u">
<rect key="frame" x="3" y="517" width="97" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Categories:" id="8lb-2h-A37">
@@ -563,7 +563,7 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fVB-DL-Qgc">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fVB-DL-Qgc">
<rect key="frame" x="435" y="517" width="89" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Items:" id="akD-jt-Y0L">
@@ -659,7 +659,7 @@
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="gD4-T8-B0H" userLabel="Friends">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<rect key="contentRect" x="2843" y="305" width="767" height="288"/>
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<view key="contentView" id="zIY-EJ-oYy">
<rect key="frame" x="0.0" y="0.0" width="767" height="288"/>
<autoresizingMask key="autoresizingMask"/>
@@ -675,7 +675,7 @@
<action selector="closeFriendsWindow:" target="494" id="4tu-GP-sAX"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="G5i-Vw-RGw">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="G5i-Vw-RGw">
<rect key="frame" x="72" y="210" width="623" height="63"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Mahalo to the &quot;Friends of Objective-See&quot;" id="JSF-ba-pCy">
@@ -732,7 +732,7 @@
<image name="FriendsMosyle" width="963" height="265"/>
<image name="FriendsPANW" width="1312" height="240"/>
<image name="FriendsSophos" width="518" height="137"/>
<image name="NSActionTemplate" width="20" height="20"/>
<image name="NSActionTemplate" width="19" height="19"/>
<image name="NSColorPanel" width="32" height="32"/>
<image name="binaryIcon" width="512" height="512"/>
<image name="info" width="256" height="256"/>
+2 -2
View File
@@ -280,14 +280,14 @@ enum Signer{None, Apple, AppStore, DevID, AdHoc};
#define PATREON_URL @"https://www.patreon.com/bePatron?c=701171"
//product url
#define PRODUCT_URL @"https://objective-see.com/products/knockknock.html"
#define PRODUCT_URL @"https://objective-see.org/products/knockknock.html"
//product name
// ...for version check
#define PRODUCT_NAME @"KnockKnock"
//product version url
#define PRODUCT_VERSIONS_URL @"https://objective-see.com/products.json"
#define PRODUCT_VERSIONS_URL @"https://objective-see.org/products.json"
//update error
#define UPDATE_ERROR -1
+753
View File
@@ -0,0 +1,753 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22690"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="494" id="495"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<menu title="AMainMenu" systemMenu="main" id="29">
<items>
<menuItem title="KnockKnock" id="56">
<menu key="submenu" title="KnockKnock" systemMenu="apple" id="57">
<items>
<menuItem title="About" id="134">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="about:" target="494" id="1Av-a0-4RW"/>
</connections>
</menuItem>
<menuItem title="Preferences" tag="1" id="Cd7-Xq-jnw">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="showPreferences:" target="494" id="h1a-NR-0PY"/>
</connections>
</menuItem>
<menuItem title="Check For Update..." tag="2" id="m5h-Zp-Y8c">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="check4Update:" target="494" id="w2B-fN-g1g"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="149">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Quit" tag="3" keyEquivalent="q" id="136">
<connections>
<action selector="terminate:" target="-3" id="449"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
<point key="canvasLocation" x="43" y="-154"/>
</menu>
<window title="KnockKnock" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="371" userLabel="Main Window">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="0.0" y="0.0" width="1295" height="671"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<value key="minSize" type="size" width="1000" height="597"/>
<value key="maxSize" type="size" width="2500" height="1000"/>
<view key="contentView" misplaced="YES" id="372">
<rect key="frame" x="0.0" y="0.0" width="1295" height="671"/>
<autoresizingMask key="autoresizingMask"/>
<userGuides>
<userLayoutGuide location="662" affinity="minY"/>
</userGuides>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="68" horizontalPageScroll="10" verticalLineScroll="68" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rqX-FA-o3e" customClass="RFOverlayScrollView">
<rect key="frame" x="-5" y="52" width="400" height="468"/>
<clipView key="contentView" drawsBackground="NO" id="GbW-la-76n">
<rect key="frame" x="0.0" y="0.0" width="400" height="468"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" tag="99" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="66" viewBased="YES" floatsGroupRows="NO" id="zYP-0r-U2A">
<rect key="frame" x="0.0" y="0.0" width="400" height="468"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="MainCell" editable="NO" width="368" minWidth="368" maxWidth="368" id="YxG-Lg-xla">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="categories">
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="Ybp-gD-hTK">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="categoryCell" id="xyl-A2-Ges">
<rect key="frame" x="11" y="1" width="377" height="66"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="xh4-Ga-2R3">
<rect key="frame" x="4" y="17" width="40" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="32" id="dgJ-Bz-fYq"/>
<constraint firstAttribute="width" constant="40" id="yZI-zl-HNC"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSColorPanel" id="JBT-rT-wqy"/>
</imageView>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="xGV-Tx-yH1">
<rect key="frame" x="54" y="33" width="282" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="278" id="EuR-1k-VH6"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Item Category" id="DUA-BI-gth">
<font key="font" size="17" name="Menlo-Bold"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="749" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="8wd-TY-VtF">
<rect key="frame" x="54" y="15" width="325" height="13"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Item Category Description" id="5m9-ob-we9">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="COl-vm-3pc">
<rect key="frame" x="340" y="43" width="40" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="36" id="UXg-0o-sWR"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="000" id="jB9-4g-VcD">
<font key="font" size="17" name="Menlo-Regular"/>
<color key="textColor" white="0.45205439809999998" alpha="0.84999999999999998" colorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="xGV-Tx-yH1" firstAttribute="leading" secondItem="xh4-Ga-2R3" secondAttribute="trailing" constant="12" id="EXr-B8-chd"/>
<constraint firstItem="xh4-Ga-2R3" firstAttribute="centerY" secondItem="xyl-A2-Ges" secondAttribute="centerY" id="GPA-7Y-mPo"/>
<constraint firstItem="8wd-TY-VtF" firstAttribute="leading" secondItem="xh4-Ga-2R3" secondAttribute="trailing" constant="12" id="PHm-Bt-q58"/>
<constraint firstItem="xGV-Tx-yH1" firstAttribute="top" secondItem="xyl-A2-Ges" secondAttribute="top" constant="13" id="PvE-7Q-kXz"/>
<constraint firstAttribute="bottom" secondItem="8wd-TY-VtF" secondAttribute="bottom" constant="15" id="QGE-e5-LM2"/>
<constraint firstAttribute="trailing" secondItem="8wd-TY-VtF" secondAttribute="trailing" id="SGb-BP-LZI"/>
<constraint firstItem="xh4-Ga-2R3" firstAttribute="leading" secondItem="xyl-A2-Ges" secondAttribute="leading" constant="4" id="d6D-1Z-Q4e"/>
<constraint firstItem="COl-vm-3pc" firstAttribute="top" secondItem="xyl-A2-Ges" secondAttribute="top" constant="3" id="pSg-DQ-zPo"/>
<constraint firstAttribute="trailing" secondItem="COl-vm-3pc" secondAttribute="trailing" constant="-1" id="pgN-Jo-a5J"/>
</constraints>
<connections>
<outlet property="imageView" destination="xh4-Ga-2R3" id="6F6-3c-OWh"/>
<outlet property="textField" destination="xGV-Tx-yH1" id="h0N-Pf-9dL"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="SmD-QP-397" id="WGC-pN-Tbg"/>
<outlet property="delegate" destination="SmD-QP-397" id="YX1-DF-hMB"/>
</connections>
</tableView>
</subviews>
<nil key="backgroundColor"/>
</clipView>
<constraints>
<constraint firstAttribute="width" constant="400" id="XkS-rH-sQN"/>
</constraints>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" controlSize="mini" horizontal="YES" id="7vn-ou-LQB">
<rect key="frame" x="1" y="298" width="480" height="16"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" controlSize="mini" horizontal="NO" id="UN2-nS-XZS" customClass="RFOverlayScroller">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="68" horizontalPageScroll="10" verticalLineScroll="68" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="536" customClass="RFOverlayScrollView">
<rect key="frame" x="427" y="52" width="828" height="468"/>
<clipView key="contentView" drawsBackground="NO" id="LBx-qs-tgi">
<rect key="frame" x="0.0" y="0.0" width="828" height="468"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="66" rowSizeStyle="automatic" viewBased="YES" id="537">
<rect key="frame" x="0.0" y="0.0" width="828" height="468"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="MainCell" editable="NO" width="796" minWidth="40" maxWidth="2000" id="541">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="544">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="FileCell" id="576">
<rect key="frame" x="11" y="1" width="805" height="66"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="577">
<rect key="frame" x="5" y="8" width="40" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="kB1-L8-KFN"/>
<constraint firstAttribute="width" constant="40" id="wxT-p0-paD"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="580"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="lmb-Gf-NAo">
<rect key="frame" x="53" y="41" width="11" height="11"/>
<constraints>
<constraint firstAttribute="height" constant="11" id="6h8-zN-IAf"/>
<constraint firstAttribute="width" constant="11" id="pXI-22-KE9"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="signed" id="gVd-oB-yPP"/>
</imageView>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="578">
<rect key="frame" x="66" y="39" width="586" height="15"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Item Name" id="579">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button toolTip="show virustotal info" tag="103" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jMK-Qd-DDP" customClass="VTButton">
<rect key="frame" x="661" y="19" width="49" height="29"/>
<buttonCell key="cell" type="bevel" title="▪ ▪ ▪" bezelStyle="regularSquare" imagePosition="overlaps" alignment="center" enabled="NO" refusesFirstResponder="YES" state="on" imageScaling="proportionallyDown" inset="2" id="1za-Bx-vuB">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" size="8" name="Menlo-Bold"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" constant="49" id="4GP-IV-TxD"/>
<constraint firstAttribute="height" constant="29" id="ahw-QZ-Z1R"/>
</constraints>
</button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="104" translatesAutoresizingMaskIntoConstraints="NO" id="CiH-Az-c01">
<rect key="frame" x="654" y="4" width="65" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="6jt-Ne-3IA"/>
<constraint firstAttribute="width" constant="61" id="Csc-5I-vNn"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="virustotal" id="50R-D6-zAq">
<font key="font" size="9" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button toolTip="show file info" tag="105" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1D0-FU-7Yz">
<rect key="frame" x="728" y="23" width="21" height="21"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="info" imagePosition="only" alignment="center" alternateImage="infoBG" state="on" imageScaling="proportionallyDown" inset="2" id="kiw-Hx-aiN">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" constant="21" id="H5r-kf-JB8"/>
<constraint firstAttribute="height" constant="21" id="eWB-hd-Kcv"/>
</constraints>
<connections>
<action selector="showInfo:" target="8VH-uv-w4O" id="pNK-sy-1L0"/>
</connections>
</button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="106" translatesAutoresizingMaskIntoConstraints="NO" id="Mkq-Uk-nSg">
<rect key="frame" x="714" y="4" width="49" height="12"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="1s0-Zf-mjM"/>
<constraint firstAttribute="height" constant="12" id="Xzb-iR-pDz"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="info" id="NHF-GA-lDe">
<font key="font" size="9" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button toolTip="show in finder" tag="107" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="602">
<rect key="frame" x="769" y="21" width="27" height="24"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="show" imagePosition="only" alignment="center" alternateImage="showBG" state="on" imageScaling="proportionallyDown" inset="2" id="603">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" constant="27" id="K7d-Mq-cdn"/>
<constraint firstAttribute="height" constant="24" id="PiG-96-MLK"/>
</constraints>
<connections>
<action selector="showInFinder:" target="8VH-uv-w4O" id="elc-yI-cGX"/>
</connections>
</button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="108" translatesAutoresizingMaskIntoConstraints="NO" id="rjr-rW-ScS">
<rect key="frame" x="758" y="4" width="49" height="12"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="2RI-E3-pmm"/>
<constraint firstAttribute="height" constant="12" id="cLw-ol-XjQ"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="show" id="3n6-7o-mGC">
<font key="font" size="9" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="BUm-sJ-dtF">
<rect key="frame" x="51" y="24" width="606" height="13"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="item path" id="mds-5g-doD">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField hidden="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="102" translatesAutoresizingMaskIntoConstraints="NO" id="u9p-Kt-bod">
<rect key="frame" x="51" y="14" width="606" height="13"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="item plist" id="Xud-mK-lFp">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="577" firstAttribute="top" secondItem="576" secondAttribute="top" constant="13" id="68k-YR-7Xb"/>
<constraint firstItem="577" firstAttribute="leading" secondItem="576" secondAttribute="leading" constant="5" id="7rt-Vz-O2D"/>
<constraint firstItem="602" firstAttribute="leading" secondItem="1D0-FU-7Yz" secondAttribute="trailing" constant="20" id="Avj-x7-xrO"/>
<constraint firstAttribute="trailing" secondItem="u9p-Kt-bod" secondAttribute="trailing" constant="150" id="BgY-wb-pop"/>
<constraint firstItem="578" firstAttribute="leading" secondItem="577" secondAttribute="trailing" constant="23" identifier="itemNameLeftPadding" id="CUg-kd-MXX"/>
<constraint firstAttribute="trailing" secondItem="578" secondAttribute="trailing" constant="155" id="Dur-8R-AXM"/>
<constraint firstAttribute="trailing" secondItem="Mkq-Uk-nSg" secondAttribute="trailing" constant="44" id="HYM-Fc-4Uc"/>
<constraint firstItem="BUm-sJ-dtF" firstAttribute="leading" secondItem="577" secondAttribute="trailing" constant="8" id="Krc-Rz-RiV"/>
<constraint firstItem="1D0-FU-7Yz" firstAttribute="centerY" secondItem="602" secondAttribute="centerY" id="Ll9-VD-Dfx"/>
<constraint firstItem="rjr-rW-ScS" firstAttribute="leading" secondItem="CiH-Az-c01" secondAttribute="trailing" constant="43" id="LuG-Br-Mor"/>
<constraint firstItem="578" firstAttribute="top" secondItem="576" secondAttribute="top" constant="12" id="REA-TZ-G0x"/>
<constraint firstAttribute="trailing" secondItem="rjr-rW-ScS" secondAttribute="trailing" id="Snx-x8-XMM"/>
<constraint firstItem="jMK-Qd-DDP" firstAttribute="centerY" secondItem="577" secondAttribute="centerY" id="Spf-6G-ih6"/>
<constraint firstItem="u9p-Kt-bod" firstAttribute="leading" secondItem="577" secondAttribute="trailing" constant="8" id="WQ0-6D-CSP"/>
<constraint firstItem="Mkq-Uk-nSg" firstAttribute="baseline" secondItem="rjr-rW-ScS" secondAttribute="baseline" id="ZPT-86-vbZ"/>
<constraint firstItem="1D0-FU-7Yz" firstAttribute="leading" secondItem="jMK-Qd-DDP" secondAttribute="trailing" constant="18" id="d1Q-4K-GLe"/>
<constraint firstItem="u9p-Kt-bod" firstAttribute="top" secondItem="578" secondAttribute="bottom" constant="12" id="df0-lA-pOl"/>
<constraint firstAttribute="trailing" secondItem="602" secondAttribute="trailing" constant="9" id="fLY-uL-geN"/>
<constraint firstItem="lmb-Gf-NAo" firstAttribute="centerY" secondItem="578" secondAttribute="centerY" id="g5b-vO-rv8"/>
<constraint firstItem="1D0-FU-7Yz" firstAttribute="centerY" secondItem="577" secondAttribute="centerY" id="gCl-JB-HZj"/>
<constraint firstItem="CiH-Az-c01" firstAttribute="top" secondItem="jMK-Qd-DDP" secondAttribute="bottom" constant="3" id="hDp-En-YKj"/>
<constraint firstItem="CiH-Az-c01" firstAttribute="baseline" secondItem="Mkq-Uk-nSg" secondAttribute="baseline" id="kz6-Ki-dvM"/>
<constraint firstItem="lmb-Gf-NAo" firstAttribute="leading" secondItem="BUm-sJ-dtF" secondAttribute="leading" id="pud-rT-yh8"/>
<constraint firstItem="BUm-sJ-dtF" firstAttribute="top" secondItem="578" secondAttribute="bottom" constant="2" identifier="itemPathTopPadding" id="vti-l0-X0m"/>
<constraint firstAttribute="trailing" secondItem="BUm-sJ-dtF" secondAttribute="trailing" constant="150" id="xOJ-5M-z93"/>
</constraints>
<connections>
<outlet property="imageView" destination="577" id="581"/>
<outlet property="textField" destination="578" id="582"/>
</connections>
</tableCellView>
<tableCellView identifier="CommandCell" id="n0G-fw-7qX">
<rect key="frame" x="11" y="69" width="805" height="66"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="9vY-7y-ZHe">
<rect key="frame" x="5" y="13" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="FGT-Jy-fjH"/>
<constraint firstAttribute="height" constant="40" id="hXF-k5-7IJ"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="binaryIcon" id="dVo-AX-092"/>
</imageView>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="s2m-Ro-25U">
<rect key="frame" x="51" y="38" width="712" height="15"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Command" id="66D-SU-ADH">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="ZOQ-sX-OJ3">
<rect key="frame" x="51" y="22" width="712" height="13"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="item path" id="W7z-UG-RS9">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button toolTip="show in finder" tag="107" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FJa-D6-BXh">
<rect key="frame" x="769" y="20" width="27" height="24"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="show" imagePosition="only" alignment="center" alternateImage="showBG" state="on" imageScaling="proportionallyDown" inset="2" id="bII-lI-zIh">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" constant="27" id="66n-WG-zZ8"/>
<constraint firstAttribute="height" constant="24" id="6ke-Gw-ROc"/>
</constraints>
<connections>
<action selector="showInFinder:" target="8VH-uv-w4O" id="9Dd-FG-R1Y"/>
</connections>
</button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="108" translatesAutoresizingMaskIntoConstraints="NO" id="W4S-lZ-nlD">
<rect key="frame" x="758" y="4" width="49" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="WzJ-X9-e7f"/>
<constraint firstAttribute="width" constant="45" id="q3c-XB-eBD"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="show" id="RsS-lJ-vVj">
<font key="font" size="9" name="Menlo-Regular"/>
<color key="textColor" white="0.5" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="FJa-D6-BXh" secondAttribute="trailing" constant="9" id="3AA-rM-7rf"/>
<constraint firstItem="9vY-7y-ZHe" firstAttribute="centerY" secondItem="n0G-fw-7qX" secondAttribute="centerY" id="6R5-TL-sfk"/>
<constraint firstItem="ZOQ-sX-OJ3" firstAttribute="leading" secondItem="9vY-7y-ZHe" secondAttribute="trailing" constant="8" id="7uq-Sp-NKT"/>
<constraint firstItem="s2m-Ro-25U" firstAttribute="leading" secondItem="9vY-7y-ZHe" secondAttribute="trailing" constant="8" id="JAt-se-SuP"/>
<constraint firstItem="ZOQ-sX-OJ3" firstAttribute="top" secondItem="n0G-fw-7qX" secondAttribute="top" constant="31" id="K8u-qD-6Ue"/>
<constraint firstItem="W4S-lZ-nlD" firstAttribute="top" secondItem="FJa-D6-BXh" secondAttribute="bottom" constant="4" id="Oke-NU-75J"/>
<constraint firstItem="FJa-D6-BXh" firstAttribute="leading" secondItem="ZOQ-sX-OJ3" secondAttribute="trailing" constant="8" id="a2f-Ka-XBr"/>
<constraint firstItem="FJa-D6-BXh" firstAttribute="leading" secondItem="s2m-Ro-25U" secondAttribute="trailing" constant="8" id="dAg-Pf-c0a"/>
<constraint firstItem="9vY-7y-ZHe" firstAttribute="leading" secondItem="n0G-fw-7qX" secondAttribute="leading" constant="5" id="gcr-Nt-WNn"/>
<constraint firstItem="9vY-7y-ZHe" firstAttribute="top" secondItem="s2m-Ro-25U" secondAttribute="top" id="lzn-bX-CGo"/>
<constraint firstAttribute="trailing" secondItem="W4S-lZ-nlD" secondAttribute="trailing" id="q2m-R0-1tw"/>
<constraint firstItem="FJa-D6-BXh" firstAttribute="top" secondItem="n0G-fw-7qX" secondAttribute="top" constant="22" id="yVh-Pl-FPn"/>
</constraints>
<connections>
<outlet property="imageView" destination="9vY-7y-ZHe" id="KDg-Ye-DaU"/>
<outlet property="textField" destination="s2m-Ro-25U" id="BJl-bI-yjK"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="8VH-uv-w4O" id="bBF-y4-5AW"/>
<outlet property="delegate" destination="8VH-uv-w4O" id="QWm-sr-pJK"/>
</connections>
</tableView>
</subviews>
<nil key="backgroundColor"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" controlSize="mini" horizontal="YES" id="538">
<rect key="frame" x="1" y="298" width="480" height="16"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" controlSize="mini" horizontal="NO" id="540" customClass="RFOverlayScroller">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="768">
<rect key="frame" x="563" y="567" width="129" height="24"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Start Scan" id="769">
<font key="font" size="20" name="Menlo-Bold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="8im-ux-tdL">
<rect key="frame" x="1010" y="623" width="245" height="48"/>
<constraints>
<constraint firstAttribute="width" constant="245" id="K7W-In-lUh"/>
<constraint firstAttribute="height" constant="48" id="coN-VH-SzH"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="kkText" id="r1Z-Hx-M6T"/>
</imageView>
<progressIndicator hidden="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" bezeled="NO" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="839">
<rect key="frame" x="1215" y="10" width="32" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="32" id="5xq-yG-SSJ"/>
<constraint firstAttribute="height" constant="32" id="aeM-9z-lBy"/>
</constraints>
</progressIndicator>
<textField hidden="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="745">
<rect key="frame" x="1120" y="19" width="75" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="1aa-3i-5H9"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="status..." id="748">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button tag="1001" translatesAutoresizingMaskIntoConstraints="NO" id="gSG-Nq-plb">
<rect key="frame" x="15" y="10" width="35" height="32"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="settings" imagePosition="overlaps" alignment="center" alternateImage="settingsBG" imageScaling="proportionallyDown" inset="2" id="1TF-i7-mBn">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" constant="35" id="V0n-oO-ZDf"/>
<constraint firstAttribute="height" constant="32" id="Yz4-4o-kJc"/>
</constraints>
<connections>
<action selector="showPreferences:" target="494" id="U3q-gH-jC6"/>
</connections>
</button>
<button tag="1003" translatesAutoresizingMaskIntoConstraints="NO" id="HoI-FQ-vTI">
<rect key="frame" x="613" y="10" width="29" height="32"/>
<buttonCell key="cell" type="bevel" bezelStyle="rounded" image="logoApple" imagePosition="only" alignment="center" alternateImage="logoAppleBG" imageScaling="proportionallyDown" inset="2" id="3g8-vm-R7Z">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="height" constant="32" id="GAR-Ew-IAH"/>
<constraint firstAttribute="width" constant="29" id="p6h-LP-9tp"/>
</constraints>
<connections>
<action selector="logoButtonHandler:" target="494" id="H4C-BT-arE"/>
</connections>
</button>
<button tag="1002" translatesAutoresizingMaskIntoConstraints="NO" id="cnG-6Y-PZr">
<rect key="frame" x="58" y="10" width="35" height="32"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="save" imagePosition="overlaps" alignment="center" alternateImage="saveBG" imageScaling="proportionallyDown" inset="2" id="Cbl-sV-mb4">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent">s</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" constant="35" id="21R-IR-HXE"/>
<constraint firstAttribute="height" constant="32" id="k09-Oe-8KT"/>
</constraints>
<connections>
<action selector="saveResults:" target="494" id="uNp-yV-2St"/>
</connections>
</button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" alphaValue="0.14999999999999999" translatesAutoresizingMaskIntoConstraints="NO" id="LfL-UI-usm">
<rect key="frame" x="1125" y="613" width="128" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="124" id="Ad2-tH-lq6"/>
<constraint firstAttribute="height" constant="17" id="v5H-r7-N8o"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="version x.x.x" id="TTQ-yd-uVn">
<font key="font" size="10" name="Menlo-Regular"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<box boxType="custom" borderType="line" borderWidth="2" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="WyP-Ci-amT">
<rect key="frame" x="3" y="520" width="384" height="2"/>
<view key="contentView" id="gih-fL-oNv">
<rect key="frame" x="2" y="1" width="380" height="0.0"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</view>
<constraints>
<constraint firstAttribute="width" constant="384" id="BMn-Ta-euR"/>
<constraint firstAttribute="height" constant="2" id="nHm-lL-wKP"/>
</constraints>
<color key="borderColor" red="0.57623034719999999" green="0.75666517020000001" blue="0.23727124929999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<box boxType="custom" borderType="line" borderWidth="2" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="KxO-Jf-gyu">
<rect key="frame" x="435" y="520" width="820" height="2"/>
<view key="contentView" id="40M-xz-Xgw">
<rect key="frame" x="2" y="1" width="816" height="0.0"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</view>
<constraints>
<constraint firstAttribute="height" constant="2" id="TTL-6d-eJ0"/>
</constraints>
<color key="borderColor" red="0.57623034719999999" green="0.75666517020000001" blue="0.23727124929999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kNk-UY-Y8u">
<rect key="frame" x="3" y="517" width="97" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Categories:" id="8lb-2h-A37">
<font key="font" size="14" name="Menlo-Bold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fVB-DL-Qgc">
<rect key="frame" x="435" y="517" width="89" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Items:" id="akD-jt-Y0L">
<font key="font" size="14" name="Menlo-Bold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="x7S-Ww-gLm">
<rect key="frame" x="0.0" y="49" width="1255" height="5"/>
</box>
<button focusRingType="none" tag="1000" translatesAutoresizingMaskIntoConstraints="NO" id="655">
<rect key="frame" x="500" y="589" width="256" height="73"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="startScan" imagePosition="overlaps" alignment="center" alternateImage="startScanBG" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="656">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="height" constant="73" id="cg5-Ox-JCe"/>
<constraint firstAttribute="width" constant="256" id="hbv-4S-4RK"/>
</constraints>
<connections>
<action selector="scanButtonHandler:" target="494" id="836"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="536" firstAttribute="top" secondItem="KxO-Jf-gyu" secondAttribute="bottom" id="0Pq-fP-ujK"/>
<constraint firstAttribute="trailing" secondItem="8im-ux-tdL" secondAttribute="trailing" id="0rc-bF-mDK"/>
<constraint firstItem="768" firstAttribute="centerX" secondItem="372" secondAttribute="centerX" id="16Z-w9-wSB"/>
<constraint firstItem="WyP-Ci-amT" firstAttribute="top" secondItem="372" secondAttribute="top" constant="149" id="22l-0n-sLa"/>
<constraint firstItem="655" firstAttribute="top" secondItem="372" secondAttribute="top" constant="9" id="3MP-az-SJd"/>
<constraint firstItem="LfL-UI-usm" firstAttribute="top" secondItem="372" secondAttribute="top" constant="41" id="3YG-9Y-8Vo"/>
<constraint firstItem="839" firstAttribute="leading" secondItem="745" secondAttribute="trailing" constant="22" id="3sw-oy-qcE"/>
<constraint firstAttribute="bottom" secondItem="536" secondAttribute="bottom" constant="52" id="Ahv-CE-awA"/>
<constraint firstAttribute="trailing" secondItem="536" secondAttribute="trailing" id="Ceo-fw-xdy"/>
<constraint firstItem="cnG-6Y-PZr" firstAttribute="leading" secondItem="gSG-Nq-plb" secondAttribute="trailing" constant="8" symbolic="YES" id="IzN-cm-PUS"/>
<constraint firstItem="536" firstAttribute="top" secondItem="372" secondAttribute="top" constant="151" id="J2d-A4-ilB"/>
<constraint firstAttribute="bottom" secondItem="gSG-Nq-plb" secondAttribute="bottom" constant="10" id="LRX-T6-Tk0"/>
<constraint firstAttribute="trailing" secondItem="KxO-Jf-gyu" secondAttribute="trailing" id="M0L-Os-TaB"/>
<constraint firstItem="HoI-FQ-vTI" firstAttribute="centerX" secondItem="372" secondAttribute="centerX" id="M4b-FH-jIV"/>
<constraint firstItem="KxO-Jf-gyu" firstAttribute="leading" secondItem="372" secondAttribute="leading" constant="435" id="MAg-wX-bFX"/>
<constraint firstItem="655" firstAttribute="centerX" secondItem="372" secondAttribute="centerX" id="NC3-A7-8xg"/>
<constraint firstItem="rqX-FA-o3e" firstAttribute="leading" secondItem="372" secondAttribute="leading" constant="-5" id="NWn-cQ-Ruh"/>
<constraint firstItem="8im-ux-tdL" firstAttribute="top" secondItem="372" secondAttribute="top" id="Ne0-XL-geJ"/>
<constraint firstAttribute="bottom" secondItem="x7S-Ww-gLm" secondAttribute="bottom" constant="51" id="RRk-Ie-7dD"/>
<constraint firstAttribute="trailing" secondItem="LfL-UI-usm" secondAttribute="trailing" constant="4" id="T9o-l2-2vM"/>
<constraint firstItem="x7S-Ww-gLm" firstAttribute="leading" secondItem="372" secondAttribute="leading" id="UXl-gU-OLI"/>
<constraint firstItem="768" firstAttribute="top" secondItem="372" secondAttribute="top" constant="80" id="VsW-Y7-EJa"/>
<constraint firstAttribute="bottom" secondItem="745" secondAttribute="bottom" constant="19" id="c9W-7d-MXn"/>
<constraint firstItem="gSG-Nq-plb" firstAttribute="leading" secondItem="372" secondAttribute="leading" constant="15" id="dLQ-s9-Oh2"/>
<constraint firstAttribute="bottom" secondItem="rqX-FA-o3e" secondAttribute="bottom" constant="52" id="drt-dw-JrT"/>
<constraint firstItem="536" firstAttribute="leading" secondItem="rqX-FA-o3e" secondAttribute="trailing" constant="32" id="gzW-um-0eE"/>
<constraint firstAttribute="bottom" secondItem="839" secondAttribute="bottom" constant="10" id="ibd-gt-Ml2"/>
<constraint firstItem="rqX-FA-o3e" firstAttribute="top" secondItem="372" secondAttribute="top" constant="151" id="j4C-hj-Nqa"/>
<constraint firstAttribute="bottom" secondItem="cnG-6Y-PZr" secondAttribute="bottom" constant="10" id="kpI-CG-cra"/>
<constraint firstAttribute="trailing" secondItem="839" secondAttribute="trailing" constant="8" id="oft-kd-JKU"/>
<constraint firstAttribute="trailing" secondItem="x7S-Ww-gLm" secondAttribute="trailing" id="sEA-ig-sjM"/>
<constraint firstItem="WyP-Ci-amT" firstAttribute="leading" secondItem="372" secondAttribute="leading" constant="3" id="uZ6-IT-4Ce"/>
<constraint firstAttribute="bottom" secondItem="HoI-FQ-vTI" secondAttribute="bottom" constant="10" id="xa9-ig-n9U"/>
</constraints>
</view>
<point key="canvasLocation" x="614.5" y="367.5"/>
</window>
<customObject id="494" customClass="AppDelegate">
<connections>
<outlet property="categoryTableController" destination="SmD-QP-397" id="PIf-PG-Sg9"/>
<outlet property="closeButton" destination="eD8-BN-Z1D" id="pgJ-gh-v2W"/>
<outlet property="friends" destination="gD4-T8-B0H" id="bob-rW-SSv"/>
<outlet property="itemTableController" destination="8VH-uv-w4O" id="zNb-sJ-msd"/>
<outlet property="logoButton" destination="HoI-FQ-vTI" id="bzc-wu-4Hv"/>
<outlet property="progressIndicator" destination="839" id="870"/>
<outlet property="saveButton" destination="cnG-6Y-PZr" id="UK5-cQ-RCg"/>
<outlet property="scanButton" destination="655" id="835"/>
<outlet property="scanButtonLabel" destination="768" id="837"/>
<outlet property="showPreferencesButton" destination="gSG-Nq-plb" id="9vL-lr-yNV"/>
<outlet property="statusText" destination="745" id="871"/>
<outlet property="versionString" destination="LfL-UI-usm" id="2nV-AF-olP"/>
<outlet property="window" destination="371" id="532"/>
</connections>
</customObject>
<customObject id="420" customClass="NSFontManager"/>
<customObject id="SmD-QP-397" customClass="CategoryTableController">
<connections>
<outlet property="categoryTableView" destination="zYP-0r-U2A" id="gFv-EK-aOj"/>
</connections>
</customObject>
<customObject id="8VH-uv-w4O" customClass="ItemTableController">
<connections>
<outlet property="itemTableView" destination="537" id="0xr-LE-bN9"/>
</connections>
</customObject>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="gD4-T8-B0H" userLabel="Friends">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<rect key="contentRect" x="2843" y="305" width="767" height="288"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<view key="contentView" id="zIY-EJ-oYy">
<rect key="frame" x="0.0" y="0.0" width="767" height="288"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button tag="-1" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="eD8-BN-Z1D">
<rect key="frame" x="639" y="13" width="115" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Close" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1mP-i0-2e4">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Menlo-Regular"/>
</buttonCell>
<connections>
<action selector="closeFriendsWindow:" target="494" id="4tu-GP-sAX"/>
</connections>
</button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="G5i-Vw-RGw">
<rect key="frame" x="72" y="210" width="623" height="63"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Mahalo to the &quot;Friends of Objective-See&quot;" id="JSF-ba-pCy">
<font key="font" size="32" name="AvenirNextCondensed-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="Nuu-4N-1Ff">
<rect key="frame" x="539" y="97" width="127" height="49"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsSophos" id="aak-vd-3qA"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="Gfs-Np-1jw">
<rect key="frame" x="318" y="162" width="130" height="48"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsKandji" id="vrN-sB-wcX"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="Kw9-67-ETu">
<rect key="frame" x="133" y="97" width="91" height="54"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsJamf" id="DfP-NZ-UVm"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="0HR-sw-l3w">
<rect key="frame" x="118" y="47" width="120" height="39"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsKolide" id="9LT-26-clZ"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="b17-Nd-hxm">
<rect key="frame" x="302" y="108" width="162" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsPANW" id="e0j-bE-NRv"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="Ocz-QA-3SS">
<rect key="frame" x="539" y="30" width="129" height="73"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsMosyle" id="DRk-DM-Yj9"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="b4B-9H-cT6">
<rect key="frame" x="281" y="44" width="204" height="46"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsMacPaw" id="Alj-pV-sHh"/>
</imageView>
</subviews>
</view>
<point key="canvasLocation" x="614.5" y="-749"/>
</window>
</objects>
<resources>
<image name="FriendsJamf" width="328" height="114"/>
<image name="FriendsKandji" width="1944" height="494"/>
<image name="FriendsKolide" width="636" height="216"/>
<image name="FriendsMacPaw" width="2034" height="335"/>
<image name="FriendsMosyle" width="963" height="265"/>
<image name="FriendsPANW" width="1312" height="240"/>
<image name="FriendsSophos" width="518" height="137"/>
<image name="NSActionTemplate" width="19" height="19"/>
<image name="NSColorPanel" width="32" height="32"/>
<image name="binaryIcon" width="512" height="512"/>
<image name="info" width="256" height="256"/>
<image name="infoBG" width="256" height="256"/>
<image name="kkText" width="426.48001098632812" height="85.919998168945312"/>
<image name="logoApple" width="194" height="236"/>
<image name="logoAppleBG" width="194" height="236"/>
<image name="save" width="256" height="256"/>
<image name="saveBG" width="256" height="256"/>
<image name="settings" width="256" height="256"/>
<image name="settingsBG" width="256" height="256"/>
<image name="show" width="256" height="256"/>
<image name="showBG" width="256" height="256"/>
<image name="signed" width="256" height="256"/>
<image name="startScan" width="256" height="256"/>
<image name="startScanBG" width="256" height="256"/>
</resources>
</document>
+1 -7
View File
@@ -106,20 +106,14 @@ NSString * const LAUNCHITEM_SEARCH_DIRECTORIES[] = {@"/System/Library/LaunchDaem
// ->save into iVar, 'applications'
-(void)enumerateApplications
{
//installed apps
NSMutableArray* installedApplications = nil;
//output from system profiler task
NSData* taskOutput = nil;
//serialized task output
NSArray* serializedOutput = nil;
//alloc array for installed apps
installedApplications = [NSMutableArray array];
//exec system profiler
taskOutput = execTask(SYSTEM_PROFILER, @[@"SPApplicationsDataType", @"-xml", @"-detailLevel", @"mini"]);
taskOutput = execTask(SYSTEM_PROFILER, @[@"SPApplicationsDataType", @"-xml", @"-detailLevel", @"mini"]);
if( (nil == taskOutput) ||
(0 == taskOutput.length) )
{
+1 -1
View File
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
+142 -69
View File
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 60;
objects = {
/* Begin PBXBuildFile section */
@@ -19,25 +19,20 @@
CD001B371AB903040089014A /* kkText.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B341AB903040089014A /* kkText.png */; };
CD001B381AB903040089014A /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B351AB903040089014A /* logo.png */; };
CD001B391AB903040089014A /* logoApple.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B361AB903040089014A /* logoApple.png */; };
CD02194F1AD34D8B005148A2 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD02194D1AD34D8B005148A2 /* AboutWindow.xib */; };
CD0219501AD34D8B005148A2 /* PrefsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD02194E1AD34D8B005148A2 /* PrefsWindow.xib */; };
CD0219531AD34D9A005148A2 /* AboutWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD0219521AD34D9A005148A2 /* AboutWindowController.m */; };
CD0219551AD34E4C005148A2 /* kkIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD0219541AD34E4C005148A2 /* kkIcon.png */; };
CD02195E1AD39A74005148A2 /* ResultsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD02195D1AD39A74005148A2 /* ResultsWindow.xib */; };
CD0219611AD39A83005148A2 /* ResultsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD0219601AD39A83005148A2 /* ResultsWindowController.m */; };
CD24F074219D51210081B0E5 /* whitelistedKexts.json in Resources */ = {isa = PBXBuildFile; fileRef = CD24F073219D51210081B0E5 /* whitelistedKexts.json */; };
CD24F077219DF3DB0081B0E5 /* Signing.m in Sources */ = {isa = PBXBuildFile; fileRef = CD24F075219DF3DA0081B0E5 /* Signing.m */; };
CD2B613320675EEC00BF72E9 /* EventRules.m in Sources */ = {isa = PBXBuildFile; fileRef = CD2B611220675EEB00BF72E9 /* EventRules.m */; };
CD2B61442067656200BF72E9 /* eventRulesIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD2B61432067656200BF72E9 /* eventRulesIcon.png */; };
CD2F219F21A8A73100F67A83 /* Update.m in Sources */ = {isa = PBXBuildFile; fileRef = CD2F219E21A8A73100F67A83 /* Update.m */; };
CD2F21A121A8A7D100F67A83 /* UpdateWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD2F21A021A8A7D000F67A83 /* UpdateWindow.xib */; };
CD2F21A421A8A7E300F67A83 /* UpdateWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD2F21A321A8A7E300F67A83 /* UpdateWindowController.m */; };
CD36CDB8237785180089FC34 /* quicklookIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD36CDB7237785180089FC34 /* quicklookIcon.png */; };
CD3B99B925EC94D60020AF50 /* SystemExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = CD3B99B725EC94D60020AF50 /* SystemExtensions.m */; };
CD3B99D325EDE9F90020AF50 /* systemExtensionIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD3B99D225EDE9F90020AF50 /* systemExtensionIcon.png */; };
CD585494219FE61D00A438B0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD585493219FE61D00A438B0 /* Assets.xcassets */; };
CD5854D321A5FADD00A438B0 /* patrons.txt in Resources */ = {isa = PBXBuildFile; fileRef = CD5854D221A5FADD00A438B0 /* patrons.txt */; };
CD5854D521A60B1000A438B0 /* PlistWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD5854D421A60B0F00A438B0 /* PlistWindow.xib */; };
CD5854D821A60B2100A438B0 /* PlistWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5854D721A60B2000A438B0 /* PlistWindowController.m */; };
CD5854DB21A6103B00A438B0 /* ClickableTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5854DA21A6103A00A438B0 /* ClickableTextField.m */; };
CD6095731A87067D00E091CD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD6095721A87067D00E091CD /* Security.framework */; };
@@ -47,6 +42,16 @@
CD6BBBEB1B50DF7100506D0D /* signedAppleIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD6BBBEA1B50DF7100506D0D /* signedAppleIcon.png */; };
CD6BBBED1B51C62B00506D0D /* unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = CD6BBBEC1B51C62B00506D0D /* unknown.png */; };
CD6BBBF01B52032D00506D0D /* NSApplicationKeyEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = CD6BBBEF1B52032D00506D0D /* NSApplicationKeyEvents.m */; };
CD6FD7AC2C7AAD87001C59F2 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7AB2C7AAD87001C59F2 /* MainMenu.xib */; };
CD6FD7AF2C7AAFE6001C59F2 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7AE2C7AAFE6001C59F2 /* Localizable.xcstrings */; };
CD6FD7B22C7AB284001C59F2 /* UpdateWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7B12C7AB284001C59F2 /* UpdateWindow.xib */; };
CD6FD7B62C7AB288001C59F2 /* PlistWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7B52C7AB288001C59F2 /* PlistWindow.xib */; };
CD6FD7BA2C7AB28D001C59F2 /* ResultsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7B92C7AB28D001C59F2 /* ResultsWindow.xib */; };
CD6FD7BE2C7AB291001C59F2 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7BD2C7AB291001C59F2 /* AboutWindow.xib */; };
CD6FD7C22C7AB294001C59F2 /* PrefsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7C12C7AB294001C59F2 /* PrefsWindow.xib */; };
CD6FD7C62C7AB299001C59F2 /* VTInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7C52C7AB299001C59F2 /* VTInfoWindow.xib */; };
CD6FD7CA2C7AB29F001C59F2 /* ExtensionInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7C92C7AB29F001C59F2 /* ExtensionInfoWindow.xib */; };
CD6FD7CE2C7AB2A3001C59F2 /* FileInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD6FD7CD2C7AB2A3001C59F2 /* FileInfoWindow.xib */; };
CD7B9F4D1ACB959200DF3C71 /* logoAppleOver.png in Resources */ = {isa = PBXBuildFile; fileRef = CD7B9F4C1ACB959200DF3C71 /* logoAppleOver.png */; };
CD7B9F531ACBAE2900DF3C71 /* SpotlightImporters.m in Sources */ = {isa = PBXBuildFile; fileRef = CD7B9F521ACBAE2900DF3C71 /* SpotlightImporters.m */; };
CD7B9FA41ACBCFAD00DF3C71 /* spotlightIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD7B9FA31ACBCFAD00DF3C71 /* spotlightIcon.png */; };
@@ -58,8 +63,6 @@
CD890F44237790D400029D99 /* directoryServicesIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CD890F43237790D400029D99 /* directoryServicesIcon.png */; };
CDA81D4F1A95B492009790E2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81D451A95B492009790E2 /* AppDelegate.m */; };
CDA81D531A95B492009790E2 /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81D4E1A95B492009790E2 /* Utilities.m */; };
CDA81D5B1A95B4B4009790E2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CDA81D541A95B4B4009790E2 /* InfoPlist.strings */; };
CDA81D5C1A95B4B4009790E2 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CDA81D561A95B4B4009790E2 /* MainMenu.xib */; };
CDA81D5E1A95B4B4009790E2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81D5A1A95B4B4009790E2 /* main.m */; };
CDA81D691A95B4E9009790E2 /* bug.png in Resources */ = {isa = PBXBuildFile; fileRef = CDA81D5F1A95B4E9009790E2 /* bug.png */; };
CDA81D6A1A95B4E9009790E2 /* mainIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CDA81D601A95B4E9009790E2 /* mainIcon.png */; };
@@ -93,8 +96,6 @@
CDA81E041A9AB89C009790E2 /* LaunchItems.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81E031A9AB89C009790E2 /* LaunchItems.m */; };
CDA81E071A9AFFA7009790E2 /* LoginItems.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81E061A9AFFA7009790E2 /* LoginItems.m */; };
CDA81E0A1A9B0AD8009790E2 /* BrowserExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81E091A9B0AD8009790E2 /* BrowserExtensions.m */; };
CDA81E651AA020FD009790E2 /* ExtensionInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CDA81E631AA020FD009790E2 /* ExtensionInfoWindow.xib */; };
CDA81E661AA020FD009790E2 /* FileInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CDA81E641AA020FD009790E2 /* FileInfoWindow.xib */; };
CDAB98991AEAA6CB00C75B4B /* AuthorizationPlugins.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAB98981AEAA6CB00C75B4B /* AuthorizationPlugins.m */; };
CDAB989C1AEAC95500C75B4B /* ItemEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAB989B1AEAC95500C75B4B /* ItemEnumerator.m */; };
CDAB989F1AEADE5A00C75B4B /* DylibInserts.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAB989E1AEADE5A00C75B4B /* DylibInserts.m */; };
@@ -103,7 +104,6 @@
CDBE491A1B5B25E30031FC22 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CDBE49191B5B25E30031FC22 /* SystemConfiguration.framework */; };
CDBE491D1B5B44BB0031FC22 /* LogInOutHooks.m in Sources */ = {isa = PBXBuildFile; fileRef = CDBE491C1B5B44BB0031FC22 /* LogInOutHooks.m */; };
CDBE491F1B5B46040031FC22 /* logInOutIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CDBE491E1B5B46040031FC22 /* logInOutIcon.png */; };
CDBFE3992A49B8B9005A9819 /* libDumpBTM.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CDBFE3942A49B8B9005A9819 /* libDumpBTM.a */; };
CDBFE39A2A49B8BA005A9819 /* MachO.m in Sources */ = {isa = PBXBuildFile; fileRef = CDBFE3972A49B8B9005A9819 /* MachO.m */; };
CDBFE39D2A49B9F8005A9819 /* BTM.m in Sources */ = {isa = PBXBuildFile; fileRef = CDBFE39C2A49B9F8005A9819 /* BTM.m */; };
CDBFE3A12A4AEC80005A9819 /* btmIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = CDBFE3A02A4AEC80005A9819 /* btmIcon.png */; };
@@ -123,7 +123,6 @@
CDF08CD01AC4C6E8009B3423 /* settingsBG.png in Resources */ = {isa = PBXBuildFile; fileRef = CDF08CCD1AC4C6E8009B3423 /* settingsBG.png */; };
CDF08CD11AC4C6E8009B3423 /* settings.png in Resources */ = {isa = PBXBuildFile; fileRef = CDF08CCE1AC4C6E8009B3423 /* settings.png */; };
CDF08CDF1AC886F2009B3423 /* VTInfoWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CDF08CDD1AC886F2009B3423 /* VTInfoWindowController.m */; };
CDF08CE21AC88E0F009B3423 /* VTInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CDF08CE11AC88E0F009B3423 /* VTInfoWindow.xib */; };
CDF08CE61AC89FE1009B3423 /* HyperlinkTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = CDF08CE51AC89FE1009B3423 /* HyperlinkTextField.m */; };
CDF08CE81AC8A35C009B3423 /* vtLogo.png in Resources */ = {isa = PBXBuildFile; fileRef = CDF08CE71AC8A35C009B3423 /* vtLogo.png */; };
CDF08CEA1AC8D97B009B3423 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CDF08CE91AC8D97B009B3423 /* Quartz.framework */; };
@@ -167,12 +166,9 @@
CD001B341AB903040089014A /* kkText.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = kkText.png; path = images/kkText.png; sourceTree = SOURCE_ROOT; };
CD001B351AB903040089014A /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = logo.png; path = images/logo.png; sourceTree = SOURCE_ROOT; };
CD001B361AB903040089014A /* logoApple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = logoApple.png; path = images/logoApple.png; sourceTree = SOURCE_ROOT; };
CD02194D1AD34D8B005148A2 /* AboutWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = AboutWindow.xib; path = UI/AboutWindow.xib; sourceTree = "<group>"; };
CD02194E1AD34D8B005148A2 /* PrefsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PrefsWindow.xib; path = UI/PrefsWindow.xib; sourceTree = "<group>"; };
CD0219511AD34D9A005148A2 /* AboutWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutWindowController.h; sourceTree = "<group>"; };
CD0219521AD34D9A005148A2 /* AboutWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutWindowController.m; sourceTree = "<group>"; };
CD0219541AD34E4C005148A2 /* kkIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = kkIcon.png; path = images/kkIcon.png; sourceTree = SOURCE_ROOT; };
CD02195D1AD39A74005148A2 /* ResultsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ResultsWindow.xib; path = UI/ResultsWindow.xib; sourceTree = "<group>"; };
CD02195F1AD39A83005148A2 /* ResultsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultsWindowController.h; sourceTree = "<group>"; };
CD0219601AD39A83005148A2 /* ResultsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResultsWindowController.m; sourceTree = "<group>"; };
CD24F072219AAC930081B0E5 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = SOURCE_ROOT; };
@@ -184,7 +180,6 @@
CD2B61432067656200BF72E9 /* eventRulesIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = eventRulesIcon.png; path = images/eventRulesIcon.png; sourceTree = SOURCE_ROOT; };
CD2F219D21A8A73000F67A83 /* Update.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Update.h; sourceTree = SOURCE_ROOT; };
CD2F219E21A8A73100F67A83 /* Update.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Update.m; sourceTree = SOURCE_ROOT; };
CD2F21A021A8A7D000F67A83 /* UpdateWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = UpdateWindow.xib; path = UI/UpdateWindow.xib; sourceTree = "<group>"; };
CD2F21A221A8A7E300F67A83 /* UpdateWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateWindowController.h; sourceTree = "<group>"; };
CD2F21A321A8A7E300F67A83 /* UpdateWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpdateWindowController.m; sourceTree = "<group>"; };
CD36CDB7237785180089FC34 /* quicklookIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = quicklookIcon.png; path = images/quicklookIcon.png; sourceTree = SOURCE_ROOT; };
@@ -193,7 +188,6 @@
CD3B99D225EDE9F90020AF50 /* systemExtensionIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = systemExtensionIcon.png; path = images/systemExtensionIcon.png; sourceTree = SOURCE_ROOT; };
CD585493219FE61D00A438B0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = SOURCE_ROOT; };
CD5854D221A5FADD00A438B0 /* patrons.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = patrons.txt; sourceTree = SOURCE_ROOT; };
CD5854D421A60B0F00A438B0 /* PlistWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PlistWindow.xib; path = UI/PlistWindow.xib; sourceTree = "<group>"; };
CD5854D621A60B2000A438B0 /* PlistWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlistWindowController.h; sourceTree = SOURCE_ROOT; };
CD5854D721A60B2000A438B0 /* PlistWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlistWindowController.m; sourceTree = SOURCE_ROOT; };
CD5854D921A6103A00A438B0 /* ClickableTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClickableTextField.h; sourceTree = "<group>"; };
@@ -208,6 +202,25 @@
CD6BBBEC1B51C62B00506D0D /* unknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = unknown.png; path = images/unknown.png; sourceTree = SOURCE_ROOT; };
CD6BBBEE1B52032D00506D0D /* NSApplicationKeyEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSApplicationKeyEvents.h; sourceTree = "<group>"; };
CD6BBBEF1B52032D00506D0D /* NSApplicationKeyEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSApplicationKeyEvents.m; sourceTree = "<group>"; };
CD6FD7AA2C7AAD87001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
CD6FD7AD2C7AAD87001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/MainMenu.xcstrings; sourceTree = "<group>"; };
CD6FD7AE2C7AAFE6001C59F2 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
CD6FD7B02C7AB284001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UpdateWindow.xib; sourceTree = "<group>"; };
CD6FD7B32C7AB284001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/UpdateWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7B42C7AB288001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PlistWindow.xib; sourceTree = "<group>"; };
CD6FD7B72C7AB288001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/PlistWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7B82C7AB28D001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ResultsWindow.xib; sourceTree = "<group>"; };
CD6FD7BB2C7AB28D001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/ResultsWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7BC2C7AB291001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AboutWindow.xib; sourceTree = "<group>"; };
CD6FD7BF2C7AB291001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/AboutWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7C02C7AB294001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PrefsWindow.xib; sourceTree = "<group>"; };
CD6FD7C32C7AB294001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/PrefsWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7C42C7AB299001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/VTInfoWindow.xib; sourceTree = "<group>"; };
CD6FD7C72C7AB299001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/VTInfoWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7C82C7AB29F001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ExtensionInfoWindow.xib; sourceTree = "<group>"; };
CD6FD7CB2C7AB29F001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/ExtensionInfoWindow.xcstrings; sourceTree = "<group>"; };
CD6FD7CC2C7AB2A3001C59F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/FileInfoWindow.xib; sourceTree = "<group>"; };
CD6FD7CF2C7AB2A3001C59F2 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/FileInfoWindow.xcstrings; sourceTree = "<group>"; };
CD7B9F4C1ACB959200DF3C71 /* logoAppleOver.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = logoAppleOver.png; path = images/logoAppleOver.png; sourceTree = SOURCE_ROOT; };
CD7B9F511ACBAE2900DF3C71 /* SpotlightImporters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpotlightImporters.h; path = Plugins/SpotlightImporters.h; sourceTree = "<group>"; };
CD7B9F521ACBAE2900DF3C71 /* SpotlightImporters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpotlightImporters.m; path = Plugins/SpotlightImporters.m; sourceTree = "<group>"; };
@@ -226,8 +239,6 @@
CDA81D481A95B492009790E2 /* Consts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Consts.h; sourceTree = SOURCE_ROOT; };
CDA81D4D1A95B492009790E2 /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = SOURCE_ROOT; };
CDA81D4E1A95B492009790E2 /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = SOURCE_ROOT; };
CDA81D551A95B4B4009790E2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = SOURCE_ROOT; };
CDA81D571A95B4B4009790E2 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = SOURCE_ROOT; };
CDA81D581A95B4B4009790E2 /* KnockKnock-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "KnockKnock-Info.plist"; sourceTree = SOURCE_ROOT; };
CDA81D591A95B4B4009790E2 /* KnockKnock-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KnockKnock-Prefix.pch"; sourceTree = SOURCE_ROOT; };
CDA81D5A1A95B4B4009790E2 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = SOURCE_ROOT; };
@@ -276,8 +287,6 @@
CDA81E061A9AFFA7009790E2 /* LoginItems.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LoginItems.m; path = Plugins/LoginItems.m; sourceTree = "<group>"; };
CDA81E081A9B0AD8009790E2 /* BrowserExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BrowserExtensions.h; path = Plugins/BrowserExtensions.h; sourceTree = "<group>"; };
CDA81E091A9B0AD8009790E2 /* BrowserExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BrowserExtensions.m; path = Plugins/BrowserExtensions.m; sourceTree = "<group>"; };
CDA81E631AA020FD009790E2 /* ExtensionInfoWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ExtensionInfoWindow.xib; path = UI/ExtensionInfoWindow.xib; sourceTree = "<group>"; };
CDA81E641AA020FD009790E2 /* FileInfoWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileInfoWindow.xib; path = UI/FileInfoWindow.xib; sourceTree = "<group>"; };
CDAB98971AEAA6CB00C75B4B /* AuthorizationPlugins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AuthorizationPlugins.h; path = Plugins/AuthorizationPlugins.h; sourceTree = "<group>"; };
CDAB98981AEAA6CB00C75B4B /* AuthorizationPlugins.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AuthorizationPlugins.m; path = Plugins/AuthorizationPlugins.m; sourceTree = "<group>"; };
CDAB989A1AEAC95500C75B4B /* ItemEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ItemEnumerator.h; sourceTree = "<group>"; };
@@ -319,7 +328,6 @@
CDF08CCE1AC4C6E8009B3423 /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings.png; path = images/settings.png; sourceTree = SOURCE_ROOT; };
CDF08CDC1AC886F2009B3423 /* VTInfoWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTInfoWindowController.h; sourceTree = "<group>"; };
CDF08CDD1AC886F2009B3423 /* VTInfoWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VTInfoWindowController.m; sourceTree = "<group>"; };
CDF08CE11AC88E0F009B3423 /* VTInfoWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = VTInfoWindow.xib; path = UI/VTInfoWindow.xib; sourceTree = "<group>"; };
CDF08CE41AC89FE1009B3423 /* HyperlinkTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HyperlinkTextField.h; path = 3rdParty/HyperlinkTextField.h; sourceTree = "<group>"; };
CDF08CE51AC89FE1009B3423 /* HyperlinkTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HyperlinkTextField.m; path = 3rdParty/HyperlinkTextField.m; sourceTree = "<group>"; };
CDF08CE71AC8A35C009B3423 /* vtLogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = vtLogo.png; path = images/vtLogo.png; sourceTree = SOURCE_ROOT; };
@@ -337,7 +345,6 @@
files = (
CDCA2C212A49B71500E8DD57 /* libDumpBTM.a in Frameworks */,
CDBE491A1B5B25E30031FC22 /* SystemConfiguration.framework in Frameworks */,
CDBFE3992A49B8B9005A9819 /* libDumpBTM.a in Frameworks */,
CDDBC2301B04771100B021E0 /* ServiceManagement.framework in Frameworks */,
CDF08CEA1AC8D97B009B3423 /* Quartz.framework in Frameworks */,
CD6095731A87067D00E091CD /* Security.framework in Frameworks */,
@@ -351,6 +358,7 @@
1D21BC42172AF43D009D1CFD = {
isa = PBXGroup;
children = (
CD6FD7AE2C7AAFE6001C59F2 /* Localizable.xcstrings */,
CDBFE3922A49B89A005A9819 /* Libraries */,
CDF08CE31AC89FD4009B3423 /* 3rdParty */,
CD5854D921A6103A00A438B0 /* ClickableTextField.h */,
@@ -416,7 +424,7 @@
CD585493219FE61D00A438B0 /* Assets.xcassets */,
CDA81D481A95B492009790E2 /* Consts.h */,
CD6095501A8329FA00E091CD /* images */,
CDA81D561A95B4B4009790E2 /* MainMenu.xib */,
CD6FD7AB2C7AAD87001C59F2 /* MainMenu.xib */,
CD5854D621A60B2000A438B0 /* PlistWindowController.h */,
CD5854D721A60B2000A438B0 /* PlistWindowController.m */,
CDF08CC71AC4C678009B3423 /* PrefsWindowController.h */,
@@ -438,7 +446,6 @@
isa = PBXGroup;
children = (
CD5854D221A5FADD00A438B0 /* patrons.txt */,
CDA81D541A95B4B4009790E2 /* InfoPlist.strings */,
CDA81D581A95B4B4009790E2 /* KnockKnock-Info.plist */,
CDA81D591A95B4B4009790E2 /* KnockKnock-Prefix.pch */,
CDA81D5A1A95B4B4009790E2 /* main.m */,
@@ -545,18 +552,18 @@
CDA81D861A96F429009790E2 /* Plugins */ = {
isa = PBXGroup;
children = (
CDE2D3A52AC6E20500261224 /* DockTiles.h */,
CDE2D3A62AC6E20500261224 /* DockTiles.m */,
CDBFE39B2A49B9F8005A9819 /* BTM.h */,
CDBFE39C2A49B9F8005A9819 /* BTM.m */,
CDAB98971AEAA6CB00C75B4B /* AuthorizationPlugins.h */,
CDAB98981AEAA6CB00C75B4B /* AuthorizationPlugins.m */,
CDA81E081A9B0AD8009790E2 /* BrowserExtensions.h */,
CDA81E091A9B0AD8009790E2 /* BrowserExtensions.m */,
CDBFE39B2A49B9F8005A9819 /* BTM.h */,
CDBFE39C2A49B9F8005A9819 /* BTM.m */,
CDD83FD21B50C48C0037124E /* Cronjobs.h */,
CDD83FD31B50C48C0037124E /* Cronjobs.m */,
CD890F4023778F7B00029D99 /* DirectoryServicesPlugins.h */,
CD890F4123778F7B00029D99 /* DirectoryServicesPlugins.m */,
CDE2D3A52AC6E20500261224 /* DockTiles.h */,
CDE2D3A62AC6E20500261224 /* DockTiles.m */,
CDAB989D1AEADE5A00C75B4B /* DylibInserts.h */,
CDAB989E1AEADE5A00C75B4B /* DylibInserts.m */,
7D44F4C31DAAEDE40085859C /* DylibProxies.h */,
@@ -603,14 +610,14 @@
CDA81E621AA020E8009790E2 /* UI */ = {
isa = PBXGroup;
children = (
CD2F21A021A8A7D000F67A83 /* UpdateWindow.xib */,
CD5854D421A60B0F00A438B0 /* PlistWindow.xib */,
CD02195D1AD39A74005148A2 /* ResultsWindow.xib */,
CD02194D1AD34D8B005148A2 /* AboutWindow.xib */,
CD02194E1AD34D8B005148A2 /* PrefsWindow.xib */,
CDF08CE11AC88E0F009B3423 /* VTInfoWindow.xib */,
CDA81E631AA020FD009790E2 /* ExtensionInfoWindow.xib */,
CDA81E641AA020FD009790E2 /* FileInfoWindow.xib */,
CD6FD7B12C7AB284001C59F2 /* UpdateWindow.xib */,
CD6FD7B52C7AB288001C59F2 /* PlistWindow.xib */,
CD6FD7B92C7AB28D001C59F2 /* ResultsWindow.xib */,
CD6FD7BD2C7AB291001C59F2 /* AboutWindow.xib */,
CD6FD7C12C7AB294001C59F2 /* PrefsWindow.xib */,
CD6FD7C52C7AB299001C59F2 /* VTInfoWindow.xib */,
CD6FD7C92C7AB29F001C59F2 /* ExtensionInfoWindow.xib */,
CD6FD7CD2C7AB2A3001C59F2 /* FileInfoWindow.xib */,
);
name = UI;
sourceTree = "<group>";
@@ -698,10 +705,11 @@
};
buildConfigurationList = 1D21BC46172AF43D009D1CFD /* Build configuration list for PBXProject "KnockKnock" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
English,
es,
Base,
en,
);
mainGroup = 1D21BC42172AF43D009D1CFD;
@@ -723,21 +731,21 @@
CD890F44237790D400029D99 /* directoryServicesIcon.png in Resources */,
CDA81D691A95B4E9009790E2 /* bug.png in Resources */,
7D0DAB881CA758790049BAFF /* periodicIcon.png in Resources */,
CD02195E1AD39A74005148A2 /* ResultsWindow.xib in Resources */,
CDA81D5B1A95B4B4009790E2 /* InfoPlist.strings in Resources */,
CD6FD7BA2C7AB28D001C59F2 /* ResultsWindow.xib in Resources */,
CDBFE3A12A4AEC80005A9819 /* btmIcon.png in Resources */,
CDA81D6B1A95B4E9009790E2 /* show.png in Resources */,
CD24F074219D51210081B0E5 /* whitelistedKexts.json in Resources */,
CDF08CF31ACA6864009B3423 /* browserIcon.png in Resources */,
CD5854D521A60B1000A438B0 /* PlistWindow.xib in Resources */,
CD6FD7B62C7AB288001C59F2 /* PlistWindow.xib in Resources */,
CDAB98A11AEAFAFA00C75B4B /* authorizationIcon.png in Resources */,
CD6BBBEB1B50DF7100506D0D /* signedAppleIcon.png in Resources */,
CD001B391AB903040089014A /* logoApple.png in Resources */,
CDF08CEF1ACA677B009B3423 /* launchIcon.png in Resources */,
CD7B9FA41ACBCFAD00DF3C71 /* spotlightIcon.png in Resources */,
CD6BBBED1B51C62B00506D0D /* unknown.png in Resources */,
CDA81E651AA020FD009790E2 /* ExtensionInfoWindow.xib in Resources */,
CD6FD7CA2C7AB29F001C59F2 /* ExtensionInfoWindow.xib in Resources */,
CD7B9FA81ACCAE5E00DF3C71 /* stopScanOver.png in Resources */,
CD6FD7AF2C7AAFE6001C59F2 /* Localizable.xcstrings in Resources */,
CDE2D3A92AC6E90600261224 /* dockTileIcon.png in Resources */,
7DE29CA61CA7C10500DFA6A6 /* startupScriptsIcon.png in Resources */,
CDA81D701A95B4E9009790E2 /* stopScan.png in Resources */,
@@ -746,7 +754,7 @@
CDF08CD01AC4C6E8009B3423 /* settingsBG.png in Resources */,
CD5854D321A5FADD00A438B0 /* patrons.txt in Resources */,
CD0219551AD34E4C005148A2 /* kkIcon.png in Resources */,
CDA81D5C1A95B4B4009790E2 /* MainMenu.xib in Resources */,
CD6FD7AC2C7AAD87001C59F2 /* MainMenu.xib in Resources */,
CD7B9F4D1ACB959200DF3C71 /* logoAppleOver.png in Resources */,
CDA81DCB1A9960A3009790E2 /* virusTotal.png in Resources */,
CDA81DF41A99B8C2009790E2 /* whitelistedExtensions.json in Resources */,
@@ -764,28 +772,28 @@
CDAB98A31AEB413C00C75B4B /* dylibIcon.png in Resources */,
CDF08CC31AC3E98D009B3423 /* infoOver.png in Resources */,
CDF08CF41ACA6864009B3423 /* loginIcon.png in Resources */,
CD0219501AD34D8B005148A2 /* PrefsWindow.xib in Resources */,
CD6FD7C22C7AB294001C59F2 /* PrefsWindow.xib in Resources */,
CDA81D6C1A95B4E9009790E2 /* showBG.png in Resources */,
CDA81D6A1A95B4E9009790E2 /* mainIcon.png in Resources */,
CDA81D711A95B4E9009790E2 /* stopScanBG.png in Resources */,
CDF08CBF1AC3DE25009B3423 /* logoAppleBG.png in Resources */,
CDF08CE21AC88E0F009B3423 /* VTInfoWindow.xib in Resources */,
CD6FD7C62C7AB299001C59F2 /* VTInfoWindow.xib in Resources */,
CDA81D6F1A95B4E9009790E2 /* startScanBG.png in Resources */,
CDA81DF31A99B8C2009790E2 /* whitelistedCommands.json in Resources */,
7D44F4C71DAAEF3E0085859C /* proxyIcon.png in Resources */,
CDBE491F1B5B46040031FC22 /* logInOutIcon.png in Resources */,
CDA81D721A95B4E9009790E2 /* virus.png in Resources */,
CDA81DC91A9960A3009790E2 /* info.png in Resources */,
CD2F21A121A8A7D100F67A83 /* UpdateWindow.xib in Resources */,
CD6FD7B22C7AB284001C59F2 /* UpdateWindow.xib in Resources */,
CDA81D6E1A95B4E9009790E2 /* startScan.png in Resources */,
CD02194F1AD34D8B005148A2 /* AboutWindow.xib in Resources */,
CD6FD7BE2C7AB291001C59F2 /* AboutWindow.xib in Resources */,
CDA81DCA1A9960A3009790E2 /* infoBG.png in Resources */,
CDF08CD11AC4C6E8009B3423 /* settings.png in Resources */,
7DE2FE301D3F3228006C1438 /* extensionIcon.png in Resources */,
CD3B99D325EDE9F90020AF50 /* systemExtensionIcon.png in Resources */,
CDA81DD31A9970A0009790E2 /* signed.png in Resources */,
CDD83FD61B50C76F0037124E /* cronIcon.png in Resources */,
CDA81E661AA020FD009790E2 /* FileInfoWindow.xib in Resources */,
CD6FD7CE2C7AB2A3001C59F2 /* FileInfoWindow.xib in Resources */,
CD36CDB8237785180089FC34 /* quicklookIcon.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -852,22 +860,95 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
CDA81D541A95B4B4009790E2 /* InfoPlist.strings */ = {
CD6FD7AB2C7AAD87001C59F2 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
CDA81D551A95B4B4009790E2 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
CDA81D561A95B4B4009790E2 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
CDA81D571A95B4B4009790E2 /* en */,
CD6FD7AA2C7AAD87001C59F2 /* Base */,
CD6FD7AD2C7AAD87001C59F2 /* mul */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
CD6FD7B12C7AB284001C59F2 /* UpdateWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7B02C7AB284001C59F2 /* Base */,
CD6FD7B32C7AB284001C59F2 /* mul */,
);
name = UpdateWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7B52C7AB288001C59F2 /* PlistWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7B42C7AB288001C59F2 /* Base */,
CD6FD7B72C7AB288001C59F2 /* mul */,
);
name = PlistWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7B92C7AB28D001C59F2 /* ResultsWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7B82C7AB28D001C59F2 /* Base */,
CD6FD7BB2C7AB28D001C59F2 /* mul */,
);
name = ResultsWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7BD2C7AB291001C59F2 /* AboutWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7BC2C7AB291001C59F2 /* Base */,
CD6FD7BF2C7AB291001C59F2 /* mul */,
);
name = AboutWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7C12C7AB294001C59F2 /* PrefsWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7C02C7AB294001C59F2 /* Base */,
CD6FD7C32C7AB294001C59F2 /* mul */,
);
name = PrefsWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7C52C7AB299001C59F2 /* VTInfoWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7C42C7AB299001C59F2 /* Base */,
CD6FD7C72C7AB299001C59F2 /* mul */,
);
name = VTInfoWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7C92C7AB29F001C59F2 /* ExtensionInfoWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7C82C7AB29F001C59F2 /* Base */,
CD6FD7CB2C7AB29F001C59F2 /* mul */,
);
name = ExtensionInfoWindow.xib;
path = UI;
sourceTree = "<group>";
};
CD6FD7CD2C7AB2A3001C59F2 /* FileInfoWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD6FD7CC2C7AB2A3001C59F2 /* Base */,
CD6FD7CF2C7AB2A3001C59F2 /* mul */,
);
name = FileInfoWindow.xib;
path = UI;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@@ -975,10 +1056,6 @@
CURRENT_PROJECT_VERSION = 2.5.0;
DEVELOPMENT_TEAM = VBG97UB4TA;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "KnockKnock-Prefix.pch";
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/Libraries/**";
@@ -988,7 +1065,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Libraries/BTM",
);
MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 2.5.0;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.${PRODUCT_NAME:rfc1034identifier}";
@@ -1009,10 +1086,6 @@
CURRENT_PROJECT_VERSION = 2.5.0;
DEVELOPMENT_TEAM = VBG97UB4TA;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "KnockKnock-Prefix.pch";
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/Libraries/**";
@@ -1022,7 +1095,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Libraries/BTM",
);
MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 2.5.0;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.${PRODUCT_NAME:rfc1034identifier}";
+126
View File
@@ -0,0 +1,126 @@
{
"sourceLanguage" : "en",
"strings" : {
" \r\n■ %lu item(s) flagged by VirusTotal" : {
"comment" : " \r\n■ %lu item(s) flagged by VirusTotal"
},
" \r\n■ Unable to query VirusTotal (network)" : {
"comment" : " \r\n■ Unable to query VirusTotal (network)"
},
"■ Found %lu items" : {
"comment" : "■ Found %lu items"
},
"■ Found %lu non-OS items" : {
"comment" : "■ Found %lu non-OS items"
},
"a new version (%@) is available!" : {
"comment" : "a new version (%@) is available!"
},
"actions executed by emond" : {
"comment" : "actions executed by emond"
},
"Awaiting VirusTotal results" : {
"comment" : "Awaiting VirusTotal results"
},
"background agents, daemons, & login items" : {
"comment" : "background agents, daemons, & login items"
},
"bundles hosted by a Dock XPC service" : {
"comment" : "bundles hosted by a Dock XPC service"
},
"bundles loaded by Spotlight (mdworker)" : {
"comment" : "bundles loaded by Spotlight (mdworker)"
},
"Cancel" : {
"comment" : "Cancel"
},
"Close" : {
"comment" : "Close"
},
"current user's cron jobs" : {
"comment" : "current user's cron jobs"
},
"daemons and agents loaded by launchd" : {
"comment" : "daemons and agents loaded by launchd"
},
"details: %@" : {
"comment" : "details: %@"
},
"dylibs that proxy other libraries" : {
"comment" : "dylibs that proxy other libraries"
},
"error, failed to check for an update." : {
"comment" : "error, failed to check for an update."
},
"ERROR: failed to save output" : {
"comment" : "ERROR: failed to save output"
},
"extensions hosted in the browser" : {
"comment" : "extensions hosted in the browser"
},
"failed to load contents of %@" : {
"comment" : "failed to load contents of %@"
},
"installed kexts, likely kernel loaded" : {
"comment" : "installed kexts, likely kernel loaded"
},
"items executed upon login or logout" : {
"comment" : "items executed upon login or logout"
},
"items started when the user logs in" : {
"comment" : "items started when the user logs in"
},
"libs inserted by DYLD_INSERT_LIBRARIES" : {
"comment" : "libs inserted by DYLD_INSERT_LIBRARIES"
},
"Ok" : {
"comment" : "Ok"
},
"OK" : {
"comment" : "OK"
},
"Open 'System Preferences' to give KnockKnock Full Disk Access?" : {
"comment" : "Open 'System Preferences' to give KnockKnock Full Disk Access?"
},
"plugins that extend/customize the OS" : {
"comment" : "plugins that extend/customize the OS"
},
"registered authorization bundles" : {
"comment" : "registered authorization bundles"
},
"registered directory services bundles" : {
"comment" : "registered directory services bundles"
},
"registered quicklook bundles" : {
"comment" : "registered quicklook bundles"
},
"Scanning: %@" : {
"comment" : "Scanning: %@"
},
"scripts executed during OS startup" : {
"comment" : "scripts executed during OS startup"
},
"scripts that are executed periodically" : {
"comment" : "scripts that are executed periodically"
},
"Stop Scan" : {
"comment" : "Stop Scan"
},
"This allows the app to perform a comprehensive scan.\n\nIn System Preferences:\r ▪ Click the 🔒 to authenticate\r ▪ Click the to add KnockKnock.app\n" : {
"comment" : "This allows the app to perform a comprehensive scan.\n\nIn System Preferences:\r ▪ Click the 🔒 to authenticate\r ▪ Click the to add KnockKnock.app\n"
},
"Update" : {
"comment" : "Update"
},
"user-mode 'drivers' extending OS functionality" : {
"comment" : "user-mode 'drivers' extending OS functionality"
},
"version: %@" : {
"comment" : "version: %@"
},
"you're all up to date! (v. %@)" : {
"comment" : "you're all up to date! (v. %@)"
}
},
"version" : "1.0"
}
+1 -1
View File
@@ -35,7 +35,7 @@
if(0 == self.contents.string.length)
{
//display error
self.contents.string = [NSString stringWithFormat:@"failed to load contents of %@", self.plist];
self.contents.string = [NSString stringWithFormat:NSLocalizedString(@"failed to load contents of %@", @"failed to load contents of %@"), self.plist];
}
return;
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Authorization Plugins"
//plugin description
#define PLUGIN_DESCRIPTION @"registered authorization bundles"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"registered authorization bundles","registered authorization bundles")
//plugin icon
#define PLUGIN_ICON @"authorizationIcon"
+1 -1
View File
@@ -14,7 +14,7 @@
#define PLUGIN_NAME @"Background Managed Tasks"
//plugin description
#define PLUGIN_DESCRIPTION @"agents, daemons, & login items managed by BTM"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"background agents, daemons, & login items", @"background agents, daemons, & login items")
//plugin icon
#define PLUGIN_ICON @"btmIcon"
+40 -25
View File
@@ -14,7 +14,7 @@
#define PLUGIN_NAME @"Browser Extensions"
//plugin description
#define PLUGIN_DESCRIPTION @"extensions hosted in the browser"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"extensions hosted in the browser", "extensions hosted in the browser")
//plugin icon
#define PLUGIN_ICON @"browserIcon"
@@ -117,8 +117,7 @@
return;
}
//get all disabled launch items
// ->specified in various overrides.plist files
//get list of install browsers
-(NSArray*)getInstalledBrowsers
{
//installed browser
@@ -133,31 +132,47 @@
//alloc browsers array
browsers = [NSMutableArray array];
//get IDs of all installed browsers
// ->or things that can handle HTTPS
browserIDs = LSCopyAllHandlersForURLScheme(CFSTR("https"));
//iterate of all browser IDs
// ->resolve ID to browser path
for(NSString* browserID in (__bridge NSArray *)browserIDs)
{
//resolve browser URL
if(STATUS_SUCCESS != LSFindApplicationForInfo(kLSUnknownCreator, (__bridge CFStringRef)(browserID), NULL, NULL, &browserURL))
{
//skip
continue;
}
//get list of browers
// macOS 12+ can use 'URLsForApplicationsToOpenURL'
if (@available(macOS 12.0, *)) {
//save browser URL
[browsers addObject:[(__bridge NSURL *)browserURL path]];
//add each browser
for(NSURL* browser in [NSWorkspace.sharedWorkspace URLsForApplicationsToOpenURL:[NSURL URLWithString:PRODUCT_URL]])
{
//add
[browsers addObject:browser.path];
}
}
//release browser IDs
if(nil != browserIDs)
{
//release
CFRelease(browserIDs);
browserIDs = nil;
//get list of browers
// pre-macOS 12, use 'LSCopyAllHandlersForURLScheme' & 'LSFindApplicationForInfo'
else {
//get IDs of all installed browsers
// (or, well, things that can handle HTTPS)
browserIDs = LSCopyAllHandlersForURLScheme(CFSTR("https"));
//resolve browser ID to browser path
for(NSString* browserID in (__bridge NSArray *)browserIDs)
{
//resolve browser URL
if(STATUS_SUCCESS != LSFindApplicationForInfo(kLSUnknownCreator, (__bridge CFStringRef)(browserID), NULL, NULL, &browserURL))
{
//skip
continue;
}
//save browser URL
[browsers addObject:[(__bridge NSURL *)browserURL path]];
}
//release browser IDs
if(nil != browserIDs)
{
//release
CFRelease(browserIDs);
browserIDs = nil;
}
}
return browsers;
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Cron Jobs"
//plugin description
#define PLUGIN_DESCRIPTION @"current user's cron jobs"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"current user's cron jobs", @"current user's cron jobs")
//plugin icon
#define PLUGIN_ICON @"cronIcon"
+1 -1
View File
@@ -14,7 +14,7 @@
#define PLUGIN_NAME @"Dir. Services Plugins"
//plugin description
#define PLUGIN_DESCRIPTION @"registered directory services bundles"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"registered directory services bundles", @"registered directory services bundles")
//plugin icon
#define PLUGIN_ICON @"directoryServicesIcon"
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Dock Tiles Plugins"
//plugin description
#define PLUGIN_DESCRIPTION @"bundles hosted by a Dock XPC service"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"bundles hosted by a Dock XPC service", @"bundles hosted by a Dock XPC service")
//plugin icon
#define PLUGIN_ICON @"dockTileIcon"
+1 -1
View File
@@ -32,7 +32,7 @@
#define PLUGIN_NAME @"Library Inserts"
//plugin description
#define PLUGIN_DESCRIPTION @"libs inserted by DYLD_INSERT_LIBRARIES"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"libs inserted by DYLD_INSERT_LIBRARIES", @"libs inserted by DYLD_INSERT_LIBRARIES")
//plugin icon
#define PLUGIN_ICON @"dylibIcon"
+5 -13
View File
@@ -12,7 +12,7 @@
#define PLUGIN_NAME @"Library Proxies"
//plugin description
#define PLUGIN_DESCRIPTION @"dylibs that proxy other libraries"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"dylibs that proxy other libraries", @"dylibs that proxy other libraries")
//plugin icon
#define PLUGIN_ICON @"proxyIcon"
@@ -161,7 +161,7 @@ NSString * const PROTECTED_DIRECTORIES[] = {@"~/Library/Application Support/Addr
//skip 'non files' / non-executable files
if( (YES != [[NSFileManager defaultManager] fileExistsAtPath:filePath]) ||
(YES != isExecutable(filePath)) )
(YES != isBinary(filePath)) )
{
//skip
continue;
@@ -190,7 +190,7 @@ bail:
}
//enum dylibs statically referenced by all running procs
-(NSMutableArray*)enumLinkedDylibs:(NSArray*)runningProcs
-(NSArray*)enumLinkedDylibs:(NSArray*)runningProcs
{
//dylibs
NSMutableArray* dylibs = nil;
@@ -198,10 +198,6 @@ bail:
//macho parser
MachO* machoParser = nil;
//pool
@autoreleasepool
{
//alloc array
dylibs = [NSMutableArray array];
@@ -226,12 +222,8 @@ bail:
[dylibs addObjectsFromArray:machoParser.binaryInfo[KEY_LC_LOAD_WEAK_DYLIBS]];
}
//remove duplicates
dylibs = [[[NSSet setWithArray:dylibs] allObjects] mutableCopy];
} //pool
return dylibs;
//remove dups and return
return [[NSSet setWithArray:dylibs] allObjects];
}
//process dylibs
+1 -1
View File
@@ -14,7 +14,7 @@
#define PLUGIN_NAME @"Event Rules"
//plugin description
#define PLUGIN_DESCRIPTION @"actions executed by emond"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"actions executed by emond", @"actions executed by emond")
//plugin icon
#define PLUGIN_ICON @"eventRulesIcon"
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Extensions and Widgets"
//plugin description
#define PLUGIN_DESCRIPTION @"plugins that extend/customize the OS"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"plugins that extend/customize the OS", @"plugins that extend/customize the OS")
//plugin icon
#define PLUGIN_ICON @"extensionIcon"
+1 -1
View File
@@ -11,7 +11,7 @@
#define PLUGIN_NAME @"Kernel Extensions"
//plugin description
#define PLUGIN_DESCRIPTION @"installed kexts, likely kernel loaded"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"installed kexts, likely kernel loaded", @"installed kexts, likely kernel loaded")
//plugin icon
#define PLUGIN_ICON @"kernelIcon"
+1 -1
View File
@@ -12,7 +12,7 @@
#define PLUGIN_NAME @"Launch Items"
//plugin description
#define PLUGIN_DESCRIPTION @"daemons and agents loaded by launchd"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"daemons and agents loaded by launchd", @"daemons and agents loaded by launchd")
//plugin icon
#define PLUGIN_ICON @"launchIcon"
+1 -1
View File
@@ -18,7 +18,7 @@
#define PLUGIN_NAME @"Login/Logout Hooks"
//plugin description
#define PLUGIN_DESCRIPTION @"items executed upon login or logout"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"items executed upon login or logout", @"items executed upon login or logout")
//plugin icon
#define PLUGIN_ICON @"logInOutIcon"
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Login Items"
//plugin description
#define PLUGIN_DESCRIPTION @"items started when the user logs in"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"items started when the user logs in", @"items started when the user logs in")
//plugin icon
#define PLUGIN_ICON @"loginIcon"
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Periodic Scripts"
//plugin description
#define PLUGIN_DESCRIPTION @"scripts that are executed periodically"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"scripts that are executed periodically", @"scripts that are executed periodically")
//plugin icon
#define PLUGIN_ICON @"periodicIcon"
+1 -1
View File
@@ -14,7 +14,7 @@
#define PLUGIN_NAME @"Quicklook Plugins"
//plugin description
#define PLUGIN_DESCRIPTION @"registered quicklook bundles"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"registered quicklook bundles", @"registered quicklook bundles")
//plugin icon
#define PLUGIN_ICON @"quicklookIcon"
+1 -1
View File
@@ -11,7 +11,7 @@
#define PLUGIN_NAME @"Spotlight Importers"
//plugin description
#define PLUGIN_DESCRIPTION @"bundles loaded by Spotlight (mdworker)"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"bundles loaded by Spotlight (mdworker)", @"bundles loaded by Spotlight (mdworker)")
//plugin icon
#define PLUGIN_ICON @"spotlightIcon"
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"Startup Scripts"
//plugin description
#define PLUGIN_DESCRIPTION @"scripts executed during OS startup"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"scripts executed during OS startup", @"scripts executed during OS startup")
//plugin icon
#define PLUGIN_ICON @"startupScriptsIcon"
+1 -1
View File
@@ -13,7 +13,7 @@
#define PLUGIN_NAME @"System Extensions"
//plugin description
#define PLUGIN_DESCRIPTION @"plugins that extend OS functionality"
#define PLUGIN_DESCRIPTION NSLocalizedString(@"user-mode 'drivers' extending OS functionality", @"user-mode 'drivers' extending OS functionality")
//plugin icon
#define PLUGIN_ICON @"systemExtensionIcon"
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22690"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -19,7 +19,7 @@
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES" texturedBackground="YES"/>
<rect key="contentRect" x="196" y="240" width="532" height="400"/>
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="532" height="400"/>
<autoresizingMask key="autoresizingMask"/>
@@ -70,7 +70,7 @@
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fZJ-sG-ZuJ">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fZJ-sG-ZuJ">
<rect key="frame" x="20" y="250" width="138" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Patrons &amp; Friends" id="fJg-qw-wDf">
@@ -79,7 +79,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OSm-xS-Dmd">
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OSm-xS-Dmd">
<rect key="frame" x="153" y="334" width="182" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Version:" id="bBK-v0-ypq">
@@ -88,7 +88,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="HZZ-Es-mpy">
<button tag="101" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HZZ-Es-mpy">
<rect key="frame" x="390" y="13" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="More Info" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="J9x-sM-h9S">
@@ -99,7 +99,7 @@
<action selector="buttonHandler:" target="-2" id="Cgx-f4-Thr"/>
</connections>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="xnd-Gw-0o8">
<button tag="100" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xnd-Gw-0o8">
<rect key="frame" x="247" y="13" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Support Us!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6g3-Pg-x3P">
+54
View File
@@ -0,0 +1,54 @@
{
"sourceLanguage" : "en",
"strings" : {
"6g3-Pg-x3P.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Support Us!\"; ObjectID = \"6g3-Pg-x3P\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Support Us!"
}
}
}
},
"bBK-v0-ypq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Version:\"; ObjectID = \"bBK-v0-ypq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Version:"
}
}
}
},
"fJg-qw-wDf.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Patrons & Friends\"; ObjectID = \"fJg-qw-wDf\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Patrons & Friends"
}
}
}
},
"J9x-sM-h9S.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"More Info\"; ObjectID = \"J9x-sM-h9S\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "More Info"
}
}
}
}
},
"version" : "1.0"
}
+126
View File
@@ -0,0 +1,126 @@
{
"sourceLanguage" : "en",
"strings" : {
"F0z-JX-Cv5.title" : {
"comment" : "Class = \"NSWindow\"; title = \"Extension Information\"; ObjectID = \"F0z-JX-Cv5\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Extension Information"
}
}
}
},
"fYa-Av-reX.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Details:\"; ObjectID = \"fYa-Av-reX\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Details:"
}
}
}
},
"hR8-Wz-esN.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item creation/modified\"; ObjectID = \"hR8-Wz-esN\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item creation/modified"
}
}
}
},
"iBS-9J-ok9.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"ID:\"; ObjectID = \"iBS-9J-ok9\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "ID:"
}
}
}
},
"MfU-Jb-agl.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Path\"; ObjectID = \"MfU-Jb-agl\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Path"
}
}
}
},
"pYD-IR-Vtv.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Name\"; ObjectID = \"pYD-IR-Vtv\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Name"
}
}
}
},
"RwO-yA-Xwk.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Close\"; ObjectID = \"RwO-yA-Xwk\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Close"
}
}
}
},
"U3V-A7-jO8.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Time:\"; ObjectID = \"U3V-A7-jO8\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Time:"
}
}
}
},
"XJ7-Go-bkG.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item id\"; ObjectID = \"XJ7-Go-bkG\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item id"
}
}
}
},
"yYo-KQ-DMm.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"none provided\"; ObjectID = \"yYo-KQ-DMm\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "none provided"
}
}
}
}
},
"version" : "1.0"
}
+174
View File
@@ -0,0 +1,174 @@
{
"sourceLanguage" : "en",
"strings" : {
"00d-h4-SPW.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"signing status\"; ObjectID = \"00d-h4-SPW\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "signing status"
}
}
}
},
"23w-N2-C5Z.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"plist\"; ObjectID = \"23w-N2-C5Z\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "plist"
}
}
}
},
"ezp-TW-Xky.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Sign:\"; ObjectID = \"ezp-TW-Xky\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Sign:"
}
}
}
},
"F0z-JX-Cv5.title" : {
"comment" : "Class = \"NSWindow\"; title = \"File Information\"; ObjectID = \"F0z-JX-Cv5\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "File Information"
}
}
}
},
"fYa-Av-reX.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Hash:\"; ObjectID = \"fYa-Av-reX\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Hash:"
}
}
}
},
"hR8-Wz-esN.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item creation/modified\"; ObjectID = \"hR8-Wz-esN\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item creation/modified"
}
}
}
},
"iBS-9J-ok9.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Size:\"; ObjectID = \"iBS-9J-ok9\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Size:"
}
}
}
},
"MfU-Jb-agl.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Path\"; ObjectID = \"MfU-Jb-agl\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Path"
}
}
}
},
"oqF-UL-ydq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"List:\"; ObjectID = \"oqF-UL-ydq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "List:"
}
}
}
},
"pYD-IR-Vtv.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Name\"; ObjectID = \"pYD-IR-Vtv\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Name"
}
}
}
},
"RwO-yA-Xwk.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Close\"; ObjectID = \"RwO-yA-Xwk\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Close"
}
}
}
},
"U3V-A7-jO8.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Time:\"; ObjectID = \"U3V-A7-jO8\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Time:"
}
}
}
},
"XJ7-Go-bkG.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item size\"; ObjectID = \"XJ7-Go-bkG\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item size"
}
}
}
},
"yYo-KQ-DMm.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item hash\"; ObjectID = \"yYo-KQ-DMm\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item hash"
}
}
}
}
},
"version" : "1.0"
}
+42
View File
@@ -0,0 +1,42 @@
{
"sourceLanguage" : "en",
"strings" : {
"1Dc-km-Bwx.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Close\"; ObjectID = \"1Dc-km-Bwx\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Close"
}
}
}
},
"F0z-JX-Cv5.title" : {
"comment" : "Class = \"NSWindow\"; title = \"Window\"; ObjectID = \"F0z-JX-Cv5\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Window"
}
}
}
},
"iny-wp-VI1.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"plist\"; ObjectID = \"iny-wp-VI1\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "plist"
}
}
}
}
},
"version" : "1.0"
}
+66
View File
@@ -0,0 +1,66 @@
{
"sourceLanguage" : "en",
"strings" : {
"F0z-JX-Cv5.title" : {
"comment" : "Class = \"NSWindow\"; title = \"Preferences\"; ObjectID = \"F0z-JX-Cv5\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Preferences"
}
}
}
},
"gXW-vY-Aj1.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Disable VirusTotal integration.\"; ObjectID = \"gXW-vY-Aj1\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Disable VirusTotal integration."
}
}
}
},
"idJ-pd-k6U.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Disable automatic update check.\"; ObjectID = \"idJ-pd-k6U\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Disable automatic update check."
}
}
}
},
"J9x-sM-h9S.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"OK\"; ObjectID = \"J9x-sM-h9S\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OK"
}
}
}
},
"WN8-cQ-8xh.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Include macOS/known items.\"; ObjectID = \"WN8-cQ-8xh\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Include macOS/known items."
}
}
}
}
},
"version" : "1.0"
}
+42
View File
@@ -0,0 +1,42 @@
{
"sourceLanguage" : "en",
"strings" : {
"bBK-v0-ypq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"results...\"; ObjectID = \"bBK-v0-ypq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "results..."
}
}
}
},
"J9x-sM-h9S.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"OK\"; ObjectID = \"J9x-sM-h9S\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OK"
}
}
}
},
"viG-9e-1Nj.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Scan Complete\"; ObjectID = \"viG-9e-1Nj\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Scan Complete"
}
}
}
}
},
"version" : "1.0"
}
+7
View File
@@ -0,0 +1,7 @@
{
"sourceLanguage" : "en",
"strings" : {
},
"version" : "1.0"
}
+138
View File
@@ -0,0 +1,138 @@
{
"sourceLanguage" : "en",
"strings" : {
"2nj-QY-6ot.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"unknown file\"; ObjectID = \"2nj-QY-6ot\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "unknown file"
}
}
}
},
"3TS-NZ-XYE.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"file name\"; ObjectID = \"3TS-NZ-XYE\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "file name"
}
}
}
},
"F0z-JX-Cv5.title" : {
"comment" : "Class = \"NSWindow\"; title = \"VirusTotal Information\"; ObjectID = \"F0z-JX-Cv5\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "VirusTotal Information"
}
}
}
},
"HO9-t1-yCi.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"File Name:\"; ObjectID = \"HO9-t1-yCi\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "File Name:"
}
}
}
},
"hR8-Wz-esN.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"report url\"; ObjectID = \"hR8-Wz-esN\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "report url"
}
}
}
},
"iBS-9J-ok9.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Detection:\"; ObjectID = \"iBS-9J-ok9\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Detection:"
}
}
}
},
"JAW-nH-eRf.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Submit?\"; ObjectID = \"JAW-nH-eRf\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Submit?"
}
}
}
},
"lxM-ES-i7K.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"status msg\"; ObjectID = \"lxM-ES-i7K\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "status msg"
}
}
}
},
"RwO-yA-Xwk.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Close\"; ObjectID = \"RwO-yA-Xwk\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Close"
}
}
}
},
"U3V-A7-jO8.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"More Info:\"; ObjectID = \"U3V-A7-jO8\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "More Info:"
}
}
}
},
"XJ7-Go-bkG.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"ratio\"; ObjectID = \"XJ7-Go-bkG\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "ratio"
}
}
}
}
},
"version" : "1.0"
}
+2 -6
View File
@@ -68,10 +68,6 @@ NSString* escapeString(NSString* unescapedString);
//find a constraint (by name) of a view
NSLayoutConstraint* findConstraint(NSView* view, NSString* constraintName);
//check if app is pristine
// ->that is to say, nobody modified on-disk image/resources (white lists!, etc)
OSStatus verifySelf(void);
//given a 'short' path or process name
// ->find the full path by scanning $PATH
NSString* which(NSString* processName);
@@ -80,8 +76,8 @@ NSString* which(NSString* processName);
// ->returns an array of process paths
NSMutableArray* runningProcesses(void);
//check if a file is an executable
BOOL isExecutable(NSString* file);
//check if a file is a binary
BOOL isBinary(NSString* file);
//lookup object in dictionary
// note: key can be case-insensitive
+42 -58
View File
@@ -405,7 +405,7 @@ bail:
//get app's version
// ->extracted from Info.plist
NSString* getAppVersion()
NSString* getAppVersion(void)
{
//read and return 'CFBundleVersion' from bundle
return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
@@ -568,7 +568,7 @@ void makeModal(NSWindowController* windowController)
//check if computer has network connection
BOOL isNetworkConnected()
BOOL isNetworkConnected(void)
{
//flag
BOOL isConnected = NO;
@@ -697,45 +697,6 @@ NSLayoutConstraint* findConstraint(NSView* view, NSString* constraintName)
return constraint;
}
//check if app is pristine
// ->that is to say, nobody modified on-disk image/resources (white lists!, etc)
OSStatus verifySelf(void)
{
//status
OSStatus status = !noErr;
//sec ref (for self)
SecCodeRef secRef = NULL;
//get sec ref to self
status = SecCodeCopySelf(kSecCSDefaultFlags, &secRef);
if(noErr != status)
{
//bail
goto bail;
}
//validate
status = SecStaticCodeCheckValidity(secRef, kSecCSDefaultFlags, NULL);
if(noErr != status)
{
//bail
goto bail;
}
//bail
bail:
//release sec ref
if(NULL != secRef)
{
//release
CFRelease(secRef);
}
return status;
}
//given a 'short' path or process name
// ->find the full path by scanning $PATH
NSString* which(NSString* processName)
@@ -900,7 +861,7 @@ bail:
//get array of running procs
// ->returns an array of process paths
NSMutableArray* runningProcesses()
NSMutableArray* runningProcesses(void)
{
//running procs
NSMutableArray* processes = nil;
@@ -970,33 +931,56 @@ bail:
return processes;
}
//check if a file is an executable
BOOL isExecutable(NSString* file)
//check if a file is a binary
BOOL isBinary(NSString* file)
{
//return
BOOL isExecutable = NO;
//architecture ref
CFArrayRef archArrayRef = NULL;
CFArrayRef architectures = NULL;
//once
static dispatch_once_t once;
//architectures
static NSMutableArray* supportedArchitectures = nil;
//match
NSNumber* matchedArchitecture = nil;
//init architecture array
dispatch_once(&once, ^ {
//init with i386 & x6_64
supportedArchitectures = [@[[NSNumber numberWithInt:kCFBundleExecutableArchitectureI386], [NSNumber numberWithInt:kCFBundleExecutableArchitectureX86_64]] mutableCopy];
//add arm on newer
if(@available(macOS 11, *))
{
[supportedArchitectures addObject:[NSNumber numberWithInt:kCFBundleExecutableArchitectureARM64]];
}
});
//get executable arch's
archArrayRef = CFBundleCopyExecutableArchitecturesForURL((__bridge CFURLRef)[NSURL fileURLWithPath:file]);
//check arch for i386/x6_64
if(NULL != archArrayRef)
architectures = CFBundleCopyExecutableArchitecturesForURL((__bridge CFURLRef)[NSURL fileURLWithPath:file]);
if( (NULL == architectures) ||
(CFArrayGetCount(architectures) == 0) )
{
//set flag
isExecutable = [(__bridge NSArray*)archArrayRef containsObject:[NSNumber numberWithInt:kCFBundleExecutableArchitectureX86_64]] || [(__bridge NSArray*)archArrayRef containsObject:[NSNumber numberWithInt:kCFBundleExecutableArchitectureI386]];
//bail
goto bail;
}
//check for match
matchedArchitecture = [(__bridge NSArray*)architectures firstObjectCommonWithArray:supportedArchitectures];
bail:
//free arch ref
if(NULL != archArrayRef)
if(NULL != architectures)
{
//free
CFRelease(archArrayRef);
CFRelease(architectures);
}
return isExecutable;
return nil != matchedArchitecture;
}
//lookup object in dictionary
@@ -1024,7 +1008,7 @@ id extractFromDictionary(NSDictionary* dictionary, NSString* sensitiveKey)
//check if (full) dark mode
// meaning, Mojave+ and dark mode enabled
BOOL isDarkMode()
BOOL isDarkMode(void)
{
//flag
BOOL darkMode = NO;
+450
View File
@@ -0,0 +1,450 @@
{
"sourceLanguage" : "en",
"strings" : {
"1D0-FU-7Yz.ibShadowedToolTip" : {
"comment" : "Class = \"NSButton\"; ibShadowedToolTip = \"show file info\"; ObjectID = \"1D0-FU-7Yz\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "show file info"
}
}
}
},
"1mP-i0-2e4.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Close\"; ObjectID = \"1mP-i0-2e4\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Close"
}
}
}
},
"1za-Bx-vuB.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"▪ ▪ ▪\"; ObjectID = \"1za-Bx-vuB\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "▪ ▪ ▪"
}
}
}
},
"3n6-7o-mGC.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"show\"; ObjectID = \"3n6-7o-mGC\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "show"
}
}
}
},
"5m9-ob-we9.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Category Description\"; ObjectID = \"5m9-ob-we9\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Category Description"
}
}
}
},
"8lb-2h-A37.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Categories:\"; ObjectID = \"8lb-2h-A37\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Categories:"
}
}
}
},
"29.title" : {
"comment" : "Class = \"NSMenu\"; title = \"AMainMenu\"; ObjectID = \"29\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "AMainMenu"
}
}
}
},
"50R-D6-zAq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"virustotal\"; ObjectID = \"50R-D6-zAq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "virustotal"
}
}
}
},
"56.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"KnockKnock\"; ObjectID = \"56\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "KnockKnock"
}
}
}
},
"57.title" : {
"comment" : "Class = \"NSMenu\"; title = \"KnockKnock\"; ObjectID = \"57\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "KnockKnock"
}
}
}
},
"66D-SU-ADH.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Command\"; ObjectID = \"66D-SU-ADH\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Command"
}
}
}
},
"134.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"About\"; ObjectID = \"134\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "About"
}
}
}
},
"136.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Quit\"; ObjectID = \"136\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Quit"
}
}
}
},
"371.title" : {
"comment" : "Class = \"NSWindow\"; title = \"KnockKnock\"; ObjectID = \"371\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "KnockKnock"
}
}
}
},
"544.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Text Cell\"; ObjectID = \"544\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Text Cell"
}
}
}
},
"579.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Name\"; ObjectID = \"579\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Name"
}
}
}
},
"602.ibShadowedToolTip" : {
"comment" : "Class = \"NSButton\"; ibShadowedToolTip = \"show in finder\"; ObjectID = \"602\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "show in finder"
}
}
}
},
"748.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"status...\"; ObjectID = \"748\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "status..."
}
}
}
},
"769.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Start Scan\"; ObjectID = \"769\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Start Scan"
}
}
}
},
"akD-jt-Y0L.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Items:\"; ObjectID = \"akD-jt-Y0L\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Items:"
}
}
}
},
"Cd7-Xq-jnw.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Preferences\"; ObjectID = \"Cd7-Xq-jnw\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Preferences"
}
}
}
},
"DUA-BI-gth.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Item Category\"; ObjectID = \"DUA-BI-gth\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Item Category"
}
}
}
},
"FJa-D6-BXh.ibShadowedToolTip" : {
"comment" : "Class = \"NSButton\"; ibShadowedToolTip = \"show in finder\"; ObjectID = \"FJa-D6-BXh\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "show in finder"
}
}
}
},
"jB9-4g-VcD.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"000\"; ObjectID = \"jB9-4g-VcD\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "000"
}
}
}
},
"jMK-Qd-DDP.ibShadowedToolTip" : {
"comment" : "Class = \"NSButton\"; ibShadowedToolTip = \"show virustotal info\"; ObjectID = \"jMK-Qd-DDP\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "show virustotal info"
}
}
}
},
"JSF-ba-pCy.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Mahalo to the \\\"Friends of Objective-See\\\"\"; ObjectID = \"JSF-ba-pCy\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Mahalo to the \"Friends of Objective-See\""
}
}
}
},
"KxO-Jf-gyu.title" : {
"comment" : "Class = \"NSBox\"; title = \"Box\"; ObjectID = \"KxO-Jf-gyu\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Box"
}
}
}
},
"m5h-Zp-Y8c.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Check For Update...\"; ObjectID = \"m5h-Zp-Y8c\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Check For Update..."
}
}
}
},
"mds-5g-doD.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item path\"; ObjectID = \"mds-5g-doD\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item path"
}
}
}
},
"NHF-GA-lDe.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"info\"; ObjectID = \"NHF-GA-lDe\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "info"
}
}
}
},
"RsS-lJ-vVj.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"show\"; ObjectID = \"RsS-lJ-vVj\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "show"
}
}
}
},
"TTQ-yd-uVn.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"version x.x.x\"; ObjectID = \"TTQ-yd-uVn\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "version x.x.x"
}
}
}
},
"W7z-UG-RS9.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item path\"; ObjectID = \"W7z-UG-RS9\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item path"
}
}
}
},
"WyP-Ci-amT.title" : {
"comment" : "Class = \"NSBox\"; title = \"Box\"; ObjectID = \"WyP-Ci-amT\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Box"
}
}
}
},
"Xud-mK-lFp.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"item plist\"; ObjectID = \"Xud-mK-lFp\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "item plist"
}
}
}
},
"Ybp-gD-hTK.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Text Cell\"; ObjectID = \"Ybp-gD-hTK\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Text Cell"
}
}
}
},
"YxG-Lg-xla.headerCell.title" : {
"comment" : "Class = \"NSTableColumn\"; headerCell.title = \"categories\"; ObjectID = \"YxG-Lg-xla\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "categories"
}
}
}
}
},
"version" : "1.0"
}