链路层协议的数据包嗅探器

时间:2021-07-01 16:10:06

标签: linux sockets networking packet-sniffers

我正在尝试将用 Python 编写的名为 Responder 的程序转换为 C 版本。我遇到的问题之一是侦听不同端口的侦听器。 Responder 在端口 445 和 139 上侦听 SMB。我创建了一个小片段来侦听这些端口。但是当我运行我的程序时,我没有得到任何数据。

void sniff(int PORT) {
    int server_fd, new_socket, valread;
    struct sockaddr_in address;
    int opt = 1;
    int addrlen = sizeof(address);
    char buffer[1024] = {0};
       
    if ((server_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == 0) {
        return;
    }
       
    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
        return;
    }

    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons( PORT );
       
    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0) {
        return;
    }

    if (listen(server_fd, 3) < 0) {
        return;
    }
    printf("listen done.\n");
    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0) {
        return;
    }

    valread = read( server_fd , buffer, 1024);
    printf("%s\n",buffer );

    return;
}

如果我这样做,我什么也得不到。

0 个答案:

没有答案
相关问题