Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@ env:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [3.9, '3.10', '3.11']
python-version: ['3.10', '3.11', '3.14']

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install tox semgrep==0.117.0
pip install tox semgrep==1.168.0

- name: Lint
run: |
Expand All @@ -38,7 +38,7 @@ jobs:

- name: Semgrep validate rules
run: |
semgrep --validate --strict --config=./mobsfscan/rules/semgrep/
semgrep --metrics=off --validate --strict --config=./mobsfscan/rules/semgrep/

- name: Semgrep tests
run: |
Expand Down
4 changes: 2 additions & 2 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ verify_ssl = true
[packages]
colorama = ">=0.4.5"
libsast = ">=3.1.5"
semgrep = "==1.86.0"
semgrep = "==1.168.0"
sarif-om = ">=1.0.4"
jschema-to-python = ">=1.2.3"
tabulate = ">=0.8.10"
xmltodict = ">=0.13.0"

[requires]
python_version = "3.9"
python_version = "3.10"
1,719 changes: 1,072 additions & 647 deletions Pipfile.lock

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Made with ![Love](https://cloud.githubusercontent.com/assets/4301109/16754758/82

[![PyPI version](https://badge.fury.io/py/mobsfscan.svg)](https://badge.fury.io/py/mobsfscan)
[![License](https://img.shields.io/:license-lgpl3.0+-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0.en.html)
[![python](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![platform](https://img.shields.io/badge/platform-osx%2Flinux-green.svg)](https://github.com/MobSF/mobsfscan/)
[![Build](https://github.com/MobSF/mobsfscan/workflows/Build/badge.svg)](https://github.com/MobSF/mobsfscan/actions?query=workflow%3ABuild)

Expand All @@ -25,7 +25,7 @@ If you liked mobsfscan and find it useful, please consider donating.

`pip install mobsfscan`

Requires Python 3.7+
Requires Python 3.10+

## Command Line Options

Expand Down Expand Up @@ -327,7 +327,7 @@ version: 2.1
jobs:
mobsfscan:
docker:
- image: cimg/python:3.9.6
- image: cimg/python:3.10
steps:
- checkout
- run:
Expand Down
118 changes: 68 additions & 50 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,58 +1,76 @@
annotated-types==0.7.0
attrs==24.2.0
billiard==4.2.1
anyio==4.14.2
attrs==26.1.0
billiard==4.2.4
boltons==21.0.0
bracex==2.5.post1
certifi==2024.8.30
charset-normalizer==3.4.0
click==8.1.7
click-option-group==0.5.6
bracex==3.0
certifi==2026.6.17
cffi==2.1.0
charset-normalizer==3.4.9
click==8.1.8
click-option-group==0.5.9
colorama==0.4.6
defusedxml==0.7.1
Deprecated==1.2.14
cryptography==49.0.0
exceptiongroup==1.2.2
face==24.0.0
glom==22.1.0
googleapis-common-protos==1.66.0
idna==3.10
importlib_metadata==7.1.0
face==26.0.1
glom==25.12.0
googleapis-common-protos==1.75.0
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
httpx-sse==0.4.3
idna==3.18
importlib-metadata==8.7.1
jschema-to-python==1.2.3
jsonpickle==4.0.0
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
libsast==3.1.5
markdown-it-py==3.0.0
jsonpickle==4.1.2
jsonschema==4.25.1
jsonschema-specifications==2025.9.1
libsast==3.1.6
markdown-it-py==4.2.0
mcp==1.23.3
mdurl==0.1.2
opentelemetry-api==1.25.0
opentelemetry-exporter-otlp-proto-common==1.25.0
opentelemetry-exporter-otlp-proto-http==1.25.0
opentelemetry-instrumentation==0.46b0
opentelemetry-instrumentation-requests==0.46b0
opentelemetry-proto==1.25.0
opentelemetry-sdk==1.25.0
opentelemetry-semantic-conventions==0.46b0
opentelemetry-util-http==0.46b0
packaging==24.2
pbr==6.1.0
peewee==3.17.8
protobuf==4.25.5
pydantic==2.8.2
pydantic_core==2.20.1
Pygments==2.18.0
PyYAML==6.0.2
referencing==0.35.1
requests==2.32.3
rich==13.9.4
rpds-py==0.21.0
ruamel.yaml==0.17.40
ruamel.yaml.clib==0.2.12
opentelemetry-api==1.37.0
opentelemetry-exporter-otlp-proto-common==1.37.0
opentelemetry-exporter-otlp-proto-http==1.37.0
opentelemetry-instrumentation==0.58b0
opentelemetry-instrumentation-requests==0.58b0
opentelemetry-instrumentation-threading==0.58b0
opentelemetry-proto==1.37.0
opentelemetry-sdk==1.37.0
opentelemetry-semantic-conventions==0.58b0
opentelemetry-util-http==0.58b0
packaging==26.2
pbr==7.0.3
peewee==3.19.0
protobuf==6.33.6
pycparser==3.0
pydantic==2.13.4
pydantic-core==2.46.4
pydantic-settings==2.14.2
pygments==2.20.0
pyjwt[crypto]==2.13.0
python-dotenv==1.2.2
python-multipart==0.0.32
pyyaml==6.0.3
referencing==0.37.0
requests==2.34.2
rich==15.0.0
rpds-py==0.30.0
ruamel.yaml==0.19.1
ruamel.yaml.clib==0.2.15
sarif-om==1.0.4
semgrep==1.86.0
tabulate==0.9.0
tomli==2.0.2
typing_extensions==4.12.2
urllib3==2.2.3
semantic-version==2.10.0
semgrep==1.168.0
setuptools==83.0.0
sse-starlette==3.4.5
starlette==1.3.1
tabulate==0.10.0
tomli==2.4.1
typing-extensions==4.16.0
typing-inspection==0.4.2
urllib3==2.7.0
uvicorn==0.51.0
wcmatch==8.5.2
wrapt==1.16.0
xmltodict==0.14.2
zipp==3.21.0
wrapt==1.17.3
xmltodict==1.0.4
zipp==4.1.0
10 changes: 8 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,12 @@ def get_version(rel_path):
'Intended Audience :: Developers',
('License :: OSI Approved :: GNU Lesser '
'General Public License v3 or later (LGPLv3+)'),
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14',
],
packages=find_packages(include=[
'mobsfscan', 'mobsfscan.*',
Expand All @@ -45,13 +50,14 @@ def get_version(rel_path):
],
},
include_package_data=True,
python_requires='>=3.10',
url='https://github.com/MobSF/mobsfscan',
long_description=read('README.md'),
long_description_content_type='text/markdown',
install_requires=[
'colorama>=0.4.5',
'libsast>=3.1.5',
'semgrep==1.86.0',
'semgrep==1.168.0',
'sarif-om>=1.0.4',
'jschema-to-python>=1.2.3',
'tabulate>=0.8.10',
Expand Down
2 changes: 2 additions & 0 deletions tests/assets/rules/semgrep/network/accept_self_signed.java
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ public boolean verify(String s, SSLSession sslSession) {

import org.apache.http.conn.ssl.SSLSocketFactory;
public class MySSLSocketFactory extends SSLSocketFactory {
// ruleid:accept_self_signed_certificate
SSLContext sslContext = SSLContext.getInstance("TLS");
public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);
Expand Down Expand Up @@ -262,6 +263,7 @@ public void onSuccess(String response){


public class MySSLSocketFactory extends SSLSocketFactory {
// ruleid:accept_self_signed_certificate
SSLContext sslContext = SSLContext.getInstance("TLS");

public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
Expand Down
5 changes: 3 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py37, py38, py39
envlist = py310, py311, py314
skipsdist = True
toxworkdir=.tox-mobsf

Expand Down Expand Up @@ -32,6 +32,7 @@ deps =
flake8-self
pep8-naming
radon
setuptools<81
commands =
autopep8 --recursive --in-place setup.py mobsfscan tests
flake8 setup.py mobsfscan tests
Expand Down Expand Up @@ -101,4 +102,4 @@ ignore =
R701,
# Too complex
radon_max_cc = 10
max-line-length = 88
max-line-length = 88