Автор Тема: Да проверя паролата  (Прочетена 2731 пъти)

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Да проверя паролата
« -: Jul 02, 2024, 13:37 »
Инсталирах един open source free project.
Регистрирах се, влезнах в базата данни - виждам че паролата ми за вход е криптирана.
Искам да отворя тази MySQL таблица чрез мое приложение, което ще разработя на Free Pascal.
Как обаче ще проверя дали въведената парола отговаря на криптираната? ( Разбира се аз си знам истинската парола, но по принцип )
Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3583
  • Distribution: Mageia, Q4OS
    • Профил
Re: Да проверя паролата
« Отговор #1 -: Jul 08, 2024, 13:45 »
T.e. въпросът е как да декриптирате паролата?
Активен

nslave

  • Напреднали
  • *****
  • Публикации: 160
  • Distribution: Fedora / Debian
  • Window Manager: Xfce
    • Профил
Re: Да проверя паролата
« Отговор #2 -: Jul 08, 2024, 15:30 »
Малко вероятно е паролата да е криптирана. Най-вероятно е хеширана. Необходимо ти е да знаеш какъв алгоритъм за хеширане използва въпросният софтуер. Много вероятно е да използва и някакъв вид 'посоляване' на паролата преди да я хешира. След като разбереш какви са хеш функцията и солта, може в твоето приложение да ги прилагаш на входните данни и да сверяваш резултата със съхранената информация в базата данни.
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6650
    • Профил
Re: Да проверя паролата
« Отговор #3 -: Jul 08, 2024, 19:49 »
Сравнително по-новите алгоритми са Argon2, Bcrypt, Scrypt, PBKDF2. Eвентуално SHA256, ако са били немарливи.
За солта вече се каза.

Не съм сигурен, че изобщо би те засягало, дали хешираната парола отговора на нещо, което би пратил като твоя парола. Тя ще бъде хеширана отново и сравнена със хеш сумата при тях.
Ако ти се занимава, е отделен въпрос. Тъкмо ще видиш, как става.

Това е един от начините, по който аз създавам пароли при регистрации.
Измислям си фраза са съответния сайт или каквото ще да е и което няма как да забравя, защото е в прав текст и след това го пускам на md5sum, което ми изплюва последователност от 32 символа букви и цифри. И ползвам това за парола. Не ги помня, изчислявам ги. Много по-лесно и удобно, а и паролите са силни, защото са бая дългички.
« Последна редакция: Jul 08, 2024, 19:53 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

kuunlaaksot

  • Напреднали
  • *****
  • Публикации: 211
  • Distribution: CRUX
    • Профил
Re: Да проверя паролата
« Отговор #4 -: Jul 09, 2024, 10:51 »
md5sum изплюва само малки букви и цифри, което само по себе си не е точно ОК за парола. Всъщност, защо просто не ползваш фразата на български за парола?
Активен

lunarvalleys

4096bits

  • Напреднали
  • *****
  • Публикации: 6650
    • Профил
Re: Да проверя паролата
« Отговор #5 -: Jul 09, 2024, 11:47 »
Защото е смислена.
С един подходящ речник може да се направят много бели.

32 символа буквено-цифрена последователност са достатъчно дълга парола, за да я мъчат дълго време при сегашните възможности на машините. Много по-трудна за разбиване е, отколкото големи, малки букви и няколко символа или цифри, но по-къса парола.
По-сигурно е дори срещу brute force.

Можеш и сам да провериш, че ако имаш набор от десет цифри, малки и големи букви и знаци, които са да речем грубо 72 символа и ако паролата ти е с дължина от осем символа, възможните комбинации с повтаряне са 26,088,783,435.

Ако имаш шестнадесет символа и 32 символа дълга парола, възможните комбинации са 751,616,304,549

Повечето хора избират пароли с дължина от осем символа, защото по-лесно се помни, а това е минимума при повечето системи за вход.

Код:
import math

pool = 72 # бройка на символите на разположение
passwd_len = 8 # дължина на паролата

combinations = math.comb(pool + passwd_len -1, passwd_len)
print(f"{combinations:,}")

Това е примерен код на Python.

За да увелича неимоверно възможния брой комбинации при md5 паролата, само трябва да я прекарам през още една операция - base64.

Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Да проверя паролата
« Отговор #6 -: Jul 11, 2024, 18:13 »
T.e. въпросът е как да декриптирате паролата?
Вероятно трябва да потърся в инсталираната папка файл примерно: login.php и да се опитам да разбера какво правят те ...
( Обаче днес съм изнервен над 70%. Имам проблеми с един майстор, който ми ремонтираше банята преди 1-2 месеца и сега открих, че на стената в спалнята откъм банята е избило голямо мокро петно... )
Активен

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Да проверя паролата
« Отговор #7 -: Jul 11, 2024, 19:18 »
Малко вероятно е паролата да е криптирана. Най-вероятно е хеширана. Необходимо ти е да знаеш какъв алгоритъм за хеширане използва въпросният софтуер. Много вероятно е да използва и някакъв вид 'посоляване' на паролата преди да я хешира. След като разбереш какви са хеш функцията и солта, може в твоето приложение да ги прилагаш на входните данни и да сверяваш резултата със съхранената информация в базата данни.
Записах в текстови файлове оригиналната ми парола и стринга, койтополучавам от полето password от таблица users.
Никой хеш от Файловия мениджър на Линукса ми не преобразува оригиналната в резултативната, нито обратно. Ще търся къде правят "посоляване" евентуално.
Активен

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Да проверя паролата
« Отговор #8 -: Jul 13, 2024, 08:20 »
Сравнително по-новите алгоритми са Argon2, Bcrypt, Scrypt, PBKDF2. Eвентуално SHA256, ако са били немарливи.
За солта вече се каза.

