New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Парочка изменений #1
Comments
Привет, спасибо)
|
|
Я как не виндовс юзеров, не шарю за это) |
На windows во время получения появляется 4 окна powershell ) |
Прикол) let csproduct_output = run_shell_comand(
"powershell",
[
"-WindowStyle",
"Hidden",
"-command",
r#"Get-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID"#,
],
)
.unwrap_or("".into()); Тут до сих пор открыто issue, но пишут, что обязательно сначала |
|
Отлично, а проверь, данные отдает такая команда? Если да, то поправлю и обновлю сегодня |
Отдаёт |
Готово, оптимизировал зависимости и добавил WindowStyle Hidden |
Всё работает, но всё-равно очень медленно. Минимальное время полученное в ходе 3 запусков приложения: 2.89s. |
Наверное надо будет асинхронно вызывать команды powershell, чтобы ускорить |
Загрузи крейт к себе на пк, замени код в #[cfg(target_os = "windows")]
use crate::errors::MIDError;
#[cfg(target_os = "windows")]
use crate::utils::run_shell_comand;
#[cfg(target_os = "windows")]
pub(crate) fn get_mid_result() -> Result<String, MIDError> {
let combined_output = run_shell_comand(
"powershell",
[
"-WindowStyle",
"Hidden",
"-command",
r#"
$csproduct = Get-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID;
$bios = Get-WmiObject Win32_BIOS | Select-Object -ExpandProperty SerialNumber;
$baseboard = Get-WmiObject Win32_BaseBoard | Select-Object -ExpandProperty SerialNumber;
$cpu = Get-WmiObject Win32_Processor | Select-Object -ExpandProperty ProcessorId;
"$csproduct|$bios|$baseboard|$cpu"
"#,
],
)
.unwrap_or("".into());
if combined_output.is_empty() {
return Err(MIDError::ResultMidError);
}
let combined_string = combined_output
.trim()
.trim_start_matches('|')
.trim_end_matches('|');
Ok(combined_string.to_string())
} И да, перед этим сними mid текущей версии и сравни его с тем, что получится с этим кодом, должно совпасть. |
Если нужно часто дергать mid, то например, имеет смысл сохранять его в state |
Извиняюсь за долгий ответ. Hwid я записывал в sessionStorage. Сейчас я отказался от получения hwid из-за проблем с уникальностью получаемого hwid. На Linux и macos может и сработает подобный вариант получения hwid (который у Вас в crate), но на windows постоянно попадаются повторения получаемого hwid. |
Проблемы с уникальностью в целом на windows или в текущем крейте?
На Linux практически нет надежных вариантов, она вся секьюрная, самый идеальный вариант для macos.
Можно подробней пожалуйста, как вы это отследили, запустили трафик на свое приложение? Странно, используется 4 не связанных между собой параметра, у разных людей вы заметили одинаковый хеш MID? |
Проблемы с уникальностью в целом на windows. Другие платформы протестировать не было возможности. Я разрабатываю приватный лаунчер для Minecraft проектов. На бэке организовал добавление в таблицу к пользователю hwid. В итоге тестирования на аудитории ~10к человек у многих вылетала ошибка, которая гласила, что данный ПК уже привязан к другому аккаунту. Я пробовал и другие параметры использовать для вычисления hwid, но повторения всё равно были. |
А сколько конкретно людей из 10к, можно посчитать? Интересен %.
|
|
У некоторых пользователей были проблемы с получением части параметров. Почему на одной системе все параметры получаются, а на другой нет - для меня загадка |
Да, я только начал про это писать, опередили) |
"А сколько конкретно людей из 10к, можно посчитать? Интересен %." - процент подсчитать не смогу. Ещё хотел добавить, что процессор лучше не использовать для получения hwid. Если разработчик хочет сделать привязку ПК к аккаунту, то значение будет меняться. Я думаю, что стоит идти в сторону получения каких-то данных от материнской платы, чтобы при замене процессора не происходила смена hwid. |
В ближайшие дни верну проверку по HWID и отпишусь о результатах более подробно |
Имейте ввиду, что cpu_output может меняться?
Проблема в том, что ПК не винде, как конструктор, по идее там можно заменить всё и тогда отпечаток изменится, но надеюсь это не частый случай и в таком случае пользователю просто надо будет перепривязать свой аккаунт на обновленном устройстве. |
Подобная защита по HWID защищает только от школьников, посмотревших гайды на ютубе, но когда аудитория состоит только из них - это хорошее решение))) (на винде) |
А как еще иначе лицензировать софт кроме как создания MID?) Поэтому и используются идентификаторы железок, которые программно не подменить, только если железо перебирать, что становится нецелесообразным для тех, кто хочет ваш софт использовать бесплатно (если есть триал версия на каждый уникальный MID) |
@michitta а потестируй пожалуйста этот вариант #1 (comment) |
Выпустил версию 1.1.3 с этим кодом, который быстрее чуть больше х2. |
Здравствуйте! Мне очень понравился Ваш проект. Во время внедрения в своё приложение, я пересмотрел некоторые реализованные Вами способы для большей оптимизации и уменьшения размера итогового приложения.
Вот несколько моих изменений:
The text was updated successfully, but these errors were encountered: