Skip to content
Open
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
2 changes: 1 addition & 1 deletion .all-contributorsrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"projectName": "sif",
"projectOwner": "lunchcat",
"projectOwner": "vmfunc",
"files": [
"README.md"
],
Expand Down
106 changes: 106 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2025-01-06

### Breaking Changes

- **Module path migration**: Changed Go module path from `github.com/dropalldatabases/sif` to `github.com/vmfunc/sif`
- **Impact**: Users importing sif as a Go library must update their import statements
- **Action required**: Replace all imports: `github.com/dropalldatabases/sif` → `github.com/vmfunc/sif`, then run `go mod tidy`
- **Note**: Binary users (Homebrew, AUR, releases) are unaffected - no action required

### Added

- Official v1.0.0 release with proper semantic versioning (SemVer)
- Package manager compliance for official Linux distribution repositories
- Enables inclusion in Void Linux, Debian, Fedora, Arch official repos, and more
- Standardized repository references across all documentation and code

### Changed

- All documentation updated to reflect new `github.com/vmfunc/sif` repository location
- External runtime data URLs updated to `github.com/vmfunc/sif-runtime`
- Discord server URL updated to `discord.com/invite/sifcli`
- Adopted proper semantic versioning going forward:
- `v1.x.0` - New features (minor version bumps)
- `v1.0.x` - Bug fixes (patch version bumps)
- `v2.0.0` - Future breaking changes (major version bumps)

### Migration Guide

#### For Binary Users (No Action Required)

