30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
1 | |
Безопасное получение хэша пароля, заданного через указатель из SecureString06.05.2016, 14:01. Показов 2912. Ответов 20
Метки нет Все метки)
(
Итак в продолжение темы "Как работать с SecureString?" вопрос следующий: как рассчитать md5-хэш из указателя IntPtr или обычного unsafe указателя? (получим из SecureString) Я использую класс MD5 для расчета хэша. Собственно вариантов два: попробовать как то скормить ему указатель (я пока не нашел методом принимающих указатели) или же найти какую то другую библиотеку которая умеет считать хэши. Подскажите пожалуйста. (А то меня Rius достал уже!
![]() Добавлено через 5 минут P.S. гугл по запросу "c# md5 hash from pointer" ничего внятного ответить не смог. ![]()
0
|
06.05.2016, 14:01 | |
Ответы с готовыми решениями:
20
Получение страницы через cURL с учетом хэша в ссылке Использование MD5 для проверки хэша пароля с MySQL Получение MD5 хэша файла |
![]() ![]() 12837 / 8864 / 1317
Регистрация: 21.01.2016
Сообщений: 33,217
|
|
06.05.2016, 14:14 | 2 |
Это потому, что вопрос глупый. IntPtr - это uint или ulong в зависимости от архитектуры (х86 или х64) твоего приложения. А подсчитать MD5 для uint и без гугла можно.
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 14:20 [ТС] | 3 |
Разумеется имеется ввиду указатель на char. Я же сказал что получаю указатель из SecureString.
Добавлено через 3 минуты Usaga, не притворяйтесь что не поняли вопрос. Естественно считать хэш надо не самого указателя, а того что по нему записано.
0
|
![]() ![]() 12837 / 8864 / 1317
Регистрация: 21.01.2016
Сообщений: 33,217
|
|
06.05.2016, 14:22 | 4 |
Dark Byte, я хочу сказать, что если нужно подсчитать хэш только для указателя, а не для данных на которые он указывает, то достаточно просто привести указатель к uint или ulong. Но это тупость. мне кажется, что ты неправильно вопрос поставил...
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 14:23 [ТС] | 5 |
Кому может прийти в голову рассчитывать хэш самого указателя, а не того что по нему записано?
![]()
0
|
![]() ![]() 12837 / 8864 / 1317
Регистрация: 21.01.2016
Сообщений: 33,217
|
|
06.05.2016, 14:24 | 6 |
Dark Byte, тогда смотри в сторону маршалинга - копируешь данные в управляемый массив и уже над ним сотворяешь MD5.
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 14:26 [ТС] | 7 |
Так в этом вся соль. Я же пытаюсь закрыть описанную Rius уязвимость. Чтобы пароль никогда не попадал в управляемый код. А так он попадет...
0
|
![]() ![]() 12837 / 8864 / 1317
Регистрация: 21.01.2016
Сообщений: 33,217
|
|
06.05.2016, 14:26 | 8 |
0
|
![]() 1454 / 846 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
|
|
06.05.2016, 14:26 | 9 |
Не по теме: Чего ты такой агрессивный? Пойди валерьяночки накапай себе! Ты этот SecureString где получаешь? Где у тебя пароль вводится?
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 14:28 [ТС] | 10 |
Не по теме: Сроки давят на нервы. :D PasswordBox из WPF.
0
|
![]() 1454 / 846 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
|
|
06.05.2016, 14:40 | 11 |
Тебе никто не запрещает получать нормальную строку с паролем.
Просто нежелательно хранить эту строку в переменной или свойстве объекта. Для хранения в качестве свойства объекта создали SecureString. https://arlvin.wordpress.com/2... ma-part-1/ В своих методах можешь получать строку и делать с ней любые манипуляции. Метод отработает, строки не станет.
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 14:48 [ТС] | 12 |
LeniumSoft, вы с Rius-ом меня в конец запутали!!! Rius, Прокомментируйте пожалуйста!!! Потому что блин получается противоречие. Он говорит что строку (экземпляр) могут перехватить в памяти. А это типа уязвимость.
Добавлено через 1 минуту Потому что хэш то он тоже не сразу получается. Сначала нужен экземпляр обычной строки полученной из SecureString. Так вот ее то вроде как и могут перехватить прежде чем ее уничтожит сборщик мусора.
0
|
![]() ![]() |
|
06.05.2016, 15:25 | 13 |
Dark Byte, для решения этой возможной уязвимости и сделан SecureString:
Если создать переменную типа String с паролем, она останется в памяти и может быть перехвачена. Да, там есть уборщик мусора. Но успеть найти строку до уборки, или до очистки памяти переменной, или вообще что-то искать - все варианты возможны. У SecureString есть возможность явно контролировать время жизни переменной, а у String - нет. В этом LeniumSoft ошибается или упрощает.
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 16:48 [ТС] | 14 |
Таки что мне то делать? Как рассчитать хэш имея только указатель на данные?
0
|
![]() ![]() |
||||||||||||||||
06.05.2016, 18:11 | 15 | |||||||||||||||
SecureString позволяет получить и указатель на данные, и их количество.
Потом это через PInvoke передаётся в нативную DLL, вместе с буфером под результат. Код в DLL вычисляет результат и помещает в выходной буфер. Управляемый код обрабатывает буфер и получает из него хэш в удобочитаемом виде. Несколько набросков кода:
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 18:15 [ТС] | 16 |
Rius, а где реализация DB_CalculateHash? Я о том и спрашиваю где мне взять реализацию алгоритма хэширования в нативном коде? Это в .NET она уже реализована встроенная, а в C++ я хз...
0
|
![]() ![]() |
|
06.05.2016, 18:19 | 17 |
Dark Byte, ищите, всё есть в этих ваших интернетах.
MD5 Hash посредством WinApi
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
06.05.2016, 18:30 [ТС] | 18 |
Какой ужас!!! Меня всегда просто пугают программы на C / C++ тем более WinAPI. После C# дико на это смотреть.
![]()
0
|
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
|
|
09.05.2016, 12:33 [ТС] | 20 |
Rius, вы же не надеялись что я не посмотрю что там?
![]() ![]()
0
|
09.05.2016, 12:33 | |
Помогаю со студенческими работами здесь
20
Получение доступа к методам дочернего класса через указатель на родительский, хранимый в vector
Безопасное соединение через Delphi Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
|
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
|
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
|
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH
1. поймать путь через вывод $(pwd)
2. более правильно - на основе realpath (см. скриншот)
|
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
|
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
|
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
|
PHP 8: JIT-компиляция и улучшение производительности
Jason-Webb 13.03.2025
PHP никогда не славился своей скоростью. Многие сталкивались с проблемами производительности при работе со сложными вычислениями или обработкой больших объемов данных. Традиционная модель выполнения. . .
|
Сериализация данных с Apache Avro в Kafka
Javaican 12.03.2025
Apache Kafka стала одним из ключевых решений для работы с большими потоками данных. Однако с ростом объемов передаваемых данных возникает проблема: как эффективно сериализовать и десериализовать. . .
|
Создание потребителей Kafka с помощью Reactor Kafka
Javaican 12.03.2025
Reactor Kafka — это библиотека, объединяющая Apache Kafka с реактивным программированием на базе Project Reactor. Такое сочетание позволяет строить неблокирующие, асинхронные приложения с контролем. . .
|