{"id":50847883,"url":"https://github.com/hightemp/smb-browser","last_synced_at":"2026-06-14T11:04:21.314Z","repository":{"id":359291621,"uuid":"1245346867","full_name":"hightemp/smb-browser","owner":"hightemp","description":"Qt5/C++ desktop application for managing SMB connections and browsing Windows/Samba shared folders inside the application's own Qt Widgets UI.","archived":false,"fork":false,"pushed_at":"2026-05-21T12:17:01.000Z","size":608,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T14:28:50.835Z","etag":null,"topics":["cpp","file-browser","qt5","samba","samba-browser","smb"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hightemp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security-hardening.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-21T06:20:54.000Z","updated_at":"2026-05-21T12:17:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hightemp/smb-browser","commit_stats":null,"previous_names":["hightemp/smb-browser"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/hightemp/smb-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hightemp%2Fsmb-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hightemp%2Fsmb-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hightemp%2Fsmb-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hightemp%2Fsmb-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hightemp","download_url":"https://codeload.github.com/hightemp/smb-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hightemp%2Fsmb-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34318530,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","file-browser","qt5","samba","samba-browser","smb"],"created_at":"2026-06-14T11:04:15.321Z","updated_at":"2026-06-14T11:04:21.306Z","avatar_url":"https://github.com/hightemp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SMB Browser\n\n[![CI](https://github.com/hightemp/smb-browser/actions/workflows/ci.yml/badge.svg)](https://github.com/hightemp/smb-browser/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/hightemp/smb-browser)](https://github.com/hightemp/smb-browser/releases/latest)\n[![Downloads](https://img.shields.io/github/downloads/hightemp/smb-browser/total)](https://github.com/hightemp/smb-browser/releases)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)\n[![C++17](https://img.shields.io/badge/C%2B%2B-17-blue.svg)](https://en.cppreference.com/w/cpp/17)\n[![Qt](https://img.shields.io/badge/Qt-5-41CD52?logo=qt\u0026logoColor=white)](https://www.qt.io/)\n[![CMake](https://img.shields.io/badge/CMake-3.20%2B-064F8C?logo=cmake\u0026logoColor=white)](https://cmake.org/)\n[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows%20%7C%20macOS-lightgrey)](https://github.com/hightemp/smb-browser/releases)\n[![SMB](https://img.shields.io/badge/SMB-2%2F3-orange)](docs/native-smb-clean-room.md)\n![](https://asdertasd.site/counter/php-lsp)\n\nQt5/C++ desktop application for managing SMB connections and browsing\nWindows/Samba shared folders inside the application's own Qt Widgets UI.\n\n## Clean clone build on Ubuntu 22.04\n\nInstall build dependencies:\n\n```bash\nsudo apt-get update\nsudo apt-get install -y --no-install-recommends \\\n  build-essential \\\n  cmake \\\n  git \\\n  ninja-build \\\n  pkg-config \\\n  qtbase5-dev \\\n  libqt5svg5-dev \\\n  qttools5-dev-tools \\\n  qtkeychain-qt5-dev \\\n  libsodium-dev\n```\n\nConfigure, build and test:\n\n```bash\nmake configure\nmake build\nmake test\n```\n\nBy default CMake builds the clean-room native SMB backend\n(`SMB_BROWSER_WITH_NATIVE_SMB=ON`, `SMB_BROWSER_WITH_LIBSMB2=OFF`). The default\nbuild does not require `libsmb2-dev`, a checked-out `libsmb2` source tree,\n`smbclient`, or Samba CLI tools.\n\nCurrent native backend status:\n\n- SMB2 Direct TCP transport is built into the application.\n- SMB2.0.2/2.1/3.0/3.0.2/3.1.1 dialect negotiation is implemented without\n  SMB1/NetBIOS fallback. SMB 3.1.1 NEGOTIATE includes preauth integrity and\n  AES-128-CCM encryption capability contexts.\n- NTLMv2 password/domain auth, guest/anonymous auth handling, SPNEGO token\n  wrapping, SMB2.0.2/2.1 HMAC-SHA256 signing, SMB3.0/3.0.2 AES-CMAC signing\n  and SMB3.1.1 preauth-derived AES-CMAC signing are implemented in the\n  clean-room engine.\n- Basic app operations are wired through `NativeSmbClient`: check, list,\n  create folder, delete, rename, download, upload, copy and move.\n- Share browsing is implemented through native `IPC$` + DCE/RPC/SRVSVC\n  `NetrShareEnum` without SMB1, NetBIOS, `smbclient` or `libsmb2`.\n- Advanced metadata APIs cover timestamps/attributes, EA list/set/remove and\n  raw security descriptor query/set. POSIX chmod/chown are capability-gated\n  until a POSIX extension contract is added.\n- Native DFS referral resolution uses `FSCTL_DFS_GET_REFERRALS`, caches\n  referrals with TTL and supports nested namespace rebase plus multiple target\n  failover. Real Windows DFS namespace validation remains tracked in\n  `TASKS.md`.\n- SMB3 AES-128-CCM transform encryption is implemented for SMB 3.0/3.0.2,\n  including encrypted-share retry and Docker Samba encrypted-share smoke.\n  Kerberos/current-user auth is still tracked in `TASKS.md`; current-user auth\n  is reported as unsupported by the native backend instead of falling through to\n  password auth.\n\nRun the app:\n\n```bash\nmake run\n```\n\n## Build without SMB backend\n\nUse this only for fast UI/core development when real SMB access is not needed:\n\n```bash\nmake no-smb\n```\n\n## Legacy libsmb2 prefix\n\nThe default build does not require this. The helper script is kept only for\nlegacy experiments with the old libsmb2 backend:\n\n```bash\nscripts/build-libsmb2.sh\n# or\nmake libsmb2\n```\n\nThen configure explicitly with `SMB_BROWSER_WITH_LIBSMB2=ON`,\n`SMB_BROWSER_USE_SYSTEM_LIBSMB2=ON` and `PKG_CONFIG_PATH` pointing to\n`tmp/libsmb2-prefix/lib/pkgconfig`.\n\n## Linux package smoke\n\nBuild a Debian package and smoke-test it without installing into the system:\n\n```bash\nmake smoke-linux\n```\n\nThe package is written to `tmp/package-linux/packages`.\nIf `SMB_BROWSER_SMOKE_SERVER` and `SMB_BROWSER_SMOKE_SHARE` are set, the smoke\nscript also verifies that the packaged app can list the synthetic test share\nthrough the built-in native backend.\n\nWindows and macOS packaging plans are documented in `docs/windows-packaging.md`\nand `docs/macos-packaging.md`. Their smoke scripts must be run on the matching\noperating system. A manual GitHub Actions workflow is also available as\n`Package Smoke` in `.github/workflows/package-smoke.yml`.\n\n```powershell\npowershell -ExecutionPolicy Bypass -File scripts\\package-windows.ps1\n```\n\n```bash\nscripts/package-macos.sh\n```\n\n## Release\n\nRelease version is stored in `VERSION`. To prepare and publish a release from\nthe current branch:\n\n```bash\nmake release\n```\n\nThe command synchronizes versioned files, commits version changes when needed,\ncreates or replaces tag `v\u003cVERSION\u003e`, then force-pushes the current branch and\ntag. The tag push triggers `.github/workflows/release.yml`, which builds Linux,\nWindows and macOS packages and publishes a GitHub Release.\n\nFor a local validation without pushing:\n\n```bash\nRELEASE_DRY_RUN=1 make release\n```\n\n## Optional Docker Samba integration test\n\nThe Docker Samba test profile is disabled by default.\n\n```bash\nmake samba-up\nmake samba-test\nmake samba-down\n```\n\n`make samba-up` builds the fixture and waits for the container healthcheck\nbefore returning.\n\nThe native SMB perf/stress profile is also opt-in:\n\n```bash\nmake perf-test\n```\n\n## License\n\nSMB Browser source code is licensed under `GPL-3.0-or-later`.\n\nThe native SMB engine is clean-room project source. Samba source code and\nbinaries are not copied, linked, vendored or distributed; local checkouts under\n`tmp/` are development-only reference material.\n\n## Project docs\n\n- `docs/current-user-kerberos.md` - current-user/Kerberos/SSO design.\n- `docs/cross-platform-smoke.md` - package and real-server smoke profile.\n- `docs/license-compliance.md` - license and release compliance notes.\n- `docs/libsmb2-spike.md` - libsmb2 integration notes.\n- `docs/native-smb-clean-room.md` - clean-room native SMB migration plan.\n- `docs/native-smb-test-matrix.md` - native SMB capability test matrix.\n- `docs/linux-packaging.md` - Linux packaging profile.\n- `docs/windows-packaging.md` - Windows packaging plan.\n- `docs/macos-packaging.md` - macOS packaging plan.\n- `docs/secret-handling-policy.md` - secret handling rules.\n- `docs/security-hardening.md` - release hardening and dependency audit.\n- `docs/release-checklist.md` - release gate checklist.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhightemp%2Fsmb-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhightemp%2Fsmb-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhightemp%2Fsmb-browser/lists"}