narvy-cli 1.2.0__tar.gz → 1.2.1__tar.gz
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.
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/CHANGELOG.md +24 -0
- {narvy_cli-1.2.0/narvy_cli.egg-info → narvy_cli-1.2.1}/PKG-INFO +6 -3
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/README.md +5 -2
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/__init__.py +1 -1
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/__init__.py +1 -1
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/checks.py +228 -110
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/checks.py +120 -60
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/model.py +17 -4
- {narvy_cli-1.2.0 → narvy_cli-1.2.1/narvy_cli.egg-info}/PKG-INFO +6 -3
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/LICENSE +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/MANIFEST.in +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/SECURITY.md +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/__main__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android/source_analyzer.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android/split_bundle.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android_rule_context.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/apk_memory_preflight.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/auth.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ci_templates/bitbucket.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ci_templates/github.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ci_templates/gitlab.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/cloud/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/cloud/aws_scan.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/comment_filter.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/crypto_taint_lite.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/decompiler.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/doctor.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/audit.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/host_knowledge.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/lynis_bootstrap.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/lynis_parser.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/narvy_checks.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/report.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/ssh_exec.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/binary_analyzer.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/plist_checks.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/source_analyzer.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/third_party_filter.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/trust_all_context.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/main.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/native_hardening.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/own_reports.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/pathhint.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/pathnorm.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/proc.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/reporter.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rule_engine.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/config.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/crypto.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/secrets.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/storage.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/webview.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/crypto.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/network.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/secrets.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/storage.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/webview.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios_swift.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/go.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/java.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/javascript.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/kotlin.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/php.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/python.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/ruby.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/rust.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/secrets.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/secrets_supplement.yml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/android_deps.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/ios_deps.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/osv_client.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/web_deps.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/scope_config.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/secret_output.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/secret_presentation.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/secret_value_grade.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/semgrep_engine.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/stack_protector_evidence.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/__main__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/analyze.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/arsc.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/axml.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/elf.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/loader.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/protoxml.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/xmlmodel.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/archive.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/cli.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/data/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/data/apple.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/data/play.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/loader.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/macho.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/telemetry.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/third_party_filter.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/uploader.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/weak_prng_context.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/__init__.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/nuclei_binary.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/scan_blocklist.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/scanner.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/source_analyzer.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/ssrf_guard.py +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/SOURCES.txt +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/dependency_links.txt +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/entry_points.txt +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/requires.txt +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/top_level.txt +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/pyproject.toml +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/setup.cfg +0 -0
- {narvy_cli-1.2.0 → narvy_cli-1.2.1}/setup.py +0 -0
|
@@ -5,6 +5,30 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.2.1]
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- `narvy store-check`: a failed check was titled with the wording of the
|
|
13
|
+
rule it failed, so the terminal printed contradictions such as
|
|
14
|
+
`[BLOCKER] PLAY-TARGET-SDK: Target API level meets Google Play's current
|
|
15
|
+
requirement`. Every check now has a title per status, in English and
|
|
16
|
+
French, citing the value read when it helps: `Target API 33 is below
|
|
17
|
+
Google Play's requirement (API 36)` on a failure, `Target API 36 meets
|
|
18
|
+
Google Play's requirement (API 36)` on a pass, `Target API level not
|
|
19
|
+
determined (targetSdkVersion unresolved)` when the binary does not settle
|
|
20
|
+
it. Check ids, statuses, severities, messages and exit codes are
|
|
21
|
+
unchanged.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- `narvy store-check --json`: `title` keeps its shape (`{"en", "fr"}`) and
|
|
26
|
+
now describes the result for its status. The rule text that `title`
|
|
27
|
+
carried in 1.2.0 moves to a new `requirement` field (`{"en", "fr"}`), the
|
|
28
|
+
same for every status. `tool_version` of the store-check report is
|
|
29
|
+
`0.2.0`. A consumer that used `title` as a fixed label per check id
|
|
30
|
+
should read `requirement` instead.
|
|
31
|
+
|
|
8
32
|
## [1.2.0]
|
|
9
33
|
|
|
10
34
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: narvy-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Free, local SAST scanner for Android, iOS, and polyglot web/backend source - plus passive web, host-audit, and cloud-posture scanning.
|
|
5
5
|
Author: Narvy
|
|
6
6
|
License: Apache-2.0
|
|
@@ -269,8 +269,11 @@ narvy store-check MyApp.ipa --as-of 2027-02-01 # evaluate a future deadline
|
|
|
269
269
|
Each check reports `fail` (severity `blocker`, `warning` or `info`),
|
|
270
270
|
`pass`, `not_determined` (the binary does not settle the question) or
|
|
271
271
|
`not_applicable`, with the evidence read from the file and the official
|
|
272
|
-
page the rule comes from.
|
|
273
|
-
|
|
272
|
+
page the rule comes from. In `--json`, `title` describes the result for its
|
|
273
|
+
status and cites the value read ("Target API 33 is below Google Play's
|
|
274
|
+
requirement (API 36)"), and `requirement` holds the rule itself ("Target API
|
|
275
|
+
level meets Google Play's current requirement"), both in English and French.
|
|
276
|
+
Store values and their sources live in `narvy/store_check/data/`.
|
|
274
277
|
|
|
275
278
|
It runs offline: no network call, no telemetry event, nothing written to
|
|
276
279
|
disk (the archive is read in memory). It does not check store listing
|
|
@@ -236,8 +236,11 @@ narvy store-check MyApp.ipa --as-of 2027-02-01 # evaluate a future deadline
|
|
|
236
236
|
Each check reports `fail` (severity `blocker`, `warning` or `info`),
|
|
237
237
|
`pass`, `not_determined` (the binary does not settle the question) or
|
|
238
238
|
`not_applicable`, with the evidence read from the file and the official
|
|
239
|
-
page the rule comes from.
|
|
240
|
-
|
|
239
|
+
page the rule comes from. In `--json`, `title` describes the result for its
|
|
240
|
+
status and cites the value read ("Target API 33 is below Google Play's
|
|
241
|
+
requirement (API 36)"), and `requirement` holds the rule itself ("Target API
|
|
242
|
+
level meets Google Play's current requirement"), both in English and French.
|
|
243
|
+
Store values and their sources live in `narvy/store_check/data/`.
|
|
241
244
|
|
|
242
245
|
It runs offline: no network call, no telemetry event, nothing written to
|
|
243
246
|
disk (the archive is read in memory). It does not check store listing
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""narvy-store-check: deterministic App Store / Google Play readiness checks."""
|
|
2
|
-
__version__ = "0.
|
|
2
|
+
__version__ = "0.2.0"
|