Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
482b059
v1.5 dev
r4ulcl Oct 13, 2023
d9e3de2
Minor flake8 changes
r4ulcl Oct 13, 2023
ed802a9
codecov workflow
r4ulcl Oct 13, 2023
137e56f
Fix name
r4ulcl Oct 13, 2023
97bb4d0
Remove old function, update unit_test
r4ulcl Oct 13, 2023
235cb9b
Test with real data
r4ulcl Oct 21, 2023
b7d0360
Add verbose to get_vendor
r4ulcl Oct 21, 2023
0f79b23
Add branch to test real data
r4ulcl Oct 21, 2023
dc0eca9
Merge pull request #30 from r4ulcl/dev
r4ulcl Oct 21, 2023
13d9897
Install pytest, remove test db
r4ulcl Oct 21, 2023
fb5726d
Add test using real data, docker compile hcxtools
r4ulcl Oct 22, 2023
34cf132
Fix alert banner
r4ulcl Oct 22, 2023
d499fe7
Use specific hcxtools version, fix dev docker CICD
r4ulcl Oct 22, 2023
9214650
Install dependencies if updated
r4ulcl Oct 22, 2023
08cf31a
Fix hcxpcapngtool error
r4ulcl Oct 22, 2023
b97ab5f
Add unit test for handshake, fix hashcat enter
r4ulcl Oct 22, 2023
80c388e
Add check after insert data in unit test
r4ulcl Oct 22, 2023
bdf1d7a
Merge pull request #31 from r4ulcl/Test-with-real-data
r4ulcl Oct 22, 2023
a7bb677
Merge branch 'dev' of https://github.com/r4ulcl/wifi_db into dev
r4ulcl Oct 22, 2023
4cdc42b
Fix double subprocess
r4ulcl Oct 22, 2023
3fa7b43
Set full hcxpcapngtool path
r4ulcl Oct 22, 2023
279fa8a
set full path python3
r4ulcl Oct 22, 2023
c898e78
Hide hcxpcapngtool output
r4ulcl Oct 22, 2023
88ace16
Dont exit if no git installed
r4ulcl Oct 22, 2023
29cccde
Docker fix
r4ulcl Oct 22, 2023
759a8a2
Flake8 fixes
r4ulcl Oct 22, 2023
1f64c33
Fix handshake test error?
r4ulcl Oct 22, 2023
730d9d1
Install using venv README, fix 'unsecure' unittest
r4ulcl Oct 23, 2023
2183587
Bump ftfy from 6.1.1 to 6.1.3
dependabot[bot] Nov 27, 2023
21a050a
Merge pull request #32 from r4ulcl/dependabot/pip/ftfy-6.1.3
r4ulcl Nov 27, 2023
3bd5077
Test GitHub Container Registryin dev
r4ulcl Dec 2, 2023
f195b3f
add username
r4ulcl Dec 2, 2023
e8dbbef
Test dev new mode
r4ulcl Dec 2, 2023
3daf4f0
Fix dev workflow tabs
r4ulcl Dec 2, 2023
55ab8a4
Bump ftfy from 6.1.1 to 6.1.3
dependabot[bot] Dec 4, 2023
5aa84ef
ghcr.io docker
r4ulcl Dec 6, 2023
31dfc5e
Test main GitHub Packages
r4ulcl Dec 6, 2023
cf04824
Merge pull request #33 from r4ulcl/dependabot/pip/ftfy-6.1.3
r4ulcl Dec 6, 2023
c96d620
Test Publish to Registry
r4ulcl Dec 6, 2023
d06c7cb
test 2
r4ulcl Dec 6, 2023
10bffda
test 3
r4ulcl Dec 6, 2023
e8dc363
test 4
r4ulcl Dec 6, 2023
c0c36f6
test 4 fix indent
r4ulcl Dec 6, 2023
3e23a0f
test 5
r4ulcl Dec 6, 2023
f98507e
test Get latest tag
r4ulcl Dec 6, 2023
a9e66c6
test Fetch Tags
r4ulcl Dec 6, 2023
ca34c22
Build and push Docker image test
r4ulcl Dec 6, 2023
a6a1275
Only latest, not version
r4ulcl Dec 6, 2023
ef02686
docker/build-push-action
r4ulcl Dec 6, 2023
cb36d90
Fix id
r4ulcl Dec 6, 2023
94bd165
Add is_git_repo before try to update
r4ulcl Dec 10, 2023
e75df11
Fix is_git_repo
r4ulcl Dec 11, 2023
65aee80
Remove false cloaked
r4ulcl Dec 11, 2023
69bed17
Update workflows, dev and master
r4ulcl Dec 12, 2023
556c791
style=flat in README
r4ulcl Feb 9, 2024
8f017db
Fix dev github.actor
r4ulcl Feb 9, 2024
bf354be
v5
r4ulcl Feb 9, 2024
ef87446
Fix Docker Image Dev errors
r4ulcl Feb 9, 2024
4b15b45
Fix file path
r4ulcl Feb 9, 2024
fca2ac3
Update workflow master
r4ulcl Feb 9, 2024
6c3019d
Test all platforms
r4ulcl Feb 9, 2024
52dd8e8
platforms amd64 and arm
r4ulcl Feb 9, 2024
5f61c04
Remove linux/arm/v7
r4ulcl Feb 9, 2024
ab7fbfd
platforms: linux/amd64,linux/arm64 in pro
r4ulcl Feb 9, 2024
e1964d5
Bump ftfy from 6.1.1 to 6.1.3
r4ulcl Feb 10, 2024
1e95be3
Add timeout=5 in requests.get
r4ulcl Mar 8, 2024
90c4c1a
Update Dockerfile, use no install recommends and replace cd with work…
r4ulcl Mar 9, 2024
c591311
Version to 1.5.1
r4ulcl Mar 9, 2024
2a46af7
Merge branch 'master' into dev
r4ulcl Mar 9, 2024
a52d955
Set pip==20.0.2
r4ulcl Mar 9, 2024
07d44d8
Test github.repository to generic workflow
r4ulcl Mar 9, 2024
ce04dc6
Bump pytest from 7.4.2 to 8.1.1
dependabot[bot] Mar 11, 2024
a708c98
Bump ftfy from 6.1.3 to 6.2.0
dependabot[bot] Mar 18, 2024
3a534be
Update requirements.txt
r4ulcl Aug 25, 2024
e18baea
Update WiFiChallenge Lab URL
r4ulcl Nov 29, 2024
d631337
add EAP-MD5
r4ulcl Oct 24, 2025
12f2fb8
Added extract AP certificate v1.6
r4ulcl Jun 17, 2026
423617d
add EAP method types lookup and AP/client X.509 certificate table
r4ulcl Jun 22, 2026
7c05129
fixed multiple errors detected in security scan
r4ulcl Jun 22, 2026
2bda128
Fix Codacy issues: security and code-quality findings
r4ulcl Jun 22, 2026
1508d1f
Fix Codacy issues: SQL injection, action pinning, Docker, deps
r4ulcl Jun 22, 2026
41abe2a
Docs: use a Python venv for manual installation
r4ulcl Jun 22, 2026
2b5783f
Add cert/security/EAP-MD5/probe extraction, MFP fix, and bug fixes
r4ulcl Jun 22, 2026
fa1abeb
Refactor for complexity/duplication, bump CVE deps, fix Docker build
r4ulcl Jun 22, 2026
945b456
Fix asyncio child-watcher crash on Python 3.14; cut complexity
r4ulcl Jun 22, 2026
dbc9fba
Fix firstTimeSeen merge so a 0 placeholder is replaced; harden asynci…
r4ulcl Jun 22, 2026
69b8774
Test the built image instead of gating the build; ship a .dockerignore
r4ulcl Jun 22, 2026
901fda9
Merge Security and WPS 1:1 attribute tables into AP
r4ulcl Jun 22, 2026
3f2dd46
CI: pin docker setup-qemu/buildx actions to full commit SHAs
r4ulcl Jun 22, 2026
ae82cb9
Merge ProbeFingerprint 1:1 detail into the Probe table
r4ulcl Jun 22, 2026
943faa5
Update mac-vendors-export.csv
r4ulcl Jun 24, 2026
c7f9eb5
changes for v1.6.0, added x.509 certificate, EAP-MD5 and fix MFP
r4ulcl Jun 29, 2026
afcfa73
Fix README LoC etc
r4ulcl Jun 29, 2026
d41e7d0
Update README header and TOC
r4ulcl Jun 29, 2026
bfc6cea
Optimize docker test
r4ulcl Jun 29, 2026
f41df17
Fix Codacy issues: cut complexity, drop bare except swallows
r4ulcl Jun 29, 2026
9c23936
update README make bind-mounted db.SQLITE writable for non-root cont…
r4ulcl Jun 29, 2026
64fd319
Add git to the runtime image for the self-update check
r4ulcl Jun 29, 2026
863ecd2
Fix inflated WPS error count and SSID-dependent 2.0 detection
r4ulcl Jun 29, 2026
0b07499
Fix empty handshake hashcat hash (FOREIGN KEY failure in setHashcat)
r4ulcl Jun 30, 2026
9290420
Update future message text on update
r4ulcl Jun 30, 2026
4071135
Fix always-empty Certificate table (EAP-TLS reassembly)
r4ulcl Jun 30, 2026
0d87816
Fix testing error
r4ulcl Jun 30, 2026
19b31c5
Quiet parse noise: stop miscounting EAP frames, fix datetime deprecat…
r4ulcl Jun 30, 2026
7b9a8cf
Cut cyclomatic complexity below 8 by extracting helpers (Codacy)
r4ulcl Jun 30, 2026
2309a67
Fix Codacy complexity 2
r4ulcl Jun 30, 2026
4b7dd11
Split files to organize
r4ulcl Jun 30, 2026
c0c0407
Fix Codacy Pyflakes errors: explicit imports instead of star re-exports
r4ulcl Jun 30, 2026
5bf15f6
Fix always-empty WPS and Max BSSID Indicator AP columns
r4ulcl Jun 30, 2026
82c8626
Add human-readable decode of WPS/RSN bitmask columns
r4ulcl Jun 30, 2026
648d1fe
Remove string-formatted SQL from column migration
r4ulcl Jun 30, 2026
a2a1d31
Fx File utils/wifi_db_aircrack.py has 1256 non-comment lines of code
r4ulcl Jul 1, 2026
d70891e
Fix duplicate code
r4ulcl Jul 1, 2026
afecfef
update tests
r4ulcl Jul 1, 2026
612190f
Update test 2
r4ulcl Jul 1, 2026
b108806
Reduce complexity
r4ulcl Jul 1, 2026
eb09070
Reduce complexity of cap_common and unit_test below the Codacy limit
r4ulcl Jul 1, 2026
7f91b38
Call asyncio_shim.install() explicitly to avoid unused-import warning
r4ulcl Jul 1, 2026
9e139fe
Move test to specific folder
r4ulcl Jul 1, 2026
45921f2
Update mac-vendor
r4ulcl Jul 1, 2026
edc888a
add coverage to test_docker
r4ulcl Jul 1, 2026
f33c41a
Fix coverage.xml PermissionError in test_docker.sh on CI
r4ulcl Jul 1, 2026
814db38
Upload coverage to Codacy from CI so the dashboard stops going stale
r4ulcl Jul 2, 2026
00d181b
Fix 'binascii' imported but unused (F401) and Redefining built-in 'type'
r4ulcl Jul 2, 2026
9e59cef
Reduce test_eap_parsers.py complexity below the Codacy limit
r4ulcl Jul 2, 2026
90ce372
Reduce file complexity below the Codacy limit by splitting modules
r4ulcl Jul 2, 2026
980c316
Drop re-export shims flagged as unused imports by Codacy
r4ulcl Jul 2, 2026
27b9199
Exclude empty utils/__init__.py from coverage so Codacy stops showing 0%
r4ulcl Jul 2, 2026
af14b0c
Add gap tests to reach 100% branch coverage across parsers and DB hel…
r4ulcl Jul 3, 2026
0f2c99e
Update mac-vendor
r4ulcl Jul 3, 2026
5fbea1b
Deduplicate test helpers to cut clones and file complexity
r4ulcl Jul 3, 2026
a8f49bb
Bump requests from 2.31.0 to 2.34.2
dependabot[bot] Jul 6, 2026
2d38929
Bump pytest from 7.4.2 to 9.1.1
dependabot[bot] Jul 6, 2026
a870595
Bump nest-asyncio from 1.5.8 to 1.6.0
dependabot[bot] Jul 6, 2026
c0ffc77
Merge branch 'dev' into dependabot/pip/pytest-9.1.1
r4ulcl Jul 6, 2026
47b0861
Merge branch 'dev' into dependabot/pip/requests-2.34.2
r4ulcl Jul 6, 2026
fc06479
Merge pull request #64 from r4ulcl/dependabot/pip/requests-2.34.2
r4ulcl Jul 6, 2026
a53e637
Merge branch 'dev' into dependabot/pip/nest-asyncio-1.6.0
r4ulcl Jul 6, 2026
852e311
Merge pull request #66 from r4ulcl/dependabot/pip/nest-asyncio-1.6.0
r4ulcl Jul 6, 2026
ccfdc7a
Merge branch 'dev' into dependabot/pip/pytest-9.1.1
r4ulcl Jul 6, 2026
8fae563
Merge pull request #65 from r4ulcl/dependabot/pip/pytest-9.1.1
r4ulcl Jul 6, 2026
3ee5506
Update full changelog
r4ulcl Jul 8, 2026
28f523b
Summarize changelog
r4ulcl Jul 8, 2026
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
29 changes: 29 additions & 0 deletions .codacy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
# Codacy configuration for wifi_db
#
# Exclusions below remove noise and false positives so the dashboard reflects
# real issues only.
exclude_paths:
# Local virtualenv committed in the repo: not project source code.
- 'wifi_db_env/**'
# Generated / cache directories.
- '__pycache__/**'
- '**/__pycache__/**'
- '.pytest_cache/**'
# Empty package marker (0 statements). Codacy renders its 0/0 coverage as a
# misleading 0%; there is nothing to analyse or cover, so exclude it.
- 'utils/__init__.py'
# Vendor data dump (OUI MAC vendor list), not hand-written code.
- 'utils/mac-vendors-export.csv'
# pip requirements file, not Python. Codacy routes it to Bandit, which
# AST-parses it and fails on the version specifiers ("syntax error while
# parsing AST from file", e.g. `cryptography>=48.0.1`). Dependency/CVE
# scanning is a separate Codacy feature and is unaffected by this exclusion.
- 'requirements.txt'
# Static, trusted SQLite schema/view definitions. These are plain SQLite DDL
# shipped with the project and executed via sqlite3.executescript(). Codacy's
# SQL analysis parses them with a SQL Server (T-SQL) dialect, which produces
# false positives ("syntax error near NOT/CONSTRAINT", "SET ANSI_NULLS",
# "queries must target RAC_* tables", etc.) that do not apply to SQLite.
- 'utils/view.sql'
- 'utils/wifi_db_database.sql'
32 changes: 32 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Coverage.py configuration. `pytest --cov` (pytest-cov) reads this and, with
# --cov-report=xml, writes a Cobertura coverage.xml -- the format Codacy expects
# for Python (https://docs.codacy.com/coverage-reporter/).
[run]
branch = True
# Store repo-root-relative file paths (utils/foo.py, wifi_db.py) instead of
# absolute ones, so Codacy can match the report to the repository files.
relative_files = True
# Measure from the repo root so paths stay repo-relative, then omit everything
# that is not application code (tests, helper scripts, the local virtualenv).
source = .
omit =
tests/*
scripts/*
conftest.py
wifi_db_env/*
*/__pycache__/*
# Empty package marker: 0 statements. coverage.py calls that vacuously
# 100%, but Codacy computes covered/total and renders 0/0 as a misleading
# 0%, so keep it out of the report entirely.
utils/__init__.py

[report]
show_missing = True
# Non-executable lines that should never count against coverage.
exclude_lines =
pragma: no cover
if __name__ == .__main__.:
raise NotImplementedError

[xml]
output = coverage.xml
44 changes: 44 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Keep the build context (and the COPY layer) small. Anything not needed to
# run wifi_db inside the container is excluded here. Tests are not run during
# the build; they run against the finished image (see test_docker.sh).

# VCS / CI
.git
.github
.gitignore

# Local virtualenv and Python caches
wifi_db_env
__pycache__
**/__pycache__
*.pyc
.pytest_cache

