@corellium/corellium-cli 1.3.8 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" ?>
|
2
2
|
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
|
3
|
-
<coverage lines-valid="0" lines-covered="0" line-rate="NaN" branches-valid="0" branches-covered="0" branch-rate="NaN" timestamp="
|
3
|
+
<coverage lines-valid="0" lines-covered="0" line-rate="NaN" branches-valid="0" branches-covered="0" branch-rate="NaN" timestamp="1736549777655" complexity="0" version="0.1">
|
4
4
|
<sources>
|
5
5
|
<source>/builds/middleware/corellium-cli</source>
|
6
6
|
</sources>
|
@@ -86,7 +86,7 @@
|
|
86
86
|
<div class='footer quiet pad2 space-top1 center small'>
|
87
87
|
Code coverage generated by
|
88
88
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
89
|
-
at
|
89
|
+
at 2025-01-10T22:56:17.672Z
|
90
90
|
</div>
|
91
91
|
<script src="prettify.js"></script>
|
92
92
|
<script>
|
package/package.json
CHANGED
@@ -33,6 +33,11 @@ async function builder (yargs) {
|
|
33
33
|
describe: 'Project ID to associate with instance',
|
34
34
|
demandOption: true
|
35
35
|
})
|
36
|
+
.option('os-build', {
|
37
|
+
type: 'string',
|
38
|
+
describe: 'OS Build',
|
39
|
+
demandOption: false
|
40
|
+
})
|
36
41
|
.option('name', {
|
37
42
|
type: 'string',
|
38
43
|
describe: 'Optional name of instance',
|
@@ -43,6 +48,18 @@ async function builder (yargs) {
|
|
43
48
|
describe: 'Wait for the instance to be ready',
|
44
49
|
demandOption: false
|
45
50
|
})
|
51
|
+
.option('dyld-aslr', {
|
52
|
+
type: 'boolean',
|
53
|
+
describe: 'Enable ASLR for DYLD Shared Cache. (--no-dyld-aslr to disable)',
|
54
|
+
default: true,
|
55
|
+
demandOption: false
|
56
|
+
})
|
57
|
+
.option('app-aslr', {
|
58
|
+
type: 'boolean',
|
59
|
+
describe: 'Enable ASLR for Applications. (--no-app-aslr to disable)',
|
60
|
+
default: true,
|
61
|
+
demandOption: false
|
62
|
+
})
|
46
63
|
}
|
47
64
|
|
48
65
|
async function handler (argv) {
|
@@ -51,9 +68,34 @@ async function handler (argv) {
|
|
51
68
|
const project = argv.project
|
52
69
|
const name = argv.name
|
53
70
|
const api = await getApi()
|
71
|
+
const bootOptions = {}
|
72
|
+
const additionalTags = []
|
73
|
+
const instanceOptions = { flavor, os, project, name }
|
74
|
+
|
75
|
+
if (argv['app-aslr'] === false) {
|
76
|
+
additionalTags.push('noappaslr')
|
77
|
+
}
|
78
|
+
|
79
|
+
if (argv['dyld-aslr'] === false) {
|
80
|
+
additionalTags.push('nodyldaslr')
|
81
|
+
}
|
82
|
+
|
83
|
+
// only define additional tags if any are present
|
84
|
+
if (additionalTags.length > 0) {
|
85
|
+
bootOptions.additionalTags = additionalTags
|
86
|
+
}
|
87
|
+
|
88
|
+
// only define bootOptions if it contains any values
|
89
|
+
if (Object.keys(bootOptions).length > 0) {
|
90
|
+
instanceOptions.bootOptions = bootOptions
|
91
|
+
}
|
92
|
+
|
93
|
+
if (argv['os-build']) {
|
94
|
+
instanceOptions.osbuild = argv['os-build']
|
95
|
+
}
|
54
96
|
|
55
97
|
try {
|
56
|
-
const instance = await api.v1CreateInstance(
|
98
|
+
const instance = await api.v1CreateInstance(instanceOptions)
|
57
99
|
// Wait 360 attempts for the instance to be created (30 minutes)
|
58
100
|
if (argv.wait) {
|
59
101
|
await waitForState(instance.id, api.v1GetInstance.bind(api), 'on', 360)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
const { handleError } = require('../../error')
|
2
|
+
const fs = require('fs')
|
3
|
+
const fsp = fs.promises
|
4
|
+
const { getCorelliumApi } = require('../../corellium-api')
|
5
|
+
|
6
|
+
async function builder (yargs) {
|
7
|
+
yargs.option('verbose', {
|
8
|
+
alias: 'v',
|
9
|
+
type: 'boolean',
|
10
|
+
describe: 'Console will receive verbose error output'
|
11
|
+
}).option('project', {
|
12
|
+
type: 'input',
|
13
|
+
describe: 'Id of the project to pull ovpn configuration from.',
|
14
|
+
string: true
|
15
|
+
}).option('path', {
|
16
|
+
type: 'input',
|
17
|
+
describe: 'Path to where to save the ovpn configuration file.',
|
18
|
+
string: true
|
19
|
+
})
|
20
|
+
}
|
21
|
+
|
22
|
+
async function handler (argv) {
|
23
|
+
const project = argv.project
|
24
|
+
const corellium = await getCorelliumApi()
|
25
|
+
const projectApi = await corellium.getProject(project)
|
26
|
+
const savePath = argv.path
|
27
|
+
try {
|
28
|
+
const vpnConfigBuffer = await projectApi.vpnConfig()
|
29
|
+
await fsp.writeFile(savePath, vpnConfigBuffer.toString())
|
30
|
+
} catch (err) {
|
31
|
+
handleError(err, 'vpnConfig failed', argv.verbose)
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
module.exports = {
|
36
|
+
builder,
|
37
|
+
handler,
|
38
|
+
command: 'vpnConfig [project] [path]',
|
39
|
+
describe: 'Download Openvpn config for a project'
|
40
|
+
}
|
package/test/test.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
const { exec } = require('child_process')
|
2
2
|
const { promisify } = require('util')
|
3
|
+
const fs = require('fs')
|
3
4
|
const path = require('path')
|
4
5
|
const execp = promisify(exec)
|
5
6
|
const assert = require('node:assert').strict
|
@@ -10,6 +11,7 @@ test()
|
|
10
11
|
async function test () {
|
11
12
|
await testProjects()
|
12
13
|
await testInstances()
|
14
|
+
await testProjectGetOvpnConfig()
|
13
15
|
}
|
14
16
|
|
15
17
|
async function testInstances () {
|
@@ -44,6 +46,20 @@ async function testProjects () {
|
|
44
46
|
assert.equal(-1, projects.map(p => p.id).indexOf(projectId))
|
45
47
|
}
|
46
48
|
|
49
|
+
async function testProjectGetOvpnConfig () {
|
50
|
+
const projects = (await ej('project list'))
|
51
|
+
const defaultProject = projects.find((p) => p.name === 'Default Project')
|
52
|
+
assert.ok(defaultProject)
|
53
|
+
|
54
|
+
const instanceId = (await e(`instance create ranchu 12.0.0 ${defaultProject.id}`))
|
55
|
+
assert.ok(instanceId)
|
56
|
+
|
57
|
+
await e(`project vpnConfig ${defaultProject.id} ./test/test.ovpn`)
|
58
|
+
assert.ok(fs.existsSync('./test/test.ovpn'))
|
59
|
+
|
60
|
+
await e(`instance delete ${instanceId}`)
|
61
|
+
}
|
62
|
+
|
47
63
|
async function sleep (ms) {
|
48
64
|
return new Promise((resolve) => setTimeout(resolve, ms))
|
49
65
|
}
|