2021-06-10 22:02:00 +03:00
|
|
|
// Copyright (c) Microsoft Corporation
|
|
|
|
// SPDX-License-Identifier: MIT
|
2021-03-15 18:34:33 +03:00
|
|
|
|
|
|
|
#include <WinSock2.h>
|
|
|
|
#include <iostream>
|
|
|
|
#include <Windows.h>
|
|
|
|
|
|
|
|
int
|
|
|
|
main()
|
|
|
|
{
|
|
|
|
WSADATA wsa_data;
|
2021-04-29 00:51:58 +03:00
|
|
|
if (WSAStartup(2, &wsa_data) != 0) {
|
|
|
|
printf("WSAStartup failed\n");
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
|
2021-03-15 21:46:56 +03:00
|
|
|
int leaked_ports = 0;
|
2021-03-15 18:34:33 +03:00
|
|
|
|
|
|
|
for (;;) {
|
|
|
|
|
|
|
|
auto s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
|
|
|
if (s == INVALID_SOCKET) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
sockaddr_in addr;
|
|
|
|
addr.sin_addr.S_un.S_addr = 0;
|
|
|
|
addr.sin_port = 0;
|
|
|
|
addr.sin_family = AF_INET;
|
2021-03-15 21:46:56 +03:00
|
|
|
if (bind(s, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR) {
|
|
|
|
leaked_ports++;
|
|
|
|
if (leaked_ports % 100 == 0) {
|
|
|
|
printf("Leaked %d ports\n", leaked_ports);
|
|
|
|
Sleep(10);
|
|
|
|
}
|
|
|
|
} else {
|
2021-04-29 00:51:58 +03:00
|
|
|
DWORD error_value = WSAGetLastError();
|
|
|
|
wchar_t* error_string = NULL;
|
2021-03-15 21:46:56 +03:00
|
|
|
FormatMessageW(
|
|
|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
|
|
NULL,
|
2021-04-29 00:51:58 +03:00
|
|
|
error_value,
|
2021-03-15 21:46:56 +03:00
|
|
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
|
|
|
(LPWSTR)&s,
|
|
|
|
0,
|
|
|
|
NULL);
|
2021-04-29 00:51:58 +03:00
|
|
|
printf("bind failed: %S\t%d\n", error_string, error_value);
|
|
|
|
LocalFree(error_string);
|
2021-03-15 21:46:56 +03:00
|
|
|
Sleep(1000);
|
|
|
|
}
|
2021-03-15 18:34:33 +03:00
|
|
|
}
|
|
|
|
}
|