moonD4rk/HackBrowserData · error

secret service: %w

Error message

secret service: %w

What it means

A D-Bus session bus was connected, but acquiring the Secret Service interface (org.freedesktop.se, implemented by gnome-keyring-daemon or kwalletd5) failed. This means the bus is alive but no secret-service provider is reachable on it.

Source

Thrown at masterkey/retriever_linux.go:33

	salt:       []byte("saltysalt"),
	iterations: 1,
	keySize:    16,
	hashFunc:   sha1.New,
}

// DBusRetriever queries GNOME Keyring / KDE Wallet via D-Bus Secret Service.
type DBusRetriever struct{}

func (r *DBusRetriever) RetrieveKey(hints Hints) ([]byte, error) {
	storage := hints.KeychainLabel
	conn, err := dbus.SessionBus()
	if err != nil {
		return nil, fmt.Errorf("dbus session: %w", err)
	}

	svc, err := keyring.GetSecretService(conn)
	if err != nil {
		return nil, fmt.Errorf("secret service: %w", err)
	}

	session, err := svc.OpenSession()
	if err != nil {
		return nil, fmt.Errorf("open session: %w", err)
	}
	defer session.Close()

	collections, err := svc.GetAllCollections()
	if err != nil {
		return nil, fmt.Errorf("get collections: %w", err)
	}

	for _, col := range collections {
		items, err := col.GetAllItems()
		if err != nil {
			continue
		}

View on GitHub (pinned to 0503d04d7a)

Solutions

  1. Check the provider is on the bus: busctl --user list | grep -i secret (or org.freedesktop.se)
  2. Start/restart the daemon: gnome-keyring-daemon --start --components=secrets (or enable kwalletd Secret Service module in KDE Wallet settings)
  3. On KDE, install/enable the Secret Service API addon (kwalletmanager / kde's secret service integration)
  4. If the profile only has v10 cookies, skip the V11 tier — PosixRetriever's PBKDF2("peanuts") key may already decrypt it
Defensive patterns

Strategy: fallback

Validate before calling

out, _ := exec.Command("busctl", "--user", "list").Output()
if !strings.Contains(string(out), "org.freedesktop.se") {
    // no Secret Service provider on the bus — skip DBusRetriever
}

Try / catch

key, err := dbusRetriever.RetrieveKey(hints)
if err != nil && strings.HasPrefix(err.Error(), "secret service:") {
    key, err = posixRetriever.RetrieveKey(hints) // v10 fallback
}

Prevention

When it happens

Trigger: dbus.SessionBus() succeeds but keyring.GetSecretService(conn) errors: gnome-keyring-daemon not running or crashed, KDE Wallet without the Secret Service plugin, or the service name not owned on the bus.

Common situations: Minimal desktop installs without gnome-keyring; KDE Wallet not configured as a Secret Service provider; keyring daemon hung after suspend; Wayland/GNOME sessions where the daemon failed at login.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


AI-assisted analysis of moonD4rk/HackBrowserData@0503d04d7a (2026-09-06). Data as JSON: /api/errors/62ca1bbbaf184abc. Report an issue: GitHub.