# Coverage artifacts (regenerated inside the image when running the suite)
.coverage
.coverage.*
coverage.xml
.coverage_out.*
htmlcov

# Test fixtures: not baked into the image. The release pipeline / test_docker.sh
# mounts this directory into the built container to run the suite against it.
test_data

# README image assets and the roadmap/changelog are not needed at runtime.
# README.md itself is kept: the test suite hashes it as a sample input file.
resources
ROADMAP*.md
CHANGELOG.md

# Local databases / editor / tooling
*.sqlite
*.SQLITE
*.sqlite-journal
.vscode
.codacy.yaml
.flake8

# Docker files themselves
Dockerfile
.dockerignore
54 changes: 43 additions & 11 deletions .github/workflows/docker-image-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,45 +10,77 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v1

# v3 ships a recent QEMU; old QEMU emulation crashes arm64 apt-get
# (exit code 100). Required for the linux/arm64 build below.
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0

- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

# Build the amd64 image locally first and run the test suite against it.
# The image is test-free; test_docker.sh mounts the fixtures and runs
# pytest with the image's own Python/tshark/hcxtools. Nothing is pushed
# until this passes, so a failing build never reaches a registry.
- name: Build image for testing
uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a # v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
load: true
push: false
tags: wifi_db:test

- name: Test the built image
run: |
chmod +x ./test_docker.sh
./test_docker.sh wifi_db:test

