小编ash*_*x31的帖子

使用 golang 从连接到网络接口的原始套接字读取

我正在尝试使用 golang 读取我的 wifi 卡接收到的链路层数据包。我编写的程序编译成功并且运行没有任何错误,但它似乎在尝试从套接字读取时卡住了(syscall.Recvfrom(fd, data, 0- 准确地说是此时)。我究竟做错了什么?

PS:wlx34e894f77905是我的wifi设备的名称。

我试图读取数据包的函数:

func readFromSocket() {
    fd, error := syscall.Socket(syscall.AF_PACKET, syscall.SOCK_RAW, syscall.ETH_P_ALL)
    if error != nil {
        syscall.Close(fd)
        panic(error)
    }
    err := syscall.BindToDevice(fd, "wlx34e894f77905")
    if err != nil {
        syscall.Close(fd)
        panic(err)
    }
    data := make([]byte, 1024)
    for {
        syscall.Recvfrom(fd, data, 0)
        fmt.Println(data)
    }
}
Run Code Online (Sandbox Code Playgroud)

netstat -r 输出:

default         _gateway        0.0.0.0         UG        0 0          0 wlx34e894f77905
link-local      0.0.0.0         255.255.0.0     U         0 0          0 wlx34e894f77905
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0 …
Run Code Online (Sandbox Code Playgroud)

sockets networking raw-sockets go

5
推荐指数
1
解决办法
975
查看次数

Golang 使用 rsa 签署结构

我有一个Transaction包含以下字段的结构,

type Transaction struct {
    Sender    string `json:"sender"`
    Receiver  string `json:"receiver"`
    Signature string `json:"signature"`
    Amount    int64  `json:"amount"`
}
Run Code Online (Sandbox Code Playgroud)

我还有一个函数GetPrivateKey(),它返回一个*rsa.PrivateKey

func GetPrivateKey() (*rsa.PrivateKey, error) {
    key, err := ioutil.ReadFile("/Users/xxx/.ssh/id_rsa")
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(key)
    der, err := x509.ParsePKCS1PrivateKey(block.Bytes)
    if err != nil {
       return nil, err
    }
    return der, err
 }
Run Code Online (Sandbox Code Playgroud)

我的计划是transaction使用系统中已有的私钥对结构的内容进行签名,然后将其作为字符串存储signature在结构的字段中,为此,我有一个函数SignPayload()

func SignPayload(txnObj *Transaction) error {
    privateKey, err := GetPrivateKey()
    if err …
Run Code Online (Sandbox Code Playgroud)

cryptography rsa go

4
推荐指数
1
解决办法
4388
查看次数

标签 统计

go ×2

cryptography ×1

networking ×1

raw-sockets ×1

rsa ×1

sockets ×1