PDA

View Full Version : مانیتورینگ و نظارت بر سیستم



karbon2010
سه شنبه 08 بهمن 1398, 21:17 عصر
سلام خدمت تمامی دوستان و اساتید
من به تازگی با C# آشنا شدم به همین دلیل تازه کار هستم
سوال : سورس یا دستوری یا آموزشی جهت نظارت و کنترل و مانتورینگ سیستم میخواستم مثل آنتی ویروس ها که تمامی کارهای کاربر را نظارت می کنند از قبیل کپی پیست و.... ، مرور سایت های اینترنتی و.... و کلا هر کاری که کاربر در حال انجام اش است

ممنونم

the king
سه شنبه 08 بهمن 1398, 22:42 عصر
سلام خدمت تمامی دوستان و اساتید
من به تازگی با C#‎ آشنا شدم به همین دلیل تازه کار هستم
سوال : سورس یا دستوری یا آموزشی جهت نظارت و کنترل و مانتورینگ سیستم میخواستم مثل آنتی ویروس ها که تمامی کارهای کاربر را نظارت می کنند از قبیل کپی پیست و.... ، مرور سایت های اینترنتی و.... و کلا هر کاری که کاربر در حال انجام اش است

ممنونم
NET. برای اینکار طراحی نشده و مناسب نیست، از #C می توانید برای طراحی بخش ظاهری یک ویروس کش یا نرم افزار مانیتورینگ و ... استفاده کنید اما نه برای بخش نظارتی و کنترلی.
با #C می توانید همزمان یا بعد از وقوع یکسری رخداد هایی که به فعالیت کاربر مربوط هستند آگاه بشید، ولی فقط بهتون گزارش میشه که کاربر فلان کار رو کرد، امکان جلوگیری از وقوع شون یا دخالت در انجام شون رو ندارید.
نمی خوام درگیر جزئیات فنی اش بشم اما بصورت کلی برنامه هایی که با #C می نویسید در لایه ای متفاوت از برنامه های سیستمی (مثل ویروس کش ها) اجرا میشن و سطح دسترسی و توان فنی اش برای چیزی که میخواهید کافی نیست.

karbon2010
سه شنبه 08 بهمن 1398, 23:32 عصر
سلام ممنونم از پاسخ تان
اول اینکه در مورد همون نرم افزار مانتورینگ و گزارش دهی اگه مقاله سورس کدی و یا آموزشی دارید برایم بفرستید

دوم اینکه یعنی c# برای نوشتن برنامه های امنیتی و ویروس کش خوب نیست ؟ بتهرین زبان برای آنتی ویروس و نرم افزار امینتی در شبکه و سیستم عامل چیه ؟؟؟

the king
چهارشنبه 09 بهمن 1398, 00:24 صبح
سلام ممنونم از پاسخ تان
اول اینکه در مورد همون نرم افزار مانتورینگ و گزارش دهی اگه مقاله سورس کدی و یا آموزشی دارید برایم بفرستید


مثلا اگه در درایو :D فایل یا پوشه ای ایجاد شد با خبر بشیم :

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private System.IO.FileSystemWatcher _watcher;
private ListBox _listBox;

private void Form1_Load(object sender, EventArgs e)
{
_listBox = new ListBox();
_listBox.Parent = this;
_listBox.Dock = DockStyle.Fill;
_watcher = new System.IO.FileSystemWatcher("D:");
_watcher.IncludeSubdirectories = true;
_watcher.Created += watcher_Created;
_watcher.EnableRaisingEvents = true;
}

private void watcher_Created(object sender, System.IO.FileSystemEventArgs e)
{
AddLog(e.FullPath);
}

private void AddLog(object message)
{
if (InvokeRequired)
{
Invoke(new System.Threading.ParameterizedThreadStart(AddLog), message);
}
else
{
_listBox.Items.Add(message);
}
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
_watcher.EnableRaisingEvents = false;
_watcher.Dispose();
}
}




