Skip to content

Commit 0dcbbfe

Browse files
committed
chore: prepare release v1.3.0 with automated workflow
1 parent df0b3d0 commit 0dcbbfe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+5091
-2033
lines changed

.github/workflows/pypi-publish.yml

Lines changed: 0 additions & 31 deletions
This file was deleted.

.github/workflows/release.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Publish Release
2+
3+
on:
4+
release:
5+
types: [published]
6+
push:
7+
tags:
8+
- 'v*'
9+
10+
jobs:
11+
pypi-publish:
12+
name: Publish to PyPI
13+
runs-on: ubuntu-latest
14+
permissions:
15+
id-token: write # IMPORTANT: Requesting the OIDC token for trusted publishing (if used) or standard token
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up Python
20+
uses: actions/setup-python@v5
21+
with:
22+
python-version: '3.11'
23+
24+
- name: Install build tools
25+
run: |
26+
python -m pip install --upgrade pip
27+
pip install build
28+
29+
- name: Build package
30+
run: python -m build
31+
32+
- name: Publish to PyPI
33+
uses: pypa/gh-action-pypi-publish@release/v1
34+
with:
35+
password: ${{ secrets.PYPI_API_TOKEN }}
36+
37+
build-debian:
38+
name: Build & Upload Debian Package
39+
runs-on: ubuntu-latest
40+
needs: pypi-publish # Try to publish to PyPI first, or run in parallel? Parallel is faster/safer if one fails. Let's run parallel.
41+
# Actually, removing 'needs' allows them to run in parallel.
42+
permissions:
43+
contents: write # Required for uploading assets to release
44+
steps:
45+
- uses: actions/checkout@v4
46+
47+
- name: Set up Python
48+
uses: actions/setup-python@v5
49+
with:
50+
python-version: '3.11'
51+
52+
- name: Install Debian Build Dependencies
53+
run: |
54+
sudo apt-get update
55+
sudo apt-get install -y debhelper dh-python python3-all python3-setuptools python3-wheel python3-build fakeroot
56+
57+
- name: Build Debian Package
58+
run: |
59+
# Build the package using standard Debian tools
60+
dpkg-buildpackage -us -uc -b
61+
62+
# Move the generated .deb file to a clean directory for upload
63+
mkdir -p dist-deb
64+
mv ../*.deb dist-deb/
65+
66+
echo "DEB_FILE=$(ls dist-deb/*.deb)" >> $GITHUB_ENV
67+
68+
- name: Upload .deb to Release
69+
uses: softprops/action-gh-release@v1
70+
if: startsWith(github.ref, 'refs/tags/')
71+
with:
72+
files: dist-deb/*.deb

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
__pycache__/
22
*.py[cod]
33
*$py.class
4+
*.pyc
45
venv/
56
env/
67
.venv/
@@ -23,7 +24,12 @@ htmlcov/
2324
.coverage
2425
.coverage.*
2526
.cache
27+
.pytest_cache/
2628
pytest_cache/
2729
*.log
2830
.DS_Store
2931
Thumbs.db
32+
*.tmp
33+
*.temp
34+
*.bak
35+
merge_json.py

MANIFEST.in

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
include exc_analyzer/exc-analyzer.png
2+
recursive-include exc_analyzer/locale *.json
3+
include README.md
4+
include LICENSE
5+
include pyproject.toml
6+
exclude merge_json.py
7+
exclude tests/*
8+
global-exclude *.pyc
9+
global-exclude __pycache__
10+
exclude .gitignore

README.md

Lines changed: 95 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,130 @@
11
# EXC Analyzer
2+
<<<<<<< HEAD
23
[![GitHub Release](https://img.shields.io/github/v/release/exc-analyzer/exc?label=release&labelColor=black&cacheSeconds=0
34
)](https://github.com/exc-analyzer/exc/releases)
45
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/exc-analyzer?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=BRIGHTGREEN&left_text=downloads)](https://pepy.tech/projects/exc-analyzer)
56
[![Release Date](https://img.shields.io/github/release-date/exc-analyzer/exc?label=release%20date&labelColor=black&color=blue)](https://github.com/exc-analyzer/exc/releases)
67
[![License](https://img.shields.io/pypi/l/exc-analyzer?label=license&labelColor=black&color=blue)](https://pypi.org/project/exc-analyzer/)
78
[![Code Size](https://img.shields.io/github/languages/code-size/exc-analyzer/exc?label=code%20size&labelColor=black)](https://github.com/exc-analyzer/exc)
89
[![Socket Badge](https://badge.socket.dev/pypi/package/exc-analyzer/1.2.1?artifact_id=tar-gz)](https://badge.socket.dev/pypi/package/exc-analyzer/1.2.1?artifact_id=tar-gz)
10+
=======
911

12+
[![GitHub Release](https://img.shields.io/github/v/release/exc-analyzer/exc?label=release&labelColor=black&cacheSeconds=0)](https://github.com/exc-analyzer/exc/releases)
13+
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/exc-analyzer?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=ORANGE&left_text=downloads)](https://pepy.tech/projects/exc-analyzer)
14+
[![Release Date](https://img.shields.io/github/release-date/exc-analyzer/exc?label=release%20date&labelColor=black&color=blue)](https://github.com/exc-analyzer/exc/releases)
15+
[![License](https://img.shields.io/pypi/l/exc-analyzer?label=license&labelColor=black&color=blue)](https://pypi.org/project/exc-analyzer/)
16+
[![Code Size](https://img.shields.io/github/languages/code-size/exc-analyzer/exc?label=code%20size&labelColor=black)](https://github.com/exc-analyzer/exc)
17+
[![Socket Badge](https://badge.socket.dev/pypi/package/exc-analyzer/1.3.0?artifact_id=tar-gz)](https://badge.socket.dev/pypi/package/exc-analyzer/1.3.0?artifact_id=tar-gz)
18+
>>>>>>> ba1aa21 (chore: prepare release v1.3.0 with automated workflow)
1019
11-
EXC-Analyzer is a professional command-line tool for advanced GitHub repository and user analysis, security auditing, and secret scanning. Designed for penetration testers, security researchers, and open-source maintainers, EXC-Analyzer provides deep insights into repository health, contributor activity, and potential security risks.
12-
20+
**EXC Analyzer** is a professional command-line tool for advanced GitHub repository intelligence, security auditing, and content analysis. Designed for security researchers, penetration testers, and open-source maintainers, it bridges the gap between simple metadata and deep, actionable insights.
1321

1422
## Table of Contents
15-
- [Website](https://exc-analyzer.web.app/)
1623
- [Features](#features)
1724
- [Installation](#installation)
25+
- [Authentication](#authentication)
1826
- [Quick Start](#quick-start)
27+
- [Command Reference](#command-reference)
28+
- [Output & Reports](#output--reports)
1929
- [Localization](#localization)
20-
- [Debian/Kali Packaging](#debiankali-packaging)
21-
- [Command Overview](#command-overview)
22-
- [Detailed Command Reference](#detailed-command-reference)
23-
- [API Key Management](#api-key-management)
2430
- [Troubleshooting](#troubleshooting)
25-
- [Disclaimer](#disclaimer)
2631
- [License](#license)
2732

28-
2933
## Features
30-
- Repository Analysis: Extracts repository metadata, statistics, language usage, and contributor breakdown.
31-
- User Analysis: Profiles GitHub users, including activity, top repositories, and contribution patterns.
32-
- Secret Scanning: Detects API keys, tokens, and sensitive data in recent commits and files.
33-
- File History: Displays granular commit history for any file in a repository.
34-
- Contributor Impact: Quantifies individual contributor impact based on code changes.
35-
- Security Scoring: Evaluates repository security posture (branch protection, code scanning, etc.).
36-
- Workflow & Content Auditing: Audits repository documentation, policies, and CI/CD workflows for best practices.
37-
- API Key Security: Stores GitHub tokens securely with strict file permissions.
38-
- Intelligent Rate-Limit Handling: Automatically pauses and retries when GitHub API quotas are hit.
3934

35+
* **Intelligence Gathering:** Deep-dive into repository metadata, contributor impact, and historical anomalies.
36+
* **Security Auditing:** Score repository security posture, audit GitHub Actions workflows, and scan for secrets in commits/files.
37+
* **Dork Scanning:** Powerfully search public code using GitHub dorks to find sensitive exposures.
38+
* **User Profiling:** Analyze user activity patterns, potential anomalies, and contributions.
39+
* **Smart Rate-Limiting:** Handles API quotas automatically with intelligent pausing and retries.
40+
* **Localization:** Localization is currently available in English and Turkish, but the infrastructure is ready to expand to a wider range of languages ​​through community contributions.
4041

4142
## Installation
4243

43-
### On Kali Linux / Debian / Ubuntu
44-
45-
**Recommended (Global) Installation:**
46-
Install globally using [pipx](https://pypa.github.io/pipx/):
44+
### Kali Linux / Debian
45+
Download the latest `.deb` from [Releases](https://github.com/exc-analyzer/exc/releases) and run:
46+
```bash
47+
sudo dpkg -i exc-analyzer_1.3.0-1_all.deb
48+
sudo apt-get install -f # Fix dependencies if needed
49+
```
4750

48-
```sh
49-
python3 -m pip install pipx
50-
python3 -m pipx ensurepath
51-
pipx install exc-analyzer
51+
### Windows
52+
```bash
53+
pip install exc-analyzer
5254
```
55+
*(Requires Python 3.7+)*
5356

54-
**Alternative (Local/Virtual Environment) Installation:**
57+
## Authentication
5558

56-
If you prefer to install only in your current directory (not globally), use a Python virtual environment:
59+
1. **Login:**
60+
```bash
61+
exc login
62+
```
63+
2. **Authorize:** The tool will provide a code (and copy it to your clipboard). It will open your browser to GitHub activation.
64+
3. **Ready:** Paste the code, approve the permissions, and you are done!
5765

58-
```sh
59-
python3 -m venv env
60-
source env/bin/activate
61-
pip install exc-analyzer
62-
```
66+
The token behaves like a standard GitHub App connection and is stored securely in your OS credential manager.
6367

64-
### On Windows
65-
```sh
66-
pip install exc-analyzer
68+
## Quick Start
69+
70+
**1. Analyze a Repository:**
71+
```bash
72+
exc analysis torvalds/linux
73+
```
74+
**2. Search for Sensitive Data (Dorks) (User's responsibility):**
75+
```bash
76+
exc dork-scan "filename:config.php 'db_password'"
6777
```
6878
69-
### On macOS
70-
```sh
71-
brew install python3
72-
pip3 install exc-analyzer
79+
**3. Scan for Secrets:**
80+
```bash
81+
exc scan-secrets microsoft/vscode -l 20
7382
```
7483
75-
## Quick Start
76-
1. Obtain a GitHub Personal Access Token ([instructions](https://github.com/settings/tokens)).
77-
> **Note:** To avoid issues during analysis, ensure you grant all available permissions to the token. Insufficient permissions may cause errors or incomplete results.
78-
2. Initialize your API key:
79-
```sh
80-
exc key
81-
```
82-
3. Run your first analysis:
83-
```sh
84-
exc analysis owner/repo
85-
```
84+
### Information Gathering
85+
* **`analysis <owner>/<repo>`** - Get a comprehensive overview of repository health, stats, and top contributors.
86+
* **`user-a <username>`** - Analyze public profile, top languages, and activity summary.
87+
* **`contrib-impact <owner>/<repo>`** - Calculate impact scores for individual contributors to identify key maintainers.
88+
* **`file-history <owner>/<repo> <path>`** - View granular commit history for a specific file.
89+
90+
### Security & Auditing
91+
* **`security-score <owner>/<repo>`** - Evaluate repository security (branch protection, code scanning, security policies).
92+
* **`actions-audit <owner>/<repo>`** - Audit GitHub Actions workflows for dangerous triggers and insecure practices.
93+
* **`scan-secrets <owner>/<repo>`** - Fast scan of recent commits for credentials and tokens.
94+
* **`advanced-secrets <owner>/<repo>`** - Deep scan of current file contents and history for high-entropy secrets.
95+
* **`dork-scan <query>`** - Search GitHub for sensitive sensitive code patterns (dorks). Supports export.
96+
97+
### Anomaly Detection
98+
* **`commit-anomaly <owner>/<repo>`** - Detect suspicious commit times, mass deletions, or unusual messages.
99+
* **`user-anomaly <username>`** - Identify irregular activity spikes or behavioral outliers for a user.
100+
101+
### Content Audit
102+
* **`content-audit <owner>/<repo>`** - Check for essential community standards (LICENSE, CODE_OF_CONDUCT, CONTRIBUTING.md).
103+
104+
### Utilities
105+
* **`login`** - Log in with your GitHub account to start analyzing.
106+
* **`logout`** - Log out from your GitHub account.
107+
108+
## Output & Reports
109+
110+
Most commands support the `-o` or `--output` flag to save results to a file:
111+
112+
```bash
113+
# Save to a generated filename (e.g., analysis_owner_repo_date.txt)
114+
exc analysis owner/repo -o
115+
116+
# Save to a specific file
117+
exc dork-scan "password" -o results.txt
118+
```
86119
87120
## Localization
88-
- EXC Analyzer currently ships with English (`en`) and Turkish (`tr`) interface strings. English remains the default when no preference is set.
89-
- Override the language per invocation (and persist the choice) with `exc --lang tr ...` or `exc -L en ...`.
90-
- Alternatively set `EXC_LANG=tr` (or rely on your shell's `LANG` variable) to influence the default without adding CLI flags.
91-
- Language preferences are stored in `~/.exc/settings.json`. Delete or edit this file if you want to reset the remembered language.
92-
- Missing translations automatically fall back to English so the CLI remains usable even if a key is not localized yet.
121+
122+
Switch languages dynamically using `--lang` or the environment variable:
123+
124+
* **English (Default):** `exc --lang en analysis owner/repo`
125+
* **Turkish:** `exc --lang tr analysis owner/repo`
126+
127+
*(Selection is remembered for future commands.)*
93128
94129
## Debian/Kali Packaging
95130
1. Prerequisites (on Debian/Ubuntu/Kali):
@@ -259,17 +294,11 @@ Note on storage and security:
259294
- If OS credential storage is not available, EXC falls back to storing the token in a local file: `~/.exc/build.sec` (Linux/macOS) or `%USERPROFILE%\\.exc\\build.sec` (Windows). The app will attempt to set strict file permissions (0600) on Unix-like systems.
260295
- Important: base64 is used for a simple file-obfuscation fallback and is not a replacement for proper encryption. File permission protections (0600) reduce exposure, but the most robust option is OS credential storage; EXC will prefer that when possible.
261296
262-
263297
## Troubleshooting
264-
- API Rate Limits: If you hit GitHub API rate limits, wait and retry later. Use a personal access token with sufficient permissions.
265-
- Missing Output or Slow Results: Large repositories or high API usage may cause delays. Try reducing the number of results or commit range.
266-
- Color Output Issues: If you do not see colored output, ensure your terminal supports ANSI colors (e.g., use modern terminals on Windows or Linux).
267-
- Permission Errors: Ensure you have write access to your home directory for API key storage.
268-
269-
270-
## Disclaimer
271-
This tool is intended for professional security auditing, research, and authorized analysis only. Unauthorized use on systems or repositories you do not own or have explicit permission to analyze is strictly prohibited. The author assumes no liability for misuse or damage caused by this tool.
272298
299+
* **Rate Limits:** If you hit API limits, the tool will automatically pause and retry. Using an authenticated token (`exc login`) increases your quota significantly.
300+
* **Colors:** If output looks strange, ensure your terminal supports ANSI colors.
273301
274302
## License
275-
See the [LICENSE](LICENSE) file for details.
303+
304+
MIT License. See `LICENSE` file for details.

debian/changelog

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
exc-analyzer (1.3.0-1) unstable; urgency=medium
2+
3+
* Release version 1.3.0.
4+
* Update commands: replace 'key' with 'login', add 'security-score'.
5+
* Full localization support (TR/EN).
6+
* Packaging and test improvements.
7+
8+
-- EXC Team <exc-analyzer@outlook.com> Mon, 19 Jan 2026 21:00:00 +0300
9+
110
exc-analyzer (1.2.1-1) unstable; urgency=medium
211

312
* Rebuild packages and PyPI upload to ensure CLI reports 1.2.1.

debian/control

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Rules-Requires-Root: no
1111

1212
Package: exc-analyzer
1313
Architecture: all
14-
Depends: ${misc:Depends}, ${python3:Depends}, python3-requests, python3-toml, python3-packaging, python3-colorama, python3-tabulate, python3-importlib-resources, python3-keyring
14+
Depends: ${misc:Depends}, ${python3:Depends}, python3-requests, python3-aiohttp, python3-toml, python3-packaging, python3-colorama, python3-tabulate, python3-importlib-resources, python3-keyring
1515
Description: GitHub security auditing and intelligence CLI
1616
EXC Analyzer provides repository and user analysis, secret scanning,
1717
content and workflow auditing, and anomaly detection for GitHub. The

debian/docs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
README.md

debian/exc-analyzer.desktop

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[Desktop Entry]
2+
Name=exc-analyzer
3+
Comment=GitHub Repository Security Analysis CLI
4+
Exec=x-terminal-emulator -e "bash -lc 'exc; exec bash'"
5+
Icon=exc-analyzer
6+
Terminal=false
7+
Type=Application
8+
Categories=Security;Development;
9+
StartupNotify=false

debian/install

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
exc_analyzer/exc-analyzer.png usr/share/pixmaps/
2+
debian/exc-analyzer.desktop usr/share/applications/
3+
scripts/exc-gui-launcher usr/lib/exc-analyzer/

0 commit comments

Comments
 (0)