# test_docker.sh leaves the Cobertura report at ./coverage.xml. Upload it
# so the Codacy dashboard reflects the coverage of the code just built,
# instead of freezing on whatever was last sent by hand. This workflow
# only runs on push to dev, so the CODACY_PROJECT_TOKEN secret is always
# available here.
- name: Upload coverage to Codacy
uses: codacy/codacy-coverage-reporter-action@89d6c85cfafaec52c72b6c5e8b2878d33104c699 # v1.3.0
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
coverage-reports: coverage.xml

# manager docker
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
with:
images: ${{ github.actor }}/wifi_db
images: ${{ github.repository }}

- name: Login to DockerHub
uses: docker/login-action@v1
uses: docker/login-action@dd4fa0671be5250ee6f50aedf4cb05514abda2c7 # v1
with:
username: ${{ github.actor }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push docker
id: docker_build
uses: docker/build-push-action@v2
uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a # v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/wifi_db:dev
tags: ${{ github.repository }}:dev

- name: Login to GitHub Container Registry
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Build and push docker
id: docker_build_ghcr
uses: docker/build-push-action@v5
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.actor }}/wifi_db:dev
tags: ghcr.io/${{ github.repository }}:dev
52 changes: 42 additions & 10 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,61 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v1

# v3 ships a recent QEMU; old QEMU emulation crashes arm64 apt-get
# (exit code 100). Required for the linux/arm64 build below.
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca # v3.9.0

- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

# Build the amd64 image locally first and run the test suite against it.
# The image is test-free; test_docker.sh mounts the fixtures and runs
# pytest with the image's own Python/tshark/hcxtools. Nothing is pushed
# until this passes, so a failing build never reaches a registry.
- name: Build image for testing
uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a # v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
load: true
push: false
tags: wifi_db:test

- name: Test the built image
run: |
chmod +x ./test_docker.sh
./test_docker.sh wifi_db:test

# test_docker.sh leaves the Cobertura report at ./coverage.xml. Upload it
# so the Codacy dashboard reflects the coverage of the code just built,
# instead of freezing on whatever was last sent by hand. This workflow
# only runs on push to master / tags, so the CODACY_PROJECT_TOKEN secret
# is always available here.
- name: Upload coverage to Codacy
uses: codacy/codacy-coverage-reporter-action@89d6c85cfafaec52c72b6c5e8b2878d33104c699 # v1.3.0
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
coverage-reports: coverage.xml

# manager docker
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
with:
images: ${{ github.actor }}/wifi_db
images: ${{ github.repository }}

- name: Login to DockerHub
uses: docker/login-action@v1
uses: docker/login-action@dd4fa0671be5250ee6f50aedf4cb05514abda2c7 # v1
with:
username: ${{ github.actor }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push docker
id: docker_build
uses: docker/build-push-action@v2
uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a # v2
with:
context: .
file: ./Dockerfile
Expand All @@ -48,11 +80,11 @@ jobs:

- name: Build and push github
id: docker_build_ghcr
uses: docker/build-push-action@v5
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.actor }}/wifi_db:latest, ghcr.io/${{ steps.meta.outputs.tags }}
tags: ghcr.io/${{ github.repository }}:latest, ghcr.io/${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
4 changes: 2 additions & 2 deletions .github/workflows/sync_readme.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2

- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v2
uses: peter-evans/dockerhub-description@616d1b63e806b630b975af3b4fe3304307b20f40 # v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
Expand Down
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,11 @@ __pycache__/
.flake8
.vscode/
*.sqlite-journal

# Coverage artifacts (generated by pytest --cov / Coverage.py)
.coverage
.coverage.*
coverage.xml
.coverage_out.*
htmlcov/
.pytest_cache/
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Changelog

## v1.6.0

### Added
- Per-AP RSN/WPA security breakdown (WPA version, AKM suites, pairwise/group ciphers, enterprise flag, PMF) in a new `SecurityAP` view, with human-readable decodes of the `wps_config_methods` and `rsn_capabilities` bitmasks (e.g. `0x00c0` → `MFPR, MFPC`) stored beside the raw values; existing databases migrate automatically.
- X.509 certificate extraction from enterprise (802.1X) EAP into the new `Certificate` table and `CertificateAP` view (based on the @x4v1l0k idea in PR #57).
- EAP enrichment on identities: realm and method-type lookup, plus EAP-MD5 challenge/response capture for offline cracking (`EAPMD5` table, `hashcat -m 4800`).
- Probe-request fingerprinting (`fingerprint`, `ie_order`) with randomized-MAC detection, and hidden (cloaked) SSID recovery from probe responses and (re)association requests.
- AP management-capability detection from beacons/probe responses (802.11r/k/v fast roaming, Multiple BSSID, Channel Switch Announcement) in a new `CapabilitiesAP` view.

### Fixed
- Parsing/detection corrections: inflated WPS error count and SSID-dependent WPS 2.0 detection; MFP/PMF now read from RSN capability bits (capable vs required); `cloaked` and `firstTimeSeen` no longer clobbered when a later frame enriches an AP; EAP Success/Failure frames no longer counted as `Identity` errors.
- asyncio child-watcher crash on Python 3.14.
- Container fixes: in-container self-update (`git` now shipped) and non-root/podman writes to the bind-mounted `db.SQLITE`; plus Docker build, dependency CVEs and Codacy findings (including a SQL injection).

### Updated
- Merged the 1:1 Security, WPS and probe-fingerprint attributes onto the `AP`/`Probe` rows, and improved the `SummaryAP` view (grouped by SSID **and** encryption, showing WPA version, PMF, every manufacturer and client counts).
- Slimmed the Docker image ~360 MB → ~220 MB (Alpine base, ship only `hcxpcapngtool`, drop build caches); amd64/arm64 builds, the full test suite and the built image now verified in CI.
- Refactored internals with no behaviour change: split the oversized `utils/wifi_db_aircrack.py` into modules behind a re-export facade and cut parser/DB cyclomatic complexity below the Codacy limit (shared `safe_insert`/`cap_runner`, lookup tables); public `parse_*` API and callers unchanged.
- Refreshed the bundled IEEE OUI / mac-vendors database (~16k new vendor prefixes).
Loading
Loading