Был опыт похожий, я реализовал так.
Получаем HWID через клиентскую часть кода.
import wmi
a = WMI().Win32_ComputerSystemProduct()[0].UUID
print(a)
Пишем на Flask или FastAPI серверную часть, которая будет реализовывать выдачу лицензионного ключа на конкретный HWID. И переносим часть логики на сервер *vds сейчас можно за 150р в месяц купить.
(как вариант, можно реализовать выгрузку части кода в оперативную память)
Вкладываешь эту сумму в стоимость подписки/цены продукта = профит.
Конечно это не понацея, но если клиент не слишком хитрый и шаристый, то вполне сойдет.