2013-11-15 6 views
2

Я пытаюсь написать сканер TCP SYN порта с golang, я нашел решение в C версии здесь: http://www.binarytides.com/tcp-syn-portscan-in-c-with-linux-sockets/Как я могу выполнить сканирование TCP-портов tcp с помощью golang?

Я хотел бы реализовать его в дороге, как я могу отправить TCP заголовок как это в golang:

//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; 

Должен ли я использовать системный вызов или cgo? Меня очень ценят, если кто-то может мне помочь.

ответ

0

Вам понадобится использовать системный вызов. Однако пакет syscall не обязательно переносится в разных операционных системах, поэтому, если это имеет значение для вас, вам придется писать на версии os и использовать схему именования file_os.go для хранения специального кода os.