Overview
This module provides a cross-platform command line interface for developers and IT administrators to create, scan and protect Android and iOS mobile apps
Features
- Login
- Create an app container in Quixxi
- List apps in your account
- Scan your app
- Download scan report
- List the current Shield settings values
- Configure the Shield settings
- Download the protected unsigned app
- Download the protected debug signed app [Android ONLY]
- Logout
Installation
Minimum requirements
- Node.js version: 10.13.0
- npm version: 6.4.1
- Python version: 2.7.15
- for Unix systems also: gcc [Mac] or g++ [Ubuntu]
Verify the requirements
In order to check the current version of Node.js, npm and Python independently from the operating system please run:
Installing Quixxi-CLI
Run the following command on your shell or command prompt to install quixxi-cli. If you are on a Windows machine, please run it as administrator
NOTE: the -g flag will install the package globally on the machine
Starting Quixxi-CLI
After the installation, in order to run Quixxi-CLI please type:
Available Commands
List of Quixxi-CLI commands
This command provides the list of all the available commands
Usage
Login
Login to your Quixxi account
Usage
Example
Example Output
List the apps
This command shows the list of apps under your Quixxi account
Command
Example Output
App Name | id |
---|---|
ExampleApp | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Create a new app container
This command allows you to create the app container that will host both the Android and iOS versions of your app
Usage
Example
Example Output
Scan your app and get the Vulnerability Report link
This command scans your app and makes the related Vulnerability Report available on the portal in the selected app container. Finally, it gives back a publicly available link to this document
Usage
Options:
-a, –appIdOrName
-f, –filepath
-d , –destinationPath [destinationPath] – (Optional Parameter) Absolute Path to save the report. Default Value – Provides a link to download
-t, –type [type] – (Optional Parameter) type of the format to download. Default Format is pdf.
Allowed formats:
Type | Format |
---|---|
Xml | xml |
Json | json |
-o, –onlyVulnerabilitiesPresent [true/false] – (Optional Parameter) Generate report with all vulnerabilities scanned or the vulnerabilities present in the application. Default values is true.
Allowed Values:
Type | Value |
---|---|
Report with Vulnerabilities Present | true |
Report with all vulnerabilities scanned | false |
Example
To scan and get report link in default (pdf) format
To scan and get report link in xml format
To scan and get report link with vulnerabilities that is present in the app
To scan and get report link with all vulnerabilities that is scanned
To scan and save report in the local path
Output
To get the Vulnerability Report link for the last scan
This command generates the related Vulnerability Report available on the portal in the selected app container. Finally, it gives back a publicly available link to this document
Usage
Options:
-a, –appIdOrName
-p, –platformName
Platform | Value |
---|---|
Android | android |
iOS | iOS |
-d, –destinationPath [destinationPath] – (Optional Parameter) Absolute path to download the report.
-t, –type [type] – (Optional Parameter) type of the format to download. Default Format is pdf.
Allowed formats:
Type | Format |
---|---|
Xml | xml |
Json | json |
-o, –onlyVulnerabilitiesPresent [true/false] – (Optional Parameter) Generate report with all vulnerabilities scanned or the vulnerabilities present in the application. Default values is true.
Allowed Values:
Type | Value |
---|---|
Report with Vulnerabilities Present | true |
Report with all vulnerabilities scanned | false |
Example
To get report link in default (pdf) format
To download report to local machine
To download report in xml format
To download report with vulnerabilities detected on the app
To download report with all vulnerabilities scanned
Output
List the current Shield settings
The purpose of this command is twofold. First of all it is needed to list the optionKeys that will be used to configure the Shield Settings through the next command. Moreover, it is the command to run to double-check the Shield settings before protecting the app. In fact, the settings changes made by the following command are permanently saved against the app, so closing the terminal will NOT discard the previous changes even if the Shield was not launched
Usage :
Options:
-a, –appIdOrName
-p, –platformName
Platform | Value |
---|---|
Android | android |
iOS | iOS |
Example
Configure the Shield settings
Before protecting the app it is important to set up the single Shield options, exactly as it happens on the portal. So this command allows you to customize the security parameters. In order to speed up the Shield configuration it is highly suggested to modify only those options that will be chosen differently from the default configurations of each platform. Again, the Shield settings changes are permanently saved against the app, so closing the terminal will NOT discard the changes made till that moment IMPORTANT – ONLY the options that are editable on the portal will be modifiable also from command line
Usage:
Options:
-a, –appIdOrName
-p, –platformName
-o, –optionName
-v, –optionValue
Example
Output
IMPORTANT: all the options in the following table that are marked with [N] will work ONLY on Native apps, i.e. Android apps written in Java or Kotlin and iOS apps written in Obj-C or Swift. The option marked with [C] instead is destined to Cordova apps. If you don’t know the technology behind the app to be shielded don’t worry because Quixxi will detect it for you. So you can still select every option you like and if they don’t match your app then Quixxi will simply skip them while producing the final protected app. The entries whose default values are indicated with a hyphen are editable only if the value of the preceding entry with an assigned default value will be set to 1
Android entry | optionKey | Default Value |
---|---|---|
[N] Remove app logs | removeDebugLogs | 1 |
[N] Disable Copy & Paste Functionality | copyPasteProtection | 0 |
Disable screenshots capture & screen sharing | disableScreenshots | 0 |
Terminate the app when running in rooted device | rootDetection | 0 |
Allow apps installed from Google Play, Samsung and Amazon stores to bypass the root protection | playStoreDetection | – |
Terminate the app when connected to the emulator | emulatorDetection | 0 |
Integrate Malware Detector SDK | quixxiMalwareDetection | 0 |
Machine Learning based malware detection | quixxiMachineLearningBasedMalwareDetection | – |
Warn the User | quixxiPresenceOfMalware | – |
Stop the app execution | quixxiApplicationExcuteMalware | – |
Disable ADB Backup | ADBBackup | 0 |
Report to Quixxi portal after threat detection | threatLogToCloud | 1 |
Terminate the app when running with the debugger attached | debuggerDetection | 0 |
[C] Encrypt the assets folder | encryptResourceFiles | 0 |
Terminate the app when “USB debugging” is enabled | detectUSBDebugging | 0 |
Terminate the app if installation from “Unknown Sources” is enabled | detectUnknownSourcesInstallation | 0 |
[N] Remove unused images | removeUnusedResources | 1 |
Send crash reports to Quixxi portal | crashLogReporting | 0 |
iOS entry | optionKey | Default Value |
---|---|---|
Disable copy & paste functionality on standard text fields | copyPasteProtection | 0 |
[N] Disable paste option on password text fields | quixxiDisablePasteOption | 0 |
Prevent screen recording via QuickTime Player and Screen Recording | quixxiMovieRecording | 0 |
Prevent AirPlay Screen Mirroring | quixxiScreenMirroring | 0 |
Blur the app when put in background | blurApplicationScreen | 0 |
Terminate the app running in jailbroken devices | jailBrokenDevice | 0 |
Allow apps installed from AppStore to bypass the jailbreak protection | allowJailBrokenForAppStore | 0 |
Report to Quixxi portal after threat detection | ThreatLogToCloud | 1 |
Validate app integrity | quixxiChecksumValidation | 1 |
Terminate your Published or TestFlight app when resigned | quixxiIntegrityVerification | 0 |
Terminate the app when running with the debugger attached | debuggerDetection | 0 |
[N] Encrypt the UserDefaults values | quixxiEncryptAppPreferences | 0 |
[N] Encrypt files created and used by the application at runtime | quixxiEncryptFilecreate | 0 |
Send events and device info to Quixxi portal [basic version] | reportUserAndDeviceUsage | 1 |
Send crash reports to Quixxi portal | crashLogReporting | 0 |
Shield the application
This command shields your app, returns the outcome of the Shield operation, makes its protected version available on the portal in the selected app container and finally downloads it too in the specified path
Usage
Options:
-a, –appIdOrName
-f, –filepath
-o, –outputFileName
Example
Example Output
Download the protected unsigned app
This command will let you download a zipped copy of the last protected unsigned app without the need to shield it again
Usage
Options
-a, –appIdOrName
-p, –platformName
-o, –outputFileName
Example
Example Output
Download the test app [Android only]
This command will download the latest test version of your protected app. The app will be signed by Quixxi debug.keystore, so it can be installed directly on device
Usage
Options:
-a, –appIdOrName
-o, –outputFileName [outputFilename] – (Optional Parameter) New file name for the file to be downloaded.
By default, it save the downloaded file with name “protectedApp.apk”
Example
Example Output
Logout
Logout from your Quixxi account
Usage
Exit
This command exits the Quixxi prompt
Usage
Overview
This module provides a cross-platform command line interface for developers and IT administrators to create, scan and protect Android and iOS mobile apps
Features
- Login
- Create an app container in Quixxi
- List apps in your account
- Scan your app
- Download scan report
- List the current Shield settings values
- Configure the Shield settings
- Download the protected unsigned app
- Download the protected debug signed app [Android ONLY]
- Logout
Installation
Minimum requirements
- Node.js version: 10.13.0
- npm version: 6.4.1
- Python version: 2.7.15
- for Unix systems also: gcc [Mac] or g++ [Ubuntu]
Verify the requirements
In order to check the current version of Node.js, npm and Python independently from the operating system please run:
Installing Quixxi-CLI
Run the following command on your shell or command prompt to install quixxi-cli. If you are on a Windows machine, please run it as administrator
NOTE: the -g flag will install the package globally on the machine
Starting Quixxi-CLI
After the installation, in order to run Quixxi-CLI please type:
Available Commands
List of Quixxi-CLI commands
This command provides the list of all the available commands
Usage
Login
Login to your Quixxi account
Usage
Example
Example Output
List the apps
This command shows the list of apps under your Quixxi account
Command
Example Output
App Name | id |
---|---|
ExampleApp | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Create a new app container
This command allows you to create the app container that will host both the Android and iOS versions of your app
Usage
Example
Example Output
Scan your app and get the Vulnerability Report link
This command scans your app and makes the related Vulnerability Report available on the portal in the selected app container. Finally, it gives back a publicly available link to this document
Usage
Options:
-a, –appIdOrName
-f, –filepath
-d , –destinationPath [destinationPath] – (Optional Parameter) Absolute Path to save the report. Default Value – Provides a link to download
-t, –type [type] – (Optional Parameter) type of the format to download. Default Format is pdf.
Allowed formats:
Type | Format |
---|---|
Xml | xml |
Json | json |
-o, –onlyVulnerabilitiesPresent [true/false] – (Optional Parameter) Generate report with all vulnerabilities scanned or the vulnerabilities present in the application. Default values is true.
Allowed Values:
Type | Value |
---|---|
Report with Vulnerabilities Present | true |
Report with all vulnerabilities scanned | false |
Example
To scan and get report link in default (pdf) format
To scan and get report link in xml format
To scan and get report link with vulnerabilities that is present in the app
To scan and get report link with all vulnerabilities that is scanned
To scan and save report in the local path
Output
To get the Vulnerability Report link for the last scan
This command generates the related Vulnerability Report available on the portal in the selected app container. Finally, it gives back a publicly available link to this document
Usage
Options:
-a, –appIdOrName
-p, –platformName
Platform | Value |
---|---|
Android | android |
iOS | iOS |
-d, –destinationPath [destinationPath] – (Optional Parameter) Absolute path to download the report.
-t, –type [type] – (Optional Parameter) type of the format to download. Default Format is pdf.
Allowed formats:
Type | Format |
---|---|
Xml | xml |
Json | json |
-o, –onlyVulnerabilitiesPresent [true/false] – (Optional Parameter) Generate report with all vulnerabilities scanned or the vulnerabilities present in the application. Default values is true.
Allowed Values:
Type | Value |
---|---|
Report with Vulnerabilities Present | true |
Report with all vulnerabilities scanned | false |
Example
To get report link in default (pdf) format
To download report to local machine
To download report in xml format
To download report with vulnerabilities detected on the app
To download report with all vulnerabilities scanned
Output
List the current Shield settings
The purpose of this command is twofold. First of all it is needed to list the optionKeys that will be used to configure the Shield Settings through the next command. Moreover, it is the command to run to double-check the Shield settings before protecting the app. In fact, the settings changes made by the following command are permanently saved against the app, so closing the terminal will NOT discard the previous changes even if the Shield was not launched
Usage :
Options:
-a, –appIdOrName
-p, –platformName
Platform | Value |
---|---|
Android | android |
iOS | iOS |
Example
Configure the Shield settings
Before protecting the app it is important to set up the single Shield options, exactly as it happens on the portal. So this command allows you to customize the security parameters. In order to speed up the Shield configuration it is highly suggested to modify only those options that will be chosen differently from the default configurations of each platform. Again, the Shield settings changes are permanently saved against the app, so closing the terminal will NOT discard the changes made till that moment IMPORTANT – ONLY the options that are editable on the portal will be modifiable also from command line
Usage:
Options:
-a, –appIdOrName
-p, –platformName
-o, –optionName
-v, –optionValue
Example
Output
IMPORTANT: all the options in the following table that are marked with [N] will work ONLY on Native apps, i.e. Android apps written in Java or Kotlin and iOS apps written in Obj-C or Swift. The option marked with [C] instead is destined to Cordova apps. If you don’t know the technology behind the app to be shielded don’t worry because Quixxi will detect it for you. So you can still select every option you like and if they don’t match your app then Quixxi will simply skip them while producing the final protected app. The entries whose default values are indicated with a hyphen are editable only if the value of the preceding entry with an assigned default value will be set to 1
Android entry | optionKey | Default Value |
---|---|---|
[N] Remove app logs | removeDebugLogs | 1 |
[N] Disable Copy & Paste Functionality | copyPasteProtection | 0 |
Disable screenshots capture & screen sharing | disableScreenshots | 0 |
Terminate the app when running in rooted device | rootDetection | 0 |
Allow apps installed from Google Play, Samsung and Amazon stores to bypass the root protection | playStoreDetection | – |
Terminate the app when connected to the emulator | emulatorDetection | 0 |
Integrate Malware Detector SDK | quixxiMalwareDetection | 0 |
Machine Learning based malware detection | quixxiMachineLearningBasedMalwareDetection | – |
Warn the User | quixxiPresenceOfMalware | – |
Stop the app execution | quixxiApplicationExcuteMalware | – |
Disable ADB Backup | ADBBackup | 0 |
Report to Quixxi portal after threat detection | threatLogToCloud | 1 |
Terminate the app when running with the debugger attached | debuggerDetection | 0 |
[C] Encrypt the assets folder | encryptResourceFiles | 0 |
Terminate the app when “USB debugging” is enabled | detectUSBDebugging | 0 |
Terminate the app if installation from “Unknown Sources” is enabled | detectUnknownSourcesInstallation | 0 |
[N] Remove unused images | removeUnusedResources | 1 |
Send crash reports to Quixxi portal | crashLogReporting | 0 |
iOS entry | optionKey | Default Value |
---|---|---|
Disable copy & paste functionality on standard text fields | copyPasteProtection | 0 |
[N] Disable paste option on password text fields | quixxiDisablePasteOption | 0 |
Prevent screen recording via QuickTime Player and Screen Recording | quixxiMovieRecording | 0 |
Prevent AirPlay Screen Mirroring | quixxiScreenMirroring | 0 |
Blur the app when put in background | blurApplicationScreen | 0 |
Terminate the app running in jailbroken devices | jailBrokenDevice | 0 |
Allow apps installed from AppStore to bypass the jailbreak protection | allowJailBrokenForAppStore | 0 |
Report to Quixxi portal after threat detection | ThreatLogToCloud | 1 |
Validate app integrity | quixxiChecksumValidation | 1 |
Terminate your Published or TestFlight app when resigned | quixxiIntegrityVerification | 0 |
Terminate the app when running with the debugger attached | debuggerDetection | 0 |
[N] Encrypt the UserDefaults values | quixxiEncryptAppPreferences | 0 |
[N] Encrypt files created and used by the application at runtime | quixxiEncryptFilecreate | 0 |
Send events and device info to Quixxi portal [basic version] | reportUserAndDeviceUsage | 1 |
Send crash reports to Quixxi portal | crashLogReporting | 0 |
Shield the application
This command shields your app, returns the outcome of the Shield operation, makes its protected version available on the portal in the selected app container and finally downloads it too in the specified path
Usage
Options:
-a, –appIdOrName
-f, –filepath
-o, –outputFileName
Example
Example Output
Download the protected unsigned app
This command will let you download a zipped copy of the last protected unsigned app without the need to shield it again
Usage
Options
-a, –appIdOrName
-p, –platformName
-o, –outputFileName
Example
Example Output
Download the test app [Android only]
This command will download the latest test version of your protected app. The app will be signed by Quixxi debug.keystore, so it can be installed directly on device
Usage
Options:
-a, –appIdOrName
-o, –outputFileName [outputFilename] – (Optional Parameter) New file name for the file to be downloaded.
By default, it save the downloaded file with name “protectedApp.apk”
Example
Example Output
Logout
Logout from your Quixxi account
Usage
Exit
This command exits the Quixxi prompt
Usage