Есть программа, которая проверяет лицензию, отправляя POST на сервер с данными лицензии, сервер отправляет обратно isValid:true и хеш MD5 текущей даты по UTC. С этим проблем не возникло, прога теперь стучиться на localhost и мой самописный сервер всегда скармливает true, всё было хорошо, до обновления. Принцип проверки лицензии почти не изменился, за исключением проверки на стороне клиента сигнатуры лицензии. Если она неверная, шлёт, если скармливать демо лицензию с верной сигнатурой и перенаправлением на сервер, который всегда говорит true, и при этом откатить дату до окончания лицензии - то принимает и прога полностью функционирует. Я изначально думал, что эта сигнатура - base64 строка, но нет, при декоде рандомные символы MEUCIDNsZCyguHZKUhhQmNiInKOfszValHoIUL0RidiBlUFjAiEAv4YAUyywluFycS72WhXOPQKWTTFuwRpv6NFlNWwkVZg= Code MEUCIDNsZCyguHZKUhhQmNiInKOfszValHoIUL0RidiBlUFjAiEAv4YAUyywluFycS72WhXOPQKWTTFuwRpv6NFlNWwkVZg= Декодированный текст 0E 3ld,á©vJRPÿÏê£úƒ│5ZözP¢ëÏüòAc!�┐å�S,░ûßrq.÷Z╬=ûM1n┴oÞÐe5l$Uÿ Code 0E 3ld,á©vJRPÿÏê£úƒ│5ZözP¢ëÏüòAc!�┐å�S,░ûßrq.÷Z╬=ûM1n┴oÞÐe5l$Uÿ Может есть мысли какие нибудь? P.S. Прога точно ждёт base64 строку. Если передать в <Signature> мусор - выкинет ошибку, если не кратное количество символов base64 строки
Death4Life, подпись в стандартном формате ASN.1, онлайн-декодеры найти не проблема. Внутри два 256-битных числа. Только вряд ли это поможет. Там почти 100% асимметричный алгоритм, без приватного ключа валидную подпись не сгенерировать. Ищите в программе место проверки и правьте так, чтобы результат всегда был TRUE.
MaxRWS, да, похоже ты прав. Получил как ты и говорил, 2x256bit числа. Оказалось сложнее, чем предполагал. Ковырять саму программу будет проблемой для меня, накрыта Confuser (1.x), походу кастомным, с наскоку расшифровать не получилось. Спасибо за наводку)