@corellium/corellium-cli 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -16
- package/docs/OVERVIEW.md +2 -2
- package/example/WebPlayerSample.js +93 -37
- package/jenkinsbuild/build.sh +1 -1
- package/node_modules/@babel/cli/node_modules/commander/package.json +27 -58
- package/node_modules/@babel/cli/node_modules/make-dir/package.json +62 -93
- package/node_modules/@babel/cli/node_modules/pify/package.json +54 -85
- package/node_modules/@babel/cli/node_modules/semver/package.json +20 -51
- package/node_modules/@babel/cli/node_modules/slash/package.json +37 -68
- package/node_modules/@babel/cli/package.json +37 -69
- package/node_modules/@corellium/client-api/package.json +15 -40
- package/node_modules/@jridgewell/resolve-uri/package.json +40 -75
- package/node_modules/@jridgewell/sourcemap-codec/package.json +43 -74
- package/node_modules/@jridgewell/trace-mapping/package.json +40 -72
- package/node_modules/@mapbox/node-pre-gyp/package.json +27 -61
- package/node_modules/@nicolo-ribaudo/chokidar-2/package.json +22 -55
- package/node_modules/abbrev/package.json +18 -52
- package/node_modules/agent-base/package.json +33 -62
- package/node_modules/ansi-regex/package.json +58 -89
- package/node_modules/ansi-styles/package.json +59 -95
- package/node_modules/anymatch/package.json +28 -56
- package/node_modules/aproba/package.json +23 -50
- package/node_modules/are-we-there-yet/node_modules/readable-stream/package.json +32 -60
- package/node_modules/are-we-there-yet/package.json +32 -62
- package/node_modules/ascii-art/package.json +51 -83
- package/node_modules/ascii-art-ansi/package.json +30 -61
- package/node_modules/ascii-art-braille/package.json +7 -32
- package/node_modules/ascii-art-font/package.json +17 -47
- package/node_modules/ascii-art-graph/package.json +10 -34
- package/node_modules/ascii-art-image/node_modules/ascii-art-braille/package.json +7 -32
- package/node_modules/ascii-art-image/package.json +11 -36
- package/node_modules/ascii-art-table/package.json +10 -35
- package/node_modules/ascii-art-utf/package.json +18 -47
- package/node_modules/async/package.json +29 -55
- package/node_modules/async-arrays/package.json +34 -62
- package/node_modules/asynckit/package.json +45 -74
- package/node_modules/axios/package.json +46 -72
- package/node_modules/balanced-match/package.json +22 -49
- package/node_modules/binary-extensions/package.json +41 -73
- package/node_modules/brace-expansion/package.json +23 -50
- package/node_modules/braces/package.json +30 -76
- package/node_modules/call-bind/package.json +83 -125
- package/node_modules/canvas/package.json +43 -86
- package/node_modules/chokidar/package.json +40 -74
- package/node_modules/chownr/package.json +24 -56
- package/node_modules/cli/package.json +23 -70
- package/node_modules/cliui/package.json +53 -87
- package/node_modules/color/node_modules/color-convert/package.json +26 -60
- package/node_modules/color/node_modules/color-name/package.json +18 -45
- package/node_modules/color/package.json +26 -57
- package/node_modules/color-convert/package.json +25 -59
- package/node_modules/color-difference/package.json +26 -52
- package/node_modules/color-model/package.json +17 -44
- package/node_modules/color-name/package.json +32 -60
- package/node_modules/color-string/package.json +26 -67
- package/node_modules/color-support/package.json +26 -60
- package/node_modules/combined-stream/package.json +19 -52
- package/node_modules/component-emitter/package.json +17 -45
- package/node_modules/concat-map/package.json +45 -89
- package/node_modules/console-control-strings/package.json +22 -55
- package/node_modules/convert-source-map/package.json +28 -55
- package/node_modules/cookiejar/package.json +16 -44
- package/node_modules/core-util-is/package.json +21 -51
- package/node_modules/d3/package.json +43 -70
- package/node_modules/d3-array/package.json +24 -55
- package/node_modules/d3-axis/package.json +27 -54
- package/node_modules/d3-brush/package.json +33 -60
- package/node_modules/d3-chord/package.json +28 -55
- package/node_modules/d3-collection/package.json +25 -54
- package/node_modules/d3-color/package.json +2 -2
- package/node_modules/d3-contour/package.json +27 -54
- package/node_modules/d3-dispatch/package.json +28 -60
- package/node_modules/d3-drag/package.json +32 -61
- package/node_modules/d3-dsv/node_modules/commander/package.json +25 -56
- package/node_modules/d3-dsv/package.json +36 -64
- package/node_modules/d3-ease/package.json +28 -56
- package/node_modules/d3-fetch/package.json +31 -58
- package/node_modules/d3-force/package.json +30 -57
- package/node_modules/d3-format/package.json +29 -57
- package/node_modules/d3-geo/package.json +35 -62
- package/node_modules/d3-hierarchy/package.json +33 -60
- package/node_modules/d3-interpolate/package.json +31 -63
- package/node_modules/d3-path/package.json +28 -57
- package/node_modules/d3-polygon/package.json +28 -55
- package/node_modules/d3-quadtree/package.json +29 -57
- package/node_modules/d3-random/package.json +26 -53
- package/node_modules/d3-scale/package.json +29 -56
- package/node_modules/d3-scale-chromatic/package.json +33 -60
- package/node_modules/d3-selection/package.json +29 -60
- package/node_modules/d3-shape/package.json +32 -59
- package/node_modules/d3-time/package.json +28 -57
- package/node_modules/d3-time-format/package.json +33 -61
- package/node_modules/d3-timer/package.json +28 -57
- package/node_modules/d3-transition/package.json +35 -64
- package/node_modules/d3-voronoi/package.json +24 -51
- package/node_modules/d3-zoom/package.json +34 -61
- package/node_modules/debug/package.json +37 -87
- package/node_modules/decompress-response/package.json +53 -84
- package/node_modules/delayed-stream/package.json +19 -53
- package/node_modules/delegates/package.json +11 -45
- package/node_modules/detect-libc/package.json +26 -60
- package/node_modules/dirname-shim/package.json +26 -60
- package/node_modules/dotenv/package.json +37 -64
- package/node_modules/duplexer/package.json +18 -49
- package/node_modules/emoji-regex/package.json +32 -58
- package/node_modules/escalade/package.json +28 -59
- package/node_modules/extended-emitter/package.json +37 -65
- package/node_modules/fast-safe-stringify/package.json +33 -73
- package/node_modules/fill-range/package.json +28 -72
- package/node_modules/follow-redirects/package.json +42 -77
- package/node_modules/form-data/package.json +42 -74
- package/node_modules/formidable/package.json +22 -52
- package/node_modules/fs-minipass/package.json +24 -52
- package/node_modules/fs-readdir-recursive/package.json +20 -50
- package/node_modules/fs.realpath/package.json +21 -53
- package/node_modules/fsevents/package.json +38 -63
- package/node_modules/ftp-response-parser/node_modules/isarray/package.json +22 -54
- package/node_modules/ftp-response-parser/node_modules/readable-stream/package.json +22 -55
- package/node_modules/ftp-response-parser/node_modules/string_decoder/package.json +17 -45
- package/node_modules/ftp-response-parser/package.json +23 -64
- package/node_modules/function-bind/package.json +28 -61
- package/node_modules/gauge/package.json +25 -52
- package/node_modules/generate-password/package.json +28 -54
- package/node_modules/get-caller-file/package.json +27 -53
- package/node_modules/get-intrinsic/package.json +91 -124
- package/node_modules/glob/package.json +34 -68
- package/node_modules/glob-parent/package.json +27 -70
- package/node_modules/has/package.json +26 -55
- package/node_modules/has-symbols/package.json +104 -133
- package/node_modules/has-unicode/package.json +25 -52
- package/node_modules/https-proxy-agent/package.json +30 -59
- package/node_modules/iconv-lite/package.json +48 -77
- package/node_modules/inflight/package.json +20 -48
- package/node_modules/inherits/package.json +17 -54
- package/node_modules/is-binary-path/package.json +43 -75
- package/node_modules/is-extglob/package.json +22 -52
- package/node_modules/is-fullwidth-code-point/package.json +45 -79
- package/node_modules/is-glob/package.json +26 -68
- package/node_modules/is-number/package.json +26 -65
- package/node_modules/jsftp/node_modules/debug/package.json +28 -67
- package/node_modules/jsftp/package.json +22 -59
- package/node_modules/json2csv/node_modules/commander/package.json +25 -56
- package/node_modules/json2csv/package.json +37 -64
- package/node_modules/jsonparse/package.json +18 -53
- package/node_modules/lodash/package.json +15 -61
- package/node_modules/lodash.get/package.json +16 -67
- package/node_modules/lru-cache/package.json +27 -61
- package/node_modules/make-dir/node_modules/semver/package.json +20 -51
- package/node_modules/make-dir/package.json +62 -93
- package/node_modules/maplex/package.json +22 -54
- package/node_modules/methods/package.json +22 -64
- package/node_modules/mime/package.json +20 -48
- package/node_modules/mime-db/package.json +25 -67
- package/node_modules/mime-types/package.json +20 -64
- package/node_modules/mimic-response/package.json +45 -76
- package/node_modules/minimatch/package.json +25 -61
- package/node_modules/minipass/package.json +30 -64
- package/node_modules/minizlib/package.json +27 -59
- package/node_modules/mkdirp/package.json +27 -57
- package/node_modules/ms/package.json +24 -58
- package/node_modules/multi-progress/package.json +20 -46
- package/node_modules/nan/package.json +27 -87
- package/node_modules/node-fetch/package.json +77 -104
- package/node_modules/nopt/package.json +22 -54
- package/node_modules/normalize-path/package.json +25 -63
- package/node_modules/npmlog/package.json +23 -55
- package/node_modules/object-assign/package.json +20 -51
- package/node_modules/object-inspect/package.json +53 -81
- package/node_modules/once/package.json +19 -56
- package/node_modules/parse-listing/package.json +27 -56
- package/node_modules/path-is-absolute/package.json +16 -47
- package/node_modules/picomatch/package.json +28 -60
- package/node_modules/progress/package.json +21 -65
- package/node_modules/qs/package.json +78 -105
- package/node_modules/readdirp/package.json +47 -83
- package/node_modules/require-directory/package.json +29 -57
- package/node_modules/rimraf/package.json +23 -61
- package/node_modules/rw/package.json +19 -46
- package/node_modules/safe-buffer/package.json +10 -38
- package/node_modules/safer-buffer/package.json +18 -43
- package/node_modules/semver/package.json +36 -70
- package/node_modules/set-blocking/package.json +29 -56
- package/node_modules/side-channel/package.json +70 -98
- package/node_modules/sift/package.json +30 -62
- package/node_modules/signal-exit/package.json +29 -58
- package/node_modules/simple-concat/package.json +22 -46
- package/node_modules/simple-get/package.json +9 -33
- package/node_modules/simple-swizzle/node_modules/is-arrayish/package.json +28 -59
- package/node_modules/simple-swizzle/package.json +23 -57
- package/node_modules/strangler/package.json +39 -67
- package/node_modules/stream-combiner/package.json +15 -48
- package/node_modules/string-tools/package.json +16 -50
- package/node_modules/string-width/package.json +59 -97
- package/node_modules/string_decoder/package.json +18 -47
- package/node_modules/strip-ansi/package.json +57 -94
- package/node_modules/superagent/node_modules/form-data/package.json +42 -74
- package/node_modules/superagent/node_modules/readable-stream/package.json +32 -60
- package/node_modules/superagent/package.json +13 -59
- package/node_modules/tar/package.json +27 -59
- package/node_modules/through/package.json +17 -50
- package/node_modules/to-regex-range/package.json +25 -61
- package/node_modules/tr46/package.json +24 -51
- package/node_modules/unorm/package.json +34 -75
- package/node_modules/util-deprecate/package.json +19 -49
- package/node_modules/uuid/package.json +74 -102
- package/node_modules/webidl-conversions/package.json +18 -53
- package/node_modules/whatwg-url/package.json +15 -49
- package/node_modules/wide-align/package.json +21 -53
- package/node_modules/wolfy87-eventemitter/package.json +25 -49
- package/node_modules/wrap-ansi/package.json +65 -97
- package/node_modules/wrappy/package.json +21 -50
- package/node_modules/y18n/package.json +43 -73
- package/node_modules/yallist/package.json +20 -55
- package/node_modules/yargs/package.json +72 -99
- package/node_modules/yargs-parser/package.json +52 -83
- package/package.json +2 -3
- package/src/TrialAccount.js +76 -0
- package/src/commands/agent/Agent.js +10 -19
- package/src/commands/agent/index.js +1 -0
- package/src/commands/agent/ready.js +42 -0
- package/src/commands/instances/list.js +8 -3
- package/src/commands/signup.js +14 -5
- package/src/commands/webplayer/WebPlayer.js +2 -1
- package/src/commands/webplayer/create.js +6 -0
- package/src/commands/webplayer/list.js +17 -16
- package/src/logging.js +1 -1
- package/src/profile.js +12 -9
- package/src/resumable.js +1314 -0
- package/src/table.js +7 -2
- package/src/upload.js +64 -2
- package/test/test.js +89 -0
- package/node_modules/@corellium/corellium-api/README.md +0 -1210
- package/node_modules/@corellium/corellium-api/node_modules/form-data/License +0 -19
- package/node_modules/@corellium/corellium-api/node_modules/form-data/README.md.bak +0 -356
- package/node_modules/@corellium/corellium-api/node_modules/form-data/Readme.md +0 -356
- package/node_modules/@corellium/corellium-api/node_modules/form-data/index.d.ts +0 -62
- package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/browser.js +0 -2
- package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/form_data.js +0 -498
- package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/populate.js +0 -10
- package/node_modules/@corellium/corellium-api/node_modules/form-data/package.json +0 -104
- package/node_modules/@corellium/corellium-api/node_modules/uuid/AUTHORS +0 -5
- package/node_modules/@corellium/corellium-api/node_modules/uuid/CHANGELOG.md +0 -119
- package/node_modules/@corellium/corellium-api/node_modules/uuid/LICENSE.md +0 -21
- package/node_modules/@corellium/corellium-api/node_modules/uuid/README.md +0 -276
- package/node_modules/@corellium/corellium-api/node_modules/uuid/bin/uuid +0 -65
- package/node_modules/@corellium/corellium-api/node_modules/uuid/index.js +0 -8
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/bytesToUuid.js +0 -26
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5-browser.js +0 -216
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5.js +0 -25
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng-browser.js +0 -34
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng.js +0 -8
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1-browser.js +0 -89
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1.js +0 -25
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/v35.js +0 -57
- package/node_modules/@corellium/corellium-api/node_modules/uuid/package.json +0 -103
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v1.js +0 -109
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v3.js +0 -4
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v4.js +0 -29
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v5.js +0 -3
- package/node_modules/@corellium/corellium-api/package.json +0 -106
- package/node_modules/@corellium/corellium-api/resumable.js +0 -1312
- package/node_modules/@corellium/corellium-api/src/agent.js +0 -962
- package/node_modules/@corellium/corellium-api/src/corellium.js +0 -444
- package/node_modules/@corellium/corellium-api/src/images.js +0 -131
- package/node_modules/@corellium/corellium-api/src/input.js +0 -178
- package/node_modules/@corellium/corellium-api/src/instance-updater.js +0 -56
- package/node_modules/@corellium/corellium-api/src/instance.js +0 -1031
- package/node_modules/@corellium/corellium-api/src/netmon.js +0 -308
- package/node_modules/@corellium/corellium-api/src/project.js +0 -393
- package/node_modules/@corellium/corellium-api/src/role.js +0 -65
- package/node_modules/@corellium/corellium-api/src/snapshot.js +0 -77
- package/node_modules/@corellium/corellium-api/src/team.js +0 -29
- package/node_modules/@corellium/corellium-api/src/user.js +0 -51
- package/node_modules/@corellium/corellium-api/src/util/fetch.js +0 -62
- package/node_modules/@corellium/corellium-api/src/util/sleep.js +0 -7
- package/node_modules/@corellium/corellium-api/test/integration-tests.js +0 -1292
- package/node_modules/@corellium/corellium-api/test/root-hook-set-flag-if-test-failed.js +0 -7
- package/node_modules/async-limiter/.eslintignore +0 -2
- package/node_modules/async-limiter/.nycrc +0 -10
- package/node_modules/async-limiter/.travis.yml +0 -9
- package/node_modules/async-limiter/LICENSE +0 -8
- package/node_modules/async-limiter/index.js +0 -67
- package/node_modules/async-limiter/package.json +0 -72
- package/node_modules/async-limiter/readme.md +0 -132
- package/node_modules/buffer-crc32/LICENSE +0 -19
- package/node_modules/buffer-crc32/README.md +0 -47
- package/node_modules/buffer-crc32/index.js +0 -111
- package/node_modules/buffer-crc32/package.json +0 -72
- package/node_modules/cross-fetch/LICENSE +0 -21
- package/node_modules/cross-fetch/README.md +0 -169
- package/node_modules/cross-fetch/dist/browser-polyfill.js +0 -532
- package/node_modules/cross-fetch/dist/browser-ponyfill.js +0 -554
- package/node_modules/cross-fetch/dist/cross-fetch.js +0 -2
- package/node_modules/cross-fetch/dist/cross-fetch.js.map +0 -1
- package/node_modules/cross-fetch/dist/node-polyfill.js +0 -11
- package/node_modules/cross-fetch/dist/node-ponyfill.js +0 -22
- package/node_modules/cross-fetch/dist/react-native-polyfill.js +0 -12
- package/node_modules/cross-fetch/dist/react-native-ponyfill.js +0 -6
- package/node_modules/cross-fetch/index.d.ts +0 -14
- package/node_modules/cross-fetch/package.json +0 -160
- package/node_modules/cross-fetch/polyfill/package.json +0 -8
- package/node_modules/duplexify/.travis.yml +0 -6
- package/node_modules/duplexify/LICENSE +0 -21
- package/node_modules/duplexify/README.md +0 -97
- package/node_modules/duplexify/example.js +0 -21
- package/node_modules/duplexify/index.js +0 -234
- package/node_modules/duplexify/package.json +0 -69
- package/node_modules/duplexify/test.js +0 -295
- package/node_modules/end-of-stream/LICENSE +0 -21
- package/node_modules/end-of-stream/README.md +0 -54
- package/node_modules/end-of-stream/index.js +0 -94
- package/node_modules/end-of-stream/package.json +0 -69
- package/node_modules/fast-stable-stringify/.npmignore +0 -4
- package/node_modules/fast-stable-stringify/.travis.yml +0 -10
- package/node_modules/fast-stable-stringify/LICENSE +0 -21
- package/node_modules/fast-stable-stringify/README.md +0 -81
- package/node_modules/fast-stable-stringify/cli/files-to-comparison-results.js +0 -67
- package/node_modules/fast-stable-stringify/cli/format-table.js +0 -70
- package/node_modules/fast-stable-stringify/cli/index.js +0 -19
- package/node_modules/fast-stable-stringify/fixtures/index.js +0 -5
- package/node_modules/fast-stable-stringify/fixtures/input-data-types.js +0 -191
- package/node_modules/fast-stable-stringify/fixtures/log-result.json +0 -22
- package/node_modules/fast-stable-stringify/fixtures/log.txt +0 -24
- package/node_modules/fast-stable-stringify/index.js +0 -73
- package/node_modules/fast-stable-stringify/karma.conf.js +0 -124
- package/node_modules/fast-stable-stringify/karma.conf.travis.js +0 -95
- package/node_modules/fast-stable-stringify/package.json +0 -77
- package/node_modules/fast-stable-stringify/results/escape-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape.md +0 -20
- package/node_modules/fast-stable-stringify/results/itar-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar.md +0 -20
- package/node_modules/fast-stable-stringify/results/iter/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 39.0.0 (Android 5.1.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 9.0.0 (iOS 9.2.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Safari 9.1.2 (Mac OS X 10.11.6).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter.md +0 -14
- package/node_modules/fast-stable-stringify/results/libs/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/libs/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/libs/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/libs/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs.md +0 -15
- package/node_modules/fast-stable-stringify/test/escape-long.js +0 -147
- package/node_modules/fast-stable-stringify/test/escape-short.js +0 -147
- package/node_modules/fast-stable-stringify/test/index.js +0 -6
- package/node_modules/fast-stable-stringify/test/itar-long.js +0 -52
- package/node_modules/fast-stable-stringify/test/itar-short.js +0 -52
- package/node_modules/fast-stable-stringify/test/iter.js +0 -84
- package/node_modules/fast-stable-stringify/test/libs.js +0 -57
- package/node_modules/fast-stable-stringify/test/travis.js +0 -43
- package/node_modules/fast-stable-stringify/test/validate.js +0 -24
- package/node_modules/fast-stable-stringify/util/eachRecursive.js +0 -9
- package/node_modules/fast-stable-stringify/util/get-git-hash-sync.js +0 -21
- package/node_modules/fast-stable-stringify/util/get-lib-info.js +0 -22
- package/node_modules/fast-stable-stringify/util/object-path.js +0 -47
- package/node_modules/fast-stable-stringify/v8-profile/bench.js +0 -8
- package/node_modules/fast-stable-stringify/v8-profile/run.sh +0 -2
- package/node_modules/fast-stable-stringify/zuul-local.sh +0 -2
- package/node_modules/hkdf/.npmignore +0 -2
- package/node_modules/hkdf/README.md +0 -23
- package/node_modules/hkdf/hkdf.py +0 -171
- package/node_modules/hkdf/hkdf.pyc +0 -0
- package/node_modules/hkdf/index.js +0 -1
- package/node_modules/hkdf/lib/hkdf.js +0 -55
- package/node_modules/hkdf/package.json +0 -55
- package/node_modules/hkdf/scripts/run_all_tests.sh +0 -19
- package/node_modules/hkdf/test/all-test.js +0 -79
- package/node_modules/hkdf/test.py +0 -11
- package/node_modules/immediate/LICENSE.txt +0 -20
- package/node_modules/immediate/README.md +0 -93
- package/node_modules/immediate/dist/immediate.js +0 -75
- package/node_modules/immediate/dist/immediate.min.js +0 -1
- package/node_modules/immediate/lib/browser.js +0 -69
- package/node_modules/immediate/lib/index.js +0 -73
- package/node_modules/immediate/package.json +0 -86
- package/node_modules/isarray/.npmignore +0 -1
- package/node_modules/isarray/.travis.yml +0 -4
- package/node_modules/isarray/Makefile +0 -6
- package/node_modules/isarray/README.md +0 -60
- package/node_modules/isarray/component.json +0 -19
- package/node_modules/isarray/index.js +0 -5
- package/node_modules/isarray/package.json +0 -77
- package/node_modules/isarray/test.js +0 -20
- package/node_modules/jszip/.codeclimate.yml +0 -16
- package/node_modules/jszip/.editorconfig +0 -8
- package/node_modules/jszip/.github/workflows/pr.yaml +0 -41
- package/node_modules/jszip/.jshintignore +0 -1
- package/node_modules/jszip/.jshintrc +0 -21
- package/node_modules/jszip/.travis.yml +0 -17
- package/node_modules/jszip/CHANGES.md +0 -192
- package/node_modules/jszip/LICENSE.markdown +0 -651
- package/node_modules/jszip/README.markdown +0 -33
- package/node_modules/jszip/dist/jszip.js +0 -11583
- package/node_modules/jszip/dist/jszip.min.js +0 -13
- package/node_modules/jszip/index.d.ts +0 -335
- package/node_modules/jszip/lib/base64.js +0 -106
- package/node_modules/jszip/lib/compressedObject.js +0 -74
- package/node_modules/jszip/lib/compressions.js +0 -14
- package/node_modules/jszip/lib/crc32.js +0 -77
- package/node_modules/jszip/lib/defaults.js +0 -11
- package/node_modules/jszip/lib/external.js +0 -19
- package/node_modules/jszip/lib/flate.js +0 -85
- package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -540
- package/node_modules/jszip/lib/generate/index.js +0 -57
- package/node_modules/jszip/lib/index.js +0 -55
- package/node_modules/jszip/lib/license_header.js +0 -11
- package/node_modules/jszip/lib/load.js +0 -88
- package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
- package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
- package/node_modules/jszip/lib/nodejsUtils.js +0 -57
- package/node_modules/jszip/lib/object.js +0 -389
- package/node_modules/jszip/lib/readable-stream-browser.js +0 -9
- package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
- package/node_modules/jszip/lib/reader/DataReader.js +0 -116
- package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
- package/node_modules/jszip/lib/reader/StringReader.js +0 -38
- package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
- package/node_modules/jszip/lib/reader/readerFor.js +0 -28
- package/node_modules/jszip/lib/signature.js +0 -7
- package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
- package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
- package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
- package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
- package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
- package/node_modules/jszip/lib/stream/StreamHelper.js +0 -212
- package/node_modules/jszip/lib/support.js +0 -38
- package/node_modules/jszip/lib/utf8.js +0 -275
- package/node_modules/jszip/lib/utils.js +0 -501
- package/node_modules/jszip/lib/zipEntries.js +0 -262
- package/node_modules/jszip/lib/zipEntry.js +0 -294
- package/node_modules/jszip/lib/zipObject.js +0 -133
- package/node_modules/jszip/package.json +0 -99
- package/node_modules/jszip/tsconfig.json +0 -101
- package/node_modules/jszip/vendor/FileSaver.js +0 -247
- package/node_modules/lie/README.md +0 -62
- package/node_modules/lie/dist/lie.js +0 -350
- package/node_modules/lie/dist/lie.min.js +0 -1
- package/node_modules/lie/dist/lie.polyfill.js +0 -358
- package/node_modules/lie/dist/lie.polyfill.min.js +0 -1
- package/node_modules/lie/lib/browser.js +0 -273
- package/node_modules/lie/lib/index.js +0 -298
- package/node_modules/lie/license.md +0 -7
- package/node_modules/lie/lie.d.ts +0 -244
- package/node_modules/lie/package.json +0 -98
- package/node_modules/lie/polyfill.js +0 -4
- package/node_modules/p-finally/index.js +0 -15
- package/node_modules/p-finally/license +0 -21
- package/node_modules/p-finally/package.json +0 -77
- package/node_modules/p-finally/readme.md +0 -47
- package/node_modules/p-retry/index.js +0 -52
- package/node_modules/p-retry/license +0 -9
- package/node_modules/p-retry/package.json +0 -83
- package/node_modules/p-retry/readme.md +0 -109
- package/node_modules/p-timeout/index.d.ts +0 -72
- package/node_modules/p-timeout/index.js +0 -57
- package/node_modules/p-timeout/license +0 -9
- package/node_modules/p-timeout/package.json +0 -80
- package/node_modules/p-timeout/readme.md +0 -87
- package/node_modules/pako/CHANGELOG.md +0 -164
- package/node_modules/pako/LICENSE +0 -21
- package/node_modules/pako/README.md +0 -191
- package/node_modules/pako/dist/pako.js +0 -6818
- package/node_modules/pako/dist/pako.min.js +0 -1
- package/node_modules/pako/dist/pako_deflate.js +0 -3997
- package/node_modules/pako/dist/pako_deflate.min.js +0 -1
- package/node_modules/pako/dist/pako_inflate.js +0 -3300
- package/node_modules/pako/dist/pako_inflate.min.js +0 -1
- package/node_modules/pako/index.js +0 -14
- package/node_modules/pako/lib/deflate.js +0 -400
- package/node_modules/pako/lib/inflate.js +0 -423
- package/node_modules/pako/lib/utils/common.js +0 -105
- package/node_modules/pako/lib/utils/strings.js +0 -187
- package/node_modules/pako/lib/zlib/README +0 -59
- package/node_modules/pako/lib/zlib/adler32.js +0 -51
- package/node_modules/pako/lib/zlib/constants.js +0 -68
- package/node_modules/pako/lib/zlib/crc32.js +0 -59
- package/node_modules/pako/lib/zlib/deflate.js +0 -1874
- package/node_modules/pako/lib/zlib/gzheader.js +0 -58
- package/node_modules/pako/lib/zlib/inffast.js +0 -345
- package/node_modules/pako/lib/zlib/inflate.js +0 -1556
- package/node_modules/pako/lib/zlib/inftrees.js +0 -343
- package/node_modules/pako/lib/zlib/messages.js +0 -32
- package/node_modules/pako/lib/zlib/trees.js +0 -1222
- package/node_modules/pako/lib/zlib/zstream.js +0 -47
- package/node_modules/pako/package.json +0 -94
- package/node_modules/process-nextick-args/index.js +0 -45
- package/node_modules/process-nextick-args/license.md +0 -19
- package/node_modules/process-nextick-args/package.json +0 -53
- package/node_modules/process-nextick-args/readme.md +0 -18
- package/node_modules/readable-stream/.travis.yml +0 -34
- package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/node_modules/readable-stream/LICENSE +0 -47
- package/node_modules/readable-stream/README.md +0 -58
- package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
- package/node_modules/readable-stream/duplex-browser.js +0 -1
- package/node_modules/readable-stream/duplex.js +0 -1
- package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
- package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
- package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
- package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
- package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
- package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/node_modules/readable-stream/package.json +0 -86
- package/node_modules/readable-stream/passthrough.js +0 -1
- package/node_modules/readable-stream/readable-browser.js +0 -7
- package/node_modules/readable-stream/readable.js +0 -19
- package/node_modules/readable-stream/transform.js +0 -1
- package/node_modules/readable-stream/writable-browser.js +0 -1
- package/node_modules/readable-stream/writable.js +0 -8
- package/node_modules/retry/.npmignore +0 -3
- package/node_modules/retry/.travis.yml +0 -15
- package/node_modules/retry/License +0 -21
- package/node_modules/retry/Makefile +0 -18
- package/node_modules/retry/README.md +0 -227
- package/node_modules/retry/equation.gif +0 -0
- package/node_modules/retry/example/dns.js +0 -31
- package/node_modules/retry/example/stop.js +0 -40
- package/node_modules/retry/index.js +0 -1
- package/node_modules/retry/lib/retry.js +0 -100
- package/node_modules/retry/lib/retry_operation.js +0 -158
- package/node_modules/retry/package.json +0 -67
- package/node_modules/retry/test/common.js +0 -10
- package/node_modules/retry/test/integration/test-forever.js +0 -24
- package/node_modules/retry/test/integration/test-retry-operation.js +0 -258
- package/node_modules/retry/test/integration/test-retry-wrap.js +0 -101
- package/node_modules/retry/test/integration/test-timeouts.js +0 -69
- package/node_modules/setimmediate/LICENSE.txt +0 -20
- package/node_modules/setimmediate/package.json +0 -77
- package/node_modules/setimmediate/setImmediate.js +0 -186
- package/node_modules/split/.npmignore +0 -3
- package/node_modules/split/.travis.yml +0 -3
- package/node_modules/split/LICENCE +0 -22
- package/node_modules/split/examples/pretty.js +0 -26
- package/node_modules/split/index.js +0 -63
- package/node_modules/split/package.json +0 -65
- package/node_modules/split/readme.markdown +0 -72
- package/node_modules/split/test/options.asynct.js +0 -46
- package/node_modules/split/test/partitioned_unicode.js +0 -34
- package/node_modules/split/test/split.asynct.js +0 -137
- package/node_modules/split/test/try_catch.asynct.js +0 -51
- package/node_modules/stream-shift/.travis.yml +0 -6
- package/node_modules/stream-shift/LICENSE +0 -21
- package/node_modules/stream-shift/README.md +0 -25
- package/node_modules/stream-shift/index.js +0 -20
- package/node_modules/stream-shift/package.json +0 -56
- package/node_modules/stream-shift/test.js +0 -48
- package/node_modules/ultron/LICENSE +0 -22
- package/node_modules/ultron/README.md +0 -113
- package/node_modules/ultron/index.js +0 -136
- package/node_modules/ultron/package.json +0 -71
- package/node_modules/websocket-stream/LICENSE +0 -8
- package/node_modules/websocket-stream/collaborators.md +0 -11
- package/node_modules/websocket-stream/echo-server.js +0 -51
- package/node_modules/websocket-stream/index.d.ts +0 -27
- package/node_modules/websocket-stream/index.js +0 -6
- package/node_modules/websocket-stream/package.json +0 -82
- package/node_modules/websocket-stream/readme.md +0 -148
- package/node_modules/websocket-stream/server.js +0 -29
- package/node_modules/websocket-stream/stream.js +0 -189
- package/node_modules/websocket-stream/test-client.js +0 -74
- package/node_modules/websocket-stream/test-server.js +0 -56
- package/node_modules/websocket-stream/test.js +0 -338
- package/node_modules/websocket-stream/ts-tests.ts +0 -69
- package/node_modules/websocket-stream/ws-fallback.js +0 -12
- package/node_modules/ws/LICENSE +0 -21
- package/node_modules/ws/README.md +0 -341
- package/node_modules/ws/index.js +0 -15
- package/node_modules/ws/lib/.DS_Store +0 -0
- package/node_modules/ws/lib/BufferUtil.js +0 -71
- package/node_modules/ws/lib/Constants.js +0 -10
- package/node_modules/ws/lib/ErrorCodes.js +0 -28
- package/node_modules/ws/lib/EventTarget.js +0 -151
- package/node_modules/ws/lib/Extensions.js +0 -203
- package/node_modules/ws/lib/PerMessageDeflate.js +0 -507
- package/node_modules/ws/lib/Receiver.js +0 -553
- package/node_modules/ws/lib/Sender.js +0 -412
- package/node_modules/ws/lib/Validation.js +0 -17
- package/node_modules/ws/lib/WebSocket.js +0 -717
- package/node_modules/ws/lib/WebSocketServer.js +0 -326
- package/node_modules/ws/package.json +0 -83
- package/node_modules/xhr2/CONTRIBUTING.md +0 -33
- package/node_modules/xhr2/Cakefile +0 -131
- package/node_modules/xhr2/LICENSE.txt +0 -19
- package/node_modules/xhr2/README.md +0 -142
- package/node_modules/xhr2/lib/browser.js +0 -1
- package/node_modules/xhr2/lib/xhr2.js +0 -1244
- package/node_modules/xhr2/package.json +0 -103
- package/node_modules/xhr2/src/000-xml_http_request_event_target.coffee +0 -89
- package/node_modules/xhr2/src/001-xml_http_request.coffee +0 -781
- package/node_modules/xhr2/src/errors.coffee +0 -31
- package/node_modules/xhr2/src/progress_event.coffee +0 -39
- package/node_modules/xhr2/src/xml_http_request_upload.coffee +0 -95
- package/node_modules/xhr2/test/fixtures/hello.json +0 -1
- package/node_modules/xhr2/test/fixtures/hello.txt +0 -1
- package/node_modules/xhr2/test/fixtures/xhr2.png +0 -0
- package/node_modules/xhr2/test/html/browser_test.html +0 -30
- package/node_modules/xhr2/test/src/event_target_test.coffee +0 -85
- package/node_modules/xhr2/test/src/events_test.coffee +0 -204
- package/node_modules/xhr2/test/src/headers_test.coffee +0 -168
- package/node_modules/xhr2/test/src/helpers/browser_mocha_runner.coffee +0 -10
- package/node_modules/xhr2/test/src/helpers/browser_mocha_setup.coffee +0 -1
- package/node_modules/xhr2/test/src/helpers/setup.coffee +0 -38
- package/node_modules/xhr2/test/src/helpers/xhr_server.coffee +0 -156
- package/node_modules/xhr2/test/src/nodejs_set_test.coffee +0 -162
- package/node_modules/xhr2/test/src/redirect_test.coffee +0 -57
- package/node_modules/xhr2/test/src/response_type_test.coffee +0 -88
- package/node_modules/xhr2/test/src/responseurl_test.coffee +0 -18
- package/node_modules/xhr2/test/src/send_test.coffee +0 -89
- package/node_modules/xhr2/test/src/status_test.coffee +0 -47
- package/node_modules/xhr2/test/src/xhr_test.coffee +0 -102
- package/node_modules/xtend/.jshintrc +0 -30
- package/node_modules/xtend/LICENSE +0 -20
- package/node_modules/xtend/README.md +0 -32
- package/node_modules/xtend/immutable.js +0 -19
- package/node_modules/xtend/mutable.js +0 -17
- package/node_modules/xtend/package.json +0 -89
- package/node_modules/xtend/test.js +0 -103
- package/node_modules/yazl/LICENSE +0 -21
- package/node_modules/yazl/README.md +0 -389
- package/node_modules/yazl/index.js +0 -749
- package/node_modules/yazl/package.json +0 -69
- package/src/commands/CorelliumAPI.js +0 -76
- package/src/subscriberInvite.js +0 -140
|
@@ -1,962 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const WebSocket = require("ws");
|
|
4
|
-
const stream = require("stream");
|
|
5
|
-
|
|
6
|
-
const { sleep } = require("./util/sleep");
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @typedef {object} CommandResult
|
|
10
|
-
* @property {integer} id - ID
|
|
11
|
-
* @property {boolean} success - command result
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @typedef {object} ShellExecResult
|
|
16
|
-
* @property {integer} id - ID
|
|
17
|
-
* @property {integer} exit-status
|
|
18
|
-
* @property {string} output - command output
|
|
19
|
-
* @property {boolean} success - command result
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @typedef {object} FridaPsResult
|
|
24
|
-
* @property {integer} id - ID
|
|
25
|
-
* @property {integer} exit-status -
|
|
26
|
-
* @property {string} output - frida-ps output
|
|
27
|
-
* @property {boolean} success - command result
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @typedef {object} AppListEntry
|
|
32
|
-
* @property {string} applicationType
|
|
33
|
-
* @property {string} bundleID
|
|
34
|
-
* @property {integer} date
|
|
35
|
-
* @property {integer} diskUsage
|
|
36
|
-
* @property {boolean} isLaunchable
|
|
37
|
-
* @property {string} name
|
|
38
|
-
* @property {boolean} running
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* @typedef {object} StatEntry
|
|
43
|
-
* @property {integer} atime
|
|
44
|
-
* @property {integer} ctime
|
|
45
|
-
* @property {object[]} entries
|
|
46
|
-
* @property {integer} entries[].atime
|
|
47
|
-
* @property {integer} entries[].stime
|
|
48
|
-
* @property {integer} entries[].gid
|
|
49
|
-
* @property {integer} entries[].mode
|
|
50
|
-
* @property {integer} entries[].mtime
|
|
51
|
-
* @property {string} entries[].name
|
|
52
|
-
* @property {integer} entries[].size
|
|
53
|
-
* @property {integer} entries[].uid
|
|
54
|
-
* @property {integer} gid
|
|
55
|
-
* @property {integer} mode
|
|
56
|
-
* @property {integer} mtime
|
|
57
|
-
* @property {string} name
|
|
58
|
-
* @property {integer} size
|
|
59
|
-
* @property {integer} uid
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* @typedef {object} ProvisioningProfileInfo
|
|
64
|
-
* @property {string} name
|
|
65
|
-
* @property {string} uuid
|
|
66
|
-
* @property {string} teamId
|
|
67
|
-
* @property {string[]} certs
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* A connection to the agent running on an instance.
|
|
72
|
-
*
|
|
73
|
-
* Instances of this class
|
|
74
|
-
* are returned from {@link Instance#agent} and {@link Instance#newAgent}. They
|
|
75
|
-
* should not be created using the constructor.
|
|
76
|
-
* @hideconstructor
|
|
77
|
-
*/
|
|
78
|
-
class Agent {
|
|
79
|
-
constructor(instance) {
|
|
80
|
-
this.instance = instance;
|
|
81
|
-
this.connected = false;
|
|
82
|
-
this.uploading = false;
|
|
83
|
-
this.connectPromise = null;
|
|
84
|
-
this.id = 0;
|
|
85
|
-
this._keepAliveTimeout = null;
|
|
86
|
-
this._startKeepAliveTimeout = null;
|
|
87
|
-
this._lastPong = null;
|
|
88
|
-
this._lastPing = null;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Ensure the agent is connected.
|
|
93
|
-
* @private
|
|
94
|
-
*/
|
|
95
|
-
async connect() {
|
|
96
|
-
this.pendingConnect = true;
|
|
97
|
-
if (!this.connected) {
|
|
98
|
-
return await this.reconnect();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Ensure the agent is disconnected, then connect the agent.
|
|
104
|
-
* @private
|
|
105
|
-
*/
|
|
106
|
-
async reconnect() {
|
|
107
|
-
if (this.connected) this.disconnect();
|
|
108
|
-
|
|
109
|
-
if (this.connectPromise) return this.connectPromise;
|
|
110
|
-
|
|
111
|
-
this.connectPromise = await (async () => {
|
|
112
|
-
while (this.pendingConnect) {
|
|
113
|
-
try {
|
|
114
|
-
await this._connect();
|
|
115
|
-
break;
|
|
116
|
-
} catch (err) {
|
|
117
|
-
if (err.stack.includes("Instance likely does not exist")) {
|
|
118
|
-
throw err;
|
|
119
|
-
}
|
|
120
|
-
if (err.stack.includes("unexpected server response (502)")) {
|
|
121
|
-
// 'Error: unexpected server response (502)' means the device is not likely up yet
|
|
122
|
-
await sleep(10 * 1000);
|
|
123
|
-
}
|
|
124
|
-
if (err.stack.includes("closed before the connection")) {
|
|
125
|
-
// Do nothing this is normal when trying to settle a connection for a vm coming up
|
|
126
|
-
} else {
|
|
127
|
-
await sleep(7.5 * 1000);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
this.connectPromise = null;
|
|
133
|
-
})();
|
|
134
|
-
|
|
135
|
-
return this.connectPromise;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
async _connect() {
|
|
139
|
-
this.pending = new Map();
|
|
140
|
-
|
|
141
|
-
const endpoint = await this.instance.agentEndpoint();
|
|
142
|
-
if (!endpoint) {
|
|
143
|
-
this.pendingConnect = false;
|
|
144
|
-
throw new Error("Instance likely does not exist");
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Detect if a disconnection happened before we were able to get the agent endpoint.
|
|
148
|
-
if (!this.pendingConnect) throw new Error("connection cancelled");
|
|
149
|
-
|
|
150
|
-
let ws = new WebSocket(endpoint);
|
|
151
|
-
|
|
152
|
-
this.ws = ws;
|
|
153
|
-
|
|
154
|
-
ws.on("message", (data) => {
|
|
155
|
-
try {
|
|
156
|
-
let message;
|
|
157
|
-
let id;
|
|
158
|
-
if (typeof data === "string") {
|
|
159
|
-
message = JSON.parse(data);
|
|
160
|
-
id = message["id"];
|
|
161
|
-
} else if (data.length >= 8) {
|
|
162
|
-
id = data.readUInt32LE(0);
|
|
163
|
-
message = data.slice(8);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
let handler = this.pending.get(id);
|
|
167
|
-
if (handler) {
|
|
168
|
-
// will work regardless of whether handler returns a promise
|
|
169
|
-
Promise.resolve(handler(null, message)).then((shouldDelete) => {
|
|
170
|
-
if (shouldDelete) this.pending.delete(id);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
} catch (err) {
|
|
174
|
-
console.error("error in agent message handler", err);
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
ws.on("close", (code, _reason) => {
|
|
179
|
-
this.pending.forEach((handler) => {
|
|
180
|
-
handler(new Error(`disconnected with code ${code}`));
|
|
181
|
-
});
|
|
182
|
-
this.pending = new Map();
|
|
183
|
-
this._disconnect();
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
return await new Promise((resolve, reject) => {
|
|
187
|
-
ws.once("open", () => {
|
|
188
|
-
if (this.ws !== ws) {
|
|
189
|
-
try {
|
|
190
|
-
ws.close();
|
|
191
|
-
} catch (e) {
|
|
192
|
-
// Swallow ws.close() errors.
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
reject(new Error("connection cancelled"));
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
ws.on("error", (err) => {
|
|
200
|
-
this.pending.forEach((handler) => {
|
|
201
|
-
handler(err);
|
|
202
|
-
});
|
|
203
|
-
this.pending = new Map();
|
|
204
|
-
|
|
205
|
-
if (this.ws === ws) {
|
|
206
|
-
this._disconnect();
|
|
207
|
-
} else {
|
|
208
|
-
try {
|
|
209
|
-
ws.close();
|
|
210
|
-
} catch (e) {
|
|
211
|
-
// Swallow ws.close() errors.
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
console.error("error in agent socket", err);
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
resolve();
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
ws.once("error", (err) => {
|
|
222
|
-
if (this.ws === ws) {
|
|
223
|
-
this._disconnect();
|
|
224
|
-
} else {
|
|
225
|
-
try {
|
|
226
|
-
ws.close();
|
|
227
|
-
} catch (e) {
|
|
228
|
-
// Swallow ws.close() errors.
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
reject(err);
|
|
233
|
-
});
|
|
234
|
-
})
|
|
235
|
-
.then(() => {
|
|
236
|
-
this.pendingConnect = false;
|
|
237
|
-
this.connected = true;
|
|
238
|
-
clearTimeout(this._startKeepAliveTimeout);
|
|
239
|
-
this._startKeepAlive();
|
|
240
|
-
})
|
|
241
|
-
.catch(async (err) => {
|
|
242
|
-
await this.instance.update();
|
|
243
|
-
throw err;
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
_startKeepAlive() {
|
|
248
|
-
if (!this.connected) return;
|
|
249
|
-
|
|
250
|
-
let ws = this.ws;
|
|
251
|
-
|
|
252
|
-
ws.ping();
|
|
253
|
-
|
|
254
|
-
this._keepAliveTimeout = setTimeout(() => {
|
|
255
|
-
if (this.ws !== ws) {
|
|
256
|
-
try {
|
|
257
|
-
ws.close();
|
|
258
|
-
} catch (e) {
|
|
259
|
-
// Swallow ws.close() errors.
|
|
260
|
-
}
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
let err = new Error(
|
|
265
|
-
"Agent did not get a response to ping in 10 seconds, disconnecting.",
|
|
266
|
-
);
|
|
267
|
-
console.error("Agent did not get a response to ping in 10 seconds, disconnecting.");
|
|
268
|
-
|
|
269
|
-
this.pending.forEach((handler) => {
|
|
270
|
-
handler(err);
|
|
271
|
-
});
|
|
272
|
-
this.pending = new Map();
|
|
273
|
-
|
|
274
|
-
this._disconnect();
|
|
275
|
-
}, 10 * 1000);
|
|
276
|
-
|
|
277
|
-
ws.once("pong", async () => {
|
|
278
|
-
if (ws !== this.ws) {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
clearTimeout(this._keepAliveTimeout);
|
|
283
|
-
this._keepAliveTimeout = null;
|
|
284
|
-
|
|
285
|
-
if (!this.uploading) {
|
|
286
|
-
this._startKeepAliveTimeout = setTimeout(this._startKeepAlive, 10 * 1000);
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
_stopKeepAlive() {
|
|
292
|
-
if (this._startKeepAliveTimeout) {
|
|
293
|
-
clearTimeout(this._startKeepAliveTimeout);
|
|
294
|
-
this._startKeepAliveTimeout = null;
|
|
295
|
-
}
|
|
296
|
-
if (this._keepAliveTimeout) {
|
|
297
|
-
clearTimeout(this._keepAliveTimeout);
|
|
298
|
-
this._keepAliveTimeout = null;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* Disconnect an agent connection. This is usually only required if a new
|
|
304
|
-
* agent connection has been created and is no longer needed, for example
|
|
305
|
-
* if the `crashListener` in the example at {@link Agent#crashes} is not
|
|
306
|
-
* needed anymore.
|
|
307
|
-
* @example
|
|
308
|
-
* agent.disconnect();
|
|
309
|
-
*/
|
|
310
|
-
disconnect() {
|
|
311
|
-
this.pendingConnect = false;
|
|
312
|
-
this._disconnect();
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
_disconnect() {
|
|
316
|
-
this.connected = false;
|
|
317
|
-
this._stopKeepAlive();
|
|
318
|
-
if (this.ws) {
|
|
319
|
-
try {
|
|
320
|
-
this.ws.close();
|
|
321
|
-
} catch (e) {
|
|
322
|
-
// Swallow ws.close() errors.
|
|
323
|
-
}
|
|
324
|
-
this.ws = null;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Send a command to the agent.
|
|
330
|
-
*
|
|
331
|
-
* When the command is responded to with an error, the error is thrown.
|
|
332
|
-
* When the command is responded to with success, the handler callback is
|
|
333
|
-
* called with the response as an argument.
|
|
334
|
-
*
|
|
335
|
-
* If the callback returns a value, that value will be returned from
|
|
336
|
-
* `command`; otherwise nothing will happen until the next response to the
|
|
337
|
-
* command. If the callback throws an exception, that exception will be
|
|
338
|
-
* thrown from `command`.
|
|
339
|
-
*
|
|
340
|
-
* If no callback is specified, it is equivalent to specifying the callback
|
|
341
|
-
* `(response) => response`.
|
|
342
|
-
*
|
|
343
|
-
* @param {string} type - passed in the `type` field of the agent command
|
|
344
|
-
* @param {string} op - passed in the `op` field of the agent command
|
|
345
|
-
* @param {Object} params - any other parameters to include in the command
|
|
346
|
-
* @param {function} [handler=(response) => response] - the handler callback
|
|
347
|
-
* @param {function} [uploadHandler] - a kludge for file uploads to work
|
|
348
|
-
* @private
|
|
349
|
-
*/
|
|
350
|
-
async command(type, op, params, handler, uploadHandler) {
|
|
351
|
-
if (handler === undefined) handler = (response) => response;
|
|
352
|
-
|
|
353
|
-
const id = this.id;
|
|
354
|
-
this.id++;
|
|
355
|
-
const message = Object.assign({ type, op, id }, params);
|
|
356
|
-
|
|
357
|
-
while (!this.ws) {
|
|
358
|
-
await this.connect();
|
|
359
|
-
}
|
|
360
|
-
this.ws.send(JSON.stringify(message));
|
|
361
|
-
if (uploadHandler) uploadHandler(id);
|
|
362
|
-
|
|
363
|
-
return await new Promise((resolve, reject) => {
|
|
364
|
-
this.pending.set(id, async (err, response) => {
|
|
365
|
-
if (err) {
|
|
366
|
-
reject(err);
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
if (response.error) {
|
|
371
|
-
reject(Object.assign(new Error(), response.error));
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
try {
|
|
376
|
-
const result = await handler(response);
|
|
377
|
-
if (result !== undefined) {
|
|
378
|
-
resolve(result);
|
|
379
|
-
return true; // stop calling us
|
|
380
|
-
}
|
|
381
|
-
return false;
|
|
382
|
-
} catch (e) {
|
|
383
|
-
reject(e);
|
|
384
|
-
return true;
|
|
385
|
-
}
|
|
386
|
-
});
|
|
387
|
-
});
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
sendBinaryData(id, data) {
|
|
391
|
-
let idBuffer = Buffer.alloc(8, 0);
|
|
392
|
-
idBuffer.writeUInt32LE(id, 0);
|
|
393
|
-
if (data) this.ws.send(Buffer.concat([idBuffer, data]));
|
|
394
|
-
else this.ws.send(idBuffer);
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
/**
|
|
398
|
-
* Wait for the instance to be ready to use. On iOS, this will wait until Springboard has launched.
|
|
399
|
-
* @example
|
|
400
|
-
* let agent = await instance.agent();
|
|
401
|
-
* await agent.ready();
|
|
402
|
-
*/
|
|
403
|
-
async ready() {
|
|
404
|
-
await this.command("app", "ready");
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
/**
|
|
408
|
-
* Uninstalls the app with the given bundle ID.
|
|
409
|
-
* @param {string} bundleID - The bundle ID of the app to uninstall.
|
|
410
|
-
* @param {Agent~progressCallback} progress - The progress callback.
|
|
411
|
-
* @example
|
|
412
|
-
* await agent.uninstall('com.corellium.demoapp', (progress, status) => {
|
|
413
|
-
* console.log(progress, status);
|
|
414
|
-
* });
|
|
415
|
-
*/
|
|
416
|
-
async uninstall(bundleID, progress) {
|
|
417
|
-
await this.command("app", "uninstall", { bundleID }, (message) => {
|
|
418
|
-
if (message.success) return message;
|
|
419
|
-
if (progress && message.progress) progress(message.progress, message.status);
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
/**
|
|
424
|
-
* Launches the app with the given bundle ID.
|
|
425
|
-
* @param {string} bundleID - The bundle ID of the app to launch.
|
|
426
|
-
* @example
|
|
427
|
-
* await agent.run("com.corellium.demoapp");
|
|
428
|
-
*/
|
|
429
|
-
async run(bundleID) {
|
|
430
|
-
await this.command("app", "run", { bundleID });
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
/**
|
|
434
|
-
* Executes a given command
|
|
435
|
-
* @param {string} cmd - The cmd to execute
|
|
436
|
-
* @return {Promise<ShellExecResult>}
|
|
437
|
-
* @example
|
|
438
|
-
* await agent.shellExec("uname");
|
|
439
|
-
*/
|
|
440
|
-
async shellExec(cmd) {
|
|
441
|
-
return await this.command("app", "shellExec", { cmd });
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
/**
|
|
445
|
-
* Launches the app with the given bundle ID.
|
|
446
|
-
* @param {string} bundleID - The bundle ID of the app to launch, for android this is the package name.
|
|
447
|
-
* @param {string} activity fully qualified activity to launch from bundleID
|
|
448
|
-
* @example
|
|
449
|
-
* await agent.runActivity('com.corellium.test.app', 'com.corellium.test.app/com.corellium.test.app.CrashActivity');
|
|
450
|
-
*/
|
|
451
|
-
async runActivity(bundleID, activity) {
|
|
452
|
-
await this.command("app", "run", { bundleID, activity });
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/**
|
|
456
|
-
* Kill the app with the given bundle ID, if it is running.
|
|
457
|
-
* @param {string} bundleID - The bundle ID of the app to kill.
|
|
458
|
-
* @example
|
|
459
|
-
* await agent.kill("com.corellium.demoapp");
|
|
460
|
-
*/
|
|
461
|
-
async kill(bundleID) {
|
|
462
|
-
await this.command("app", "kill", { bundleID });
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
/**
|
|
466
|
-
* Returns an array of installed apps.
|
|
467
|
-
* @return {Promise<AppListEntry[]>}
|
|
468
|
-
* @example
|
|
469
|
-
* let appList = await agent.appList();
|
|
470
|
-
* for (app of appList) {
|
|
471
|
-
* console.log('Found installed app ' + app['bundleID']);
|
|
472
|
-
* }
|
|
473
|
-
*/
|
|
474
|
-
async appList() {
|
|
475
|
-
const { apps } = await this.command("app", "list");
|
|
476
|
-
return apps;
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
/**
|
|
480
|
-
* Gets information about the file at the specified path. Fields are atime, mtime, ctime (in seconds after the epoch), size, mode (see mode_t in man 2 stat), uid, gid. If the path specified is a directory, an entries field will be present with
|
|
481
|
-
* the same structure (and an additional name field) for each immediate child of the directory.
|
|
482
|
-
* @return {Promise<StatEntry>}
|
|
483
|
-
* @example
|
|
484
|
-
* let scripts = await agent.stat('/data/corellium/frida/scripts/');
|
|
485
|
-
*/
|
|
486
|
-
async stat(path) {
|
|
487
|
-
const response = await this.command("file", "stat", { path });
|
|
488
|
-
return response.stat;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
/**
|
|
492
|
-
* A callback for file upload progress messages. Can be passed to {@link Agent#upload} and {@link Agent#installFile}
|
|
493
|
-
* @callback Agent~uploadProgressCallback
|
|
494
|
-
* @param {number} bytes - The number of bytes that has been uploaded.
|
|
495
|
-
*/
|
|
496
|
-
|
|
497
|
-
/**
|
|
498
|
-
* A callback for progress messages. Can be passed to {@link Agent#install}, {@link Agent#installFile}, {@link Agent#uninstall}.
|
|
499
|
-
* @callback Agent~progressCallback
|
|
500
|
-
* @param {number} progress - The progress, as a number between 0 and 1.
|
|
501
|
-
* @param {string} status - The current status.
|
|
502
|
-
*/
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* Installs an app. The app's IPA must be available on the VM's filesystem. A progress callback may be provided.
|
|
506
|
-
*
|
|
507
|
-
* @see {@link Agent#upload} to upload a file to the VM's filesystem
|
|
508
|
-
* @see {@link Agent#installFile} to handle both the upload and install
|
|
509
|
-
*
|
|
510
|
-
* @param {string} path - The path of the IPA on the VM's filesystem.
|
|
511
|
-
* @param {Agent~progressCallback} [progress] - An optional callback that
|
|
512
|
-
* will be called with information on the progress of the installation.
|
|
513
|
-
* @async
|
|
514
|
-
*
|
|
515
|
-
* @example
|
|
516
|
-
* await agent.install('/var/tmp/temp.ipa', (progress, status) => {
|
|
517
|
-
* console.log(progress, status);
|
|
518
|
-
* });
|
|
519
|
-
*/
|
|
520
|
-
async install(path, progress) {
|
|
521
|
-
await this.command("app", "install", { path }, (message) => {
|
|
522
|
-
if (message.success) return message;
|
|
523
|
-
if (progress && message.progress) progress(message.progress, message.status);
|
|
524
|
-
});
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
/**
|
|
528
|
-
* Returns an array of Mobile Configuration profile IDs
|
|
529
|
-
* @return {Promise<string[]>}
|
|
530
|
-
* @example
|
|
531
|
-
* let profiles = await agent.profileList();
|
|
532
|
-
* for (p of profiles) {
|
|
533
|
-
* console.log('Found configuration profile: ' + p);
|
|
534
|
-
* }
|
|
535
|
-
*/
|
|
536
|
-
async profileList() {
|
|
537
|
-
const { profiles } = await this.command("profile", "list");
|
|
538
|
-
return profiles;
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* Installs Mobile Configuration profile
|
|
543
|
-
* @param {Buffer} profile - profile binary
|
|
544
|
-
* @example
|
|
545
|
-
* var profile = fs.readFileSync(path.join(__dirname, "myprofile.mobileconfig"));
|
|
546
|
-
* await agent.installProfile(profile);
|
|
547
|
-
*/
|
|
548
|
-
async installProfile(profile) {
|
|
549
|
-
await this.command("profile", "install", {
|
|
550
|
-
profile: Buffer.from(profile).toString("base64"),
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
/**
|
|
555
|
-
* Deletes Mobile Configuration profile
|
|
556
|
-
* @param {string} profileID - profile ID
|
|
557
|
-
* @example
|
|
558
|
-
* await agent.removeProfile('com.test.myprofile');
|
|
559
|
-
*/
|
|
560
|
-
async removeProfile(profileID) {
|
|
561
|
-
await this.command("profile", "remove", { profileID });
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* Gets Mobile Configuration profile binary
|
|
566
|
-
* @param {string} profileID - profile ID
|
|
567
|
-
* @return {Promise<Buffer>}
|
|
568
|
-
* @example
|
|
569
|
-
* var profile = await agent.getProfile('com.test.myprofile');
|
|
570
|
-
*/
|
|
571
|
-
async getProfile(profileID) {
|
|
572
|
-
const { profile } = await this.command("profile", "get", { profileID });
|
|
573
|
-
if (!profile) return null;
|
|
574
|
-
return new Buffer.from(profile, "base64");
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
/**
|
|
578
|
-
* Returns an array of Provisioning profile descriptions
|
|
579
|
-
* @return {Promise<ProvisioningProfileInfo[]>}
|
|
580
|
-
* @example
|
|
581
|
-
* let profiles = await agent.listProvisioningProfiles();
|
|
582
|
-
* for (p of profiles) {
|
|
583
|
-
* console.log(p['uuid']);
|
|
584
|
-
* }
|
|
585
|
-
*/
|
|
586
|
-
async listProvisioningProfiles() {
|
|
587
|
-
const { profiles } = await this.command("provisioning", "list");
|
|
588
|
-
return profiles;
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
/**
|
|
592
|
-
* Installs Provisioning profile
|
|
593
|
-
* @param {Buffer} profile - profile binary
|
|
594
|
-
* @param {Boolean} trust - immediately trust installed profile
|
|
595
|
-
* @example
|
|
596
|
-
* var profile = fs.readFileSync(path.join(__dirname, "embedded.mobileprovision"));
|
|
597
|
-
* await agent.installProvisioningProfile(profile, true);
|
|
598
|
-
*/
|
|
599
|
-
async installProvisioningProfile(profile, trust = false) {
|
|
600
|
-
await this.command("provisioning", "install", {
|
|
601
|
-
profile: Buffer.from(profile).toString("base64"),
|
|
602
|
-
trust: trust,
|
|
603
|
-
});
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
/**
|
|
607
|
-
* Deletes Provisioning profile
|
|
608
|
-
* @param {string} profileID - profile ID
|
|
609
|
-
* @example
|
|
610
|
-
* await agent.removeProvisioningProfile('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa');
|
|
611
|
-
*/
|
|
612
|
-
async removeProvisioningProfile(profileID) {
|
|
613
|
-
await this.command("provisioning", "remove", {
|
|
614
|
-
uuid: profileID,
|
|
615
|
-
});
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
/**
|
|
619
|
-
* Approves (makes trusted) profile which will be installed later in a future for example during app installation via Xcode.
|
|
620
|
-
* @param {string} certID - profile ID
|
|
621
|
-
* @param {string} profileID - profile ID
|
|
622
|
-
* @example
|
|
623
|
-
* await agent.preApproveProvisioningProfile('Apple Development: my@email.com (NKJDZ3DZJB)', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa');
|
|
624
|
-
*/
|
|
625
|
-
async preApproveProvisioningProfile(certID, profileID) {
|
|
626
|
-
await this.command("provisioning", "preapprove", {
|
|
627
|
-
cert: certID,
|
|
628
|
-
uuid: profileID,
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
/**
|
|
633
|
-
* Returns a temporary random filename on the VMs filesystem that by the
|
|
634
|
-
* time of invocation of this method is guaranteed to be unique.
|
|
635
|
-
* @return {Promise<string>}
|
|
636
|
-
* @see example at {@link Agent#upload}
|
|
637
|
-
*/
|
|
638
|
-
async tempFile() {
|
|
639
|
-
const { path } = await this.command("file", "temp");
|
|
640
|
-
return path;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
/**
|
|
644
|
-
* Reads from the specified stream and uploads the data to a file on the VM.
|
|
645
|
-
* @param {string} path - The file path to upload the data to.
|
|
646
|
-
* @param {ReadableStream} stream - The stream to read the file data from.
|
|
647
|
-
* @param {Agent~uploadProgressCallback} progress - The callback for install progress information.
|
|
648
|
-
* @example
|
|
649
|
-
* const tmpName = await agent.tempFile();
|
|
650
|
-
* await agent.upload(tmpName, fs.createReadStream('test.ipa'));
|
|
651
|
-
*/
|
|
652
|
-
async upload(path, stream, progress) {
|
|
653
|
-
// Temporarily stop the keepalive as the upload appears to backlog
|
|
654
|
-
// the control packets (ping/pong) at the proxy which can cause issues
|
|
655
|
-
// and a disconnect
|
|
656
|
-
this._stopKeepAlive();
|
|
657
|
-
this.uploading = true;
|
|
658
|
-
await this.command(
|
|
659
|
-
"file",
|
|
660
|
-
"upload",
|
|
661
|
-
{ path },
|
|
662
|
-
(message) => {
|
|
663
|
-
// This is hit after the upload is completed and the agent
|
|
664
|
-
// on the other end sends the reply packet of success/fail
|
|
665
|
-
// Restart the keepalive as the upload buffer should be cleared
|
|
666
|
-
clearTimeout(this._startKeepAliveTimeout);
|
|
667
|
-
this._startKeepAlive();
|
|
668
|
-
this.uploading = false;
|
|
669
|
-
|
|
670
|
-
// Pass back the message to the command() function to prevent
|
|
671
|
-
// blocking or returning an invalid value
|
|
672
|
-
return message;
|
|
673
|
-
},
|
|
674
|
-
(id) => {
|
|
675
|
-
let total = 0;
|
|
676
|
-
|
|
677
|
-
stream.on("data", (data) => {
|
|
678
|
-
this.sendBinaryData(id, data);
|
|
679
|
-
total += data.length;
|
|
680
|
-
if (progress) progress(total);
|
|
681
|
-
});
|
|
682
|
-
stream.on("end", () => {
|
|
683
|
-
this.sendBinaryData(id);
|
|
684
|
-
});
|
|
685
|
-
},
|
|
686
|
-
);
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
/**
|
|
690
|
-
* Downloads the file at the given path from the VM's filesystem. Returns a node ReadableStream.
|
|
691
|
-
* @param {string} path - The path of the file to download.
|
|
692
|
-
* @return {Promise<Readable>}
|
|
693
|
-
* @example
|
|
694
|
-
* const dl = agent.download('/var/tmp/test.log');
|
|
695
|
-
* dl.pipe(fs.createWriteStream('test.log'));
|
|
696
|
-
*/
|
|
697
|
-
download(path) {
|
|
698
|
-
let command;
|
|
699
|
-
const agent = this;
|
|
700
|
-
return new stream.Readable({
|
|
701
|
-
read() {
|
|
702
|
-
if (command) return;
|
|
703
|
-
command = agent.command("file", "download", { path }, (message) => {
|
|
704
|
-
if (!Buffer.isBuffer(message)) return;
|
|
705
|
-
if (message.length === 0) return true;
|
|
706
|
-
this.push(message);
|
|
707
|
-
});
|
|
708
|
-
command.then(() => this.push(null)).catch((err) => this.emit("error", err));
|
|
709
|
-
},
|
|
710
|
-
});
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
/**
|
|
714
|
-
* Reads a packaged app from the provided stream, uploads the app to the VM
|
|
715
|
-
* using {@link Agent#upload}, and installs it using {@link Agent#install}.
|
|
716
|
-
* @param {ReadableStream} stream - The app to install, the stream will be closed after it is uploaded.
|
|
717
|
-
* @param {Agent~progressCallback} installProgress - The callback for install progress information.
|
|
718
|
-
* @param {Agent~uploadProgressCallback} uploadProgress - The callback for file upload progress information.
|
|
719
|
-
* @example
|
|
720
|
-
* await agent.installFile(fs.createReadStream('test.ipa'), (installProgress, installStatus) => {
|
|
721
|
-
* console.log(installProgress, installStatus);
|
|
722
|
-
* });
|
|
723
|
-
*/
|
|
724
|
-
async installFile(stream, installProgress, uploadProgress) {
|
|
725
|
-
let path = await this.tempFile();
|
|
726
|
-
|
|
727
|
-
await this.upload(path, stream, uploadProgress);
|
|
728
|
-
stream.on("close", () => {
|
|
729
|
-
stream.destroy();
|
|
730
|
-
});
|
|
731
|
-
|
|
732
|
-
await this.install(path, installProgress);
|
|
733
|
-
|
|
734
|
-
try {
|
|
735
|
-
await this.stat(path);
|
|
736
|
-
await this.deleteFile(path);
|
|
737
|
-
} catch (err) {
|
|
738
|
-
if (!err.message.includes("Stat of file")) {
|
|
739
|
-
throw err;
|
|
740
|
-
}
|
|
741
|
-
}
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
/**
|
|
745
|
-
* Delete the file at the specified path on the VM's filesystem.
|
|
746
|
-
* @param {string} path - The path of the file on the VM's filesystem to delete.
|
|
747
|
-
* @example
|
|
748
|
-
* await agent.deleteFile('/var/tmp/test.log');
|
|
749
|
-
*/
|
|
750
|
-
async deleteFile(path) {
|
|
751
|
-
const response = await this.command("file", "delete", { path });
|
|
752
|
-
return response.path;
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
/**
|
|
756
|
-
* Change file attributes of the file at the specified path on the VM's filesystem.
|
|
757
|
-
* @param {string} path - The path of the file on the VM's filesystem to delete.
|
|
758
|
-
* @param {Object} attributes - An object whose members and values are the file attributes to change and what to change them to respectively. File attributes path, mode, uid and gid are supported.
|
|
759
|
-
* @return {Promise<CommandResult>}
|
|
760
|
-
* @example
|
|
761
|
-
* await agent.changeFileAttributes(filePath, {mode: 511});
|
|
762
|
-
*/
|
|
763
|
-
async changeFileAttributes(path, attributes) {
|
|
764
|
-
const response = await this.command("file", "modify", { path, attributes });
|
|
765
|
-
return response;
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
/**
|
|
769
|
-
* Subscribe to crash events for the app with the given bundle ID. The callback will be called as soon as the agent finds a new crash log.
|
|
770
|
-
*
|
|
771
|
-
* The callback takes two parameters:
|
|
772
|
-
* - `err`, which is undefined unless an error occurred setting up or waiting for crash logs
|
|
773
|
-
* - `crash`, which contains the full crash report data
|
|
774
|
-
*
|
|
775
|
-
* **Note:** Since this method blocks the communication channel of the
|
|
776
|
-
* agent to wait for crash reports, a new {@link Agent} connection should
|
|
777
|
-
* be created with {@link Instance#newAgent}.
|
|
778
|
-
*
|
|
779
|
-
* @see Agent#disconnect
|
|
780
|
-
*
|
|
781
|
-
* @example
|
|
782
|
-
* const crashListener = await instance.newAgent();
|
|
783
|
-
* crashListener.crashes("com.corellium.demoapp", (err, crashReport) => {
|
|
784
|
-
* if (err) {
|
|
785
|
-
* console.error(err);
|
|
786
|
-
* return;
|
|
787
|
-
* }
|
|
788
|
-
* console.log(crashReport);
|
|
789
|
-
* });
|
|
790
|
-
*/
|
|
791
|
-
async crashes(bundleID, callback) {
|
|
792
|
-
await this.command("crash", "subscribe", { bundleID }, async (message) => {
|
|
793
|
-
const path = message.file;
|
|
794
|
-
const crashReport = await new Promise((resolve) => {
|
|
795
|
-
const stream = this.download(path);
|
|
796
|
-
const buffers = [];
|
|
797
|
-
stream.on("data", (data) => {
|
|
798
|
-
buffers.push(data);
|
|
799
|
-
});
|
|
800
|
-
stream.on("end", () => {
|
|
801
|
-
resolve(Buffer.concat(buffers));
|
|
802
|
-
});
|
|
803
|
-
});
|
|
804
|
-
|
|
805
|
-
await this.deleteFile(path);
|
|
806
|
-
callback(null, crashReport.toString("utf8"));
|
|
807
|
-
});
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
/** Locks the device software-wise.
|
|
811
|
-
* @example
|
|
812
|
-
* await agent.lockDevice();
|
|
813
|
-
*/
|
|
814
|
-
async lockDevice() {
|
|
815
|
-
await this.command("system", "lock");
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
/** Unlocks the device software-wise.
|
|
819
|
-
* @example
|
|
820
|
-
* awaitagent.unlockDevice();
|
|
821
|
-
*/
|
|
822
|
-
async unlockDevice() {
|
|
823
|
-
await this.command("system", "unlock");
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
/** Enables UI Automation.
|
|
827
|
-
* @example
|
|
828
|
-
* await agent.enableUIAutomation();
|
|
829
|
-
*/
|
|
830
|
-
async enableUIAutomation() {
|
|
831
|
-
await this.command("system", "enableUIAutomation");
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
/** Disables UI Automation.
|
|
835
|
-
* @example
|
|
836
|
-
* await agent.disableUIAutomation();
|
|
837
|
-
*/
|
|
838
|
-
async disableUIAutomation() {
|
|
839
|
-
await this.command("system", "disableUIAutomation");
|
|
840
|
-
}
|
|
841
|
-
|
|
842
|
-
/** Checks if SSL pinning is enabled. By default SSL pinning is disabled.
|
|
843
|
-
* @returns {boolean}
|
|
844
|
-
* @example
|
|
845
|
-
* let enabled = await agent.isSSLPinningEnabled();
|
|
846
|
-
* if (enabled) {
|
|
847
|
-
* console.log("enabled");
|
|
848
|
-
* } else {
|
|
849
|
-
* console.log("disabled");
|
|
850
|
-
* }
|
|
851
|
-
*/
|
|
852
|
-
async isSSLPinningEnabled() {
|
|
853
|
-
return (await this.command("system", "isSSLPinningEnabled")).enabled;
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
/** Enables SSL pinning.
|
|
857
|
-
* @example
|
|
858
|
-
* await agent.enableSSLPinning();
|
|
859
|
-
*/
|
|
860
|
-
async enableSSLPinning() {
|
|
861
|
-
await this.command("system", "enableSSLPinning");
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
/** Disables SSL pinning.
|
|
865
|
-
* @example
|
|
866
|
-
* await agent.disableSSLPinning();
|
|
867
|
-
*/
|
|
868
|
-
async disableSSLPinning() {
|
|
869
|
-
await this.command("system", "disableSSLPinning");
|
|
870
|
-
}
|
|
871
|
-
|
|
872
|
-
/** Shuts down the device.
|
|
873
|
-
* @example
|
|
874
|
-
* await agent.shutdown();
|
|
875
|
-
*/
|
|
876
|
-
async shutdown() {
|
|
877
|
-
await this.command("system", "shutdown");
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
async acquireDisableAutolockAssertion() {
|
|
881
|
-
await this.command("system", "acquireDisableAutolockAssertion");
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
async releaseDisableAutolockAssertion() {
|
|
885
|
-
await this.command("system", "releaseDisableAutolockAssertion");
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
/** Connect device to WiFi.
|
|
889
|
-
* @example
|
|
890
|
-
* await agent.connectToWifi();
|
|
891
|
-
*/
|
|
892
|
-
async connectToWifi() {
|
|
893
|
-
await this.command("wifi", "connect");
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
/** Disconnect device from WiFi.
|
|
897
|
-
* @example
|
|
898
|
-
* await agent.disconnectFromWifi();
|
|
899
|
-
*/
|
|
900
|
-
async disconnectFromWifi() {
|
|
901
|
-
await this.command("wifi", "disconnect");
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
/** Get device property. */
|
|
905
|
-
async getProp(property) {
|
|
906
|
-
return await this.command("system", "getprop", { property });
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
/** Get device network infor
|
|
910
|
-
* @example
|
|
911
|
-
* let info = await agent.network();
|
|
912
|
-
* console.log(info);
|
|
913
|
-
*/
|
|
914
|
-
async network() {
|
|
915
|
-
await this.command("system", "network");
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
/**
|
|
919
|
-
* Run frida on the device.
|
|
920
|
-
* Please note that both arguments (pid and name) need to be provided as they are required by the Web UI.
|
|
921
|
-
* @param {integer} pid
|
|
922
|
-
* @param {string} name
|
|
923
|
-
* @return {Promise<CommandResult>}
|
|
924
|
-
* @example
|
|
925
|
-
* await agent.runFrida(449, 'keystore');
|
|
926
|
-
*/
|
|
927
|
-
async runFrida(pid, name) {
|
|
928
|
-
return await this.command("frida", "run-frida", {
|
|
929
|
-
target_pid: pid.toString(),
|
|
930
|
-
target_name: name.toString(),
|
|
931
|
-
});
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
/**
|
|
935
|
-
* Run frida-ps on the device and return the command's output.
|
|
936
|
-
* @return {Promise<FridaPsResult>}
|
|
937
|
-
* @example
|
|
938
|
-
* let procList = await agent.runFridaPs();
|
|
939
|
-
* let lines = procList.output.trim().split('\n');
|
|
940
|
-
* lines.shift();
|
|
941
|
-
* lines.shift();
|
|
942
|
-
* for (const line of lines) {
|
|
943
|
-
* const [pid, name] = line.trim().split(/\s+/);
|
|
944
|
-
* console.log(pid, name);
|
|
945
|
-
* }
|
|
946
|
-
*/
|
|
947
|
-
async runFridaPs() {
|
|
948
|
-
return await this.command("frida", "run-frida-ps");
|
|
949
|
-
}
|
|
950
|
-
|
|
951
|
-
/**
|
|
952
|
-
* Run frida-kill on the device.
|
|
953
|
-
* @return {Promise<CommandResult>}
|
|
954
|
-
* @example
|
|
955
|
-
* await agent.runFridaKill();
|
|
956
|
-
*/
|
|
957
|
-
async runFridaKill() {
|
|
958
|
-
return await this.command("frida", "run-frida-kill");
|
|
959
|
-
}
|
|
960
|
-
}
|
|
961
|
-
|
|
962
|
-
module.exports = Agent;
|