我正在尝试用golang编写一个TCP syn port扫描器,我在这里找到了C版本的解决方案:http://www.binarytides.com/tcp-syn-portscan-in-c-with-linux-sockets/
我想在go中实现它,如何在golang中发送 tcp header :
//TCP Header
tcph->source = htons ( source_port );
tcph->dest = htons (80);
tcph->seq = htonl(1105024978);
tcph->ack_seq = 0;
tcph->doff = sizeof(struct tcphdr) / 4; //Size of tcp header
tcph->fin=0;
tcph->syn=1;
tcph->rst=0;
tcph->psh=0;
tcph->ack=0;
tcph->urg=0;
tcph->window = htons ( 14600 ); // maximum allowed window size
tcph->check = 0; //if you set a checksum to zero, your kernel's IP stack should fill in the correct checksum during transmission
tcph->urg_ptr = 0;
我必须使用syscall还是cgo?如果有人可以帮助我,我将非常感激。
最佳答案
您将要使用syscall。但是syscall包不一定可以在不同的操作系统之间移植,因此,如果这对您很重要,那么您将必须针对每个os版本编写并使用file_os.go命名方案来保存os特定的代码。
关于sockets - 如何使用Golang进行TCP Syn Port扫描?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19999572/