PDA

View Full Version : استفاده از یوزر و پسورد ویندوز در برنامه



esmit61
سه شنبه 07 مرداد 1393, 21:10 عصر
سلام. توی برنامه نیاز به این دارم که کاربر یوزر و پسورد وارد کند که یا در دیتابیس ذخیره شده و یا از روی کاربران ویندوز (لوکال و یا اکتیو دایرکتوری)خوانده شود. (Windows Credential) مورد دومی رو نمیدونم چجوری باید انجام بدم. با توجه به اینکه رمزهای ویندوز رمزنگاری هستند فقط باید یوزر پسورد را بفرستم و ویندوز بگه آیا صحیح هست یا نه.
ممنون میشم کمک کنید یا حداقل یه منبعی یا لینکی چیزی معرفی کنید

omid nasri
سه شنبه 07 مرداد 1393, 22:32 عصر
بنده چند سال پیش این سوال برای بنده پیش امد، رمز ورود به سیستم در فایلی در درایو C دخیره میشه که امکان باز کردن فایل وجود نداره ، راه های وجود داشت که بنده یکی رو که خودم استفاده کردم این بود که فایل رو به برنامه ای می داد و رمز رو در حالت هش تحویل می داد با برنامه Cain اون رو دی هش می کردی ، اما در کل راه درستی وجود نداره که بخوای رمز رو دریافت کنی ، می تونی راحت رمز رو عوض کنی اما دریافت رمز واقعا سخت هستش.

forodo007
چهارشنبه 08 مرداد 1393, 00:36 صبح
باید بگم اتفاقا این کار سادست و با برنامه backtrack 5 اینکار رو میتونی بکنی تو اشیانه بگرد پیدا میکنی

omid nasri
چهارشنبه 08 مرداد 1393, 01:10 صبح
شما مطما هستی بک ترک برنامه هستش؟

esmit61
چهارشنبه 08 مرداد 1393, 10:14 صبح
بک ترک یک توزیع خاص از لینوکس هست که از این به بعد با نام Kali توزیع میشه. ولی مشکل من رو درست متوجه نشدید
من نمیخوام رمز ویندوز رو به دست بیارم. چون عملی نیست(روش رمزنگاری اون، یک طرفه هست). فقط میخوام یوزر پسوردی رو بفرستم به ویندوز( یا اکتیو دایرکتوری) و اون بهم بگه که آیا اعتبار داره یا نه.
این کار رو هم میخوام با C# انجام بدم
ممنون

drsina
چهارشنبه 08 مرداد 1393, 12:31 عصر
چه ربطی به بک تراک داره ؟! اگه بلافرض به فایل های اصلی دست پیدا کنید ، بازم ازش سر در نمیشه اورد .

درضمن کاری که میخوای بکنید عملی نیست چون اگر بخوای رمز رو authenticate کنید ، این جوری هر که میتونه با یه برنامه مالتی ترد ، رمز ویندوز رو بروت فورس کنه

forodo007
چهارشنبه 08 مرداد 1393, 12:59 عصر
اولا بک نرک یه سیستم عامل در ثانی من خودم این کارو انحا دادم یه پسورد هش که به دو قسمت تقسیم میشه و پس از اینکه پسورد رو پیداکردیم اوذ رو دی هش میکنیم

forodo007
چهارشنبه 08 مرداد 1393, 13:05 عصر
اگه خواستی بگو کدهای پن تست کردن و دستیابی به پسورد رو تو کالی یا بک ترک بزار واست

امیر مهرشاد
چهارشنبه 08 مرداد 1393, 22:10 عصر
اگه خواستی بگو کدهای پن تست کردن و دستیابی به پسورد رو تو کالی یا بک ترک بزار واست
میشه کد هاتونو قرار بدید تا ببینم ؟

esmit61
چهارشنبه 08 مرداد 1393, 23:21 عصر
درضمن کاری که میخوای بکنید عملی نیست چون اگر بخوای رمز رو authenticate کنید ، این جوری هر که میتونه با یه برنامه مالتی ترد ، رمز ویندوز رو بروت فورس کنه
دوست عزیز این کار عملی هست. بسیاری از برنامه ها از این روش استفاده می کنند. روش بروت فورس هم که گفتید عملیه. به خاطر همینه که مایکروسافت پسورد کامپلکس رو توصیه میکنه.
میتونید نمونه کد زیر رو تست کنید:
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool LogonUser(string pszUsername, string pszDomain, string pszPassword,
int dwLogonType, int dwLogonProvider, ref IntPtr phToken);


IntPtr userHandle = IntPtr.Zero;
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;

bool loggedOn = LogonUser(user,
domain,
password,
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
ref userHandle);



اگر متغیر loggedOn برابر با true بود یعنی یوزر و پسورد صحیح بود. یک هندل به اون یوزر هم براتون برمیگردونه. ولی فعلا برای من مساله اینه که طبق گفته مایکروسافت این تابع اوکالی کار میکنه و برای remote روشهای دیگه ای ظاهرا وجود داره