だから私はCで、単純なTCPサーバを作成するには、このガイド
http://www.binarytides.com/winsock-socket-programming-tutorial/
を、次のされている、これは私が思い付いたコードですhttps://pastebin.com/CDxiLv3b
Winsockのは、同じコンピュータからの接続を受け入れるはなく、同じネットワークから
int c;
char client_message[2000];
int recv_size;
printf("\nInitialising Winsock...");
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
{
printf("Failed. Error Code : %d", WSAGetLastError());
return 1;
}
printf("Initialised.\n");
//Create a socket
if ((server_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("Could not create socket : %d", WSAGetLastError());
}
printf("Server Socket created.\n");
memset(&server_addr, 0, sizeof(server_addr));
//Prepare the sockaddr_in structure
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(port);
//Bind
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == SOCKET_ERROR)
{
printf("Bind failed with error code : %d", WSAGetLastError());
}
printf("Bind to port %d done.\n", port);
//Listen to incoming connections
listen(server_socket, 3);
//Accept and incoming connection
puts("Waiting for incoming reverse shell...");
c = sizeof(struct sockaddr_in);
while ((client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &c)) != INVALID_SOCKET)
{
puts("Connection accepted");
if ((recv_size = recv(client_socket, client_message, 2000, 0)) == SOCKET_ERROR)
{
puts("recv failed");
break;
}
client_message[recv_size] = '\0';
strcpy_s(path, MAX_PATH_LEN, client_message);
break;
}
if (client_socket == INVALID_SOCKET)
{
printf("accept failed with error code : %d", WSAGetLastError());
return 1;
}
return 0;
(はい、私はbasiclyコピーしてものを変更)
今の問題は、私だけに接続することができるということですこのサーバは同じ接続を使用していますが、ネットワーク上の異なるコンピュータを使用して接続することはできません。ポート(実際には問題にならないはずです)を開いても、ネットワーク上の異なるコンピュータ(同じコンピュータからのみ)
「動作しません」を定義してください。 – EJP
どのインターフェース(ip)ではリッスンしているプログラム(netstatで確認できます)と、どのipで他のマシンから接続していますか? – Juan
は動作しませんネットワーク内の他のコンピュータからの接続を受け付けないことを意味します(IPリスティング)、私のローカルコンピュータ(動作する場所)と私のネットワーク内の他のコンピュータ(10.0.0.14) – NacOJerk