diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp index 23c570045f..c03ed0fc76 100644 --- a/Source/Core/Common/Network.cpp +++ b/Source/Core/Common/Network.cpp @@ -3,12 +3,13 @@ // Refer to the license.txt file included. #include -#include #include #include +#include #include "Common/Network.h" #include "Common/StringUtil.h" +#include "Common/Timer.h" void GenerateMacAddress(const MACConsumer type, u8* mac) { @@ -27,16 +28,12 @@ void GenerateMacAddress(const MACConsumer type, u8* mac) break; } - srand((unsigned int)time(nullptr)); - - u8 id[3] = - { - (u8)rand(), - (u8)rand(), - (u8)rand() - }; - - memcpy(&mac[3], id, 3); + // Generate the 24-bit NIC-specific portion of the MAC address. + std::default_random_engine generator(Common::Timer::GetTimeMs()); + std::uniform_int_distribution distribution(0x00, 0xFF); + mac[3] = static_cast(distribution(generator)); + mac[4] = static_cast(distribution(generator)); + mac[5] = static_cast(distribution(generator)); } std::string MacAddressToString(const u8* mac)