<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد مختاری</title>
        <link>https://virgool.io/feed/@MohammadMokhtari</link>
        <description>من محمد مختاری هستم عاشق برنامه نویسی و IT</description>
        <language>fa</language>
        <pubDate>2026-06-18 05:36:30</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1048761/avatar/qTbRNN.jpeg?height=120&amp;width=120</url>
            <title>محمد مختاری</title>
            <link>https://virgool.io/@MohammadMokhtari</link>
        </image>

                    <item>
                <title>مستندات نرم افزار مدیریت مالی تره بار فروشی تحت شبکه</title>
                <link>https://virgool.io/@MohammadMokhtari/%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%85%D8%A7%D9%84%DB%8C-%D8%AA%D8%B1%D9%87-%D8%A8%D8%A7%D8%B1-%D9%81%D8%B1%D9%88%D8%B4%DB%8C-%D8%AA%D8%AD%D8%AA-%D8%B4%D8%A8%DA%A9%D9%87-ue0vqaic5zsl</link>
                <description>چکیدههر برنامه ای قبل از نوشته شدن نیاز به طراحی و مهندسی دارد، هیچ برنامه نویسی نمی‌تواند بدون طراحی برنامه شروع به نوشتن آن بکندطراحی برنامه میتواند ذهنی باشد ، و میتواند برای تسلط بیشتر بر روی ورق یا برنامه های مربوطه طراحی شودطراحی گرافیکی برنامه نیز می‌تواند از طریق طراح با نظارت مدیر پروژه طراحی شود.در طراحی نرم افزار، اولین مرحله مشخص کردن نیاز مشتری و نحوه برطرف کردن نیاز مشتری است.فصل اولمقدمهنرم افزار های مالی و اداری اصولا برای حل و راحت تر کردن مسائل مالی تشکیل می‌شوندسامانه مدیریت مالی تره بار فروشی راه حلی برای مشکل های مالی یک تره بار فروشی سنتی است.بیان مسالهدر مراحل اولیه بایستی مشکلات مدیریت یک فروشگاه میوه سنتی بررسی شود ، به همین دلیل برای چند هفته در کنار برادرم که یک میوه فروشی را اداره میکند بودم و او اشکالات و خلاء های مدیریت مالی را با من به اشتراک گذاشت.اهداف تحقیقهمانطور که در بالا اشاره شد ، هدف از ساخت نرم افزار های حسابداری و نرم افزار های عمومی راحت تر کردن و اتوماسیون در کار ها می‌باشد ، که هم ضریب خطا را کاهش دهد و هم کاربر به رفاهی بیشتر برسد .اهمیت و ضرورت ساخت این برنامهخیلی مواقع در حسابداری دستی و سنتی فاکتور ها گم میشوند و دسترسی به فاکتور های قدیمی امکان پذیر نمی‌باشد اما با ساخت نرم افزار از خطا های انسانی در حسابداری دور می‌شویم.و همچنین در بعضی مواقع پیگیری یک فاکتور قدیمی ، پیگیری بدهکاری یا بستانکاری بصورت دستی مساله را پیچیده می‌کند.ارائه پرسش های اصلی تحقیق- در طراحی برنامه داده های اولیه یا پی ریزی برنامه چگونه وارد نرم افزار می‌شوند؟- برای ایجاد فاکتور بایستی از چه روشی استفاده کنیم؟- وقتی یک فروشگاه بزرگ داشته باشیم چگونه همزمان چندین کاربر به این سیستم دسترسی داشته باشند؟- در هنگام ایجاد فاکتور مبلغی پرداخت نمی‌شود ، چگونه این مساله مالی قابل حل است؟- یکسری از کاربران نمی‌بایست به قسمت های حساس برنامه دسترسی داشته باشند ، این مورد چگونه قابل حل است؟- تاریخ فارسی در SQLقبل از ویندوز 10 پشتیبانی نمی‌شود برای این مساله چه راه حلی پیش روست؟جواب همه ی این سوالات در فصل های بعدی پاسخ داده خواهد شد .فصل دومهمانطور که پیش از این اشاره شد برای اطلاع کامل از سیستم میوه فروشی ، ابتدا باید سیستم سنتی آن را بطور کامل دانست که بر روی آن سیستمی جدید ایجاد کرد که ایراد های روش قبلی را برطرف کندبه همین علت علاوه بر مغازه های میوه فروشی ، از حجره های میدان بار هم دیدن کردم که آن طرف قضیه (خرید میوه) هم برایمان روشن گردد.نکته مهم آن است که خرید های انجام شده در میدان بار ، در همان روز پرداخت نمی‌شوند و بصورت قسط گونه می‌باشند. پس به همین روال برنامه ما بعد از ایجاد فاکتور بایستی بصورت اتوماتیک یک قسط برای همان فاکتور نیز ایجاد کند .فصل سومگام اول ساخت یک نرم افزار- باید نیاز های مشتری بررسی شوند و چارت نیاز ها بر روی کاغذ یا ... یاد داشت شوند- سیستم سنتی بصورت کامل توسط مشتری تشریح شود- ایرادات سیستم قدیمی یافته شوند و سعی شوند برای آنها راه حلی پیدا شوند- بایستی سوال ها درباره برنامه مطرح شوند ، هر مساله ای یک سوال است که بایستی جوابی برای آن پیدا کنیمگام دوم ساخت یک نرم افزار- بررسی ایده ها و راه های رسیدن به جواب- بعد از بررسی راه حل های پیشنهادی برای سیستم جدید ، آنها را با مشتری در میان میگذاریم- بعد از کامل شدن و مشخص شدن راه ها و رویکرد ها شروع به تحلیل نرم افزار (روش نوشتن یک برنامه میکنیم) .· نکته مهم : 70 در صد برنامه نویسی بخش تحلیل نرم افزار است ، بنابراین اگر تحلیل دقیق و درستی نداشته باشیم در قسمت ها بعدی به مشکلات بزرگی بر می‌خوریم.گام سوم ساخت یک نرم افزار- بعد از تحلیل نحوه ایجاد برنامه و هدف از سیستم جدید ، بایستی جدول ها و پیش نمایش جدول ها ایجاد شوند- رابطه استاندارد بین جدول ها برقرار شود- پیش نمایش پوسته برنامه طراحی شود (wireframe)گام چهارم ساخت یک نرم افزار- حال می‌توانید کامپیوتر خود را برای شروع نوشتن برنامه مورد نظر روشن کنید ، اما عجله نکنید ، هنوز ممکن است تحلیل های اضافی انجام شود و یا نیاز باشد به مراحل قبل سرک بکشید- از ابزار مورد نظر خودتان برای نوشتن برنامه استفاده کنید ، اما نباید خودتان را با ابزار محدود کنید ، انتخاب زبان های مختلف برای یک برنامه نویس محدودیت نیست ( یک برنامه نویس می‌تواند هر زبانی که بخواهد را شروع کند ، مهم منطق برنامه نویسی است)فصل چهارمتحلیل اولیه برنامه تره بار فروشیهمان طور که می‌دانید وظیفه میوه فروش رساندن میوه از کشاورز / میدان بار ، به مشتری استیک میوه فروش بایستی میوه های خود را از یکی ازین دو روش تامین کند که اکثرا از میدان بار استپس اولین جدولی که به آن نیاز داریم جدول فروشنده ها است.در شکل زیر جزییات جدول فروشنده را مشاهده می‌کنید.جدول 1 فروشنده هااولین فیلد : فیلد کلید است که بصورت اتوماتیک عدد رکورد بعدی را ایجاد می‌کند ، وجه تمایز رکورد ها با رکورد های دیگر است.همه ی جدول ها بایستی فیلدی بعنوان کلید داشته باشند.دومین فیلد : نام است که نام فروشنده در آن ذخیره می‌شودسومین فیلد : در صورت خرید از حجره ، شماره حجره در این فیلد ذخیره می‌شودچهارمین فیلد : شماره تلفن یا شماره همراه فروشنده در آن ذخیره می‌شود.جدول 2 لیست میوه هااولین فیلد : کلید این جدول استدومین فیلد : نام میوه را ذخیره می‌کندسومین فیلد : فیلدی اختیاری است و می‌توان اندازه میوه را در آن ذخیره کرد جدول 3 عضو فاکتورفیلد اول : فیلد کلید می‌باشدفیلد دوم : نام کالا برای نمایش در دیتاگرید در این مکان هم ذخیره می‌شودفیلد سوم : تعداد یک سفارش در آن ذخیره می‌شودفیلد چهارم : قیمت کالای خریداری شده در آن ذخیره می‌شودفیلد پنجم : وزن کالای خریداری شده در آن ذخیره می‌شودفلید ششم : فیلدی برای محاسبات داخلی نرم افزار استفیلد هفتم : کاربر میتواند شماره دستی فاکتور خودش را نیز وارد کندفیلد هشتم : کلید خارجی برای اتصال بین جدول میوه و این جدول استاتصال بین عضو فاکتور و لیست میوهبرای اینکه در عضو فاکتور مان یک نوع از میوه در لیست میوه داشته باشیم بایستی این دو جدول به هم متصل شوند .· نکته : برای اینکه هر فاکتور را بتوان از فاکتور های دیگر مجزا کرد باید یک جدول به نام فاکتور اصلی ایجاد کرد که زیر فاکتور را در نهایت به آن متصل کنیم. جدول 4 فاکتور اصلیاولین فیلد : کلید این جدول است .دومین فیلد : شماره دستی فاکتور می‌باشد .سومین فیلد : تاریخ فاکتور در این فیلد ذخیره می‌شودچهارمین فیلد : مبلغ کل اغلام زیر فاکتور به این فیلد انتقال می‌یابندپنجمین فیلد : نام فروشنده در این فیلد بصورت متن ذخیره می‌شود که در زمان نمایش در دیتاگرید کارمان راحت شود.ششمین فیلد : آی دی تاریخ می‌باشد که در فاصل پنجم بصورت مفصل توضیح داده خواهد شد.هفتمین فیلد : کلید خارجی برای اتصال به جدول فروشنده است ، هر فروشنده برابر یک رکورد در جدول فروشنده است.اتصال بین جدول فاکتور اصلی و زیر فاکتوربرای اینکه هر فاکتور بتواند اجزایی داشته باشد ، نیاز به دو جدول است که فاکتور اصلی نشانگر یک فاکتور است و زیر فاکتور نشانگر اغلام موجود در آن فاکتور است· نکته : هر فاکتور می‌تواند چندین زیر فاکتور داشته باشد ، اما هر زیر فاکتور فقط می‌تواند یک فاکتور اصلی داشته باشد.اتصال بین جدول فروشنده و فاکتور اصلیبرای اینکه هر فاکتور فقط به یک فروشنده اختصاص پیدا کند نیاز داریم جدول فروشنده را که حاوی فروشنده هایمان است به جدول فاکتور متصل کنیم· نکته : هر فروشنده میتواند چندین بار در جدول فاکتور تکرار شود اما هر فاکتور فقط می‌تواند به یک فروشنده اختصاص پیدا کند.جدول 5 جدول تراکنش مالیهر فاکتوری که ایجاد شده قطعا یک تراکنش مالی ای هم همان لحظه انجام می‌شود که در ادامه توضیح خواهیم دادفیلد اول : کد کلید این جدول استفیلد دوم : کل مبلغ آن فاکتور استفیلد سوم : پرداختی های انجام شده در این فیلد ذخیره می‌شودفیلد چهارم : مانده حساب در این فیلد ذخیره می‌شودفیلد پنجم : تاریخ ایجاد این تراکنش یا هر تراکنش پرداختی جداگانه در این فیلد ذخیره می‌شودفیلد ششم : کلید خارجی به جدول فاکتور می‌باشداتصال جدول تراکنش مالی به جدول فاکتورجدول 6 فروش روزبرای اینکه برای هر فاکتور اصلی یک تراکنش ایجاد شود بایستی این دو جدول به هم متصل شوند.فیلد اول : کلید این جدول استفیلد دوم : تاریخ ایجاد فروش استفیلد سوم : مبلغ فروش شیفت مورد نظر استفیلد چهارم : کلید خارجی شیفت مورد نظر ( در ادامه به ان می‌رسیم)فیلد پنجم : کلید تاریخ است ( در فصل های بعدی توضیح داده خواهد شد)جدول 7 شیفت های فروش این جدول برای جدا سازی شیفت های فروش ایجاد شده است (صبح ، ظهر ، عصر).فیلد اول : کلید استفیلد دوم : زمان آن شیفت اتصال بین جدول فروش روز و شیفت ها : هر فروش روز شامل یک شیفت می‌باشد پس بایستی بین این دو جدول رابطه برقرار شود.جدول 8 تاریخ ها این جدول برای حساب تاریخ شمسی ایجاد شده است ، در فصل های بعدی توضیح داده خواهد شد .اولین فیلد : کلید استدومین فیلد : تاریخ تبدیلی می‌باشدجدول 9 : ورود و خروج : این جدول برای ورود و خروج کاربران تعبیه شده است.فیلد اول : کلید این جدول است.فیلد دوم : نام کاربری کاربر مورد نظر در این فیلد ذخیره می‌شودفیلد سوم : پسورد کاربر در این فیلد ذخیره می‌شودفیلد چهارم : نوع کاربر در این فیلد ذخیره می‌شود (ادمین / کاربر عادی)نتیجه گیری این فصل : در این فصل کلیه جدول ها و فیلد ها توضیح داده شد در فصل بعدی می‌خواهیم از لحاظ منطقی برنامه را بصورت کامل بررسی کنیم.فصل پنجمبررسی ریز به ریز برنامهبررسی اولیههمانطور که پیش از این گفتیم در یک میوه فروشی میوه ها بایستی از میدان بار یا کشاورز تهیه شونددر میدان بار میوه خریداری می‌شود و هر فروشنده یک فاکتور به ما می‌دهد ، از لحاظ مالی ممکن است مبلغ فاکتور همان لحظه پرداخت نشود ، پس به همین دلیل برنامه مان نیاز به بخش قسط بندی دارد ، جدول تراکنش مالی به همین منظور تعبیه شده است.ایجاد فاکتورپیش از اینکه میوه خریداری شود قطعا برای آن محصول فاکتور صادر می‌گردداز انجایی که یک فاکتور نیاز به زیر مجموعه دارد ، پس برای ایجاد یک فاکتور در برنامه مان به دو جدول نیاز داریم که پیش از این گفتیم (فاکتور اصلی ، زیر فاکتور)فاکتور اصلی را میتوان به کاغذی که شامل فاکتور است و زیر فاکتور را به اجزای ثبت شده در آن فاکتور تشبیه کرد .برای ایجاد فاکتور ابتدا بایستی فاکتور اصلی آن ایجاد شود و سپس زیر فاکتور به آن اضافه گردد ، اگر زیر فاکتوری به فاکتور مان اضافه نشود فاکتور مورد نظر بصورت اتوماتیک ثبت نمیشود و همچنین تراکنش مالی ای برای آن فاکتور ایجاد نمی‌شود.تبدیل تاریخ و بحث شمسی سازی تاریخدر SQLهای قدیمی تر و در ویندوز های قبل از ویندوز 10 ، تاریخ شمسی بصورت پیشفرض توسط سیستم تشخیص داده نمیشد .ما در این برنامه رویکردی را پیش گرفتیم که برای همیشه میتواند بر روی همه ی سیستم ها اجرا شود .چونکه تبدیل تاریخ میلادی به شمسی مشکل است و در نهایت برای جستجو در بین تاریخ ها به مشکل بر می‌خوریم سیستمی برای کد گذاری تاریخ ایجاد کردیمکه برای تاریخ شمسی یک کد شناسه در تقویم میلادی ایجاد می‌کند ، به همین علت دیگر در بحث تاریخ و در بخش جستجو در بین تاریخ ها مشکلی نخواهیم داشت.بخش فروش روزدر هر شیفت کاری مقدار فروشی که انجام می‌شود ثبت می‌شود که در نهایت در بخش گزارش گیری بتوان مقدار فروش های صبح یا ظهر یا عصر را با هم مقایسه نمود .· نکته : پایه ی عملیات مقایسه ی تاریخ در این برنامه از طریق فانشن و جدول اختصاصی ای که نوشته شده انجام می‌شود .بخش کاربرانیکی از بخش های مهم برنامه که سطح دسترسی را مشخص می‌کند .کاربر های ادمین به بخش های اصلی برنامه مانند گزارش گیری ماهانه و مدیریت کاربران دسترسی دارند ، اما کاربران عادی بدالی امنیتی از بخش های مدیریتی محرومند .نکته مهم در مورد این برنامه این است که در ابتدای نصب برنامه مسلما هیچ جدولی بر روی سیستم کاربر وجود ندارد ، این برنامه در ابتدای اجرا در صورتی که کاربر پیشفرض وجود نداشته باشد آنرا ایجاد می‌کند.شبکه سازی برنامهاین برنامه دارای قابلیت شبکه سازی می‌باشد و چندین کاربر از روی چند سیستم مجزا می‌توانند به نرم افزار دسترسی داشته باشند .در فصل ششم نحوه پیاده سازی این قابلیت را کامل توضیح خواهیم داد.همچنین به این نکته توجه داشته باشید که می‌توانید برنامه تان را تحت اینترنت نیز به اشتراک بگذارید ، پیشنیاز چنین قابلیتی ip اختصاصی می‌باشد که بایستی از سرویس دهنده اینترنت درخواست و دریافت شود.فصل ششمتوضیح اجمالی برنامهدر این فصل می‌خواهیم بخش های مختلف برنامه را به تصویر بکشیم و کمی از کد های بخش های حساس بگوییم.در گام اول با بخش ورود کاربران مواجه می‌شویددر زیر کلید ورود کد ها به شکل زیر می‌باشندابتدا یوزرنیم و پسورد را از ورودی میگیرد و سپس در دیتابیس برای آن جستجو می‌کند ، اگر جوابی وجود داشت طبق نوع کاربر فرم اصلی برنامه باز خواهد شد در غیر این صورت کاربر با خطا مواجه خواهد شد.فرم اصلی برنامه به شکل زیر است ، تمام امکانات در دسترس کاربر قرار دارند ، از لحاظ UI(ظاهر برنامه) و UX(تجربه کاربری) تایید شده می‌باشد.همچنین در نوشتار برنامه از فونت &quot;یکان&quot; استفاده شده است.در این بخش میتوانیم میوه هایمان را اضافه کنیم ، این یکی از ریشه های اصلی برنامه است به این معنا که ساختار اصلی برنامه مان را شکل می‌دهد (داده های اصلی برنامه که کاربر وظیفه وارد کردن آنها را دارد).در زیر دکمه های این فرم کدی است که ما را به فرم مربوطه برای حذف جدید یا ویرایش می‌بردبعد از کلیک کردن بر روی جدید به فرم دیگری ارجاع داده می‌شویمدر این قسمت بعد از کلیک کردن بر روی ثبت کد های زیر اجرا خواهند شداگر ما کلید ویرایش را زده بودیم اطلاعات بر روی فرم دوباره پیاده سازی می‌شوند و قابل ویرایش هستندو اگر هم کلید ثبت را بزنیم یک فرمی خالی نمایش داده می‌شود که میتوانیم داده خود را در آن وارد کنیم.بخش افزودن فروشنده نیز که از قبل جدول این بخش را توضیح داده ایم ، یکی از بخش های ورود داده های اولیه برنامه است. و روند کار آن همانند افزودن میوه می‌باشدیکی از بخش های اصلی برنامه ایجاد فاکتور است که با کلید های ثبت ، ویرایش و حذف مجهز شده است.در هنگام کلیک بر روی دکمه ی ثبت به فرمی جدید ارجاع داده می‌شویدو اگر قصد ویرایش داشته باشید اطلاعات فیلد مورد نظر نیز به فرم جدید ارسال می‌شود.برای ایجاد یک فاکتور ابتدا بایستی فاکتور اصلی برای آن ایجاد کنیم و شماره فاکتور که معمولا در بالای فاکتور می‌نویسند در شناسه دستی وارد کنیم (نمیتواند تکراری باشد)نام فروشنده هم که از قبل وارد کرده ایم در بخش فروشنده پدیدار خواهد شد ، بعد از انتخاب تاریخ بر روی فاکتور جدید کلیک می‌کنیمهمانطور که از پیش گفتیم در صورتی که تا همینجا به عقب بازگردیم بصورت اتوماتیک هیچ فاکتوری ثبت نخواهد شدبعد از ایجاد فاکتور می‌توانیم به فاکتور مان زیر فاکتور اضافه کنیمو در صورت کلیک بر روی ثبت به صورت زیر اطلاعات ثبت خواهد شدبعد از بستن صفحه ی فاکتور ، همانطور که مشاهده میکنید فاکتور ایجاد شده است.در همین لحظه در پس زمینه یک قسط برای این فاکتور ایجاد می‌شود ، چونکه همانطور که در ابتدا بررسی کردیم تمام مبلغ در همان ابتدا پرداخت نمی‌شوددر شکل پایین، نمایی از بخش فروش را مشاهده می‌کنید که شیفت های فروش هم در آن مشخص هستند.کاربر در این بخش می‌تواند فروش های روزانه خود را ثبت نماید.این بخش تراکنش های مالی می‌باشدتاریخ را بصورت کد گذاری شده تشخیص میدهد و حتی می‌توان خرید ها را بر اساس فروشنده نیز فیلتر نمود.یکی از بخش های مهم آن است که تمام مبالغ را از تاریخ های مشخص شده در پایین فرم جمع می‌کند.قبل از شروع گزارش گیری برنامه ابتدا تاریخ شروع و تاریخ پایان را دریافت می‌کندتکه کد زیر در صورتی که تیک فروشنده مخصوص را زده باشیم عمل میکندو تکه کد زیر در صورتی که بصورت عادی فقط از تاریخی به تاریخی دیگر جستجو کنیم عمل می‌کند ( بدون یک مشتری خاص)و خط اخر نیز کل فیلد هایی که مورد نظرمان بود را با هم جمع میکندبرای بخش فروش روز نیز میتوان گزارش گیری نمود، و هر شیفت را بصورت جداگانه فیلتر نمود.عمل گزارش گیری برای فروش روز نیز دقیقا همانند خرید روز می‌باشددر بخش خرید و فروش روز چاپ فاکتور نیز اضافه کردیماز انجایی که عمل چاپ بصورت دستی عملی بسیار پیچیده می‌باشد از افزونه ی DGV Printerاستفاده کردیم به شکل زیر چنین خروجی ای به ما خواهد داد .در کد های زیر در بخش اول افزونه ی مورد نظر را ارجاع میدهد و نوعی جدید از آن می‌سازد ، سپس هدر و فوتر آنرا تشکیل می‌دهدبخش زیر مربوط به قسط بندی است (بصورت اتوماتیک بعد از ایجاد فاکتور ایجاد می‌شود) میتوان هر فاکتور را قسط بندی نمود.در بخش مدیریت کاربران نیز می‌توان کاربر های جدید اضافه نمود و کاربر های قبلی را ویرایش کرد.حال پس از توضیح کامل در مورد ویژگی های برنامه می‌خواهیم سفری به زیر پوسته ی برنامه مان بکنیمنکته ای مهم: همیشه در برنامه نویسی یکی از اهداف یک برنامه نویس آن است که از دوباره نویسی جلوگیری شود ، به همین علت اکستنشن ها قابل توسعه هستند ، ما می‌توانیم برای برنامه مان اکستنشن بنویسیم که در هر جایی از برنامه چندین بار از آن تکه کد استفاده کنیم و همچنین کد هایمان مرتب و تمیز تر جلوه دهند.حال چندین اکستنشن نوشته شده در برنامه را بررسی می‌کنیمتبدیل تاریخ شمسی به میلادیهمانطور که مشاهده میکنید وظیفه ی تکه کد بالا تبدیل کد میلادی به شمسی است ، خروجی این تابع یک متن که خروجی تاریخ شمسی شده را برمیگرداندو بخش refrencesنمایانگر آن است که این تکه کد در 3 جای این برنامه استفاده شده است.کد گذاری تاریخهمانطور که پیش از این گفتیم ، خروجی تبدیل به شمسی بصورت متن می‌باشد ، ما در بخش گزارش گیری و قسمت های دیگر برای Query گرفتن از تاریخ های موجود به مشکل بر میخوریم ، برای مثال اگر بخواهیم تاریخ های بین 1/2/1397 تا 1/10/1397 را بدست آوریم یا چیزی را بین این تاریخ ها محاسبه کنیم با یک تاریخ شمسی شده و بصورت متن کاری نمیتوانیم بکنیم ( بین آن دو تاریخ را نمیتوانیم پیدا کنیم)در بخش گزارش گیری و در بخش های دیگر نرم افزار از این اکستنشن استفاده شده است.پس جدولی جداگانه ایجاد کردیم که در هر روزی که چیزی خواست ثبت شود شناسه ی آن تاریخ را برگرداند ، اگر هم تا به امروز برای آن روز شناسه ای ثبت نشده بود یک شناسه برای آن روز میسازدهمانطور که در بخش رفرنس ها مشاهده می‌کنید از این تکه کد 9 بار در برنامه استفاده شده.فصل هفتمنتیجه گیریدر این مقاله سعی شد به از تمامی زوایا به برنامه پرداخته شود و از تمام تکنولوژی ها و ویژگی های برنامه رونمایی شودتا جایی که توانستم بر روی ظاهر کاربری این برنامه کار کرده ام و در آینده نسخه های بعدی این برنامه نیز نوشته خواهد شد.همچنین از آنجایی که این برنامه قابلیت شبکه را نیز داراست پس می‌توان نرم افزار مالی خود را هم از طریق اینترنت و هم از طریق شبکه داخلی ویرایش و مدیریت نمود ، ازین رو دسترسی به اطلاعات فوق العاده اسان تر و ساده تر شده است.منابع فروشگاه میوه مختاریمیدان بارتجربه های افراد در این حوزهویدیو های آموزشی فارسی و انگلیسیتاریخ ساخت : زمستان 1397ارتباط با سازنده : www.MtiApps.irلینک دانلود و فعال سازی برنامه:https://github.com/mamadmti/Fruitshop-accounting-sofware.git</description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Tue, 21 Sep 2021 11:26:56 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی حملات DDoS و نحوه محافظت از آن</title>
                <link>https://virgool.io/@MohammadMokhtari/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%AD%D9%85%D9%84%D8%A7%D8%AA-ddos-%D9%88-%D9%86%D8%AD%D9%88%D9%87-%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%AA-%D8%A7%D8%B2-%D8%A2%D9%86-t5qive3cug73</link>
                <description>مطمئنا اکثر اشخاصی که در حوزه کامپیوتر و دنیای اینترنت فعالیت می‌کنند، کلمه DDoS را شنیده اند،از جمله حملات سایبری‌ای که نه تنها شرکت های بزرک جهان را تهدید میکند بلکه حتی رایانه های شخصی هم می‌توانند مورد حمله این حملات قرار بگیرند.حمله DDoS چیست؟دی داس یا به عبارتی Distributed denial-of-service از جمله حملاتی است که در آن حجم زیادی از تقاضای کاذب یا بیش از حد و به صورت هدفمند به سمت سرور مورد فرستاده میشود یا به عبارت دیگر تعداد زیادی کامپیوترآسیب دیده یا قربانی به یک هدف که میتواند یک سرور، وب سایت یا دیگرمنابع شبکه باشد حمله میکنند و باعث از کار افتادن یا کند شدن آن سرویس مورد نظر می شود. اغلب این حملات به دلیل سیستم کدینگ ضعیف یا سیستم های ناپایدار صورت میگیرد و هدف کلی این حملات غیر ممکن کردن دسترسی سازمان یا وب سایت مورد نظر با ارسال تقاضاهای زیاد یا بار ترافیکی است .دی داس چگونه کار می‌کندمهاجم برای انجام یک حمله معمولی، ابتدا به شناسایی آسیب های موجود در سیستم مورد نظر می پردازد و بعد از شناخت و بررسی آن آسیب، حمله DDoS را شروع میکند، هکر یا Attacker با استفاده از نرم افزارهای مخرب (Malware) یا از بین بردن سیستم کنترل احراز هویت، نفوذ میکند.کامپیوتر یا دستگاه شبکه تحت کنترل یک نفوذ به عنوان یک Zombieیا یک ربات شناخته می‌شود.اتکر (Attacker) یک سرویس یا برنامه ای ایجاد میکند که به آن Command-and-Control server گفته می‌شود تا با استفاده از آن می‌تواند به ربات دستور بدهد(همچین Botnet هم نامیده می‌شود) و شخصی که مورد کنترل یک Botnet قرار میگیرد در بعضی مواقع به عنوان قربانی شناخته میشود.تفاوت حملات DoS و DDoSدر DDoS سرور هدف، از سمت چندین کامپیوتر مورد حمله قرار میگیرد در نتیجه تقاضاهای زیادی را از IPهای مختلف دریافت میکند، درنتیجه، نه از یک منبع مشخص بلکه از مکانهای مختلف به او حمله می شود.اما در DoS دقیقا برعکس عمل میشود و حمله تنها از یک سیستم انجام میشود، مشخص است که محافظت سرور در برابر حمله ی توزیع شده یا DDoS به مراتب دشوار تر از حمله DoS است.روش های مقابله با DDoSدر این بخش این سوال پیش می آید که آیا این ممکن است که بتوان مقابله انجام داد، خبر بد این است که این کار بسیار دشوار است مخصوصا اگر این Attackبه صورت پیچیده و توسط افراد ماهر انجام شود.در زمان های گذشته که هنوز دنیای شبکه اینترنت و شبکه به صورت خیلی گسترده هوشمند نشده بود، کاربر با استفاده از یک سری کد های پایتون و یا از طریق فایروال میتوانست جلوی این حملات را بگیرد ولی الان فایروال ها و موارد دیگر به راحتی قادر به جلوگیری و محافظت نیستند.روش های محافظت :1-حملات اختصاصی یا Dedicated DDoS mitigation appliances: در ابتدایی ترین روش به جای اطمینان کردن به کدها و یا فایروال های موجود میتوان از تجهیزات مخصوص محافظت (dedicated DDoS mitigation appliances) در برابرDDoS Attack استفاده کرد، این سخت افزارها همانند دیگر دستگاه های شبکه در دیتا سنترهای مختلف در کنار دستگاه هایی مانند روتر ها و سوئیچ ها قرار میگیرند و ترافیک های غیر مجاز را شناسایی و فیلتر می‌کنند.اما این دستگاه ها معایبی هم دارند، که در ابتدا بسیار گران هستند و نحوه عملکرد آن ها به این صورت هست که تا وقتی حمله ای صورت نگیرد این سخت افزار ها هیچ عملی از پیش انجام نمی‌دهند.همچنین به افراد متخصص شبکه در حوزه های امنیت و ... نیاز است، ما در این دستگاه دکمه جادویی به نام از &quot;حمله جلوگیری کن&quot; نداریم.از آن جایی که روش ها و ترفند های DDoS Attack به صورت روزانه بروزرسانی می‌شوند نیاز است که این دستگاه ها هم به صورت روزانه و مرتب بروزرسانی شوند.این سخت افزار ها این توانایی را ندارند که از حملات با حجم بسیار از پهنای‌باند که بالاتر از ظرفیت مورد نظر سازمان بوده را کنترل کنند، زیرا در بسیاری از موارد غیرممکن است که یک سازمان یا... یک پهنای باند گسترده ای رو اختصاص به این کار بدهد، در نتیجه این تجهیزات برای حملاتی که بیش از ظرفیت شبکه باشند مناسب نیستند.1- استفاده از سرویس دهند های اینترنتی (ISP): بعضی از سازمان ها از طریق سرویس دهنده ای اینترنتی خودشان این حملات را کاهش می‌دهند، این ISP ها پهنای باند بالاتری را ارائه می‌دهند.بنابراین می‌توانند در مقابل حملات حجمی کمک بیشتری بکنند.اما در اینجا 3 مشکل کلیدی وجود دارد که آن ها را بررسی می‌کنیم :شرکت های سرویس دهنده در زمینه فروش پهنای باند فعالیت می‌کنند و معمولا برای جلوگیری از این گونه حملات سرمایه گذاری نمی‌کنند، سرویسی که آن ها ارائه میدهند باید تا آن جایی که ممکن است ارزان باشد.امروزه اکثر سازمان های بزرگ از چند سرویس دهنده اینترنتی استفاده می‌کنند تا یک Back up را همیشه در دسترس داشته باشند، با این روش مسلما زمان Uptime بیشتری  خواهیم داشت ولی متاسفانه یک ISPفقط از یکی از لینک های ما محافظت میکند، در نتیجه این روش باید بر روی همه سرویس دهنده های مورد نظر که ما از آن ها سرویس میگیریم فعال شود که هزینه سنگینی را در بر دارد.هیچ محافظتی از طریق فضای ابری (Cloud) وجود ندارد، اکثر شرکت ها و سازمان های بزرگ دنیا از سرویس های ابری مانند  Amazonدر کنار مراکز داده (Data Center) استفاده می‌کنند. و سرویس دهنده ها نمی‌توانند از ترافیک عبوری از سرویس های ابری محافظت کنند.3- استفاده از سرویس کاهش دهنده حملات بر پایه ابر:سرویس کاهش دهنده ابری یا Cloud Mitigation Provider : توانایی خوبی برای محافظت در مقابل این حملات و کاهش آن ها دارند.به این معنی است که آن ها برای حجم بسیار زیای از پهنای باند و کاهش حملات ساخته و طراحی شده اند در نتیجه چه شما از چندین سرویس دهنده استفاده کنید یا از Data Centerخودتان و حتی سرویس های ابری، آن ها می‌توانند ترافیک مورد نظر را بدون هیچ مشکل و به صورت Clean برای شما ارسال کنند.فواید استفاده از این سرویس :1. استفاده از متخصصان با تجربه و خبره که به صورت مرتب در حال جستجو و بروز رسانی در رابطه با حملات DDoS هستند تا بالاترین سطح امنیت و محافظت را در اختیار مشتری قرار دهند.2. داشتن حجم زیادی از پهنای باند برای محافظت در مقابل حملات حجمی.3. استفاده از انواع ابزار های کاهنده ی حملات:حملات DDoS بسیار پیچیده هستند، بایستی همه ی لایه های فیلترینگ را مد نظر قرار داد تا بتوان با اخرین و جدیدی ترین نوع حملات مقابله کرد، تامین کننده های سرویس های Cloud باید از تکنولوژی های متعدد استفاده کنند چه تکنولوژی های سنتی و قدیمی و چه تکنولوژی های جدید و بروز.ارائه دهندگان سرویس های محافظتی در مقابل حملات، انتخاب منطقی شرکت برای نیازهای حفاظت DDoS خود هستند که در واقع راه حل های مقرون به صرفه ای برای پیشبرد سریع و پیشرفت در برار حملات DDoS به شمار می آیند.منابع :www.networkworld.comwww.esecurityplanet.comsearchsecurity.techtarget.comخوشحال میشم من رو در شبکه های اجتماعی مختلف دنبال کنیدwww.MtiApps.irکپی با ذکر منبع مجاز است </description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Fri, 17 Sep 2021 14:31:26 +0430</pubDate>
            </item>
                    <item>
                <title>کاربرد های استفاده از VHD (Virtual hard disk)</title>
                <link>https://virgool.io/@MohammadMokhtari/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D9%87%D8%A7%DB%8C-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-vhd-virtual-hard-disk-yev50ycesbi4</link>
                <description>این مقاله در ادامه و راستای مقاله &quot;ساخت VHD &quot; تهیه شده است که در ادامه به موارد مربوط به کاربردهای درایو مجازی اشاره می‌شود.بعد از ساخت درایو مجازی کاربر می‌تواند عملیات های مختلفی بر روی آن انجام دهد که ما در این مقاله نمونه هایی که بسیار کاربردی هستند را آموزش می‌دهیم. نصب ویندوز بر روی درایو مجازی (VHD)بعد از این که درایو مجازی ساخته شد در این مرحله به صورت ساده و مفید نصب ویندوز آموزش داده می شود :1. ابتدا ویندوز را از طریق DVD یا روش های دیگر بوت می‌کنیم، بعد از ورود به بخش نصب ویندوز به قسمت پارتیشن ها رفته (مانند شکل زیر) و مراحلی که در ادامه توضیح داده شده است را انجام می‌دهیم.2. در این قسمت اگر دقت کنید متوجه می شوید درایو مجازی که از قبل ساخته ایم در لیست ما دیده نمی‌شود برای حل مشکل مراحلی که در ادامه توضیح داده شده است را پیش میگیریم.3.  از کلید ترکیبی Shift + f10 استفاده میکنیم تا برنامه cmd برای انجام عملیات باز شود.4. در ادامه از دستور Diskpart استفاده میکنیم و وارد بخش مدیریت دیسک می شویم :5. با استفاده از دستوراتی که شکل زیر، درایو مجازی ساخته شده را مسیر دهی و  Attach میکنیم :6. با توجه به این که شما از قبل یک درایو مجازی ساخته اید و عملیات Attach هم انجام شده میتوانید از دو دستور List disk برای مشاهده تمام درایو های سیستم بعلاوه داریو های مجازی، و از دستور List Vdisk فقط برای مشاهده درایو های مجازی ساخته شده میتوان استفاده کرد :7. حال به بخش windows setup برمیگردیم و گزینه Refresh را میزنیم تا درایو مجازی ساخته شده برای نصب ویندوز ظاهر شود، بر روی درایو کلیک کرده و گزینه Next را انتخاب میکنیم تا ویندوز نصب شود.8. بعد از نصب شدن ویندوز همانطور که در شکل زیر مشاهده میکنید ویندوز قبلی و ویندوزی که بر روی درایو مجازی نصب شده است قابل بوت شدن و اماده به کار است. استفاده از VHD به عنوان Back upیکی از قابلیت های مهم و کاربردی که در VHD مطرح است، این بوده که درایو های مجازی به راحتی قابل حمل و انتقال یه یک فضای خارجی می باشد از این رو ما میتوانیم از آن ها به عنوان یک مخزن برای پشتیبان گیری یا back up و انتقال آن به فضای دیگر استفاده کرد.نحوه کار : بعد از ساخت درایو مجازی و attach کردن آن به راحتی میتوان درایو را در flash drive و یا hard disk به عنوان نسخه پشتیبان قرار داد. استفاده از VHD برای رمزنگاری و امن کردن داده هایکی از قابلیت های کاربردی و فوق العاده امن ویندوز، bitlocker است .این برنامه برای محافظت داده ها طراحی شده است، به این صورت که تمامی داده های ما رمز نگاری میشود.علاوه بر درایو های فیزیکی، میتوان در درایو های مجازی نیز از bitlocker استفاده کرد که با استفاده از این قابلیت قادر خواهیم بود درایو مجازی موردنظر را به صورت کاملا امن منتقل و نگهداری کنیم.خوشحال میشم من رو در شبکه های اجتماعی مختلف دنبال کنیدwww.Mtiapps.irکپی با ذکر منبع مجاز است</description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Fri, 17 Sep 2021 14:18:53 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت درایو مجازی</title>
                <link>https://virgool.io/@MohammadMokhtari/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AF%D8%B1%D8%A7%DB%8C%D9%88-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-jaws3ygypz3y</link>
                <description>امروزه فضای ذخیره سازی اهمیت بالایی در رایانه ها دارد و بدون قابلیت ذخیره داده ها دنیای فناوری بی معنی است ، VHD  قالب ذخیره سازی دیسکی بصورت مجازی است که قادر است مانند یک درایو واقعی فایل ها را در خود ذخیره کند. درایو های مجازی گاهاً به عنوان ماشین مجازی نیز نامبرده می‌شوند که هارد دیسک را به بخش های مختلفی تقسیم بندی می‌کند.درایو مجازی هر جایی از سیستم میتواند ذخیره شوددو نوع درایو مجازی وجود دارند:Fixed-size: اندازه ثابت با توجه به اندازه ای که کاربر مشخص می‌کند.: Dynamically expandingقابل تغییر بر حسب فضای مورد نیاز و این فضا به طور کامل در ابتدا پر نمی‌شود.در حالت Fixed Size درایوهای مجازی در مرحله اول مقدار فضای معین شده را اشغال میکند اما در حالت Dynamically Expanding در صورت استفاده شدن ، آن مقدار حافظه را اشغال میکند و در فضای درایومان صرفه جویی میشود.نکته:درایو های مجازی بسته به نوعشان می‌توانند اندازه و سایزهای متفاوتی داشته باشند.حالت Fixed Size باعث عملکرد قوی تر ماشین مجازی مان میشود و اگر از برنامه هایی استفاده میشود که به کارایی بیشتری نیاز دارند استفاده از این نوع دیسک مجازی توصیه میشود.مزایای استفاده از VHDیکی از مزیت های آن در ماشین های مجازی مورد استفاده قرار میگیرد که از درایو های مجازی به جای درایوهای فیزیکی استفاده می شود.یک دیسک مجازی مجموعه ای از یک فایل یا چندین فایل می‌باشد که درایو مجازی را شکل میدهد.زمانی که یک ماشین مجازی را با استفاده از یک درایو مجازی ایجاد و تنظیم میکنید، در این مواقع بدون استفاده از دستکاری پارتیشن های فیزیکی قادرید یک سیستم عامل جدید نصب کنید که در ادامه به صورت عملی توضیح داده خواهد شد.قابلیت جابجایییکی از مزایای استفاده از درایو مجازی قابلیت جابجایی آنهاست. به علت ذخیره فایل های دیسک مجازی به صورت فایل، قادر هستیم آنها را به هر مکان جدیدی منتقل کنیم و در آنجا از مزایای آن دیسک مجازی بهره مند شویم.همچنین حتی برنامه های اختصاصی خود ویندوز نیز به ما اجازه ی ایجاد یک درایو مجازی را میدهند، و به این طریق می‌توانیم درایو های مجازی مان را به لینوکس انتقال دهیم و حتی بر روی لینوکس از انها استفاده کنیم و بلاکس.قفل کردن VHDبرای پایداری بیشتر دیسک های مجازی، ماشین های مجازی یک فایل قفل برای جلوگیری از بهم ریختن و خراب شدن فایل ها ایجاد می‌کنند.نحوه ایجاد VHD :Control Panel &gt; Computer Management &gt; Disk Managementیا می‌توانید به سادگی در Start ، عبارت Disk management را جستجو کنیم.در شکل مقابل عبارت Create VHD را در بخش Action برای ساخت انتخاب میکنیم.در قسمت Browse محل قرارگیری و ذخیره شدن فایل VHD را انتخاب میکنیمدر بخش Virtual hard disk sizeمیتوانیم اندازه درایو مجازی را مقداری دهی کنیمدر قسمت virtual hard disk format گزینه VHD برای درایو هایی با حداکثر اندازه 2 ترابایت هستند و گزینه VHDX برای درایو های با حداکثر 64 ترابایت قالب بندی می‌شوند.بخش Virtual hard disk type در مقاله توضیح داده شده است.در ادامه بعد از زدن گزینه Ok یک disk به صورت ناشناخته ایجاد می شود که مربوط به VHD است، در این قسمت برای راه اندازی دیسک مجازی گزینه Initialize Disk را انتخاب می‌کنیم.در این بخش قالب دیسک مورد نظر انتخاب می‌شود در واقع یک استاندارد برای نحوه چینش پارتیشن می‌باشد.MBR یک قالب بندی قدیمی و بدون ظاهر گرافیکی است که حداکثر دیسک هایی با ظرفیت 2 ترابایت را می‌تواند مدیریت کند در صورتی که GPT یک قالب بندی جدید و بروز بوده که ظرفیت های بیش از 2 ترابیت را قالب بندی می‌کند، درMBR  به دلیل این که داده های مربوط پارتیشن بندی و بوت در یک قسمت ذخیره میشود از این لحاظ دارای امنیت داده ای پایینی هستند ولی GPTدقیقا برعکس بوده داده ها در نسخه های متعددی در دیسک ذخیره می‌شوند(Redundancy)از این رو امنیت و قابلیت اطمینان بیشتری دارند.در این بخش بر روی پارتیشن راست کلید کرده و New simple volume را انتخاب کرده و در ادامه گزینه Next را برای رفتن به مرحله بعد انتخاب می‌کنیم.در این بخش فضای مورد نظر را برای پارتیشن های VHD انتخاب می‌کنیم.( بسته به نیاز می‌شود یک یا چند پارتیشن از یک دیسک مجازی داشت )در این مرحله می‌توانید یک Drive Letter یا همان حروف الفبای انگلیسی برای هر پارتیشن انتخاب کنید.در این بخش قالب سیستم فایل را انتخاب میکنیم که معمولا از NTFS استفاده می شود.گزینه های بعدی را به صورت دلخواه می‌توانید انتخاب کنید که البته ضرورتی در این کار نیست.بر روی گزینه Next کلیک کرده و در مرحله بعد Finish را انتخاب میکنیم تا VHD ساخته شود.برای detach  کردن(جدا کردن درایو مجازی) میتوانید بر روی درایو مورد نظر راست کلیک کنید و Eject را انتخاب کنید.همچنین برای attach کردن ( اتصال درایو مجازی به لیست درایو ها) میتوان از این طریق اقدام کرد:نحوه ایجاد  VHDبه وسیله cmd :یکی دیگر از روش های ساخت درایو مجازی استفاده از محیط خط فرمان cmd است.در ادامه با جستجو کردن عبارت cmd در قسمت جستجوی ویندوز این برنامه را اجرا کنید.ابتدا از دستور مقابل استفاده می شود که به نوعی وظیفه مدیریت دیسک را بر عهده دارد :Diskpartدر ادامه با استفاده از دستورات زیر VHD را ایجاد میکنیم :create vdisk file=C:\VHD\test.vhd maximum=25000 type=expandablefile=C:\VHD\test.vhdمحل   ذخیره فایلmaximum=25000حداکثر حجم فایل بر اساس مگابایتtype=expandableFixed   (fixed size) / expandable (Dynamically)با استفاده از این دستور میتوانیم درایو مجازی را مسیر دهی شده را برای تغییرات انتخاب میکنیمselect vdisk file=C:\VHD\test.vhdدرایو مجازی مورد نظر را متصل می‌کند.attach vdiskایجاد پارتیشن از نوع Primarycreate partition primaryیک Drive letter (نام گذاری) انتخاب میکنیم.assign letter=vبا استفاده از دستور مورد نظر درایو با توجه به نیاز کاربر (برای درایو های متعدد) قالب بندی می‌شود.format quick FS=NTFS label=VHDخروج از برنامه Diskpart و اتمام کار.exitسایر دستورات&gt; Detach Vdiskغیر   فعال کردن درایو مجازی&gt; list diskمشاهده تمام پارتیشن های موجودخوشحال میشم من رو در شبکه های اجتماعی مختلف دنبال کنیدmamadmti.bio.linkمنابع :کپی با ذکر منبع مجاز استpubs.vmware.comdocs.microsoft.com (1,2)technet.microsoft.com (1,2)docs.microsoft.com</description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Sun, 22 Aug 2021 18:05:40 +0430</pubDate>
            </item>
                    <item>
                <title>روش‌های پایه برقراری امنیت در دیوایس‌های سیسکو</title>
                <link>https://virgool.io/@MohammadMokhtari/%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D9%87-%D8%A8%D8%B1%D9%82%D8%B1%D8%A7%D8%B1%DB%8C-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%AF%DB%8C%D9%88%D8%A7%DB%8C%D8%B3-%D9%87%D8%A7%DB%8C-%D8%B3%DB%8C%D8%B3%DA%A9%D9%88-iucny4gheciv</link>
                <description>اخیرا ، Brad Reese یکی از وبلاگ نویس های سیسکو در یکی از پست های خود این موضوع را بیان کرده بود که عده ای از هکر ها توانسته بودن به روتر های یک شرکت نفوذ کرده و آن شرکت را تهدید به از بین بردن کل شبکه کنند و در قبال آن درخواست مالی با وجه زیاد کرده بودند.اما علت چه بود ؟ چرا هکر ها به راحتی توانستند شبکه یک شرکت را در دست بگیرند ؟مهندسی نادرست ، در واقع هکر ها به دلیل وجود ضعف های امنیتی در دیوایس های شبکه مانند طراحی نادرست ACL ها (access list)استفاده از کلمات عبور بسیار ساده که به راحتی قابل حدس زدن بودنداس ان ام پی SNMP  رمزنگاری نشدهو...البته به این نکته توجه داشته باشید، این فقط یک نمونه از یک سری ضعف های امنیتی بوده که میتواند این دسته مشکلات امنیتی را برای یک شرکت بزرگ ایجاد کند ، بحث های برقراری امنیت در دیوایس های سیسکو و... بسیار گسترده است که ما با رعایت آن ها میتوانیم امنیت کامل را برای سازمان مربوطه ایجاد کنیم.ما نباید این اجازه را بدهیم که چنین مشکلات بزرگی برای ما پیش بیاید ، به همین منظور ما در این مقاله تعدادی از روش های مختلف برای ایجاد امنیت در روترها، شبکه و سازمان شما در مقابل حملات مخرب آماده کردیم که به آن می‌پردازیم:امن کردن روتر به صورت فیزیکیما باید این را در نظر داشته باشیم که اگر تجهیزات ما به صورت فیز‌یکی امنیت لازم را نداشته باشند، هر شخصی می‌تواند به راحتی به دستگاه ما دسترسی داشته باشد و عمل های مخربی مثل ریست پسورد ، دسترسی به تمام تنظیمات روتر را داشته باشد.حتی اگر روتر مربوطه یک روتر مر‌کزی نباشد، شخصی که به تجهیزات به راحتی دسترسی پیدا کرده میتواند با روش هایی مانند سمی کردن جدول های مسیریابی (route poisoning) در همه‌ی روترهای شبکه‌ اختلال ایجاد کند. به همین علت تجهیزات ما باید در یک مکان محافظت شده و ترجیحا به همراه دوربین های نظارتی و همچنین سیستم های خنک کننده و منبع برق قابلاعتماد که همه ی این ها امنیت فیزیکی لازم را برای ما فراهم می‌کند.امن کردن روتر با پسورددر این مرحله می باید روتر یا سویچ موردنظر را در مد‌های Login ( برای جلوگیری از دسترسی های اولیه ) و Privileged ( برای جلوگیری از دسترسی به تنظیمات اصلی ) با قرار دادن رمز عبور امن کرد.اعمال کردن رمز عبور Logging mode بر روی درگاه های Console , AUX و VTY(telnet/ssh)پسورد باید بر روی تمام درگاه های روتر ما اعمال شود ، در غیر این صورت اگر فقط بر روی یک درگاه مثل Console اعمال شود آنگاه عمل رمز گذاری بی‌فایده خواهد بود و میتوان به تجهیزات دسترسی پیدا کرد.زمان و تاریخ دستگاه باید درست باشدبرای این که مطمئن شویم Log های دستگاه درست بوده و دستکاری نشده است ، باید اطمینان حاصل کرد که زمان و تاریخ دستگاه مورد نظر به درستی تنظیم شده است.فعال کردن قابلیت loggingیکی از روش هایی که میشود امنیت را چه از نظر داده و چه از نظر اطلاعات فراهم کرد استفاده از syslog server است ، این سرویس مانند یک مخزن مرکزی برای Log های دستگاه می‌باشد در واقع syslog یک نوع مخزن مرکزی برای لاگ برداری است که جهت متمرکز کردن مانیتورینگ دستگاه ها و سرورها استفاده می شود.وقتی که یک سرور syslog راه اندازی می کنید , دستگاه ها، لاگ های خود را تحت شبکه به جای آنکه در فایل محلی ذخیره کنند یا بر روی صفحه نمایشگر به نمایش در آورند برای syslog سرور می فرستند، بنابراین این لاگ ها را در محلی برای آنالیزهای آینده ذخیره و نگهداری می کنیم.برای مثال اگر زمانی برق روتر ما قطع شود با استفاده از این سرویس لاگ های ما بر روی سرور syslog ذخیره میشود و از بین نمیرود.تهیه backup از تنظیمات روتراین امکان وجود دارد که شخصی دسترسی کامل به دستگاه شما پیدا کند و قادر باشد تنظیمات تمام روتر را از بین برده یا جایگزین کند ، در این صورت ما دو راه پیش رو داریم :استفاده از روتر جایگزین تا در صورت مشکل به صورت فوری با روتر مربوطه تعویض شود.تهیه نسخه پشتیبان از تنظیمات روتر به صورت زمانبندی شده. ( مانند برنامه kiwi cattools )داشتن اطلاعات کامل در مورد ساختار ، نقشه و اسناد مربوطه شبکهاگر شما مسًولیت امنیت یک شبکه را بر عهده دارید حتما باید از نقاط آسیب پذیر شبکه مطلع باشید و بعد از آن برای پایدار کردن این آسیب پذیری ها اقدام کنید. از جمله این اقدامات دانش کافی در مورد نمودار شبکه‌تان است که یک دید کلی از نقشه شبکه به شما میدهد.محافظت از روتر با استفاده از ACL و FirewallACL ها سرویس هایی هستند که از روتر یا سویچ شما در مقابل حملات جلوگیری میکنند، از این جهت تنظیم کردن یک ACL امری مهم و بسیار ضروری است.به این علت که تنظیم کردن این سرویس پیچیده بوده ، ممکن است اشتباهاتی در تنظیم آن‌ها رخ دهد که در نهایت ACL ما میتواند بی نتیجه باشد و پای هکر ها را به شبکه ما باز کند.بنابراین، باید مطمئن شوید ACL ما تنها ترافیک های مجاز و تنظیم شده را در درون شبکه راه دهد.از کلمات عبور پیچیده استفاده کنیدیکی دیگر از روش هایی که هکر ها میتوانند به شبکه دسترسی پیدا کنند ، حدس زدن کلمه عبور و یا sniffing کردن است. برای جلوگیری از این مشکل شما باید کلمات عبور خودتان را به صورت پیچیده تعریف کنید.به عنوان مثال : mysuper!S3cr3t#$$s#@مهم : همچنین میتوان از پسورد گذاری در کل دستگاه را به صورت رمزنگاری تعریف کرد، مانند دستور زیر در روترهای cisco که همه کلمات عبور تعریف شده در دستگاه را رمزنگاری میکند:Router(config)# service password-encryptionرمزنگاری کردن ترافیک های حساسوقتی شما به تجهیزات خودتان telnet میزنید و میخواهید ارتباط برقرار کنید ، هکر ها به راحتی میتوانند با sniffing ، پسورد های شما که به صورت رمزنگاری شده نیستند را استخراج کنند چون همان طور که میدانید ترافیکی که از طریق telnet عبور میکند رمزنگاری شده نمی‌باشد، راحل این است که به طور کل Telnet را غیر فعال کنیم و به صورت پیش فرض از SSH که رمزنگاری شده است استفاده کنیم.جمع بندی :ما در این مقاله سعی بر این داشتیم که شما را تشویق کنیم تا امنیت شبکه خودتان را تا حد امکان قبل از حمله مخربانه فراهم کنید ، و این دید را به شما بدهیم که چه اقداماتی باید انجام بشود. شما هرگز نباید این فکر را بکنید که اطلاعات شما برای هکر ها مهم نیست یا شرکت شما از آن دسته از شرکت هایی نیست که برای هکر ها مهم نباشد به همین جهت تمام گام های منطقی را جهت امن کردن شبکه انجام دهید ، همینطور که میبیند این گام ها لزوما دشوار یا هزینه بر نیستند.خوشحال میشم من رو در شبکه های اجتماعی مختلف دنبال کنیدwww.Mtiapps.irمنابع:www.techrepublic.comکپی با ذکر منبع مجاز است </description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Sun, 22 Aug 2021 17:48:06 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی پروتکل های Telnet  و SSH در سیسکو</title>
                <link>https://virgool.io/@MohammadMokhtari/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84-%D9%87%D8%A7%DB%8C-telnet-%D9%88-ssh-%D8%AF%D8%B1-%D8%B3%DB%8C%D8%B3%DA%A9%D9%88-jfbnsuoqfywc</link>
                <description>پروتکل های Telnet و SSH این امکان را به کاربر میدهند تا بتوانند از راه دور به دستگاه (روتر یا سویئچ و... ) خود دسترسی پیدا کرده و تنظیمات مورد نظر را بر روی دستگاه اعمال کنند. ادمین شبکه این ارتباط را به وسیله IP یا Hostname دستگاه مورد نظر برقرار می‌کند.تلنت به صورت کلیدر این بخش پروتکل Telnet را به طور کامل بررسی کرده و چگونگی تنظیم آن بر روی روترها و سوئیچ های سیسکو را بیان می‌کنیم.تلنت زیر مجموعه ای از پروتکل TCP و شماره پورت مورد نظر آن 23 می‌باشدیکی از ضعف های این پروتکل که از دلایل اصلی استفاده محدود آن بوده  این است که انتقال اطلاعات در هنگام استفاده از Telnet به صورت رمزنگاری شده نمی‌باشد، یعنی تمام داده ها که شامل نام های کاربری و رمز عبور می‌شوند به صورت clear text قابل دسترسی می باشند.این پروتکل به صورت پیش فرض در سیستم عامل فعال نبوده و باید از مسیر زیر فعال شود:Control panel / Program and features / Turn windows features on or off / Telnet clientسپس از محیط cmd میتوانیم با دستور telnet به دستگاه مورد نظر دسترسی پیدا کنیم .همچنین می‌توان از نرم‌افزارهای مختلف نظیر Putty و... برای انجام این کار استفاده کرد. فعال کردن Telnet در سیسکوقبل از راه اندازی این پروتکل و کانفیگ آن در دستگاه های سیسکو باید یک سری پیش نیازها را رعایت کرد، زیرا در غیر این صورت ما نمیتوانیم این قابلیت را فعال کنیم.قبل از کانفیگ Telnet، دستگاه ( روتر یا سوئیچ ) بمنظور ورود به مد usermode توسط نام کاربری و رمز عبور و یا فقط رمز عبور امن شده باشد.همچنین مد Enable mode ( privilege mode ) باید توسط رمز عبور امن شود.لینک به مقاله username password دستگاه ما باید حتما دارای IP باشد.لینک به مقاله دستورات و تنظیمات ابتدایی روتر و سویئچ سیسکو اعمال تنظیماتاین پروتکل به صورت پیش فرض بر روی دستگاه های سیسکو فعال است، اما اگر به هر دلیلی فعال نبود میتوانید از دستور زیر برای فعال کردن Telnetاستفاده کنید.این   دستور 16 اتصال مجازی را به صورت هم‌زمان فراهم می‌کند.Router(config)#line vty 0 15نوع اتصال   با توجه به نیاز مشخص میشود که ما در اینجا Telnet  را انتخاب میکنیم.Router(config-line)#transport   input (all/none/Ssh/Telnet)سوال     : چرا Telnet که پروتکلی با امنیت پایین است هنوز وجود دارد و استفاده می‌شود؟به دلیل این که این     پروتکل پیاده سازی آسان تری داشته و از این رو دانش کمتری لازم دادو همچنین برخلاف SSH در همه IOS ها وجود دارد و می‌توان استفاده     کرد.اس اس اچ SSH (Secure shell) چیستپروتکل SSH هم مانند Telnetعمل میکند اما یک تفاوت بزرگ بین این دو وجود دارد و آن این است که اطلاعات به صورت Encryption یا رمزنگاری شده تبادل می‌شود و به این تریتب مشکل امنیتی که در Telnetوجود داشت رفع شده است .§ SSH هم مانند Telnet زیر مجموعه ای از پروتکل TCP میباشد و شماره پورت مورد نظر آن 22 می‌باشد.§ این پروتکل از قانو‌ن کلید رمز نگاری عمومی تبعیت می‌کند.§ این امکان در سیستم عامل ویندوز به صورت مستقیم وجود ندارد که از SSHاستفاده کرد و حتما باید از نرم افزار هایی مانند Puttyیا SecureCRT و... استفاده کرد. فعال کردن SSH در سیسکوپیش نیاز های فعال سازی این پروتکل کاملا مانند Telnetمی‌باشد ولی تفاوت های کوچکی وجود دارد که به آن ها می‌پردازیم : قبل از پیکربندی SSH، دستگاه ( روتر یا سوئیچ ) باید در مد usermode فقط توسط نام کاربری و رمز عبور امن شده باشد ( نمی‌شود از رمزعبور به تنهایی استفاده کرد ) اینیبل مود Enable mode( privilege mode ) هم مانند Telnetباید توسط رمز عبور امن شود. این را هم فراموش نکنید که دستگاه حتما باید دارای IP باشد. هاست نیم (Hostname) دستگاه باید تغییر کند و از حالت پیش فرض خارج شود. همچنین یکdomain name  و یک کلید رمزنگاری برای عملیات SSH تعریف میکنیم.اعمال تنظیماتاین پروتکل برعکس Telnet به صورت پیش فرض بر روی دستگاه های سیسکو فعال نمی‌باشد و باید از طریق دستوراتی که قبلا اشاره کرده ایم فعال شود.دستورات :نام   دستگاه را تغییر می‌دهیم تا برایSSH  زدن اماده باشدRouter(config)#hostname aliاسم دامنه را مشخص   میکنیمali(config)#ip   domain-name Abartech.irکلید RSA را برای رمزنگاری میسازدali(config)#crypto key generate rsaاندازه کلید را که به بیت هست مشخص میکنیم مثلا 1024How many bits in the modulus [512] :نکته 1 : Domain-name اسم آن فایلی است که کلید موردنظر در آن قرار دارد.نکته 2 : اندازه کلید به صورت پیش فرض 512 است، هر چه این عدد کمتر باشد امنیت کلید ما پایین تر می‌آید ولی از سوی دیگر سرعت بیشتر می‌شود اما اگر این عدد بیشتر باشد امنیت بیشتر شده و سرعت کمتر می‌شود.خوشحال میشم من رو در شبکه های اجتماعی مختلف دنبال کنیدwww.Mtiapps.irکپی با ذکر منبع مجاز است</description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Sun, 22 Aug 2021 17:38:44 +0430</pubDate>
            </item>
                    <item>
                <title>ترفند های مهم و کاربردی در محیط پیکربندی روتر های سیسکو</title>
                <link>https://virgool.io/wptips/%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%85%D9%87%D9%85-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%AF%D8%B1-%D9%85%D8%AD%DB%8C%D8%B7-%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C-%D8%B1%D9%88%D8%AA%D8%B1-%D9%87%D8%A7%DB%8C-%D8%B3%DB%8C%D8%B3%DA%A9%D9%88-qoc7bgjndtjn</link>
                <description>شما به عنوان یک مهندس شبکه باید توانایی این را داشته باشید که در کمترین زمان و به صورت صحیح یک روتر سیسکو را پیکربندی و آماده به کار کنید ، همانطور که میدانید روتر های سیسکو دارای یک سیستم عامل یا IOS هستند که دستورات زیادی را شامل می‌شوند ، ما در این مقاله ترفند ها و دستورات کاربردی بسیار مفیدی را جمع آوری کرده‌ایم تا شما بتوانید در محیط کار با سرعت و کیفیت بیشتر از آن‌ ها استفاده کنید.استفاده از &quot; ? &quot;این کلید به عنوان یک راهنما عمل میکند در واقع شما با استفاده از ? در هر مد میتوانید دستورات مجاز را مشاهده و از آن ها استفاده کنید.همچین شما قادر خواهید بود توسط ? ، زیر مجموعه هر دستوری را در صورت وجود مشاهده کنید ، مثلا در نمونه زیر، زیر مجموعه های دستور Show نمایش داده می شوند.Router#show ?استفاده از Tabیکی از ساده ترین امکانات کاربردی در پیکربندی کردن کلید Tab است ، به مثال زیر توجه کنیدRouter#show run شما میخواهید از دستورات مانیتورینگ استفاده کنید ولی به هر دلیلی بقیه دستور را فراموش کرده اید یا نمیخواهید زمان اضافی برای کامل کردن دستور صرف کنید برای همین از Tab استفاده میکنید تا دستور به صورت خودکار کامل شود.Router#show running-configدستور Doیکی از دستوراتی که میتواند در هنگام پیکربندی یک دستگاه سیسکو زمان زیادی را صرفه جویی کند دستور Do می‌باشد، شما با استفاده از این دستور میتوانید مجموعه از دستورات که در مد های Usermode و Enable mode (privilege) استفاده میشوند را به راحتی در مد های بالاتر مانند Global configuration و Context mode هم به‌ کار ببرید.مثال :Router#show   running-configدستور   اصلیRouter(config)#do   show running-configدستور   تبدیلی هنگام استفاده از DOنکته 1: در صورت استفاده از Doشما نمیتوانید با استفاده از کلید Tab دستورات را کامل کنید.نکته 2: همچنین ممکن است در بعضی از مواقع دستورات شبیه به هم داشته باشیم و کلید Tab کار نکند، در اینطور مواقع شما می‌توانید از ؟ برای رفع این مشکل استفاده کنید و بقیه دستور را مشاهده کنید.میانبر هانشانه‌گر را به ابتدای خط می‌بردCtrl + Aنشانه‌گر را به انتهای خط   می‌بردCtrl + Eدستور بعدی و قبلی زده شده   را برمیگرداندUp , Downلاگ های انجام شده را   دوباره نشان میدهدCtrl + Rمد کاری را به privilege mode  مد تغییر میدهدCtrl + Cمد کاری به privilege  مد تغییر میکندCtrl + Zدستور نوشته شده جاری را   پاک میکندCtrl + Uغیر فعال کردن error translatingزمانی که دستوری را به اشتباه وارد می‌کنیم ، دستگاه فرض میکند آن دستور یک domain name است بنابراین در شبکه به جستجوی آن میگردد و برای چند ثانیه مشغول broadcast میشود و خط فرمان غیر قابل دسترسی میشود.برای جلوگیری از این بروز این مشکل از دستور زیر استفاده میکنیم که باعث میشود دیگر به جستجوی domain name ها نپردازدRouter&gt;enableRouter#configure terminalRouter(config)#no ip domain-lookupRouter(config)#exitنمایش تاریخچه دستوراتRouter#show historyشما با استفاده از این دستور قادر خواهید بود در مد های مختلف مجموعه دستوراتی که از قبل زده شده را مشاهده کنید.نکته : برای مشاهده تاریخچه دستورات در مد های بالاتر می‌توانید از DO در ابتدای دستور مقابل استفاده کنید.همچنین با استفاده از دستور زیر می‌توانید تعداد دستوراتی که قابل مشاهده هستند را تعیین کنید :Router#Terminal history size ?استفاده از Bannerبنر یک نوع اطلاع رسانی و یا کمک در محیط خط فرمان تجهیزات هوشمند شبکه است، در این بخش نحوه راه‌اندازی آن در محیط سیسکو را بررسی می‌کنیم.انواع بنر در دستگاه های سیسکو :1 – MOTD Banner  (Message of the day)قبل از اهراز هویت ( قبل از login کردن ) استفاده می‌شود، این بنر به صورت متغیر است و پیغام ها گاه به گاه با توجه به نیاز مدیر شبکه تغییر می‌کند.مثال : **** روتر 1 در ساعت 21:00 برای تعمیر از دسترس خارج می‌شود ****دستورات :Router(config)#banner motd &amp;نکته : همه دستورات مربوط به بنر در مد Global اعمال می‌شوند.نکته : در ایجاد بنر مانند دستور مقابل ما از یک کارکتر (&amp;) به عنوان شروع کننده و پایان دهنده برای ایجاد بنر استفاده میکنیم ، این کارکتر از هر نوعی می‌تواند باشد مانند شکل زیر که یک نمونه کامل برای ساخت بنر است.2 – Login bannerاین بنر هم درست مانند بنر motd قبل از احراز هویت قرار می‌گیرد اما با این تفاوت که به صورت ثابت بوده و تغییر نمی‌کند.مانند نام دستگاه ، شرکت و یا یک سری اخطار های امنیتی و....دستورات :Router(config)#banner Login &amp;نکته امنیتی : به هیچ عنوان در بنر هایی که قبل از احراز هویت استفاده می‌شوند از پیغام هایی مانند خوش آمدگویی استفاده نکنید، زیرا ممکن است مورد سوء استفاده های امنیتی قرار بگیرید.3 – Exec bannerبنر مربوطه بعد از احراز هویت استفاده می شود، از این رو افرادی که دسترسی به مد‌های بالاتر را ندارند قادر به دیدن آن نیستند.مانند : اطلاعات مربوط به ادمین شبکهدستورات :Router(config)#banner Exec %4 – Incomming bannerاین بنر برای incoming connection ها استفاده می شود، مانند زمانی که به دستگاه Telnet میزنید.دستورات :Router(config)#banner Incomming @· برای غیر فعال کردن بنر از عبارت NO در ابتدای دستور استفاده کنیدتغییر زمان Idleبا استفاده از دستور مقابل می توان زمان بیکاری دستگاه یا همان Idle را تنظیم کرد.دستورات :Router(config)#line console 0Router(config-line)#exec-timeout [ &lt;0-35791&gt; Timeout in minutes ]غیر فعال کردن پیغام Logدر بعضی مواقع در حال تایپ کردن دستورات هستید که یک Log بر روی تصویر ظاهر می شود و با باعث می شود یک تداخل بین دستورات و آن Log ایجاد شود یا حتی دستور حذف شود، برای حل این مشکل از دستورات زیر استفاده می‌کنیم :دستورات :Router(config)#line console 0Router(config-line)# logging synchronousکپی با ذکر منبع مجاز استخوشحال میشم من رو در شبکه های اجتماعی مختلف دنبال کنیدwww.Mtiapps.irمنابع :etherealmind.comwww.ciscozine.comrouterjockey.comwww.ebrahma.comextr3metech.wordpress.comwww.cisco.com</description>
                <category>محمد مختاری</category>
                <author>محمد مختاری</author>
                <pubDate>Sun, 22 Aug 2021 17:00:36 +0430</pubDate>
            </item>
            </channel>
</rss>