2
TCPとUDPポートだけをスキャンするカスタムポートスキャナを作成する必要があります。私は標準Cでソケットを使って作業しています。今のところ私は範囲内のすべてのポートを取得します。TCP UDPで開いているすべてのポートをどのように取得できますか?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdlib.h>
#include <errno.h>
int scanPort(struct hostent *hostaddr,int port){
char responce[1024];
char *message="checking port";
struct sockaddr_in server_address;
int socket_d;
int rval;
socket_d = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if(socket_d == -1)
{
perror("Socket()\n");
return errno;
}
memset(&server_address,0,sizeof(server_address));
server_address.sin_family=AF_INET;
server_address.sin_port=htons(port);
memcpy(&server_address.sin_addr,hostaddr->h_addr,hostaddr->h_length);
rval = connect(socket_d,(struct sockaddr *) &server_address, sizeof(server_address));
if(rval == -1)
{
close(socket_d);
return 0;
}else{
close(socket_d);
return 1;
}
}
int main(int argc, char **argv)
{
if(argc < 4){
printf("Exemplu: ./portscanner <adresa_ip> <port_pornire> <port_oprire> \n");
return (EINVAL);
}
int startPort;
int endPort;
int port;
struct hostent *host_address;
host_address = gethostbyname(argv[1]);
startPort = atoi(argv[2]);
endPort = atoi(argv[3]);
for(port = startPort;port<=endPort;port++)
{
if(scanPort(host_address,port)==1){
printf("Port %d is open\n",port);
}
}
}
この例では、この問題の解決方法を確認できます。しかし、私はTCPとUDPポートだけをチェックする方法はありません。これで私を助けてください。
よろしく、 Badea Sorin!
私はネイティブが必要です。私はこのツールを実行する必要があるところではroot権限を持っていません –
nmapを実行する必要はありません。マニュアルを読むだけでいいです。あなたがそれをインストールすることができない場合は、私の答えからオンラインマニュアルを使用してください。 –
ああ私はそれを得た。しかし、私は一種のnoobieです。このユーザー全員が欲しいと願っています –