登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: golang 的 samba 库 [zt未验证]     [回主站]     [分站链接]
golang 的 samba 库 [zt未验证]
clq
浏览(249) - 2023-05-22 19:19:34 发表 编辑

关键字:

[2023-11-08 18:30:38 最后更新]
golang 的 samba 库 [zt未验证]

1.
libsmb2-go
不知道是否是这个
https://github.com/sahlberg/libsmb2/blob/master/CMakeLists.txt

从源码看是 c 的。

2.
https://github.com/hirochachacha/go-smb2

https://www.jb51.cc/faq/2855206.html
https://cloud.tencent.com/developer/ask/sof/1042911
https://stackoverflow.com/questions/61247492

这个似乎是可用的。

以下是另一个多协议的未验证示例
https://github.com/natanchagas/go-sftp-smb/blob/master/main.go

3.
https://github.com/i11us0ry/goon
goon,集合了fscan和kscan等优秀工具功能的扫描爆破工具。功能包含:ip探活、port扫描、web指纹扫描、title扫描、压缩文件扫描、fofa获取、ms17010、mssql、mysql、postgres、redis、ssh、smb、rdp、telnet、tomcat等爆破以及如netbios探测等功能。

代码可参考一下。

4.
https://github.com/wthorp/GoSMB
据说是服务器,可用度未知。



clq  2023-11-08 18:26:02 发表 编辑


golang samb 库访问 macos 共享目录实测。

确实是可以的。这里的 “未命名” 其实是我共享的整个 macos 硬盘,硬盘名就是 “未命名” 似乎在 macos 中不能修改这个名字。

奇怪的是 `\\127.0.0.1\未命名` 可以在代码中访问,在 macos 自己的文件夹 转到 连接服务器 功能中却是不行。
它自己访问不了 “smb://127.0.0.1/未命名” 这样的路径

--------------------------------------------------------
package main

import (
"fmt"
"net"
iofs "io/fs"

"github.com/hirochachacha/go-smb2"
)

//clq 这实际上是第三个示例 "Glob and WalkDir through FS interface"

func main_smb2() {

//conn, err := net.Dial("tcp", "SERVERNAME:445");
//conn, err := net.Dial("tcp", "192.168.0.1:445");
conn, err := net.Dial("tcp", "127.0.0.1:445");


if err != nil {
panic(err)
}
defer conn.Close()

d := &smb2.Dialer{
Initiator: &smb2.NTLMInitiator{
//User: "USERNAME",
//Password: "PASSWORD",
//User: "administrator",
//Password: "pass1",
User: "ccc",
Password: "pass2",
},
}

s, err := d.Dial(conn)
if err != nil {
panic(err)
}
defer s.Logoff()

//fs, err := s.Mount("SHARENAME");
//fs, err := s.Mount(`\\192.168.0.1\f$`); //确实是可以的
fs, err := s.Mount(`\\127.0.0.1\未命名`); //macos 下的本机可以是这个
//fs, err := s.Mount(`\\127.0.0.1\未命名\Users\ccc\Desktop\test1`); //这个不行s

if err != nil {
panic(err)
}
defer fs.Umount()

//--------------------------------------------------------
//下面似乎会递归,只显示当前目录的文件呢?

sl,err := fs.ReadDir(".");
fmt.Println(sl, err);

for i:=0;i
item := sl[i];
fmt.Println(item.Name());
}//

//--
// f, err := fs.Create("1.txt")
// if err != nil {
// panic(err)
// }

////f, err := fs.Open("1.txt"); //ok
//f, err := fs.Create("Users/ccc/Desktop/test1/1.txt"); //ok
f, err := fs.Open("Users/ccc/Desktop/test1/1.txt"); //ok
if err != nil {
panic(err)
}

//buf := new [1024]byte;
buf := make([]byte, 10240);

n,err := f.Read(buf);

//fmt.Println(n, err, buf);
fmt.Println(n, err, string(buf));

return;

//--------------------------------------------------------

matches, err := iofs.Glob(fs.DirFS("."), "*")
if err != nil {
panic(err)
}
for _, match := range matches {
fmt.Println(match)
}

err = iofs.WalkDir(fs.DirFS("."), ".", func(path string, d iofs.DirEntry, err error) error {
fmt.Println(path, d, err)

return nil
})
if err != nil {
panic(err)
}
}//




clq  2023-11-08 18:30:38 发表 编辑


macos 机器自带的共享文件帮助说明如下。可见路径写法是不一样的。

--------------------------------------------------------
Mac 上的网络地址格式和协议

如果您知道网络上共享电脑或服务器的地址,则可以使用它连接到电脑或服务器。您可以连接到已打开文件共享的 Mac 电脑和 Windows 电脑上,以及连接到使用 SMB/CIF、NFS 和 FTP 的服务器上。

网络地址由协议(如 smb://)加上域名系统 (DNS) 名称及电脑的任何附加路径名称组成。查看下表以获取要用于连接到各种服务器的正确地址格式。

共享协议
地址格式
SMB/CIFS (Windows) 服务器和共享文件夹
使用以下格式之一:

smb://DNSname/sharename

smb://IPaddress/sharename

您也可以使用电脑名称。如果您的地址中不包含共享文件夹路径,您可以在输入用户名称和密码后来选择它。
NFS 服务器
nfs://DNSname/pathname
WebDAV 服务器
http://DNSname/pathname

您可以使用电脑的互联网协议 (IP) 地址来代替它的 DNS 名称。
从“访达”连接到 FTP 服务器之后您仅有只读权限。若要将文件拷贝到 FTP 服务器,请使用 FTP App。

另请参阅
在 Mac 上设置文件共享
将 Mac 连接到共享的电脑和服务器


总数:2 页次:1/1 首页 尾页  
总数:2 页次:1/1 首页 尾页  


所在合集/目录
golang 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1