دوم اینکه یعنی C#‎ برای نوشتن برنامه های امنیتی و ویروس کش خوب نیست ؟ بتهرین زبان برای آنتی ویروس و نرم افزار امینتی در شبکه و سیستم عامل چیه ؟؟؟
خوب نیست، اما نه به این خاطر که زبان #C کمبودی داره، محدودیت به خود #C بر نمی گرده، نه زبان هایی باهاش ویروس کش طراحی می کنند کلمات کلیدی منحصر بفردی دارند و نه #C محدودیت ناقص کننده ای داره.
این محدودیت پلتفرم و کامپایلر ئه، نه زبان. برای همین گفتم محدودیت NET. ئه. به ابتدای جوابی که دادم دقت کنید، گفتم NET. برای اینکار مناسب نیست، #C این وسط تقصیری نداره. هر زبان دیگری هم داخل NET. باشه همین محدودیت ها رو خواهد داشت.
برای طراحی برنامه های سیستمی در اغلب موارد زبان های C و ++C استفاده میشن، به اصطلاح اینها زبان های سطح پایین هستند، سطح پایین یعنی به زبان ماشین که پردازنده کامپیوتر میفهمه نزدیکتر هستند.
#C یک زبان سطح بالا است، یعنی فاصله اش از زبان ماشین زیاده. کلا برای برنامه نویسی سیستم عامل و برنامه هایی که در لایه هسته سیستم عامل اجرا میشن، مثل درایور ها، ویروس کش ها و ... زبان های سطح بالا مناسب نیستند.

SajjadKhati
چهارشنبه 09 بهمن 1398, 12:40 عصر
مثلا اگه در درایو :D فایل یا پوشه ای ایجاد شد با خبر بشیم :

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private System.IO.FileSystemWatcher _watcher;
private ListBox _listBox;

private void Form1_Load(object sender, EventArgs e)
{
_listBox = new ListBox();
_listBox.Parent = this;
_listBox.Dock = DockStyle.Fill;
_watcher = new System.IO.FileSystemWatcher("D:");
_watcher.IncludeSubdirectories = true;
_watcher.Created += watcher_Created;
_watcher.EnableRaisingEvents = true;
}

private void watcher_Created(object sender, System.IO.FileSystemEventArgs e)
{
AddLog(e.FullPath);
}

private void AddLog(object message)
{
if (InvokeRequired)
{
Invoke(new System.Threading.ParameterizedThreadStart(AddLog), message);
}
else
{
_listBox.Items.Add(message);
}
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
_watcher.EnableRaisingEvents = false;
_watcher.Dispose();
}
}



خوب نیست، اما نه به این خاطر که زبان #C کمبودی داره، محدودیت به خود #C بر نمی گرده، نه زبان هایی باهاش ویروس کش طراحی می کنند کلمات کلیدی منحصر بفردی دارند و نه #C محدودیت ناقص کننده ای داره.
این محدودیت پلتفرم و کامپایلر ئه، نه زبان. برای همین گفتم محدودیت NET. ئه. به ابتدای جوابی که دادم دقت کنید، گفتم NET. برای اینکار مناسب نیست، #C این وسط تقصیری نداره. هر زبان دیگری هم داخل NET. باشه همین محدودیت ها رو خواهد داشت.
برای طراحی برنامه های سیستمی در اغلب موارد زبان های C و ++C استفاده میشن، به اصطلاح اینها زبان های سطح پایین هستند، سطح پایین یعنی به زبان ماشین که پردازنده کامپیوتر میفهمه نزدیکتر هستند.
#C یک زبان سطح بالا است، یعنی فاصله اش از زبان ماشین زیاده. کلا برای برنامه نویسی سیستم عامل و برنامه هایی که در لایه هسته سیستم عامل اجرا میشن، مثل درایور ها، ویروس کش ها و ... زبان های سطح بالا مناسب نیستند.

سلام استاد.
استاد ، این محدودیت ، با .net core و این چیزها هم هست؟
کلا اگه با دات نت فریم وورک کار نکنیم ، باز هم این محدودیت ها وجود دارن؟
یعنی در .net core میشه در سطح سیستمی برنامه نوشت تا این نظارت ها را انجام بده و اگه خواستیم ، جلوگیری ها (مثلا جلوگیری از کپی شدن یا انجام نشدن یک رویداد در سیستم عامل) را هم انجام بده؟

