Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wthorp/GoSMB
SMB server written in Go
https://github.com/wthorp/GoSMB
Last synced: 12 days ago
JSON representation
SMB server written in Go
- Host: GitHub
- URL: https://github.com/wthorp/GoSMB
- Owner: wthorp
- License: mit
- Created: 2019-04-18T03:19:47.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-13T13:35:47.000Z (2 months ago)
- Last Synced: 2024-10-28T16:59:30.152Z (16 days ago)
- Language: Go
- Size: 1.86 MB
- Stars: 46
- Watchers: 2
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GoSMB
A work-in-progress SMB server written in Go.
I hope to dust this off after years of neglect.## Design Goals
* Permissive MIT-style licensing.
* Support for SMB over TCP and eventually QUIC.
* Compatibility with latest MacOS and Windows OS.
* Support for some secure type of login in addition to guest.
* Aggressive upgrading negotitation of the most recent protocols which support the above goals.
* Not implementing any features not necessary to obtain the above goals.## Methodology
SMB contains a lot of legacy features and backward compatibility logic. Its difficult to
develop working parts in situ without falling back to some functional complete solution. There's
a temptation to create a one-shot port of existing solutions, but differences in 3rd party
libraries make this nearly impossible.To make this easier and avoid needing external tools, the methology employed here is to create
a dumb proxy first. One by one, different parts of the protocol may be swapped out, thus using
the strangler pattern to create a full SMB implementation and eventually removing the proxy.## Likely Relavent Go Code
* [stacktitan/smb](https://github.com/stacktitan/smb)
* [alessandrovaprio/go-smb-client](https://github.com/alessandrovaprio/go-smb-client)
* [Amzza0x00/go-impacket](https://github.com/Amzza0x00/go-impacket)
* [CloudSoda/go-smb2](https://github.com/CloudSoda/go-smb2)
* [gavriva/smb2](https://github.com/gavriva/smb2)
* [gentlemanautomaton/smb](https://github.com/gentlemanautomaton/smb)
* [hirochachacha/go-smb2](https://github.com/hirochachacha/go-smb2)
* [hy05190134/smb2proxy](https://github.com/hy05190134/smb2proxy)
* [izouxv/smbapi](https://github.com/izouxv/smbapi)
* [PichuChen/simba](https://github.com/PichuChen/simba)
* [Xmister/libsmb2-go](https://github.com/Xmister/libsmb2-go)
* [xpn/ntlmquic](https://github.com/xpn/ntlmquic)
* [Azure/go-ntlmssp](https://github.com/Azure/go-ntlmssp)
* [jcmturner/gokrb5](https://github.com/jcmturner/gokrb5)## Non-Go SMB Server implementations
* https://github.com/SecureAuthCorp/impacket
* https://github.com/samba-team/samba
* https://www.jcifs.org/
* https://github.com/cifsd-team/ksmbd## Reference texts
* https://en.wikipedia.org/wiki/Server_Message_Block
* https://en.wikipedia.org/wiki/NetBIOS
* https://www.samba.org/ftp/tridge/misc/french_cafe.txt
* https://www.samba.org/ftp/samba/specs/
* https://gist.github.com/jbfriedrich/49b186473486ac72c4fe194af01288be
* https://support.apple.com/en-us/102050## Development Notes
MacOS Finder does some sort of caching of SMB results. While it is an integration target,
it's not really worth relying on Finder's "Connect to Server" functionality for actively
developing solutions.