اطلاعیه

Collapse
No announcement yet.

قفل رمز

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    قفل رمز

    سلام
    من برنامه یه قفل رمز دار نوشتم ،پسوورد باید تو eeprom ذخیره بشه ،ولی اگه این کار رو بکنم اگه پسوورد در داخل برنامه عوض بشه در صورتی که برق مدار قطع بشه و ای سی دوباره از خط اول برنامه رو بخونه مجدد همون پسوورد قبلی به عنوان رمز قرار میگیره ، باید چیکار کنم . تا مادامی که برنامه تو حلقه do , loop هست اگه رمز عوض بشه خوب میشه ولی با قطع برق چون دوباره برنامه از خط اول شرمع به کار میکنه باز همون رمز اول که ذخیره میکننیم به عنوان رمز قفل میشه
    زنده بو دن را به بیداری بگذرانیم که سال ها به اجبار خواهیم خفت

    #2
    پاسخ : قفل رمز

    2 تا راه

    1-از همون اول پسوردتو توی ایپرام بزار

    2- باید کاری کنی که اگر پسورد برای اولین بار عوض شد ،آ‌یک متغیری تو ایپرام تغییر کنه ( مثلا از 0 بشه 1 )آ‌ ( اینو تو روتین تغییر پسورد میتونی بنویسی)آ‌ . بعد برنامه هر وقت به اون متغیر نگاه کنه پسورد را از ایپرام میخونه

    موفق باشید

    دیدگاه


      #3
      پاسخ : قفل رمز

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

      دیدگاه


        #4
        پاسخ : قفل رمز

        مگه شما رمز جدید رو روی قبلی save نمیکنید ؟

        به هر حال شما بتید از یک محل مشخص برای نگهداری رمزتون استفاده کنید دیگه . وقتی رمز جدید را روی محل رمز قدیم save میکنید ، دیگه رمز قدیمی وجود نداره که

        دیدگاه


          #5
          پاسخ : قفل رمز

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

          دیدگاه


            #6
            پاسخ : قفل رمز

            اگه درست متوجه شده باشم شما توی برنامه اصلی پسورد اولیه را تعریف کردید و از آنجا در E2PROM ذخیره میکنید

            اشتباه شما همین جاست

            باید به یک روش این پسورد رو مستقیم در E2PROM بنویسید و در بدنه اصلی برنامه فقط در صورت تغییر کردن، آن را اعمال کنید

            بهترین روش (البته از لحاظ سادگی) اینه که ابتدا پسوردتون را برای بار اول در یک آدرس خاص در E2PROM(ترجیحا اواخر E2PROM) با پروگرم کردن بنویسید و در مرتبه بعدی بدون Erase کردن میکرو برنامه خود را پروگرم کنید به نحوی که فقط پسورد را از آن آدرس بخواند

            OK؟

            دیدگاه


              #7
              پاسخ : قفل رمز

              راه دیگر این است که وقتی برای بار اول پسورد را در آدرسی از حافظه E2PROM نوشتی ، در آدرسی خاص دیگری در E2PROM نیز بیت یا عددی را تعریف کنی که اگر مثلا یک بود نشانه این باشد که پسورد موجود میباشد و اگر صفر بود نشانه این باشد که باید پسورد کاستومر یا پیشفرض (مثلا 1234) را به عنوان پسورد معتبر قرار دهد.

              حال در ابتدای برنامه همواره آن بیت را چک میکنی و اگر صفر بود وارد روتین نوشتن 1234 به عنوان پسورد میشوی

              و این بیت نیز تنها برای اولین پروگرم کردن برنامه صفر است و سپس برای همیشه یک میشود

              :job:

              دیدگاه


                #8
                پاسخ : قفل رمز

                به چه زبانی مینویسی ؟

                اگه مشکلت هنوز حل نشده بگو دقیقا کجا مشکل داری ؟

                دیدگاه


                  #9
                  پاسخ : قفل رمز

                  با درود . . .
                  میتونید از این برنامه استفاده کنید. . .
                  ببخشید که نمیتونم الان توضیح بدم آخه فردا امتحان دارم بعد از اینکه اومدم توضیحش رو میزارم رو سایت


                  $regfile = "m16def.dat"
                  $crystal = 8000000
                  Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = _
                  Portb.7 , E = Portb.3 , Rs = Portb.2
                  Config Lcd = 16 * 2
                  Config Kbd = Portd , Debounce = 100 , Delay = 75
                  Ddrc.0 = 1 : Portc.0 = 0

                  Dim A1 As Eram Byte , B1 As Eram Byte , C1 As Eram Byte , D1 As Eram Byte
                  Dim A2 As Byte , B2 As Byte , C2 As Byte , D2 As Byte
                  Dim Key As Byte
                  Dim Mem As Byte
                  Dim Count As Byte
                  Declare Sub Kelid
                  Declare Sub Coder

                  Cursor Off
                  If A1 > 10 And B1 > 10 And C1 > 10 And D1 > 10 Then
                  A1 = 0 : B1 = 0 : C1 = 0 : D1 = 0 : End If

                  Main:
                  Cls : Count = 0
                  A2 = 25 : B2 = 25 : C2 = 25 : D2 = 25
                  Do
                  Call Kelid
                  Call Coder
                  Key = Getkbd()
                  Locate 1 , 2
                  Lcd "enter password"
                  If A2 = A1 And B2 = B1 And C2 = C1 And D2 = D1 And Key = 15 Then
                  Cls
                  Locate 1 , 1
                  Lcd "password correct"
                  Wait 1
                  '****************************your main write here*****************************
                  Set Portc.0
                  Waitms 500
                  Reset Portc.0
                  Count = 0 : Cls
                  jmp main
                  '*******************************end your main*********************************
                  End If
                  '*****************************change password*******************************
                  If Key = 3 Then
                  Cls : Home
                  Lcd "change password"
                  Wait 1
                  Vahid1:
                  Cls
                  Count = 0
                  A2 = 25 : B2 = 25 : C2 = 25 : D2 = 25
                  Cls : Do
                  If Key = 7 Then
                  jmp main:end IF
                  Call Kelid
                  Call Coder
                  Locate 1 , 2
                  Lcd "enter password"
                  If A2 = A1 And B2 = B1 And C2 = C1 And D2 = D1 And Key = 15 Then
                  Cls
                  Vahid2:
                  Cls
                  Count = 0
                  A2 = 25 : B2 = 25 : C2 = 25 : D2 = 25
                  Vahid:
                  Call Kelid
                  Call Coder
                  If Key = 7 Then
                  jmp main:end IF
                  Locate 1 , 3
                  Lcd "new password"
                  If Key = 15 And Count = 4 Then
                  A1 = A2 : B1 = B2 : C1 = C2 : D1 = D2 : Jmp Main
                  End If
                  jmp vahid
                  End If
                  If Key = 15 Then
                  jmp vahid1: end if
                  Loop
                  End If
                  If Key = 15 Then
                  jmp main:end if
                  If Key = 7 Then
                  jmp main:end IF
                  Loop
                  End

                  Kelid:
                  Key = Getkbd()
                  Select Case Key
                  Case 0
                  Mem = 1 : Incr Count
                  Case 1 :
                  Mem = 2 : Incr Count
                  Case 2 :
                  Mem = 3 : Incr Count
                  Case 4 :
                  Mem = 4 : Incr Count
                  Case 5 :
                  Mem = 5 : Incr Count
                  Case 6 :
                  Mem = 6 : Incr Count
                  Case 8 :
                  Mem = 7 : Incr Count
                  Case 9 :
                  Mem = 8 : Incr Count
                  Case 10 :
                  Mem = 9 : Incr Count
                  Case 13 :
                  Mem = 0 : Incr Count
                  End Select
                  Return

                  Coder:
                  If Count = 1 Then
                  A2 = Mem : Locate 2 , 7 : Lcd "*" : End If
                  If Count = 2 Then
                  B2 = Mem : Locate 2 , 8 : Lcd "*" : End If
                  If Count = 3 Then
                  C2 = Mem : Locate 2 , 9 : Lcd "*" : End If
                  If Count = 4 Then
                  D2 = Mem : Locate 2 , 10 : Lcd "*" : End If
                  If Count > 4 Then
                  Count = 0
                  A2 = 25 : B2 = 25 : C2 = 25 : D2 = 25
                  Cls : End If
                  Return





                  ببخشید هر کاری کردم نتونسم عکسش رو وارد صفحه کنم
                  درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

                  به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                  بدرود . . .

                  دیدگاه


                    #10
                    پاسخ : قفل رمز

                    سلام خوب عزیزان راهنمایی های خوبی کردند و هر کدام به نوبه خود خوب وعملی و جالب.
                    دوست عزیز اگر درست متوجه شده باشم شما می خواهید که قفل شما یه پسورد اولیه داشته باشه.دگر ها شنیدستی این هم شنو:
                    ببین ایتو پرام داخلی یه فیوز بیت داره که اگه اون فعال بشه در صورت ERASE کردن چیپ اطلاعات ایتوپرام پاک نمیشه.از این میشه استفاده کرد.چجوری؟
                    :NO:
                    1-اول یه برنامه بنویس که پسورد اولیه رو بندازه تو ایتوپرام.فقط همین.یعنی بنویس WRITE E2PROM و END . یه برنامه دو سه خطی میشه و بس
                    2-حالا میکروتو وصل کن به کامپیوتر و فیوز بیت E2PROM رو تغییر بده(توو بسکام و AVR STUDIO مثل اب خوردن میشه این کار رو کرد).
                    3-میکروتو ERASE کن.
                    4-برنامه اصلی تو بنداز توو چیپ.توو این برنامه دیگه لازم نیست رمز اولیه رو تو ایتوپرام بندازی.چون الان توش هست.یعنی از همون اول رمز داره و تو فقط توو اون بخش از برنامه ات که رمز توسط کاربر تغییر داده میشه توو ایتوپرام مینویسی.همین
                    5- پایان
                    من این کار رو کردم .و برنامه هم با این کار تمیز در میاد.
                    اگه متوجه نشدی بگو تا بیشتر توضیح بدم.
                    به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

                    دیدگاه


                      #11
                      پاسخ : قفل رمز

                      از همگی ممنون ،توضیحات کامل بود عالی بود فکر کنم مشکلم حل بشه :agree: البته الان خونه نیستم نمیتونم عملی تست کنم
                      اگه منظورتون متوجه شده باشم این کارو باید بکنم
                      s = 0
                      Readeeprom Ss , 20
                      If S = 1 Then Goto Star ; End If
                      S= 1
                      Writeeeprom Ss , 20
                      Waitms 4

                      Y = 1234
                      Writeeeprom Y , 1
                      Waitms 4
                      Star:
                      بعدشم که شروع برنامه اره؟ دقیقا همینه؟ بعد از star هم که حلقه برنامه هستش
                      در مورد پیشنهاد اقا احسان و محسن این به فکر خودم رسید ولی این فیوز بیتی که میگین چیکارش کنم لطفا تو ضیح کامل بدین ، ممنون
                      زنده بو دن را به بیداری بگذرانیم که سال ها به اجبار خواهیم خفت

                      دیدگاه


                        #12
                        پاسخ : قفل رمز

                        ببر سیاه جان شما تو بسکام برنامه می نویسی؟اگه اره بگو توضیح بدم فیوز بیتو چی کار کنی
                        به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

                        دیدگاه


                          #13
                          پاسخ : قفل رمز

                          اره ، با بسکام مینویسم فقط قربونت برم کامل بگو
                          زنده بو دن را به بیداری بگذرانیم که سال ها به اجبار خواهیم خفت

                          دیدگاه


                            #14
                            پاسخ : قفل رمز

                            سلام .از این بهتر توضیح بلد نیستم :mrgreen::applause:
                            http://www.4shared.com/file/80795079/93491558/New_WinRAR_archive.html?dirPwdVerified=5773382e
                            بعد از اینکه کارایی رو که گفتم کردی چیپتو اریس کن.بعد برنامه ای که خواستی رو بنویس و بنداز تو چیپت.اینو یادت باشه وقتی کارایی رو که گفتم کردی حالا پسورد اولیه تو حافظه است و دیگه لازم نیست برنامه ای واسه پسورد اولیه تو برنامه ی اصلیت بنویسی .بعد از اینکه کارایی رو که گفتم کردی چیپتو اریس کن.بعد برنامه ای که خواستی رو بنویس و بنداز تو چیپت.
                            :bye

                            به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

                            دیدگاه


                              #15
                              پاسخ : قفل رمز

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

                              دیدگاه

                              لطفا صبر کنید...
                              X