the king
چهارشنبه 09 بهمن 1398, 14:21 عصر
سلام استاد.
استاد ، این محدودیت ، با .net core و این چیزها هم هست؟
کلا اگه با دات نت فریم وورک کار نکنیم ، باز هم این محدودیت ها وجود دارن؟
یعنی در .net core میشه در سطح سیستمی برنامه نوشت تا این نظارت ها را انجام بده و اگه خواستیم ، جلوگیری ها (مثلا جلوگیری از کپی شدن یا انجام نشدن یک رویداد در سیستم عامل) را هم انجام بده؟
تا الان که نه. NET. و NET Core. پیاده سازی های متفاونی دارند ولی هر دو بر پایه همون ساختار محیط مجازی طراحی شدن، هر دو یک ماشین مجازی ایجاد می کنند، حافظه مجازی، دستورات ماشین مجازی، دسترسی های مجازی.
محیط مدیریت شده در اون بوده، در این هم هست، در پشتیبانی از پلتفرم ها و پیاده سازی تغییراتی داشته، اما اساس اش یکی ئه. CLR ای بوده، حالا شده CoreCLR. محیط مجازی و مدیریت شده که از بین نرفته.
حافظه مدیریت شده و مرز بندی اش از حافظه مدیریت نشده رو که میشناسید، وقتی نرم افزاری می نویسید که در محیطی اینقدر ایزوله، مجازی و مستقل از جایی که برنامه های هسته سیستم عامل اجرا میشن قرار میگیره،
محدودیت های زیادی بهش تحمیل میشه. شاید یک زمانی برای عبور از این محدودیت ها امکانات جدیدی به Framework ها اضافه بشه ولی تا حالا چنین کاری انجام ندادن.

karbon2010
چهارشنبه 09 بهمن 1398, 15:46 عصر
مثلا اگه در درایو :D فایل یا پوشه ای ایجاد شد با خبر بشیم :

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private System.IO.FileSystemWatcher _watcher;
private ListBox _listBox;

private void Form1_Load(object sender, EventArgs e)
{
_listBox = new ListBox();
_listBox.Parent = this;
_listBox.Dock = DockStyle.Fill;
_watcher = new System.IO.FileSystemWatcher("D:");
_watcher.IncludeSubdirectories = true;
_watcher.Created += watcher_Created;
_watcher.EnableRaisingEvents = true;
}

private void watcher_Created(object sender, System.IO.FileSystemEventArgs e)
{
AddLog(e.FullPath);
}

private void AddLog(object message)
{
if (InvokeRequired)
{
Invoke(new System.Threading.ParameterizedThreadStart(AddLog), message);
}
else
{
_listBox.Items.Add(message);
}
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
_watcher.EnableRaisingEvents = false;
_watcher.Dispose();
}
}



خوب نیست، اما نه به این خاطر که زبان #C کمبودی داره، محدودیت به خود #C بر نمی گرده، نه زبان هایی باهاش ویروس کش طراحی می کنند کلمات کلیدی منحصر بفردی دارند و نه #C محدودیت ناقص کننده ای داره.
این محدودیت پلتفرم و کامپایلر ئه، نه زبان. برای همین گفتم محدودیت NET. ئه. به ابتدای جوابی که دادم دقت کنید، گفتم NET. برای اینکار مناسب نیست، #C این وسط تقصیری نداره. هر زبان دیگری هم داخل NET. باشه همین محدودیت ها رو خواهد داشت.
برای طراحی برنامه های سیستمی در اغلب موارد زبان های C و ++C استفاده میشن، به اصطلاح اینها زبان های سطح پایین هستند، سطح پایین یعنی به زبان ماشین که پردازنده کامپیوتر میفهمه نزدیکتر هستند.
#C یک زبان سطح بالا است، یعنی فاصله اش از زبان ماشین زیاده. کلا برای برنامه نویسی سیستم عامل و برنامه هایی که در لایه هسته سیستم عامل اجرا میشن، مثل درایور ها، ویروس کش ها و ... زبان های سطح بالا مناسب نیستند.


سلام ممنونم

لطفا بیشتر توضیح بدهید در خصوص همین مانیتورینگ
منبع و کدو آموزش دیگری و جامع تری ندارید

karbon2010
شنبه 12 بهمن 1398, 21:45 عصر
سلام اساتید بزرگوار کسی دیگه نظر ، مطلبی ، یا آموزشی در این خصوص نداره؟؟؟