If you install sif via:
- Homebrew: `brew install vmfunc/sif/sif`
- AUR: `yay -S sif` or `paru -S sif`
- Pre-built binaries from [releases](https://github.com/vmfunc/sif/releases)
- Linux package managers (Void, Arch, etc. - once available)

**You don't need to do anything.** The binary name (`sif`) and functionality remain the same.

#### For Go Library Users (Action Required)

If you import sif packages in your Go code:

1. **Update your imports**:
```go
// Before (v2024.10.12 and earlier)
import "github.com/dropalldatabases/sif/internal/config"
import "github.com/dropalldatabases/sif/internal/scan"

// After (v1.0.0+)
import "github.com/vmfunc/sif/internal/config"
import "github.com/vmfunc/sif/internal/scan"
```

2. **Update your go.mod**:
```bash
go mod tidy
```

3. **Rebuild your project**:
```bash
go build ./...
```

### Why This Change?

This migration enables sif to be packaged in official Linux distribution repositories, which require:
- Proper semantic versioning (not date-based or commit-based versions)
- Tagged, stable releases announced as ready for public use
- Consistent repository naming and branding

With v1.0.0, sif can now be:
- ✅ Packaged in official distribution repositories (not just user-maintained packages)
- ✅ Managed by system package managers with automatic updates
- ✅ Vetted and trusted by distribution maintainers
- ✅ Easier to install for users across all major Linux distributions

### Technical Details

This release updates **86 occurrences across 36 files**:
- 1 Go module declaration (`go.mod`)
- 72 Go import statements across 33 source files
- 5 external runtime data URLs
- 6 documentation references
- 2 workspace configuration entries

### Related

- GitHub Issue: [#57 - Module Migration to v1.0.0 for Package Manager Compliance](https://github.com/vmfunc/sif/issues/57)
- Previous release: v2024.10.12 (CalVer format)

---

## [v2024.10.12] - 2024-10-12

Last release using CalVer (calendar versioning) format. See commit history for details of changes in this and earlier releases.

---

**Note**: This CHANGELOG will be maintained going forward for all future releases following semantic versioning.
76 changes: 25 additions & 51 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Contributing

Thank you for taking the time to contribute to sif! All contributions are valued, and no contribution is too small or insignificant.
If you want to contribute but don't know where to start, worry not; there is no shortage of things to do.
If you want to contribute but don't know where to start, worry not; there is no shortage of things to do.
Even if you don't know any Go, don't let that stop you from trying to contribute! We're here to help.

_By contributing to this repository, you agree to adhere to the sif [Code of Conduct](https://github.com/vmfunc/sif/blob/main/CODE_OF_CONDUCT.md). Not doing so may result in a ban._
Expand All @@ -24,7 +24,7 @@ If you like the project, but don't have time to contribute, that's okay too! Her

## Reporting issues

If you believe you've found a bug, or you have a new feature to request, please hop on the [Discord server](https://discord.com/invite/sifcli) first to discuss it.
If you believe you've found a bug, or you have a new feature to request, please hop on the [Discord server](https://discord.com/invite/sifcli) first to discuss it.
This way, if it's an easy fix, we could help you solve it more quickly, and if it's a feature request we could workshop it together into something more mature.

When opening an issue, please use the search tool and make sure that the issue has not been discussed before. In the case of a bug report, run sif with the `-d/-debug` flag for full debug logs.
Expand All @@ -45,72 +45,52 @@ When making a pull request, please adhere to the following conventions:
- When adding/removing imports, make sure to use `go mod tidy`, and then run `gomod2nix` to generate the Nix-readable module list.
- Set `git config pull.rebase true` to rebase commits on pull instead of creating ugly merge commits.
- Title your commits in present tense, in the imperative style.
- You may use prefixes like `feat`, `fix`, `chore`, `deps`, etc.
- You may use prefixes like `feat`, `fix`, `chore`, `deps`, etc.
**Example:** `deps: update gopkg.in/yaml.v3 to v3.0.1`
- You may use prefixes to denote the part of the code changed in the commit.
- You may use prefixes to denote the part of the code changed in the commit.
**Example:** `pkg/scan: ignore 3xx redirects`
- If not using a prefix, make sure to use sentence case.
- If not using a prefix, make sure to use sentence case.
**Example:** `Add nuclei template parsing support`
- If applicable, provide a helpful commit description, listing usage notes, implementation details, and tasks that still need to be done.

If you have any questions, feel free to ask around on the IRC channel.

## Contributing Framework Detection Patterns

The framework detection module (`internal/scan/frameworks/`) identifies web frameworks by analyzing HTTP headers and response bodies. Detectors are organized by category in the `detectors/` subdirectory:
The framework detection module (`pkg/scan/frameworks/detect.go`) identifies web frameworks by analyzing HTTP headers and response bodies. To add support for a new framework:

### Adding a New Framework Detector
### Adding a New Framework Signature

1. Create a detector struct in the appropriate file in `detectors/`:
1. Add your framework to the `frameworkSignatures` map:

```go
// myframeworkDetector detects MyFramework.
type myframeworkDetector struct{}

func (d *myframeworkDetector) Name() string { return "MyFramework" }

func (d *myframeworkDetector) Signatures() []fw.Signature {
return []fw.Signature{
{Pattern: "unique-identifier", Weight: 0.5},
{Pattern: "header-signature", Weight: 0.4, HeaderOnly: true},
{Pattern: "body-signature", Weight: 0.3},
}
}

...

```

2. Register the detector in the `init()` function of the same file:

```go
func init() {
fw.Register(&myframeworkDetector{})
}
"MyFramework": {
{Pattern: `unique-identifier`, Weight: 0.5},
{Pattern: `header-signature`, Weight: 0.4, HeaderOnly: true},
{Pattern: `body-signature`, Weight: 0.3},
},
```

**Pattern Guidelines:**

- `Weight`: How much this signature contributes to detection (0.0-1.0)
- `HeaderOnly`: Set to `true` for HTTP header patterns
- Use unique identifiers that won't false-positive on other frameworks
- Include multiple patterns for higher confidence

### Adding Version Detection

Add version patterns to `version.go` in the `rawPatterns` map inside `init()`:
Add version patterns to `extractVersionWithConfidence()`:

```go
"MyFramework": {
{`<meta name="generator" content="MyFramework v?(\d+\.\d+(?:\.\d+)?)"`, 0.95, "generator meta"},
{`MyFramework[/\s]+[Vv]?(\d+\.\d+(?:\.\d+)?)`, 0.9, "explicit version"},
{`"myframework":\s*"[~^]?(\d+\.\d+(?:\.\d+)?)"`, 0.85, "package.json"},
},
```

### Adding CVE Data

Add known vulnerabilities to `cve.go` in the `knownCVEs` map:
Add known vulnerabilities to the `knownCVEs` map:

```go
"MyFramework": {
Expand All @@ -137,17 +117,11 @@ func TestDetectFramework_MyFramework(t *testing.T) {
}))
defer server.Close()

result, err := frameworks.DetectFramework(server.URL, 5*time.Second, "")
result, err := DetectFramework(server.URL, 5*time.Second, "")
// assertions...
}
```

Also add your framework to the registry test in `TestDetectorRegistry`:

```go
expectedDetectors := []string{"Laravel", "Django", ..., "MyFramework"}
```

### Future Enhancements (Help Wanted)

- **Custom Signature Support**: Allow users to define signatures via config file
Expand All @@ -159,18 +133,18 @@ expectedDetectors := []string{"Laravel", "Django", ..., "MyFramework"}

### Framework Detection Flags

| Flag | Description |
| ------------ | ------------------------------------------ |
| `-framework` | Enable framework detection |
| `-timeout` | HTTP request timeout (affects all modules) |
| `-threads` | Number of concurrent workers |
| `-log` | Directory to save scan results |
| `-debug` | Enable debug logging for verbose output |
| Flag | Description |
|------|-------------|
| `-framework` | Enable framework detection |
| `-timeout` | HTTP request timeout (affects all modules) |
| `-threads` | Number of concurrent workers |
| `-log` | Directory to save scan results |
| `-debug` | Enable debug logging for verbose output |

### Environment Variables

| Variable | Description |
| ---------------- | ------------------------------------ |
| Variable | Description |
|----------|-------------|
| `SHODAN_API_KEY` | API key for Shodan host intelligence |

## Packaging
Expand Down
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ define SUPPORT_MESSAGE
│ │
│ 🌟 Enjoying sif? Please consider: │
│ │
│ • Starring our repo: https://github.com/lunchcat/sif │
│ • Supporting the devs: https://lunchcat.dev │
│ • Starring our repo: https://github.com/vmfunc/sif │
│ │
│ Your support helps us continue improving sif! │
│ │
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
[![aur](https://img.shields.io/aur/version/sif?style=flat-square&logo=archlinux&logoColor=white&color=1793D1)](https://aur.archlinux.org/packages/sif)
[![homebrew](https://img.shields.io/badge/homebrew-tap-FBB040?style=flat-square&logo=homebrew&logoColor=white)](https://github.com/vmfunc/homebrew-sif)
[![apt](https://img.shields.io/badge/apt-cloudsmith-2A5ADF?style=flat-square&logo=debian&logoColor=white)](https://cloudsmith.io/~sif/repos/deb/packages/)
[![discord](https://img.shields.io/badge/discord-join-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/sifcli)
[![discord](https://img.shields.io/badge/discord-join-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.com/invite/sifcli)

**[install](#install) · [usage](#usage) · [modules](#modules) · [docs](docs/) · [contribute](#contribute)**

Expand Down Expand Up @@ -208,7 +208,7 @@ go test ./...

join our discord for support, feature discussions, and pentesting tips:

[![discord](https://img.shields.io/badge/join%20our%20discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/sifcli)
[![discord](https://img.shields.io/badge/join%20our%20discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com/invite/sifcli)

## contributors

Expand All @@ -218,13 +218,13 @@ join our discord for support, feature discussions, and pentesting tips:
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://vmfunc.re"><img src="https://avatars.githubusercontent.com/u/59031302?v=4?s=100" width="100px;" alt="Celeste Hickenlooper"/><br /><sub><b>Celeste Hickenlooper</b></sub></a><br /><a href="#maintenance-vmfunc" title="Maintenance">🚧</a> <a href="#mentoring-vmfunc" title="Mentoring">🧑‍🏫</a> <a href="#projectManagement-vmfunc" title="Project Management">📆</a> <a href="#security-vmfunc" title="Security">🛡️</a> <a href="https://github.com/lunchcat/sif/commits?author=vmfunc" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://vmfunc.re"><img src="https://avatars.githubusercontent.com/u/59031302?v=4?s=100" width="100px;" alt="Celeste Hickenlooper"/><br /><sub><b>Celeste Hickenlooper</b></sub></a><br /><a href="#maintenance-vmfunc" title="Maintenance">🚧</a> <a href="#mentoring-vmfunc" title="Mentoring">🧑‍🏫</a> <a href="#projectManagement-vmfunc" title="Project Management">📆</a> <a href="#security-vmfunc" title="Security">🛡️</a> <a href="https://github.com/vmfunc/sif/commits?author=vmfunc" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://projectdiscovery.io"><img src="https://avatars.githubusercontent.com/u/50994705?v=4?s=100" width="100px;" alt="ProjectDiscovery"/><br /><sub><b>ProjectDiscovery</b></sub></a><br /><a href="#platform-projectdiscovery" title="Packaging/porting to new platform">📦</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/macdoos"><img src="https://avatars.githubusercontent.com/u/127897805?v=4?s=100" width="100px;" alt="macdoos"/><br /><sub><b>macdoos</b></sub></a><br /><a href="https://github.com/lunchcat/sif/commits?author=macdoos" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/macdoos"><img src="https://avatars.githubusercontent.com/u/127897805?v=4?s=100" width="100px;" alt="macdoos"/><br /><sub><b>macdoos</b></sub></a><br /><a href="https://github.com/vmfunc/sif/commits?author=macdoos" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://epitech.eu"><img src="https://avatars.githubusercontent.com/u/75166283?v=4?s=100" width="100px;" alt="Matthieu Witrowiez"/><br /><sub><b>Matthieu Witrowiez</b></sub></a><br /><a href="#ideas-D3adPlays" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tessa-u-k"><img src="https://avatars.githubusercontent.com/u/109355732?v=4?s=100" width="100px;" alt="tessa "/><br /><sub><b>tessa </b></sub></a><br /><a href="#infra-tessa-u-k" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-tessa-u-k" title="Answering Questions">💬</a> <a href="#userTesting-tessa-u-k" title="User Testing">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xyzeva"><img src="https://avatars.githubusercontent.com/u/133499694?v=4?s=100" width="100px;" alt="Eva"/><br /><sub><b>Eva</b></sub></a><br /><a href="#blog-xyzeva" title="Blogposts">📝</a> <a href="#content-xyzeva" title="Content">🖋</a> <a href="#research-xyzeva" title="Research">🔬</a> <a href="#security-xyzeva" title="Security">🛡️</a> <a href="https://github.com/lunchcat/sif/commits?author=xyzeva" title="Tests">⚠️</a> <a href="https://github.com/lunchcat/sif/commits?author=xyzeva" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vxfemboy"><img src="https://avatars.githubusercontent.com/u/79362520?v=4?s=100" width="100px;" alt="Zoa Hickenlooper"/><br /><sub><b>Zoa Hickenlooper</b></sub></a><br /><a href="https://github.com/lunchcat/sif/commits?author=vxfemboy" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xyzeva"><img src="https://avatars.githubusercontent.com/u/133499694?v=4?s=100" width="100px;" alt="Eva"/><br /><sub><b>Eva</b></sub></a><br /><a href="#blog-xyzeva" title="Blogposts">📝</a> <a href="#content-xyzeva" title="Content">🖋</a> <a href="#research-xyzeva" title="Research">🔬</a> <a href="#security-xyzeva" title="Security">🛡️</a> <a href="https://github.com/vmfunc/sif/commits?author=xyzeva" title="Tests">⚠️</a> <a href="https://github.com/vmfunc/sif/commits?author=xyzeva" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vxfemboy"><img src="https://avatars.githubusercontent.com/u/79362520?v=4?s=100" width="100px;" alt="Zoa Hickenlooper"/><br /><sub><b>Zoa Hickenlooper</b></sub></a><br /><a href="https://github.com/vmfunc/sif/commits?author=vxfemboy" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/0xatrilla"><img src="https://avatars.githubusercontent.com/u/107285362?v=4?s=100" width="100px;" alt="acxtrilla"/><br /><sub><b>acxtrilla</b></sub></a><br /><a href="#platform-0xatrilla" title="Packaging/porting to new platform">📦</a></td>
Expand Down
6 changes: 3 additions & 3 deletions cmd/sif/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ package main

import (
"github.com/charmbracelet/log"
"github.com/dropalldatabases/sif"
"github.com/dropalldatabases/sif/internal/config"
"github.com/vmfunc/sif"
"github.com/vmfunc/sif/internal/config"

// Register framework detectors
_ "github.com/dropalldatabases/sif/internal/scan/frameworks/detectors"
_ "github.com/vmfunc/sif/internal/scan/frameworks/detectors"
)

func main() {
Expand Down
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ welcome to the sif documentation. sif is a modular pentesting toolkit designed t

```bash
# install
git clone https://github.com/dropalldatabases/sif.git && cd sif && make
git clone https://github.com/vmfunc/sif.git && cd sif && make

# basic scan
./sif -u https://example.com
Expand All @@ -49,4 +49,4 @@ git clone https://github.com/dropalldatabases/sif.git && cd sif && make
## support

- [github issues](https://github.com/vmfunc/sif/issues) - bug reports and feature requests
- [discord](https://discord.gg/sifcli) - community chat
- [discord](https://discord.com/invite/sifcli) - community chat
2 changes: 1 addition & 1 deletion docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ setting up a development environment for sif.
## clone and build

```bash
git clone https://github.com/dropalldatabases/sif.git
git clone https://github.com/vmfunc/sif.git
cd sif
make
```
Expand Down
2 changes: 1 addition & 1 deletion docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ download `sif-windows-amd64.exe` from releases and add to your PATH.
requires go 1.23+

```bash
git clone https://github.com/dropalldatabases/sif.git
git clone https://github.com/vmfunc/sif.git
cd sif
make
```
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/dropalldatabases/sif
module github.com/vmfunc/sif

go 1.24.0

Expand Down
2 changes: 1 addition & 1 deletion internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func Parse() *Settings {
)

flagSet.CreateGroup("api", "API",
flagSet.BoolVar(&settings.ApiMode, "api", false, "Enable API mode. Only useful for internal lunchcat usage"),
flagSet.BoolVar(&settings.ApiMode, "api", false, "Enable API mode for JSON output"),
)

flagSet.CreateGroup("modules", "Modules",
Expand Down
2 changes: 1 addition & 1 deletion internal/modules/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
"runtime"

"github.com/charmbracelet/log"
"github.com/dropalldatabases/sif/internal/output"
"github.com/vmfunc/sif/internal/output"
)

// Loader handles module discovery and loading.
Expand Down
2 changes: 1 addition & 1 deletion internal/nuclei/format/format.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ package format
import (
"fmt"

"github.com/dropalldatabases/sif/internal/styles"
"github.com/vmfunc/sif/internal/styles"
"github.com/projectdiscovery/nuclei/v2/pkg/output"
)

Expand Down
Loading