{"owner":"moonD4rk","repo":"HackBrowserData","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Security Notice\n\nThis project is for security research and defensive purposes only. Do not generate code that could be used for unauthorized access. All security research must be conducted ethically and within legal boundaries.\n\n## Project Overview\n\nHackBrowserData is a CLI security research tool for extracting and decrypting browser data across Windows, macOS, and Linux. It supports Chromium-based browsers and Firefox.\n\n**Constraint**: Must build with Go 1.20 (Windows 7 support). Do not use features from Go 1.21+ (e.g., `log/slog`, `slices`, `maps`, `cmp` packages).\n\n## Development Commands\n\n```bash\n# Build (use go@1.20 for module operations)\ngo build ./cmd/hack-browser-data/\n\n# Cross-compile\nGOOS=windows GOARCH=amd64 go build ./cmd/hack-browser-data/\nGOOS=linux GOARCH=amd64 go build ./cmd/hack-browser-data/\n\n# Test\ngo test ./...\ngo test -v ./... -covermode=count -coverprofile=coverage.out\n\n# Lint (requires golangci-lint v2)\ngolangci-lint run\n\n# Format (gofumpt is stricter than gofmt)\ngofumpt -l -w .\ngoimports -w -local github.com/moond4rk/hackbrowserdata .\n\n# Spelling\ntypos\n\n# Dependencies (MUST use go@1.20 to avoid bumping go directive)\n# export GOROOT=$(brew --prefix go@1.20)/libexec && export PATH=$GOROOT/bin:$PATH\ngo mod tidy\ngo mod verify\n```\n\n## Chrome ABE Payload (Windows only)\n\nChrome 127+ cookies (v20) decrypt via a C payload reflectively injected into `chrome.exe`. Sources in `crypto/windows/abe_native/`; design in [RFC-010](rfcs/010-chrome-abe-integration.md).\n\n```bash\nmake payload         # build the DLL (needs zig: brew install zig)\nmake build-windows   # cross-compile hack-browser-data.exe with payload embedded\nmake gen-layout      # regenerate Go layout constants from bootstrap_layout.h\nmake payload-clean   # rm crypto/*.bin\n```\n\n- Default `go build` links a stub that errors at runtime when ABE is needed — contributors not touching Windows ABE need no zig.\n- `-tags abe_embed` embeds the payload via `//go:embed` (see `crypto/abe_embed_windows.go` / `crypto/abe_stub_windows.go`).\n\n## Code Conventions\n\n- **Platform code**: use build tags (`_darwin.go`, `_windows.go`, `_linux.go`)\n- **C payload**: all sources in `crypto/windows/abe_native/` are first-party (no vendored C). See RFC-010 §9.2 for why Stephen Fewer's reflective loader was rejected.\n- **Error handling**: `fmt.Errorf(\"context: %w\", err)` for wrapping, never `_ =` to ignore errors\n- **Logging**: `log.Debugf` for record-level diagnostics, `log.Infof` for user-facing progress/status, `log.Warnf` for unexpected conditions. Extract methods should return errors, not log them.\n- **Naming**: follow Go conventions — `Config` not `BrowserConfig`, `Extract` not `BrowsingData`\n- **Comment width**: wrap comments at 140 columns (matches `.golangci.yml` `lll.line-length`)\n- **Tests**: use `t.TempDir()` for filesystem tests, `go-sqlmock` for database tests\n- **Architecture**: see `rfcs/` for design documents\n\n## Key Constraints\n\n- `modernc.org/sqlite` pinned at v1.31.1 (v1.32+ requires Go 1.21)\n- `golang.org/x/text` will be removed in refactoring (use 3-byte UTF-8 BOM instead)\n- No `pkg/` + `internal/` directory structure — keep it simple\n- No root-level library API — CLI calls `browser.DiscoverBrowsersWithKeys()` directly\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Security Notice\n\nThis project is for security research and defensive purposes only. Do not generate code that could be used for unauthorized access. All security research must be conducted ethically and within legal boundaries.\n\n## Project Overview\n\nHackBrowserData is a CLI security research tool for extracting and decrypting browser data across Windows, macOS, and Linux. It supports Chromium-based browsers and Firefox.\n\n**Constraint**: Must build with Go 1.20 (Windows 7 support). Do not use features from Go 1.21+ (e.g., `log/slog`, `slices`, `maps`, `cmp` packages).\n\n## Development Commands\n\n```bash\n# Build (use go@1.20 for module operations)\ngo build ./cmd/hack-browser-data/\n\n# Cross-compile\nGOOS=windows GOARCH=amd64 go build ./cmd/hack-browser-data/\nGOOS=linux GOARCH=amd64 go build ./cmd/hack-browser-data/\n\n# Test\ngo test ./...\ngo test -v ./... -covermode=count -coverprofile=coverage.out\n\n# Lint (requires golangci-lint v2)\ngolangci-lint run\n\n# Format (gofumpt is stricter than gofmt)\ngofumpt -l -w .\ngoimports -w -local github.com/moond4rk/hackbrowserdata .\n\n# Spelling\ntypos\n\n# Dependencies (MUST use go@1.20 to avoid bumping go directive)\n# export GOROOT=$(brew --prefix go@1.20)/libexec && export PATH=$GOROOT/bin:$PATH\ngo mod tidy\ngo mod verify\n```\n\n## Chrome ABE Payload (Windows only)\n\nChrome 127+ cookies (v20) decrypt via a C payload reflectively injected into `chrome.exe`. Sources in `crypto/windows/abe_native/`; design in [RFC-010](rfcs/010-chrome-abe-integration.md).\n\n```bash\nmake payload         # build the DLL (needs zig: brew install zig)\nmake build-windows   # cross-compile hack-browser-data.exe with payload embedded\nmake gen-layout      # regenerate Go layout constants from bootstrap_layout.h\nmake payload-clean   # rm crypto/*.bin\n```\n\n- Default `go build` links a stub that errors at runtime when ABE is needed — contributors not touching Windows ABE need no zig.\n- `-tags abe_embed` embeds the payload via `//go:embed` (see `crypto/abe_embed_windows.go` / `crypto/abe_stub_windows.go`).\n\n## Code Conventions\n\n- **Platform code**: use build tags (`_darwin.go`, `_windows.go`, `_linux.go`)\n- **C payload**: all sources in `crypto/windows/abe_native/` are first-party (no vendored C). See RFC-010 §9.2 for why Stephen Fewer's reflective loader was rejected.\n- **Error handling**: `fmt.Errorf(\"context: %w\", err)` for wrapping, never `_ =` to ignore errors\n- **Logging**: `log.Debugf` for record-level diagnostics, `log.Infof` for user-facing progress/status, `log.Warnf` for unexpected conditions. Extract methods should return errors, not log them.\n- **Naming**: follow Go conventions — `Config` not `BrowserConfig`, `Extract` not `BrowsingData`\n- **Comment width**: wrap comments at 140 columns (matches `.golangci.yml` `lll.line-length`)\n- **Tests**: use `t.TempDir()` for filesystem tests, `go-sqlmock` for database tests\n- **Architecture**: see `rfcs/` for design documents\n\n## Key Constraints\n\n- `modernc.org/sqlite` pinned at v1.31.1 (v1.32+ requires Go 1.21)\n- `golang.org/x/text` will be removed in refactoring (use 3-byte UTF-8 BOM instead)\n- No `pkg/` + `internal/` directory structure — keep it simple\n- No root-level library API — CLI calls `browser.DiscoverBrowsersWithKeys()` directly\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Security Notice\n\nThis project is for security research and defensive purposes only. Do not generate code that could be used for unauthorized access. All security research must be conducted ethically and within legal boundaries.\n\n## Project Overview\n\nHackBrowserData is a CLI security research tool for extracting and decrypting browser data across Windows, macOS, and Linux. It supports Chromium-based browsers and Firefox.\n\n**Constraint**: Must build with Go 1.20 (Windows 7 support). Do not use features from Go 1.21+ (e.g., `log/slog`, `slices`, `maps`, `cmp` packages).\n\n## Development Commands\n\n```bash\n# Build (use go@1.20 for module operations)\ngo build ./cmd/hack-browser-data/\n\n# Cross-compile\nGOOS=windows GOARCH=amd64 go build ./cmd/hack-browser-data/\nGOOS=linux GOARCH=amd64 go build ./cmd/hack-browser-data/\n\n# Test\ngo test ./...\ngo test -v ./... -covermode=count -coverprofile=coverage.out\n\n# Lint (requires golangci-lint v2)\ngolangci-lint run\n\n# Format (gofumpt is stricter than gofmt)\ngofumpt -l -w .\ngoimports -w -local github.com/moond4rk/hackbrowserdata .\n\n# Spelling\ntypos\n\n# Dependencies (MUST use go@1.20 to avoid bumping go directive)\n# export GOROOT=$(brew --prefix go@1.20)/libexec && export PATH=$GOROOT/bin:$PATH\ngo mod tidy\ngo mod verify\n```\n\n## Chrome ABE Payload (Windows only)\n\nChrome 127+ cookies (v20) decrypt via a C payload reflectively injected into `chrome.exe`. Sources in `crypto/windows/abe_native/`; design in [RFC-010](rfcs/010-chrome-abe-integration.md).\n\n```bash\nmake payload         # build the DLL (needs zig: brew install zig)\nmake build-windows   # cross-compile hack-browser-data.exe with payload embedded\nmake gen-layout      # regenerate Go layout constants from bootstrap_layout.h\nmake payload-clean   # rm crypto/*.bin\n```\n\n- Default `go build` links a stub that errors at runtime when ABE is needed — contributors not touching Windows ABE need no zig.\n- `-tags abe_embed` embeds the payload via `//go:embed` (see `crypto/abe_embed_windows.go` / `crypto/abe_stub_windows.go`).\n\n## Code Conventions\n\n- **Platform code**: use build tags (`_darwin.go`, `_windows.go`, `_linux.go`)\n- **C payload**: all sources in `crypto/windows/abe_native/` are first-party (no vendored C). See RFC-010 §9.2 for why Stephen Fewer's reflective loader was rejected.\n- **Error handling**: `fmt.Errorf(\"context: %w\", err)` for wrapping, never `_ =` to ignore errors\n- **Logging**: `log.Debugf` for record-level diagnostics, `log.Infof` for user-facing progress/status, `log.Warnf` for unexpected conditions. Extract methods should return errors, not log them.\n- **Naming**: follow Go conventions — `Config` not `BrowserConfig`, `Extract` not `BrowsingData`\n- **Comment width**: wrap comments at 140 columns (matches `.golangci.yml` `lll.line-length`)\n- **Tests**: use `t.TempDir()` for filesystem tests, `go-sqlmock` for database tests\n- **Architecture**: see `rfcs/` for design documents\n\n## Key Constraints\n\n- `modernc.org/sqlite` pinned at v1.31.1 (v1.32+ requires Go 1.21)\n- `golang.org/x/text` will be removed in refactoring (use 3-byte UTF-8 BOM instead)\n- No `pkg/` + `internal/` directory structure — keep it simple\n- No root-level library API — CLI calls `browser.DiscoverBrowsersWithKeys()` directly\n","category":"root","tokens":840}]}