welcome screens

This commit is contained in:
Patrick Wardle
2025-11-18 13:19:50 -03:00
parent 9d9dee8ca3
commit bb66eecd57
51 changed files with 279 additions and 222 deletions
+2 -2
View File
@@ -7,8 +7,8 @@
// copyright (c) 2018 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "Utilities.h"
#import "consts.h"
#import "utilities.h"
#import "AboutWindowController.h"
@implementation AboutWindowController
+2 -2
View File
@@ -3,9 +3,9 @@
// KnockKnock
//
#import "Consts.h"
#import "consts.h"
#import "Update.h"
#import "Utilities.h"
#import "utilities.h"
#import "PluginBase.h"
#import "AppDelegate.h"
+151 -128
View File
@@ -10,15 +10,17 @@
<connections>
<outlet property="FDAActivityIndicator" destination="yma-6U-MZX" id="4dj-PX-lFd"/>
<outlet property="FDAMessage" destination="gmX-7f-3dv" id="c9O-D1-ecN"/>
<outlet property="allowApple" destination="b0q-yl-6sv" id="Wjt-Cb-bfM"/>
<outlet property="allowDNS" destination="TKV-2M-L24" id="cZl-yn-ymP"/>
<outlet property="allowInstalled" destination="LHE-lc-cEL" id="ACY-m8-aoi"/>
<outlet property="configureView" destination="kOW-Us-kgD" id="zi8-DA-DXs"/>
<outlet property="disableUpdateCheck" destination="LHE-lc-cEL" id="ACY-m8-aoi"/>
<outlet property="disableVTQueries" destination="GdO-mh-Ufm" id="6vm-Ku-Ioa"/>
<outlet property="diskAccessButton" destination="Rrc-n2-rAG" id="ztk-id-S5T"/>
<outlet property="enableFDAView" destination="R7i-MV-IAu" id="9Hz-iv-6FE"/>
<outlet property="fdaNote" destination="ikJ-0D-cGe" id="Lcf-PI-PK8"/>
<outlet property="nextButton" destination="xee-73-1JR" id="2xO-om-Qyw"/>
<outlet property="supportView" destination="2qR-UH-6qk" id="0Pe-jK-kYJ"/>
<outlet property="showAppleItems" destination="b0q-yl-6sv" id="Wjt-Cb-bfM"/>
<outlet property="supportView" destination="2qR-UH-6qk" id="04n-dJ-NKz"/>
<outlet property="vtAPIKey" destination="Msu-yL-eqA" id="Rk7-qM-hwa"/>
<outlet property="vtIntegrationView" destination="afB-QN-4Zp" id="iNq-c6-50S"/>
<outlet property="welcomeView" destination="97j-sp-rBE" id="1Cx-EF-YqK"/>
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
</connections>
@@ -38,7 +40,7 @@
<connections>
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
</connections>
<point key="canvasLocation" x="140" y="147"/>
<point key="canvasLocation" x="-39" y="-409"/>
</window>
<customView id="97j-sp-rBE" userLabel="Welcome">
<rect key="frame" x="0.0" y="0.0" width="700" height="350"/>
@@ -54,7 +56,7 @@
<color key="fillColor" red="0.57793885469999995" green="0.75859862570000003" blue="0.2368842065" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="660" translatesAutoresizingMaskIntoConstraints="NO" id="NEo-Sr-1a0">
<rect key="frame" x="149" y="275" width="338" height="54"/>
<rect key="frame" x="149" y="290" width="338" height="54"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Welcome to" id="Qyh-uK-Afv">
<font key="font" size="41" name="AvenirNextCondensed-Regular"/>
@@ -74,12 +76,12 @@
</connections>
</button>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rNc-Xa-Jqh">
<rect key="frame" x="151" y="181" width="371" height="101"/>
<rect key="frame" x="151" y="196" width="371" height="101"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="kkText" id="zfH-MI-2vJ"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="14w-0v-UJ5">
<rect key="frame" x="15" y="202" width="128" height="128"/>
<rect key="frame" x="15" y="217" width="128" height="128"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="kkIcon" id="vEL-Yw-xip"/>
</imageView>
@@ -87,21 +89,22 @@
<rect key="frame" x="18" y="86" width="664" height="87"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" id="eic-lg-Ln7">
<font key="font" size="21" name="AvenirNextCondensed-Regular"/>
<string key="title">Malware often installs itself persistently so it runs each time your Mac starts. KnockKnock checks “whos there” by scanning all persistent software to reveal anything suspicious.</string>
<font key="font" size="19" name="AvenirNextCondensed-Regular"/>
<string key="title">Malware often installs itself persistently so it automatically runs each time your Mac starts.
KnockKnock checks “whos there” by scanning all persistent software to reveal anything suspicious.</string>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<point key="canvasLocation" x="-173" y="876"/>
<point key="canvasLocation" x="-296" y="504"/>
</customView>
<customView id="R7i-MV-IAu" userLabel="Disk Access">
<rect key="frame" x="0.0" y="0.0" width="966" height="403"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button tag="1" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Rrc-n2-rAG">
<rect key="frame" x="80" y="270" width="197" height="32"/>
<rect key="frame" x="80" y="272" width="197" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Open 'System Settings'" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aCh-Th-bAz">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@@ -124,7 +127,7 @@
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OQh-jg-YAn">
<rect key="frame" x="78" y="253" width="330" height="14"/>
<rect key="frame" x="78" y="255" width="330" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="This is where you manage privacy permissions." id="y5g-ZT-ugG">
<font key="font" size="12" name="Menlo-Regular"/>
@@ -163,7 +166,7 @@
<rect key="frame" x="38" y="345" width="664" height="54"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Grant KnockKnock Full Disk Access" id="np6-Pk-2uu">
<font key="font" size="32" name="AvenirNextCondensed-Regular"/>
<font key="font" size="32" name="AvenirNextCondensed-Medium"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
@@ -227,21 +230,21 @@
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" image="SystemPrefs" id="Bef-Qy-itv"/>
</imageView>
</subviews>
<point key="canvasLocation" x="334" y="277.5"/>
<point key="canvasLocation" x="143" y="-15"/>
</customView>
<customView id="kOW-Us-kgD" userLabel="Configure">
<rect key="frame" x="0.0" y="0.0" width="700" height="466"/>
<rect key="frame" x="0.0" y="0.0" width="637" height="302"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<box fixedFrame="YES" boxType="custom" borderType="none" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="f2W-Nn-YWU">
<rect key="frame" x="0.0" y="0.0" width="700" height="48"/>
<rect key="frame" x="0.0" y="0.0" width="637" height="48"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<view key="contentView" id="jcK-yh-GlV">
<rect key="frame" x="0.0" y="0.0" width="700" height="48"/>
<rect key="frame" x="0.0" y="0.0" width="637" height="48"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button tag="3" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Syw-cO-leg">
<rect key="frame" x="605" y="6" width="81" height="32"/>
<rect key="frame" x="536" y="8" width="81" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Next" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="xbU-XH-hYT">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@@ -256,16 +259,25 @@
<color key="fillColor" red="0.57793885469999995" green="0.75859862570000003" blue="0.2368842065" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="660" translatesAutoresizingMaskIntoConstraints="NO" id="ikd-wz-01Q">
<rect key="frame" x="31" y="412" width="664" height="54"/>
<rect key="frame" x="30" y="263" width="664" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Configure KnockKnock:" id="XHD-XH-wR0">
<font key="font" size="32" name="AvenirNextCondensed-Regular"/>
<font key="font" size="32" name="AvenirNextCondensed-Medium"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="qME-7o-m8l">
<rect key="frame" x="31" y="247" width="433" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Note: These can later be changed via KnockKnock's Settings" id="E65-cF-gfk">
<font key="font" size="12" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="b0q-yl-6sv">
<rect key="frame" x="177" y="367" width="22" height="44"/>
<rect key="frame" x="32" y="182" width="22" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="6UN-fn-MkZ">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -273,7 +285,7 @@
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LHE-lc-cEL">
<rect key="frame" x="177" y="314" width="22" height="44"/>
<rect key="frame" x="32" y="114" width="22" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="aZp-4P-816">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -281,7 +293,7 @@
</buttonCell>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="AhJ-ov-jbx">
<rect key="frame" x="202" y="361" width="459" height="15"/>
<rect key="frame" x="57" y="176" width="459" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Shows persistent macOS and Apple-installed components." id="r1b-Nl-Ii7">
<font key="font" size="12" name="Menlo-Regular"/>
@@ -289,17 +301,8 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="qME-7o-m8l">
<rect key="frame" x="34" y="408" width="433" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Note: these can later be changed via KnockKnock's Settings" id="E65-cF-gfk">
<font key="font" size="12" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="KHZ-VJ-JkQ">
<rect key="frame" x="200" y="298" width="482" height="21"/>
<rect key="frame" x="55" y="98" width="482" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Prevents the app from checking for updates automatically." id="3aO-AI-YtY">
<font key="font" size="12" name="Menlo-Regular"/>
@@ -308,7 +311,7 @@
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Udh-qU-3t3">
<rect key="frame" x="200" y="372" width="310" height="28"/>
<rect key="frame" x="55" y="187" width="310" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Include macOS components" id="zo1-a0-tPg">
<font key="font" size="17" name="Menlo-Bold"/>
@@ -317,7 +320,7 @@
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gf8-do-3hb">
<rect key="frame" x="200" y="317" width="399" height="28"/>
<rect key="frame" x="55" y="117" width="399" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable automatic update check" id="ymJ-tB-qiA">
<font key="font" size="17" name="Menlo-Bold"/>
@@ -325,97 +328,8 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TKV-2M-L24">
<rect key="frame" x="179" y="83" width="22" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="BDy-82-lOp">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system" size="20"/>
</buttonCell>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="yI4-k1-boN">
<rect key="frame" x="179" y="77" width="503" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Prevents the app from querying VirusTotal for known malware." id="sAE-Mf-3fz">
<font key="font" size="12" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bLF-86-77M">
<rect key="frame" x="202" y="86" width="399" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable VirusTotal Integration " id="SWc-iv-oN4">
<font key="font" size="17" name="Menlo-Bold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XRf-pa-PDq">
<rect key="frame" x="175" y="175" width="86" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="API Key:" id="uoG-tv-5Xm">
<font key="font" size="17" 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="YYa-Mf-VWJ">
<rect key="frame" x="175" y="241" width="212" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="VirusTotal Integration:" id="9mL-yV-rIt">
<font key="font" size="15" 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" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="Pib-CW-2Jg">
<rect key="frame" x="175" y="208" width="505" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KnockKnock can check persistent items with VirusTotals threat database to identify known malware." id="e6b-fR-YzU">
<font key="font" size="12" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w5j-mp-7ah">
<rect key="frame" x="270" y="170" width="409" height="24"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" refusesFirstResponder="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Your VirusTotal API Key" drawsBackground="YES" id="bBa-af-3aX">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uxe-Pw-3lK">
<rect key="frame" x="175" y="141" width="447" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" selectable="YES" title="Obtain a key (for free!) here:" id="5hV-fh-esV">
<font key="font" size="11" name="Menlo-Regular"/>
<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="EyT-ri-jLB" customClass="HyperlinkTextField">
<rect key="frame" x="175" y="132" width="389" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="https://docs.virustotal.com/docs/please-give-me-an-api-key" id="Fpp-x9-BI3">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<box verticalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="iJa-C9-dST">
<rect key="frame" x="177" y="270" width="503" height="5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</box>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zct-RU-d1Y">
<rect key="frame" x="20" y="169" width="128" height="128"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="kkIcon" id="PwK-g9-sQH"/>
</imageView>
</subviews>
<point key="canvasLocation" x="629" y="941"/>
<point key="canvasLocation" x="431.5" y="502"/>
</customView>
<customView id="2qR-UH-6qk" userLabel="Support">
<rect key="frame" x="0.0" y="0.0" width="812" height="454"/>
@@ -442,7 +356,7 @@
<rect key="frame" x="0.0" y="0.0" width="812" height="48"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button tag="4" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Egj-dP-0oz">
<button tag="5" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Egj-dP-0oz">
<rect key="frame" x="14" y="6" width="81" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="No" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="QA3-Ww-PeC">
@@ -453,7 +367,7 @@
<action selector="buttonHandler:" target="-2" id="wuO-3U-ypy"/>
</connections>
</button>
<button tag="5" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fw5-9c-Tyj">
<button tag="6" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fw5-9c-Tyj">
<rect key="frame" x="718" y="7" width="81" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Yes!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Re5-aD-QVR">
@@ -543,6 +457,115 @@
</subviews>
<point key="canvasLocation" x="685" y="1355"/>
</customView>
<customView id="afB-QN-4Zp" userLabel="Configure">
<rect key="frame" x="0.0" y="0.0" width="699" height="290"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<box fixedFrame="YES" boxType="custom" borderType="none" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="b9g-lW-n01">
<rect key="frame" x="0.0" y="0.0" width="699" height="48"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<view key="contentView" id="ofA-lY-dxh">
<rect key="frame" x="0.0" y="0.0" width="699" height="48"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button tag="4" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ahC-4V-9UW">
<rect key="frame" x="598" y="8" width="81" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Next" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="wgk-Ma-GMi">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="buttonHandler:" target="-2" id="HmF-zB-mkM"/>
</connections>
</button>
</subviews>
</view>
<color key="fillColor" red="0.57793885469999995" green="0.75859862570000003" blue="0.2368842065" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</box>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="660" translatesAutoresizingMaskIntoConstraints="NO" id="Fub-o3-w3r">
<rect key="frame" x="30" y="251" width="664" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="VirusTotal Integration:" id="1Hq-3Y-qbJ">
<font key="font" size="32" name="AvenirNextCondensed-Medium"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NOF-lL-dnS">
<rect key="frame" x="30" y="193" width="86" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="API Key:" id="7SG-o8-mRZ">
<font key="font" size="17" 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" verticalHuggingPriority="750" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Msu-yL-eqA">
<rect key="frame" x="125" y="188" width="503" height="24"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" refusesFirstResponder="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Your VirusTotal API Key" drawsBackground="YES" id="Og2-Lo-pbi">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ucj-y5-V2I">
<rect key="frame" x="31" y="159" width="447" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" selectable="YES" title="Obtain a key (for free!) here:" id="GXa-el-UVP">
<font key="font" size="11" name="Menlo-Regular"/>
<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="fi7-v7-obV" customClass="HyperlinkTextField">
<rect key="frame" x="241" y="167" width="336" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="docs.virustotal.com/docs/please-give-me-an-api-key" id="6xX-Qx-lt6">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="uQb-VS-DuG">
<rect key="frame" x="30" y="224" width="639" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Check persistent items with VirusTotals threat database to identify known malware." id="7ox-4I-TfC">
<font key="font" size="12" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GdO-mh-Ufm">
<rect key="frame" x="32" y="100" width="22" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="5gm-6I-Af8">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system" size="20"/>
</buttonCell>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="445" translatesAutoresizingMaskIntoConstraints="NO" id="0O9-FJ-fB9">
<rect key="frame" x="55" y="93" width="503" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Prevents the app from querying VirusTotal for known malware." id="TDp-uQ-UJx">
<font key="font" size="12" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="W2v-5l-YaL">
<rect key="frame" x="55" y="103" width="399" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable VirusTotal Integration " id="9lZ-zf-ok2">
<font key="font" size="17" name="Menlo-Bold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<point key="canvasLocation" x="309.5" y="881"/>
</customView>
</objects>
<resources>
<image name="FriendsFleet" width="236" height="96"/>
+1 -1
View File
@@ -6,7 +6,7 @@
//
#import "Consts.h"
#import "consts.h"
#import "PluginBase.h"
#import "AppDelegate.h"
#import "KKRow.h"
+1 -1
View File
@@ -6,7 +6,7 @@
// Copyright (c) 2024 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "DiffWindowController.h"
@implementation DiffWindowController
+2 -2
View File
@@ -5,9 +5,9 @@
// Created by Patrick Wardle on 2/21/15.
// Copyright (c) 2015 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "Filter.h"
#import "Utilities.h"
#import "utilities.h"
@implementation Filter
+2 -2
View File
@@ -7,10 +7,10 @@
//
#import "File.h"
#import "Consts.h"
#import "consts.h"
#import "Command.h"
#import "Extension.h"
#import "Utilities.h"
#import "utilities.h"
#import "InfoWindowController.h"
+2 -2
View File
@@ -6,8 +6,8 @@
// Copyright (c) 2015 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "Utilities.h"
#import "consts.h"
#import "utilities.h"
#import "ItemEnumerator.h"
@implementation ItemEnumerator
+2 -2
View File
@@ -8,11 +8,11 @@
#import "File.h"
#import "Consts.h"
#import "consts.h"
#import "Command.h"
#import "VTButton.h"
#import "Extension.h"
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "Results/ItemBase.h"
#import "ItemTableController.h"
+1 -1
View File
@@ -7,7 +7,7 @@
//
#import "KKRow.h"
#import "Utilities.h"
#import "utilities.h"
@implementation KKRow
+8 -8
View File
@@ -68,7 +68,7 @@
CD890F4223778F7B00029D99 /* DirectoryServicesPlugins.m in Sources */ = {isa = PBXBuildFile; fileRef = CD890F4123778F7B00029D99 /* DirectoryServicesPlugins.m */; };
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 */; };
CDA81D531A95B492009790E2 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81D4E1A95B492009790E2 /* utilities.m */; };
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 */; };
@@ -253,9 +253,9 @@
CD890F43237790D400029D99 /* directoryServicesIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = directoryServicesIcon.png; path = images/directoryServicesIcon.png; sourceTree = SOURCE_ROOT; };
CDA81D441A95B492009790E2 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = SOURCE_ROOT; };
CDA81D451A95B492009790E2 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; };
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; };
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; };
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; };
@@ -441,7 +441,7 @@
CDA81D441A95B492009790E2 /* AppDelegate.h */,
CDA81D451A95B492009790E2 /* AppDelegate.m */,
CD585493219FE61D00A438B0 /* Assets.xcassets */,
CDA81D481A95B492009790E2 /* Consts.h */,
CDA81D481A95B492009790E2 /* consts.h */,
CDE241A92C8556A40099F82B /* DiffWindowController.h */,
CDE241AA2C8556A40099F82B /* DiffWindowController.m */,
CD6095501A8329FA00E091CD /* images */,
@@ -455,8 +455,8 @@
1D21BC55172AF43D009D1CFD /* Supporting Files */,
CD2F219D21A8A73000F67A83 /* Update.h */,
CD2F219E21A8A73100F67A83 /* Update.m */,
CDA81D4D1A95B492009790E2 /* Utilities.h */,
CDA81D4E1A95B492009790E2 /* Utilities.m */,
CDA81D4D1A95B492009790E2 /* utilities.h */,
CDA81D4E1A95B492009790E2 /* utilities.m */,
CDF08CC41AC46E75009B3423 /* VTButton.h */,
CDF08CC51AC46E75009B3423 /* VTButton.m */,
);
@@ -887,7 +887,7 @@
CDAB989C1AEAC95500C75B4B /* ItemEnumerator.m in Sources */,
CDA81D771A95B7C1009790E2 /* CategoryTableController.m in Sources */,
CD7B9F531ACBAE2900DF3C71 /* SpotlightImporters.m in Sources */,
CDA81D531A95B492009790E2 /* Utilities.m in Sources */,
CDA81D531A95B492009790E2 /* utilities.m in Sources */,
CD7B9FAB1AD08FA100DF3C71 /* KKRow.m in Sources */,
CDA81D8E1A96F557009790E2 /* Kexts.m in Sources */,
);
+1 -1
View File
@@ -6,7 +6,7 @@
// Copyright (c) 2016 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "PlistWindowController.h"
+1 -1
View File
@@ -6,7 +6,7 @@
// example app (for testing, etc): http://www.rohos.com/2015/10/installing-rohos-logon-in-mac-os-10-11-el-capitan/
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "AuthorizationPlugins.h"
//plugin name
+1 -1
View File
@@ -8,7 +8,7 @@
#import "BTM.h"
#import "File.h"
#import "dumpBTM.h"
#import "Utilities.h"
#import "utilities.h"
//plugin name
#define PLUGIN_NAME @"Background Managed Tasks"
+1 -1
View File
@@ -4,7 +4,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "BrowserExtensions.h"
#import "../Results/Extension.h"
+1 -1
View File
@@ -7,7 +7,7 @@
#import "Command.h"
#import "Cronjobs.h"
#import "Utilities.h"
#import "utilities.h"
//plugin name
#define PLUGIN_NAME @"Cron Jobs"
+1 -1
View File
@@ -7,7 +7,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "DirectoryServicesPlugins.h"
//plugin name
+1 -1
View File
@@ -6,7 +6,7 @@
#import "File.h"
#import "DockTiles.h"
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
//plugin name
+1 -1
View File
@@ -4,7 +4,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "DylibInserts.h"
+1 -1
View File
@@ -5,7 +5,7 @@
#import "File.h"
#import "MachO/MachO.h"
#import "Utilities.h"
#import "utilities.h"
#import "DylibProxies.h"
//plugin name
+1 -1
View File
@@ -7,7 +7,7 @@
//
#import "Command.h"
#import "Utilities.h"
#import "utilities.h"
#import "EventRules.h"
//plugin name
+1 -1
View File
@@ -6,7 +6,7 @@
// only for current user, since we utilized 'pluginkit' which is "for current user"
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "Extensions.h"
//plugin name
+1 -1
View File
@@ -5,7 +5,7 @@
#import "File.h"
#import "Kexts.h"
#import "Utilities.h"
#import "utilities.h"
//plugin name
#define PLUGIN_NAME @"Kernel Extensions"
+1 -1
View File
@@ -4,7 +4,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "LaunchItems.h"
+1 -1
View File
@@ -7,7 +7,7 @@
#import "File.h"
#import "Command.h"
#import "Utilities.h"
#import "utilities.h"
#import "LogInOutHooks.h"
//for some details/examples:
+1 -1
View File
@@ -4,7 +4,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "LoginItems.h"
#import <ServiceManagement/ServiceManagement.h>
+1 -1
View File
@@ -6,7 +6,7 @@
// example app (for testing, etc): http://www.rohos.com/2015/10/installing-rohos-logon-in-mac-os-10-11-el-capitan/
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "PeriodicScrips.h"
//plugin name
+1 -1
View File
@@ -6,7 +6,7 @@
// Copyright (c) 2015 Objective-See, LLC. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "../Results/ItemBase.h"
#import <Foundation/Foundation.h>
+1 -1
View File
@@ -7,7 +7,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "QuicklookPlugins.h"
//plugin name
+1 -1
View File
@@ -4,7 +4,7 @@
//
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "SpotlightImporters.h"
//plugin name
+1 -1
View File
@@ -6,7 +6,7 @@
// normally these scripts shouldn't exist, or are whitelisted - so any deviations, just show file
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "StartupScripts.h"
//plugin name
+1 -1
View File
@@ -6,7 +6,7 @@
// only for current user, since we utilized 'pluginkit' which is "for current user"
#import "File.h"
#import "Utilities.h"
#import "utilities.h"
#import "SystemExtensions.h"
//plugin name
+1 -1
View File
@@ -7,7 +7,7 @@
//
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "PrefsWindowController.h"
+2 -2
View File
@@ -6,9 +6,9 @@
// Copyright (c) 2015 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "Command.h"
#import "Utilities.h"
#import "utilities.h"
@implementation Command
+1 -1
View File
@@ -6,7 +6,7 @@
// Copyright (c) 2015 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "Extension.h"
#import "AppDelegate.h"
+2 -2
View File
@@ -9,9 +9,9 @@
#import "File.h"
#import "MachO/MachO.h"
#import "Consts.h"
#import "consts.h"
#import "Signing.h"
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
@implementation File
+1 -1
View File
@@ -2,7 +2,7 @@
// PluginBase.m
// KnockKnock
#import "Consts.h"
#import "consts.h"
#import "Command.h"
#import "ItemBase.h"
+1 -1
View File
@@ -6,7 +6,7 @@
// Copyright (c) 2015 Objective-See, LLC. All rights reserved.
//
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "ResultsWindowController.h"
+2 -2
View File
@@ -7,9 +7,9 @@
// License: Creative Commons Attribution-NonCommercial 4.0 International License
//
#import "Consts.h"
#import "consts.h"
#import "Signing.h"
#import "Utilities.h"
#import "utilities.h"
#import <Security/Security.h>
#import <SystemConfiguration/SystemConfiguration.h>
+2 -2
View File
@@ -9,8 +9,8 @@
#define COL_RESULT 0x1
#define COL_PATH 0x2
#import "Consts.h"
#import "Utilities.h"
#import "consts.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "UnknownItemsWindowController.h"
+2 -2
View File
@@ -7,9 +7,9 @@
// copyright (c) 2017 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "Update.h"
#import "Utilities.h"
#import "utilities.h"
#import "AppDelegate.h"
+2 -2
View File
@@ -7,8 +7,8 @@
// copyright (c) 2017 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "Utilities.h"
#import "consts.h"
#import "utilities.h"
#import "AppDelegate.h"
#import "UpdateWindowController.h"
+2 -2
View File
@@ -6,9 +6,9 @@
// Copyright (c) 2015 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "consts.h"
#import "VTButton.h"
#import "Utilities.h"
#import "utilities.h"
#import "ItemTableController.h"
@implementation VTButton
+2 -2
View File
@@ -7,8 +7,8 @@
//
#import "File.h"
#import "Consts.h"
#import "Utilities.h"
#import "consts.h"
#import "utilities.h"
#import "VirusTotal.h"
#import "AppDelegate.h"
#import "VTInfoWindowController.h"
+1 -1
View File
@@ -8,7 +8,7 @@
#import "File.h"
#import "ItemBase.h"
#import "Utilities.h"
#import "utilities.h"
#import "PluginBase.h"
#import "VirusTotal.h"
#import "AppDelegate.h"
+9 -10
View File
@@ -9,7 +9,6 @@
@import Cocoa;
@import OSLog;
@interface WelcomeWindowController : NSWindowController
/* PROPERTIES */
@@ -53,21 +52,21 @@
//config view
@property (strong) IBOutlet NSView *configureView;
//allow apple bins/apps
@property (weak) IBOutlet NSButton *allowApple;
@property (strong) IBOutlet NSView *vtIntegrationView;
//allow 3rd-party installed apps
@property (weak) IBOutlet NSButton *allowInstalled;
@property (weak) IBOutlet NSTextField *vtAPIKey;
//allow dns traffic installed apps
@property (weak) IBOutlet NSButton *allowDNS;
//show apple items
@property (weak) IBOutlet NSButton *showAppleItems;
//disable update check
@property (weak) IBOutlet NSButton *disableUpdateCheck;
@property (weak) IBOutlet NSButton *disableVTQueries;
//support view
@property (strong) IBOutlet NSView *supportView;
//preferences
@property (nonatomic, retain)NSDictionary* preferences;
/* METHODS */
//show a view
+47 -13
View File
@@ -21,13 +21,13 @@ extern os_log_t logHandle;
//buttons
#define REQUEST_FDA 1
#define SHOW_CONFIGURE 2
#define SHOW_SUPPORT 3
#define SUPPORT_NO 4
#define SUPPORT_YES 5
#define SHOW_VT_INTEGRATION 3
#define SHOW_SUPPORT 4
#define SUPPORT_NO 5
#define SUPPORT_YES 6
@implementation WelcomeWindowController
@synthesize preferences;
@synthesize welcomeViewController;
//welcome!
@@ -95,13 +95,35 @@ extern os_log_t logHandle;
// show next view, sometimes, with view specific logic
-(IBAction)buttonHandler:(id)sender {
//leaving prefs view?
// capture prefs
if( (SHOW_CONFIGURE+1) == ((NSToolbarItem*)sender).tag)
{
//TODO:
//capture
//self.preferences = @{PREF_ALLOW_APPLE:[NSNumber numberWithBool:self.allowApple.state], PREF_ALLOW_INSTALLED: [NSNumber numberWithBool:self.allowInstalled.state], PREF_ALLOW_DNS: [NSNumber numberWithBool:self.allowDNS.state], PREF_ALLOW_SIMULATOR:@NO, PREF_PASSIVE_MODE:@NO, PREF_PASSIVE_MODE_ACTION:@0, PREF_BLOCK_MODE:@NO, PREF_NO_ICON_MODE:@NO, PREF_NO_VT_MODE:@NO, PREF_NO_UPDATE_MODE:@NO, PREF_INSTALL_TIMESTAMP:[NSDate date]};
//leaving configure view?
// capture the user's selections
if( (SHOW_CONFIGURE+1) == ((NSToolbarItem*)sender).tag) {
//user defaults
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
//save 'show trusted items'
[defaults setBool:self.showAppleItems.state forKey:PREF_SHOW_TRUSTED_ITEMS];
//save 'show trusted items'
[defaults setBool:self.disableUpdateCheck.state forKey:PREF_DISABLE_UPDATE_CHECK];
}
//leaving vt integration view?
// capture the user's selections
if( (SHOW_VT_INTEGRATION+1) == ((NSToolbarItem*)sender).tag) {
//user defaults
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
//save 'disable VT queries'
[defaults setBool:self.disableVTQueries.state forKey:PREF_DISABLE_VT_QUERIRES];
//save API key to keychain
if(0 != self.vtAPIKey.stringValue.length) {
saveAPIKeyToKeychain(self.vtAPIKey.stringValue);
}
}
//set next view
@@ -113,6 +135,7 @@ extern os_log_t logHandle;
//hide title
self.window.title = @"";
//rounded corners
self.fdaNote.wantsLayer = true;
self.fdaNote.layer.cornerRadius = 5;
@@ -128,7 +151,7 @@ extern os_log_t logHandle;
//in background
// wait unitl user grants us FDA
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
^{
//wait for FDA
do {
@@ -163,7 +186,18 @@ extern os_log_t logHandle;
self.window.title = @"";
//show
[self showView:self.configureView firstResponder:SHOW_SUPPORT];
[self showView:self.configureView firstResponder:SHOW_VT_INTEGRATION];
break;
//show VT integration view
case SHOW_VT_INTEGRATION:
//hide title
self.window.title = @"";
//show
[self showView:self.vtIntegrationView firstResponder:SHOW_SUPPORT];
break;
+2 -1
View File
@@ -1,5 +1,5 @@
//
// Consts.h
// consts.h
// KnockKnock
//
// Created by Patrick Wardle on 2/4/15.
@@ -32,6 +32,7 @@ static NSString * const SUPPORTED_PLUGINS[] = {@"AuthorizationPlugins", @"Browse
// ->disable VT querires
#define PREF_DISABLE_VT_QUERIRES @"disableVTQueries"
//prefs
// ->no updates
#define PREF_DISABLE_UPDATE_CHECK @"noUpdateCheck"
+2 -2
View File
@@ -9,9 +9,9 @@
#ifndef main_h
#define main_h
#import "Consts.h"
#import "consts.h"
#import "Filter.h"
#import "Utilities.h"
#import "utilities.h"
#import "VirusTotal.h"
#import "AppDelegate.h"
#import "ItemEnumerator.h"
+1 -1
View File
@@ -1,5 +1,5 @@
//
// Utilities.h
// utilities.h
// KnockKnock
//
// Created by Patrick Wardle on 2/7/15.
+2 -2
View File
@@ -6,8 +6,8 @@
// Copyright (c) 2015 Objective-See. All rights reserved.
//
#import "Consts.h"
#import "Utilities.h"
#import "consts.h"
#import "utilities.h"
#import <libproc.h>
#import <sys/sysctl.h>