نوشته شده توسط
aliarjmandi
مورخه
۱۳۸۹/۳/۱۰
در ساعت
14:14
For everyone who works daily on a computer. The mistakes daily mouse and keyboard usage will result in Carpal Tunnel Syndrome! Use the mouse and keyboard correctly. View below for the RIGHT TECHNIQUES......





Hand Exercises for Carpal Tunnel Syndrome :
2fc0aa10-1656-49b0-85d7-cfce06efba04|1|4.0
کلمات کلیدی :
نوشته شده توسط
aliarjmandi
مورخه
۱۳۸۹/۳/۸
در ساعت
15:04
یکی از مشکلات همیشه گی در تولید نرم افزارها مبحث ثبت ردپای کاربران (User Log) میباشد . اینکه ما بخواهیم تشخیص دهیم کدام کاربر چه فعالیتی را انجام داده است . بعنوان مثال چه کسی یک رکورد خاص را ایجاد ، ویرایش و حذف نموده است . برای پیدا سازی این مبحث بسته به سلیقه برنامه نویسان راههای متفاوتی وجود دارد . بعضی از برنامه نویسان جداولی برای نگهداری لاگ کاربران ایجاد میکنند و برخی دیگر به تمامی رکوردها آی دی کاربران را اضافه میکنند . اما آیا میدانید که بانک اطلاعاتی Sql Server بصورت خودکار از تمام عملکرد کاربران لاگ گیری میکند و میتوان با استفاده از آن ردپای عملکرد کاربران را استخراج نمود . حتماً در زمان ایجاد یک بانک اطلاعاتی جدید دقت کرده اید که هر بانک اطلاعاتی شامل دو فایل میباشد . فایل mdf که شامل اطلاعات داده ای میباشد و فایل ldf که شامل لاگهای مربوط به تراکنشهای بانک اطلاعاتی میباشد . در این مقاله سعی شده راهکاری برای استخراج لاگ از فایل ldf ارائه شود .
استخراج این اطلاعات علاوه بر اینکه راهکاری برای لاگ کردن عملکرد کاربران ارائه میکند ، به شما در بازیابی اطلاعات از دست رفته شما نیز کمک میکند . برای بازیابی لاگ فایل نرم افزارهای مختلفی ارائه شده است . از جمله این نرم افزارهای نرم افزار Sql Log Rescue میباشد که بصورت رایگان ارائه شده است . البته محدودیت این نرم افزار مربوط به ورژن بانک اطلاعاتی آن میباشد و این برنامه فقط از Ms Sql Server 2000 حمایت میکند . اما نصب آن تجربه جالبی میباشد و شما براحتی میتوانید تمام تراکنشهای قبلی خود را مشاهده کنید . این برنامه به شما امکان میدهد داده های قبلی را بازیابی نمایید .

برنامه دیگر در این رده ApexSQL Log میباشد . این نرم افزار بسیار قدرتمند تر از برنامه فوق میباشد و از تمامی نسخه های موجود sql server حمایت میکند ، اما این نرم افزار رایگان نمیباشد .

اما ما سعی کردیم با توجه به دو برنامه فوق یک پروژه نرم افزار Open source ایجاد کرده و از طریق پروژه خودمان به داده های لاگ دسترسی پیدا کنیم . در اجرای این پروژه چالشهای زیادی وجود داشته و دارد . چرا که دستورات مربوط به بازیابی اطلاعات لاگ کاربران بصورت UnDocument میباشد و در هیچ نقطه ای از شبکه جهانی یافت نگردید. حتی نامه نگاری ما با سازندگان sql server نیز نتیجه ای نداشت .

با این وجود با استفاده از یک مستند نه چندان کامل کامل ما شروع شد . پروژه موجود با استفاده از Visual C# 2008 تهیه شده است . در این پروژه با استفاده از دستورات Sql و رمزگشایی رکورد لاگ فایل اطلاعات مربوطه به عملیات Insert و Delete از بانک اطلاعاتی استخراج میگردد . هر عملی که موجب تغییر داده ها در بانک اطلاعاتی میگردد با یک Transaction همراه است و هر Transaction دارای یک آی دی میباشد . عمده فعالیت ما برای استخراج اطلاعات مربوط به هر تراکنش میباشد و این کار با استفاده از دستور زیر انجام میشود .
SELECT [Begin Time],SPID as Time from::fn_dblog (null, null) where [Transaction ID] = '" + Trans + "' And Operation ='LOP_BEGIN_XACT
بعد از آن بایستی با توجه به اندازه هر ستون داده ها از هگزاد به یونیکد تبدیل نمود . عمده مشکل مربوط فیلدهای Var یا متغیر میباشد . این فیلدها دارای سایز متغیر میباشند و استخراج آنها به سادگی سایر ستونها نمیباشد . برای اجرای برنامه نیاز دارید تنظیمات مربوط به اتصال به بانک اطلاعاتی ، نام دیتا بیس و جدول مورد نظر را تنظیم نمایید .
GetSqlLog _GetSqlLog = new GetSqlLog(@"Data Source=NikSoft\SQLSERVER2008;Initial Catalog=Train;uid=sa;pwd=sa*123", "Train", "Person");
در تصویر زیر نمونه اجرای برنامه را مشاهده میکنید . همانطور که بوسیله رنگها مشخص شده است ما دو رکورد تغییر یافته داشته ایم . رکورد اول که حذف شده است و رکورد دوم که به جدول اضافه شده است . اما نقص کار ما مربوط به عملیات Update بوده که هنوز نتوانسته ایم آنرا استخراج نماییم .

استفاده از این روش برای ذخیره سازی لاگ کاربران مزایای فراوانی داشته که میتوان به سرعت بالا ، اطمینان و عدم موازی کاری اشاره نمود . امیدوارم دوستان علاقه مند با مشارکت در این پروژه نقایص موجود را برطرف نمایند . شما میتوانید سورس این پروژه را به همراه فایل مستند ساختار لاگ از لینکهایی پایینی دانلود نمایید .
Log.zip (13.42 kb)
SQLServerForensics.BlackHat.Aug07.pdf (879.97 kb)