آژانس هواپیماییfootbal

برنامه های اضافی برای Nttacplus

شروع موضوع توسط pooya.mz ‏7 آپریل 2004 در انجمن شبکه

  1. pooya.mz

    pooya.mz کاربر تازه وارد

    سلام
    من مایلم در این مکان کاربردهایی که می توان از Nttacplus بصورت اضافي انتظار داشت را به بحث بگذاریم.
    من همچنین چند برنامه برای این نرم افزار نوشتم که امیدوارم بتونم بصورت کامل و سورس باز اون رو در این مکان قرار بدم انتظار دارم دوستان محترم نظرات خودشون رو جهت تکمیل این نرم افزارها و همچنین افزایش اطلاعات اینجانب بیان فرمایند.
    نرم افزارهایی که من می خوام در مورشون صحبت کنم یکی برنامه ایست جهت قطع کردن مشترکین در ras ويندوز و دیگری برنامه ایست جهت ایجاد تخفیف شبانه .

    به امید موفقیت ;)
     
  2. MCP

    MCP کاربر فعال دوربین دیجیتال کاربر فعال

    به به !! واقعا" عاليه :)
     
  3. omid650

    omid650 Registered User

    دوست عزيز با تشكر از شما
    آيا در مورد access server هم تونستين كاري بكنين؟
     
  4. aryagohar

    aryagohar کاربر تازه وارد

    آقا پويا عزيز
    خيلي خوش اومدي. ولي اين دفعه اول نيست كه ميگيم. اين بحث هايي كه شما الان پيش كشيدي يه Threat مربوط به خودش رو داره كه قبلا مفصل در موردش بحث شده. پس خواهش مي كنم از همه دوستان تازه وارد كه اول بشينن مطالب صفحات قبلي رو هم بخونن بعد سوالات رو مطرح كنن اينجوري بخاطر جمع شدن مطالب در يك جا مبحث براي بقيه كامل تر و جامع تره. خيلي ممنون
     
  5. pooya.mz

    pooya.mz کاربر تازه وارد

    با سلام
    اولین برنامه که من روش کار کردم مربوط می شه به قطع کردن کاربران در ویندوز.
    همونطور که می دونید نرم افزار Nttacplus یک قسمت برای قطع کردن اجباری داره . که این قسمت بطور معمول برای کاربریهای استاندارد طراحی شده. به نظر من کلا اشکال اساسی نرم افزار Nttacplus این است که فرض رو بر این گذاشته که همه چیز استاندارد و برای همه کاری از وسایل خودش استفاده میشه.
    البته Nttacplus یکسری قابلیت در خودش قرار داده که کاربر بتونه یکسری گزارشها رو از این نرم افزار بگیره.
    ما در نوشتن برنامه های اضافیمون عموما توسط این گزارشها یکسری تغییرات در دیتابیسمون وارد می کنیم که بصورت مستقیم در Nttacplus وارد نمیشه و تغییری ایجاد نمی کنه.
    البته این رو هم عرض کنم که Nttacplus یک نرم افزار مبتنی بر radius server هست یعنی ما اگر بخوایم تغییری رو مستقیما در اون وارد کنیم می تونیم با استفاده از دستورات radius server اون تغییرات رو درونش وارد کنیم.
    که این بحث فرصت طولانی احتیاج خواهد داشت.
    اما حالا بریم سر همون قطع کردن.
    در همین سایت نرم افزاری معرفی شده بنام Dcplus این نرم افزار بسیار نرم افزار خوبی است . من فکر می کنم با زبان سی نوشته شده باشه . و از یکسری توابع MPR ( مربوط به گرفتن کنترل قسمت ROUTING AND REMOTE ACCESS در زبان برنامه نويسي -- جهت اطلاعات بيشتر به MSDN مراجعه شود) استفاده كرده باشه. به هر حال نرم افزار خيلي خوبيه و 90% كار رو انجام مي ده اما چند تا مشكل داره كه من سعي كردم اين مشكلات رو حل كنم.
    اول ببينيم اين dcplus چكار مي كنه. خيلي ساده اين برنامه username رو ميگيره و اينترفيسي با نام username رو در كامپيوتري كه روش قرار داره در صورتي كه اون اينترفيس موجود باشد قطع مي كنه.
    اولين مشكلي كه به نظر من رسيد اينست كه اين نرم افزار فقط روي همون كامپيوتري كار مي كنه كه روش قرار داره.
    دليلش هم اين هست كه هر كاربري كه به سرور وصل ميشه يك مودم يا يك *** يا ... بهش اختصاص پيدا مي كنه و بعنوان يك Interface در اون سرور معرفي ميشه. يعني يك Interface جديد بنام Username .
    حالا مشكل وقتي ايجاد ميشه كه ما 2 يا بيشتر سرور داشته باشيم و از يك radius server استفاده كنيم.
    چرا ؟ كاربر به سرور دوم متصل شده در radius server تعريف شده و يك دستگاه در سرور دوم بهش اختصاص داده شده . در حقيقت بعنوان يك interface در سرور دوم معرفي شده.
    خب حالا فرض مي كنيم با اين مشخصات يك مشترك وصل شده به سرور دوم ما ميخواهيم قطعش كنيم اما برنامه اي كه ما داريم username رو ميگيره از radius server و در سرور 1 بدنبال اون اينترفيس ميگرده اما پيدا نميكنه پس عمل قطع كردن صورت نميگيره.
    خب من اومدم يك برنامه نوشتم كه اين مشكل رو حل كنه . البته اگر سورس اون dcplus در اختيار بود خيلي راحتتر و زيباتر اين برنامه نوشته ميشد. اما به هرحال .
    من اومدم برنامه اي نوشتم كه 2 پارامتر اساسي داره. يك Nas address و دومي username .
    برنامه من به شكل كار مي كنه . يك كپي از اون dcplus رو بر هر كدوم از ديگر سرورها كپي مي كنيم.
    برنامه مياد username رو به اون سروري كه username روش هست يعني جاييكه Nas address مشخص مي كنه مي فرسته. و در اونجا dcplus به همراه متغير username اجرا ميشه.

    به اميد موفقيت
     
  6. pooya.mz

    pooya.mz کاربر تازه وارد

    با سلام

    هدف : قطع كردن مشتركين بصورت اجباري توسط قابليت kill در نرم افزار Nttacplus
    چگونگی : انتقال Username به برنامه قطع کننده ( در اینجا Dcplus )
    نحوه اجرا : Client/server
    پروتکل ارتباطی : UDP
    راه اندازی :
    1- انتخاب سرور مناسب توسط دریافت Nas address
    2- انتقال Username به برنامه توسط دریافت از Nttacplus
    بخش سرور
    3- دریافت Username توسط برنامه
    3-1 : با توجه به اینکه Nttacplus فاصله خالی میان Username را قبول می کند (مثلا Ali 1) ما عملامی توانیم بیش از یک پارامتر برای Username دریافتی از Nttacplus داشته باشیم که الگوریتمی برای حل این مسئله ارائه خواهیم داد.
    4- ارسال Username به برنامه Client واقع در Nas address
    بخش Client
    5- دریافت Username در برنامه Client
    6- اجرای برنامه قطع کننده با پارامتر Username

    ملزومات :
    وجود نرم افزار قطع کننده (Dcplus) در تمامی سرورها و کپی کردن آن در شاخه ویندوز
    ذخیره کردن برنامه قسمت سرور در محل کامپیوتری که Nttacplus نصب است.
    دخیره کردن برنامه قسمت Client در دیگر سرورها و همچنین سروری که Nttacplus درآن نصب می باشد
    تنظیم Nttacplus در قسمت tools - kill بدین صورت :
    default=".\External\killusentt $nas $usernam
    که این آدرس می تواند تغییر پیدا کند .
    قراردادن برنامه قسمت Client در Startup ویندوز سرورها

    طریقه انجام عمل DC :
    درخواست قطع شدن توسط Nttacplus صادر می شود. Nttacplus دستور اجرای برنامه قسمت سرور را میدهد . برنامه اطلاعات Nas address , Username را گرفته توسط برنامه Username به آدرس Nas ارسال می گردد. Client , Username را دریافت کرده برنامه قطع کاربر را اجرا می کند.(Dcplus).

    تحلیل :
    در هربار ورود موفق کاربر بصورت Dial-up یک Interface بنام Username در کامپیوتری که مشترک به آن متصل شده ایجاد می گردد. هنگامیکه برنامه اجرا می شود کامپیوتری که کاربر به آن متصل است مشخص شده و Interface با نام کاربر در آن قطع می شود.

    پویا .م
     
  7. panypay
  8. pooya.mz

    pooya.mz کاربر تازه وارد

    با سلام

    خب با این ترتیب مشکل قطع شدن کاربران در سرورهای مختلف حل می شود.
    اما یکی از دوستان جناب آقای مهدی که نرم افزار dcplus رو به من داد. به یک نکته بسیار جالبی اشاره کرد که من در اینجا با اجازه ایشون بیانش می کنم.
    ایشون فرمودند مشکل نرم افزار Dcplus و نرم افزارهای مشابه در اینست که هنگامیکه بعد از User هرگونه فاصله زده شود Nttacplus آن را قبول کرده ولی نرم افزارها قابل به قطع کردن مشترکین نیستند.

    تحلیل :
    کاربر با شناسه کاربری"ALI" بصورت" ALI" وارد سیستم می شود. Nttacplus آنرا قبول کرده و یک Interface در ویندوز بنام Username تعریف میشود.
    مشکل اینجا آغاز میشود که Username ای که در Nttacplus ثبت شده و در حال استفاده است با Username ای که بعنوان interface درنظر گرفته شده متفاوت است. interface دقیقا بنام Username ای ساخته شده که کاربر در هنگام Login وارد کرده درحالیکه در Nttacplus فاصله های بعد از Username در نظر گرفته نشده است.

    رفع مشکل :
    راه پیشنهادی بنده:
    مقایسه Username ایجاد شده در Nttacplus با نام interface ایجاد شده در ویندوز.
    مراحل :
    1-دریافت Username ای که می خواهد به اجبار قطع شود از Nttacplus
    2- در یافت نام اینترفیسهای متصل در ویندوز
    3- مقایسه username دریافتی از Nttacplus در میان لیست نام اینترفیسهای موجود در ویندوز
    4- ارسال Username مناسب جهت انجام عمل قطع کردن.
    من به این منظور الگوریتمی تهیه کردم که این عملیات رو انجام می ده و جواب مناسب رو میده.
    من سورس این برنامه بهمراه سورس برنامه قبلی رو در هم تلفیق کردم که اون رو دراینجا قرار میدم.
    دوستان اگر موردی به ذهنشون میرسه حتما بیان فرمایند.
    ضمنا این نرم افزارها صرفا آموزشی هستند. البته برای آموزش شخص خودم. امیدوارم اساتید محترم ما رو از لطف خود بی نصیب نسازند!!.
    با تشکر
    پویا.م
     
  9. babak2536

    babak2536 Registered User

    سلام
    ممنون از توضيحاتت . برنامه و سورس اون رو از كجا ميشه download كرد ؟
    آيا برنامه اي هم داريد كه با اون بشه اطلاعات يوزرهاي حذف شده رو از ديتابيس پاك كرد ؟
     
  10. koorosh

    koorosh Registered User

    شما که داری زحمت ميکشی کاش ميومدی و با توابعی که در Remote Access Service Administration Reference
    ذکر شده کار ميکردی. راهی که ازش اسم بردی کار ميکنه ولی حفظ امنيت اين برنامه (چون بصورت Client و Server ای است) نيازمند تجربه کافی در زمينه اينگونه برنامه نويسی است. از نظر ساختار هم ميشه گفت يه جورايی تميز نيست.
    مثلا يکی از مشکلاتی که احتمالا برات بوجود مياد اينه که اگر دو Connection با يک User name برقرار شده باشه، نميتونی يکيش رو قطع کنی و هر دو قطع ميشوند.
    نميدونم دست به کار شدی و کد نوشتی يا فقط سيستم رو تحليل کردی. اگر دست به کار بشی بيشتر با مسائلش آشنا ميشی.
     
  11. pooya.mz

    pooya.mz کاربر تازه وارد

    با سلام

    عرض ارادت خدمت koorosh
    فرمايشات جنابعالي كاملا درست و متين .
    اما هدف من از بیان این مسائل چیز دیگری است.
    این کاملا درسته که این نوع برنامه نویسی برنامه نویسی استانداردی نیست. و مطمئنا نواقص بسیار زیادی خواهد داشت مخصوصا با سواد کم بنده.
    اگر دقت کرده باشید من در تمام نوشته هام سعی کردم بر دو معنای آموزشی و کاربردی تاکید کنم. ببینید این نرم افزار Nttacplus الان حداقل 4-5 سال هست که داره تو ایران استفاده می شه.
    ولی آیا به اندازه قدمتش مشکلاتش حل شده ؟!
    من طرز تفکر شما مبنی بر اینکه یک نرم افزار باید جامع ساخت یافته و کامل باشه رو تقدیر و تحسین می کنم اما این نکته را هم اضافه می کنم که برای رفع نواقص فعلی هر روشی برای از بین بردن هدف مقدس و غنیمت است.
    عرض کنم که من این نرم افزار Dcplus رو در یکی از موضوعات بخش شبکه این سایت دیدم و درخواست کردم یک کپی از اون رو به من دادند . اشکالی که من در این برنامه دیدم این بود که فقط در کامپیوتری که نصب بود جواب می داد من تصمیم گرفتم این مشکل رو حل کنم. و اینکار رو کردم . وقتی با شخصی که برنامه رو به من داده بود صحبت کردم به من گفت مشکل دیگری در این برنامه و برنامه های مشابه وجود داره مبنی بر اینکه فاصله های بعد از Username سبب عدم کارکرد درست برنامه میشه . خوب این مشکل بسیار پیچیده بود مخصوصا اگر نخوای از Api های Routing & remote ویندوز 2000 کار کنی. به هرحال اون چیزی که من انجام دادم دقیقا مواردی بود در جهت تکمیل این برنامه . وگرنه هدف نوشتن یک برنامه کامل نیست. هدف نوشتن سلسله برنامه های مرتبطی است که مشکلات فعلی را برطرف نماید و ضمنا آموزش و تحقیقی باشد برای رسیدن به اهداف بالاتر که شاید در برگیرنده اون مدینه فاضله شما هم باشد.
    در مورد اون مطلبی که فرمودید. بله فرمایش شما درست است . بدلیل اینکه برنامه قطع کننده بر اساس نام Interface مشترکین رو قطع می کنه . در صورتیکه یک نام کاربری بیش از یک Interface رو در اختیار گرفته باشه با اجرای دستور Kill تمام interface های مربوط به Username قطع خواهند شد.
    البته از نظر من این هیچ اشکالی ایجاد نمیکنه. بدلیل اینکه شما احتمالا به این منظور به یک کاربر اجازه دسترسی بیش از 1 را می دهید که بخواهید از قابلیت Multilink در router یا بصورت سخت افزاری استفاده کنید. و در هر صورت بطور معمول قطع کردن توسط User انجام خواهد شد. و تنها در صورتی بصورت Force در Nttacplus اجرا می شود که یا Credit تمام شده باشد که آنهم توسط Session-time out و نه توسط دستور Kill انجام می شود و یا اینکه شما ساعت دسترسی تعریف کرده باشید که در آنصورت هم دو کاربر ( با نام کاربری یکسان) باید همزمان قطع شوند.
    اما بصورت کلی مشکلی از نظر من ایجاد نمیشود.
    ولی شما تجربه و سوادتون از من بیشتر و من خواهشمندم که در صورتیکه مشکلی بغیر از مواردی که گفته شد و یا موردی جهت اون مطلبی که قبلا فرموده بودید بهش برخوردید حتما بفرمایید.

    خب من سورس رو اینجا الان قرار میدم . مسئله ای که هست من در زمینه امنیت در شبکه بخصوص باز یا بسته بودن پورتها هیچ تجربه ای ندارم به همین دلیل هم این برنامه ها رو فقط سورسش رو اینجا میگذارم که روش کار بشه و هر شخصی هم که مایل بود کمپایلش کنه و اجرا کنه.
    بازم میگم این برنامه ها فقط جهت آموزش هست و بر این اساس الان اینجا قرار میگیره که نرمافزاری بنام Dcplus رو تکمیل کنه .

    اگر بخوایم معطل بمونیم که یک برنامه کامل داشته باشیم همین اتفاق میافته که 4-5 سال گذشته ما هنوز اندر خم یک کوچه ایم. شروع کنیم قدم قدم . تحلیل کنیم . مشکلات رو بشناسیم سپس تصمیم بگیریم.اجرا کنیم. و نهایت کاملش کنیم.

    مرسی
    سورس قسمت سرور:
    برنامه به زبان دلفی نوشته شده. شما می توانید برنامه را بصورت Console نیز در آورید.
    طریقه استفاده : برنامه را کمپایل کرده در شاخه ای که مایلید کپی کنید.فایل متنی بصورت زیر ایجاد کرده با نام setkilluser.txt در همان شاخه ذخیره نمایید.
    متن مندرج در فایل متنی (فایل INI)
    [server]
    ip=192.168.0.1
     
  12. pooya.mz

    pooya.mz کاربر تازه وارد

    {source of server side for patched to the dcplus }
    {forcly kill user }
    {written by Pooya.Mz}
    {only for didactic purpose}
    {04/10/2004}
    unit Unit1;

    interface

    uses
    Windows, shellapi, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, ComCtrls, NMUDP, ExtCtrls,inifiles;

    type
    Tdisconnect = class(TForm)
    NMUDP1: TNMUDP;
    procedure FormActivate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    disconnect: Tdisconnect;
    implementation
    {$R *.DFM}
    procedure Tdisconnect.FormActivate(Sender: TObject);
    var
    MyStream: TMemoryStream;
    TmpStr: String;
    i,j,k:integer;
    SomeTxtFile:textfile;
    buffer,s,h,inm,iut,tfi:string;
    inif:tinifile;
    SEInfo: TShellExecuteInfo;
    ExitCode: DWORD;
    ExecuteFile, ParamString, StartInString: string;
    Begin
    NMUDP1.ReportLevel := Status_Basic;
    NMUDP1.RemoteHost := paramstr(1);
    NMUDP1.RemotePort := 3708;
    NMUDP1.LocalPort:=0;
    tmpstr:=paramstr(2);
    if ParamCount>2 then
    begin
    for i:=3 to ParamCount do
    TmpStr :=Tmpstr+' '+paramstr(i);
    end;
    {}
    inif:=tinifile.Create(ExtractFilePath(Application.EXEName)+'setkilluser.txt');
    if inif.ReadString('server','ip','')=paramstr(1) then
    begin
    tfi:=ExtractFilePath(Application.EXEName)+'dcnetlik.txt';
    ExecuteFile:='cmd.exe';
    FillChar(SEInfo, SizeOf(SEInfo), 0);
    SEInfo.cbSize := SizeOf(TShellExecuteInfo);
    with SEInfo do begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    {
    ParamString can contain the
    application parameters.
    }
    lpParameters := PChar('/c netsh.exe int show int > '+tfi);
    {
    StartInString specifies the
    name of the working directory.
    If ommited, the current directory is used.
    }
    // lpDirectory := PChar(StartInString);
    nShow := SW_hide;
    end;
    if ShellExecuteEx(@SEInfo) then begin
    repeat
    Application.ProcessMessages;
    GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or
    Application.Terminated;
    assignfile(SomeTxtFile,tfi);
    reset(SomeTxtFile);
    j:=0; {controli}
    s:='';
    i:=0;
    k:=0;
    buffer:=''; {khorooji}
    while ((not(eof(sometxtfile))) and (j<>1)) do
    begin
    readln(sometxtfile,h);
    if pos('Client',h)>0 then
    begin
    if pos(TmpStr,h)>0 then
    begin
    s:=copy(h,pos(TmpStr,h),length(h)-pos(TmpStr,h)+1);
    iut:=copy(h,pos('Client',h)+length('Client'),length(h)-(length(s)+pos('Client',h)+length('Client'))+1);
    for i:=000 to 254 do
    begin
    if i<>032 then
    if pos(chr(i),iut)>0 then
    k:=1;
    end;
    if k=0 then
    begin
    if s=TmpStr then{agar barabar bood}
    begin
    j:=1 ;
    buffer:=s;
    end
    else
    if (s[pos(TmpStr,s)+length(TmpStr)]=' ') or (s[pos(TmpStr,s)+length(TmpStr)]=' ') or (s[pos(TmpStr,s)+length(TmpStr)]=' ') then
    begin
    inm:=copy(s,pos(TmpStr,s)+length(TmpStr),length(s)+1-(pos(TmpStr,s)+length(TmpStr)));
    for i:=000 to 254 do
    begin
    if i<>032 then
    if pos(chr(i),inm)>0 then
    k:=1;
    end;
    if k=0 then
    begin
    j:=1;
    buffer:=s;
    end;
    end;
    end;
    end;
    end;
    end;
    inif.Free;
    if buffer='' then
    buffer:=TmpStr ;
    closefile(SomeTxtFile);
    DeleteFile(tfi);
    shellexecute(handle,'open','dcplus.exe',pchar(buffer),nil,sw_hide);
    close;
    end;
    end
    else
    begin
    MyStream := TMemoryStream.Create;
    try
    MyStream.Write(TmpStr[1], Length(tmpstr));
    NMUDP1.SendStream(MyStream);
    finally
    MyStream.Free;
    end;
    close;
    end;
    end;
    {source of server side for patched to the dcplus }
    {forcly kill user }
    {written by Pooya.Mz}
    {only for didactic purpose}
    {04/10/2004}

    end.
    پویا.م​
     
  13. koorosh

    koorosh Registered User

    شما رو در شروع حرکت تحسين ميکنم. :) ايشاللا روز به روز پيش برين و مشکلات هم برطرف بشه :)
     
  14. avajang.com .left
  15. dahaty

    dahaty کاربر تازه وارد

    با عرض سلام خدمت همه دوستان عزيز

    راستش من یک برنامه با VB برای کار با دیتابیس NTTacPlus نوشته ام که قرار است userها را به صورت دسته ای به DataBase برنامه NTTacPlus اضافه کند و البته بنا به عللی ما مجبوریم که passwordها را هم به دیتابیس اضافه کنیم.

    مشکلی که الان برای من پیش آمده این است که نمی دانم که چطور passwordها را به صورت encrypt شده به دیتا بیس اضافه کنم .
    یعنی الگوریتم Encrypt کردن nttacplus را نمی دانم .

    لطفا هرکس می داند برایم mail بزند.
    با تشکر:دهاتی
     
  16. ali55

    ali55 کاربر تازه وارد

    يه سوال دارم
    من الان دارم از برنامه dcplus استفاده مي كنم درست هم كار مي كنه و به راحتي كاربري كه وقتش تموم شده رو قطع مي كنه
    ولي تازه متوجه شدم كه حروف كاپيتال و اسمال (كوچك و بزرگ) در برنامه تاثير داره يعني فكر مي كنم كاربري كه با حروف بزرگ وارد ميشه رو قطع نمي كنه
    آيا اين راح حل داره ؟
     
خرید بک لینکreviews عسل طبیعی و گرده گل ایرانی