Не съм сигурен, че изобщо би те засягало, дали хешираната парола отговора на нещо, което би пратил като твоя парола. Тя ще бъде хеширана отново и сравнена със хеш сумата при тях.
Ако ти се занимава, е отделен въпрос. Тъкмо ще видиш, как става.

Това е един от начините, по който аз създавам пароли при регистрации.
Измислям си фраза са съответния сайт или каквото ще да е и което няма как да забравя, защото е в прав текст и след това го пускам на md5sum, което ми изплюва последователност от 32 символа букви и цифри. И ползвам това за парола. Не ги помня, изчислявам ги. Много по-лесно и удобно, а и паролите са силни, защото са бая дългички.
Смятах чрез IDE на Free Pascal да постигна, това което те постигат с PHP, т.е. не да им пращам парола, а аз да получа на клиентската машина хешираната парола и да достигна до извода, дали току-що въведена парола отговаря на получената хеширана .... нещо такова ... На първо време регистрацията на потребител да си остане чрез сайта, а допълнително да може да се ползва базата данни с приложение компилирано чрез IDE на Free Pascal.
« Последна редакция: Jul 16, 2024, 11:35 от tyrex »
Активен

spec1a

  • Напреднали
  • *****
  • Публикации: 4221
    • Профил
Re: Да проверя паролата
« Отговор #9 -: Jul 26, 2024, 18:36 »
   Зачетох се внимателно във мненията в темата и се запитах:

Къде,по дяволите, физически  се намира MySQL сървъра ?

   Ако е на локалния компютър,или на машина,до която tyrex има достъп,
може да смени паролата както си иска,после може да върне старата
(т.е. старата хеш стойност).
 
   Достатъчно е да стартира сървъра с опцията "skip-grant-tables"
и после само "mysql" ,и "сичко е шес".

Активен

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Да проверя паролата
« Отговор #10 -: Jul 28, 2024, 13:36 »
MySQL сървъра физически  се намира на платен хостинг. ( В момента се опитвам да иинсталирам локален сървър на мой стар компютър )

Имам достъп до базата данни, мога да редактирам полетата в таблиците, включително паролите.
Явно не мога да обясня, какво искам да направя.

Пиша еднно приложенние на Free Pascal, с което да се логвам в MySQL база данни и да чета / записвам данни ...
Направих  някакво логване чрез  Free Pascal, но нямам хеширане/криптииране на паролата, с други думи директно чета паролата от базата и проверявам дали е истинската при логване.
Реших да инсталирам един Free project, който прави регистрация на потребители и който хешира паролите - речено сторено инсталирах го, обаче той е писан на PHP и не мога да разбера как хешира/криптира паролите и съответно не мога да приложа същите методи за Free Pascal приложението.
Дано успах да обясня ...
« Последна редакция: Jul 28, 2024, 13:39 от tyrex »
Активен

spec1a

  • Напреднали
  • *****
  • Публикации: 4221
    • Профил
Re: Да проверя паролата
« Отговор #11 -: Jul 28, 2024, 14:28 »
MySQL сървъра физически  се намира на платен хостинг. ( В момента се опитвам да иинсталирам локален сървър на мой стар компютър )

Имам достъп до базата данни, мога да редактирам полетата в таблиците, включително паролите.
Явно не мога да обясня, какво искам да направя.

Пиша еднно приложенние на Free Pascal, с което да се логвам в MySQL база данни и да чета / записвам данни ...
Направих  някакво логване чрез  Free Pascal, но нямам хеширане/криптииране на паролата, с други думи директно чета паролата от базата и проверявам дали е истинската при логване.
Реших да инсталирам един Free project, който прави регистрация на потребители и който хешира паролите - речено сторено инсталирах го, обаче той е писан на PHP и не мога да разбера как хешира/криптира паролите и съответно не мога да приложа същите методи за Free Pascal приложението.
Дано успах да обясня ...

   Т.е. трябва ти PHP експерт.

   За съжаление,от отдавна не се занимавам с този език,но можеш тук
да постнеш част от кода (за който подозираш,че се занимава с паролите)
и някой разбирач може да ти помогне.
   Може и да видиш кои точно функции на PHP имат такава
функционалност и да пуснеш търсене във всички файлове

Разбира се,както си прецениш ...




Успех !
Активен

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Да проверя паролата
« Отговор #12 -: Jul 29, 2024, 08:18 »
Ще изгърмя от щастие ;D
Намерих на https://www.php.net/manual/en/function.password-hash.php :
Код:
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
password_hash — Creates a password hash

Приятно се изненадах, че при търсене във файловете намери участие на password_hash
Ще експлодирам от щастие ;D
Тези дни ще опитам нещо по въпроса ...
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6650
    • Профил
Re: Да проверя паролата
« Отговор #13 -: Jul 29, 2024, 14:40 »
Интересно!

Когато спомена РНР и си помислих да ти предложа да потърсиш за хаш вункции, но си казах, сигурно е наясно по въпроса  ;D
Почти всеки език има такива.

И по ирония на съдбата, може би най-използвания в момента - няма.  :D
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

tyrex

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Да проверя паролата
« Отговор #14 -: Jul 29, 2024, 18:02 »
Кой е най-използвания език в момента ?

Гледам в IDE-то на Free Pascal има някакви групи компоненти:
DCP Ciphers : "BLOW FISH", "CAST 256" ....
DCP Hashes : "MD5", "SHA 256" ....
DCP Base : "BM", "BH", "BN" ....
и други
« Последна редакция: Jul 29, 2024, 18:14 от tyrex »
Активен