purebasic.info

PureBasic forum
Текущее время: Чт янв 18, 2018 2:50 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Хранитель паролей.
СообщениеДобавлено: Чт янв 06, 2011 6:44 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
После того, как OpenOffice изуродовал файл где записывал пароли к почте, форумам и т.д., решил накодить хранитель паролей, который один файл с зашифрованными паролями открывал бы и в Лине, и в винде, и в Маке. Так как пурик в лине не дружит с кириллицей, а функции шифрования не работают в уникоде, пришлось поизвращаться, собрав программу из нескольких исполняемых файлов.
Собственно сами файлы:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  Master_Parol_1.s = ProgramParameter(0)
  Master_Parol_40.s = SHA1Fingerprint(@Master_Parol_1, StringByteLength(Master_Parol_1))
  Master_Parol_32.s = MD5Fingerprint(@Master_Parol_1, StringByteLength(Master_Parol_1))
 
        chunksize = 4096
        rawfilename$ = "Key1"
        encfilename$ = "Key"
         
        If OpenFile(0, rawfilename$)
        If CreateFile(1, encfilename$)
         
        length.q = Lof(0)
        numparts = length/chunksize
        lastchunksize = length%chunksize
        If lastchunksize
        numparts+1
        lastchunk = numparts
        Else
        lastchunk = 0
        EndIf
         
        *raw     = AllocateMemory(chunksize)  
        *secure  = AllocateMemory(chunksize)  
         
        StartAESCipher(0, @Master_Parol_40, 256, @Master_Parol_32, #PB_Cipher_CBC|#PB_Cipher_Encode)
         
        For i=1 To numparts
        If i=lastchunk
        FillMemory(*raw, chunksize, 0, #PB_Byte)
        ReadData(0, *raw, lastchunksize)
        Else
        ReadData(0, *raw, chunksize)
        EndIf
        AddCipherBuffer(0, *raw, *secure, chunksize)
        WriteData(1, *secure, chunksize)
        Delay(1)
        Next
        If lastchunksize
        WriteLong(1, lastchunksize)
        Else
        WriteLong(1, chunksize)
        EndIf
         
        FinishCipher(0)  
        CloseFile(0)
        CloseFile(1)
         
        FreeMemory(*raw)
        FreeMemory(*secure)
         
        EndIf
        EndIf


Скомпилировать в Acsii и обозвать - для линя 01, для винды 01.exe, для
мака 01.app
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  Master_Parol_1.s = ProgramParameter(0)
  Master_Parol_40.s = SHA1Fingerprint(@Master_Parol_1, StringByteLength(Master_Parol_1))
  Master_Parol_32.s = MD5Fingerprint(@Master_Parol_1, StringByteLength(Master_Parol_1))
 
   chunksize = 4096
        encfilename$ = "Key"
        rawfilename$ = "Key1"
         
        If OpenFile(0, encfilename$)
        FileSeek(0, Lof(0)-4)
        lastchunksize = ReadLong(0)
        FileSeek(0, 0)
        If CreateFile(1, rawfilename$)
         
        length.q = Lof(0)
        numparts = length/chunksize
         
        *raw     = AllocateMemory(chunksize)  
        *secure  = AllocateMemory(chunksize)  
         
        StartAESCipher(0, @Master_Parol_40, 256, @Master_Parol_32, #PB_Cipher_CBC|#PB_Cipher_Decode)
         
        For i=1 To numparts
        ReadData(0, *secure, chunksize)
        AddCipherBuffer(0, *secure, *raw, chunksize)
        If i=numparts
        WriteData(1, *raw, lastchunksize)
        Else
        WriteData(1, *raw, chunksize)
        EndIf
        Delay(1)
        Next
         
        FinishCipher(0)  
        CloseFile(0)
        CloseFile(1)
         
        FreeMemory(*raw)
        FreeMemory(*secure)
         
        EndIf
        EndIf


Скомпилировать в Acsii и обозвать - для линя 11, для винды 11.exe, для
мака 11.app
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
UsePNGImageDecoder()
 
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Linux
       Global Zash2.s = "02"
       Global Rash2.s = "12"
    CompilerCase #PB_OS_MacOS
       Global Zash2.s = "02.app"
       Global Rash2.s = "12.app"      
    CompilerCase #PB_OS_Windows
       Global Zash2.s = "02.exe"
       Global Rash2.s = "12.exe"
  CompilerEndSelect
 
PassGener.s = ""
Dim ch.s(61)
For i=0 To 9 :ch(i)=Str(i):Next
For i=65 To 90 :ch(i-55)=Chr(i):Next
For i=36 To 61 :ch(i)=LCase(ch(i-26)):Next  
 
Enumeration
  #Window_Par
  #Text_Par
  #String_Par
  #Button_Par
  #CheckBox
 
  #Window_0
  #Timer
  #Time_Close
  #File_Key
  #File_Sh
  #Icon_SysTray
  #Icon_Button_Kopi
  #SysTrayIcon
  #SysTrayMenu
 
  #MenuItem1
  #MenuItem2
  #MenuItem3
 
  #Container_s
 
  #Container_1
  #Listview_0
  #Button_0
  #Button_1
  #Button_2
  #Button_Go
  #String_0
  #String_1
  #String_2
  #Editor_0
  #Button_3
  #Button_4
  #Button_5
  #Icon_Button_Dob
  #Icon_Button_minus
  #Icon_Button_Redakt
  #Icon_Button_Go
 
  #Container_0
  #Editor_1
  #String_7
  #String_8
  #String_9
  #String_10
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Button_6
  #Button_7
  #Button_Generator
 
  #Window_Smena
  #Text_Smen0
  #String_Smen0
  #Text_Smen1
  #String_Smen1
  #Button_Smen
EndEnumeration
 
Structure Structura
   Imia.s
   Adres.s
   Login.s
   Parol.s
   Opisanie.s
EndStructure
 
NewList ListDan.Structura()
 
Global Master_Parol_1.s = ""
 
Udal_Redakt.b = 0
Procedure Vvod_Parolia()
If OpenWindow(#Window_Par, 0, 0, 220, 100, "ПРИВЕТ!",  #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StickyWindow(#Window_Par, 1)
  TextGadget(#Text_Par, 50, 5, 150, 30, "Введите Мастер Пароль")
  StringGadget(#String_Par, 5, 25, 210, 20, "", #PB_String_Password)
  CheckBoxGadget(#CheckBox, 50, 50, 210, 20, "Показывать Пароль")
  ButtonGadget(#Button_Par, 80, 70, 70, 25, "Ок")
  SetActiveGadget(#String_Par)
EndIf  
 
Repeat
    WindowNumber = WaitWindowEvent()
    GadgetNumber = EventGadget()    
;Обработка событий    
    Select WindowNumber
;Если нажали Закрыть окно        
        Case #PB_Event_CloseWindow
           End
;Обработка событий в окне          
        Case #PB_Event_Gadget
          Select GadgetNumber
            Case #Button_Par
              Master_Parol_1 = ReplaceString(GetGadgetText(#String_Par), Chr(32), Chr(156))
              CloseWindow(#Window_Par)
              ProcedureReturn
           Case #CheckBox
              If GetGadgetState(#CheckBox) = 1
                 String_Par$ = GetGadgetText(#String_Par)
                 StringGadget(#String_Par, 5, 25, 210, 20, String_Par$)
                 SetActiveGadget(#String_Par)
              Else
                 String_Par$ = GetGadgetText(#String_Par)
                 StringGadget(#String_Par, 5, 25, 210, 20, String_Par$, #PB_String_Password)
                 SetActiveGadget(#String_Par)
              EndIf
          EndSelect    
    EndSelect    
ForEver  
EndProcedure
 
Procedure Open_Window_Smena()
  If OpenWindow(#Window_Smena, 0, 0, 220, 155, "СМЕНА ПАРОЛЯ",  #PB_Window_SystemMenu | #PB_Window_WindowCentered )
      TextGadget(#Text_Smen0, 10, 10, 200, 20, "Введите старый пароль", #PB_Text_Center)
      StringGadget(#String_Smen0, 10, 30, 200, 20, "")
      TextGadget(#Text_Smen1, 10, 60, 200, 30, "Введите новый пароль", #PB_Text_Center)
      StringGadget(#String_Smen1, 10, 85, 200, 20, "")
      ButtonGadget(#Button_Smen, 60, 115, 100, 30, "Сменить")
      SetActiveGadget(#String_Smen0)
      Repeat
          WindowNumber = WaitWindowEvent()
          GadgetNumber = EventGadget()    
      ;Обработка событий    
          Select WindowNumber
      ;Если нажали Закрыть окно        
              Case #PB_Event_CloseWindow
                 CloseWindow(#Window_Smena)
                 ProcedureReturn
      ;Обработка событий в окне          
              Case #PB_Event_Gadget
                Select GadgetNumber
                  Case #Button_Smen
                    String_Smen0$ = ReplaceString(GetGadgetText(#String_Smen0), Chr(32), Chr(156))
                    String_Smen1$ = ReplaceString(GetGadgetText(#String_Smen1), Chr(32), Chr(156))                      
                     If String_Smen0$ = Master_Parol_1 And String_Smen0$ <> "" And String_Smen1$ <> "" And String_Smen0$ <> String_Smen1$
                       If ReadFile(#File_Key, GetCurrentDirectory() + "Key")
                          CloseFile(#File_Key)
                          CreateFile(#File_Sh, GetCurrentDirectory() + Rash2)
                          WriteData(#File_Sh, ?metka2, ?endmetka2-?metka2)
                          CloseFile(#File_Sh)
                          CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                             SetFileAttributes(GetCurrentDirectory() + Rash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                          CompilerEndIf                      
                          RunProgram(GetCurrentDirectory() + Rash2,String_Smen0$,GetCurrentDirectory(), #PB_Program_Wait)
                          DeleteFile(GetCurrentDirectory() + Rash2)
                            If OpenPreferences(GetCurrentDirectory() + "Key1")
                               If PreferenceGroup("KePa") = 1
                                  Master_Parol_1 = String_Smen1$
                                  WritePreferenceString("Имя", Master_Parol_1)            
                                  ClosePreferences()
                                  CreateFile(#File_Sh, GetCurrentDirectory() + Zash2)
                                  WriteData(#File_Sh, ?metka1, ?endmetka1-?metka1)
                                  CloseFile(#File_Sh)
                                  CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                                     SetFileAttributes(GetCurrentDirectory() + Zash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                                  CompilerEndIf                              
                                  RunProgram(GetCurrentDirectory() + Zash2,String_Smen1$,GetCurrentDirectory(), #PB_Program_Wait)
                                  DeleteFile(GetCurrentDirectory() + Zash2)
                                  DeleteFile(GetCurrentDirectory() + "Key1")
                                  CloseWindow(#Window_Smena)
                                  MessageRequester("Внимание!","Пароль изменён!"+Chr(13)+"Новый Пароль:  "+ReplaceString(String_Smen1$, Chr(156), Chr(32)))
                                  ProcedureReturn
                               Else
                                  ClosePreferences()
                                  DeleteFile(GetCurrentDirectory() + "Key1")
                                  MessageRequester("Внимание!","НЕ УДАЛОСЬ СМЕНИТЬ ПАРОЛЬ!")
                                  ProcedureReturn
                               EndIf              
                            EndIf
                       Else
                         End  
                       EndIf  
                     ElseIf String_Smen0$ <> Master_Parol_1  
                        CloseWindow(#Window_Smena)
                        MessageRequester("Внимание!","Неверный Пароль!")
                        ProcedureReturn
                     ElseIf String_Smen0$ = Master_Parol_1 And String_Smen1$ = ""  
                        HideWindow(#Window_Smena,1)
                        MessageRequester("Внимание!","Вы не ввели новый Пароль!")
                        HideWindow(#Window_Smena,0)
                        SetActiveGadget(#String_Smen1)
                     Else  
                        CloseWindow(#Window_Smena)
                        MessageRequester("Внимание!","Пароли совпадают!")
                        ProcedureReturn                    
                     EndIf
                EndSelect    
          EndSelect    
      ForEver      
  EndIf
EndProcedure
 
  If ReadFile(#File_Key, GetCurrentDirectory() + "Key")
      Vvod_Parolia()
      If Master_Parol_1 = ""
        End
      Else
        CloseFile(#File_Key)
        CreateFile(#File_Sh, GetCurrentDirectory() + Rash2)
        WriteData(#File_Sh, ?metka2, ?endmetka2-?metka2)
        CloseFile(#File_Sh)
        CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
           SetFileAttributes(GetCurrentDirectory() + Rash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
        CompilerEndIf        
        RunProgram(GetCurrentDirectory() + Rash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
        DeleteFile(GetCurrentDirectory() + Rash2)
          If OpenPreferences(GetCurrentDirectory() + "Key1")
             If PreferenceGroup("KePa") = 1
                If ExaminePreferenceGroups()
                   While NextPreferenceGroup() <> 0
                      Group$ = PreferenceGroupName()
                      If Group$ = "KePa"
                         Continue
                      Else
                         AddElement(ListDan())
                         ListDan()\Imia = Group$
                         ListDan()\Adres = ReadPreferenceString("Adres", "")
                         ListDan()\Login = ReadPreferenceString("Login", "")
                         ListDan()\Parol = ReadPreferenceString("Parol", "")
                             CompilerSelect #PB_Compiler_OS
                              CompilerCase #PB_OS_Linux
                                 ListDan()\Opisanie = ReplaceString(ReadPreferenceString("Opisanie", ""), Chr(138), #LF$)
                              CompilerCase #PB_OS_MacOS
                                 ListDan()\Opisanie = ReplaceString(ReadPreferenceString("Opisanie", ""), Chr(138), #CR$)      
                              CompilerCase #PB_OS_Windows
                                 ListDan()\Opisanie = ReplaceString(ReadPreferenceString("Opisanie", ""), Chr(138), #CRLF$)
                            CompilerEndSelect                        
                      EndIf
                   Wend
                EndIf
             Else
                ClosePreferences()
                DeleteFile(GetCurrentDirectory() + "Key1")                
                MessageRequester("Внимание!","Неверный пароль!"+Chr(13)+"Программа будет закрыта!")
                End
             EndIf                
             ClosePreferences()
             DeleteFile(GetCurrentDirectory() + "Key1")
          EndIf
      EndIf
  Else          
   Otvet_Na_Sozdanie = MessageRequester("Внимание","Нет файла ключей!"+Chr(13)+"Создать Этот фаил?",#PB_MessageRequester_YesNo)
   If Otvet_Na_Sozdanie = #PB_MessageRequester_Yes
      Vvod_Parolia()
      If Master_Parol_1 = ""
        End
      Else
        If CreatePreferences(GetCurrentDirectory() + "Key1")
          Debug "q"
           PreferenceComment("Ключи")            
           PreferenceGroup("KePa")
           WritePreferenceString("Имя", Master_Parol_1)
           ClosePreferences()
           CreateFile(#File_Sh, GetCurrentDirectory() + Zash2)
           WriteData(#File_Sh, ?metka1, ?endmetka1-?metka1)
           CloseFile(#File_Sh)
           CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
              SetFileAttributes(GetCurrentDirectory() + Zash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
           CompilerEndIf          
           RunProgram(GetCurrentDirectory() + Zash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
           DeleteFile(GetCurrentDirectory() + Zash2)
           DeleteFile(GetCurrentDirectory() + "Key1")
         Else
           MessageRequester("Внимание","Неудалось создать файл ключей! Программа будет закрыта!")
         EndIf
      EndIf  
   ElseIf  Otvet_Na_Sozdanie = #PB_MessageRequester_No
      End
   EndIf
  EndIf
; EndIf
 
 
;#############
;Создание окна
If OpenWindow(#Window_0, 0, 0, 450, 340, "KePa",  #PB_Window_SystemMenu |  #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
    StickyWindow(#Window_0, 1)
    AddWindowTimer(#Window_0, #Timer, 10000)
    CatchImage(#Icon_SysTray, ?Logo)
    CatchImage(#Icon_Button_Kopi, ?Kopi)
    CatchImage(#Icon_Button_Dob, ?Dob)
    CatchImage(#Icon_Button_minus, ?minus)
    CatchImage(#Icon_Button_Redakt, ?Redakt)
    CatchImage(#Icon_Button_Go, ?Go)
    If CreatePopupMenu(#SysTrayMenu)
        MenuItem(#MenuItem3, "Сменить Пароль")
        MenuBar()
        MenuItem(#MenuItem1, "О программе")
        MenuBar()
        MenuItem(#MenuItem2, "Выход")
    EndIf
       
      ;-Первый контейнер
      ContainerGadget(#Container_0, 0, 0, 450, 340)
      SetGadgetColor(#Container_0, #PB_Gadget_BackColor, $f6d3c6)
      HideGadget(#Container_0, 1)
      EditorGadget(#Editor_1, 10, 170, 430, 120)
      SetGadgetText(#Editor_1, "Дополнительная информация (необязательно)")
      StringGadget(#String_7, 160, 10, 280, 30, "")
      StringGadget(#String_8, 160, 50, 280, 30, "")
      StringGadget(#String_9, 160, 90, 280, 30, "")
      StringGadget(#String_10, 160, 130, 280, 30, "")
      TextGadget(#Text_1, 10, 15, 140, 30, "Кратко (обязательно)")
      TextGadget(#Text_2, 10, 55, 140, 30, "Адрес (необязательно)")
      TextGadget(#Text_3, 10, 95, 140, 30, "Логин (необязательно)")
      TextGadget(#Text_4, 10, 135, 140, 30, "Пароль (необязательно)")
      SetGadgetColor(#Text_1, #PB_Gadget_BackColor, $f6d3c6)
      SetGadgetColor(#Text_2, #PB_Gadget_BackColor, $f6d3c6)
      SetGadgetColor(#Text_3, #PB_Gadget_BackColor, $f6d3c6)
      SetGadgetColor(#Text_4, #PB_Gadget_BackColor, $f6d3c6)
      ButtonGadget(#Button_Generator, 10, 300, 150, 30, "Сгенерировать Пароль")
      ButtonGadget(#Button_6, 275, 300, 80, 30, "Сохранить")
      ButtonGadget(#Button_7, 360, 300, 80, 30, "Отмена")      
      CloseGadgetList()
     
      ;-Второй контейнер
      ContainerGadget(#Container_1, 0, 0, 450, 340)
      SetGadgetColor(#Container_1, #PB_Gadget_BackColor, $f6d3c6)
      ListViewGadget(#Listview_0, 10, 50, 150, 280)
      ButtonImageGadget(#Button_0, 10, 10, 30, 30,  ImageID(#Icon_Button_Dob))
      ButtonImageGadget(#Button_1, 50, 10, 30, 30, ImageID(#Icon_Button_minus))
      ButtonImageGadget(#Button_2, 90, 10, 30, 30, ImageID(#Icon_Button_Redakt))
      ButtonImageGadget(#Button_Go, 130, 10, 30, 30, ImageID(#Icon_Button_Go))
      StringGadget(#String_0, 170, 10, 230, 30, "",  #PB_String_ReadOnly)
      StringGadget(#String_1, 170, 50, 230, 30, "", #PB_String_ReadOnly)
      StringGadget(#String_2, 170, 90, 230, 30, "", #PB_String_Password | #PB_String_ReadOnly)
      EditorGadget(#Editor_0, 170, 130, 270, 200, #PB_Editor_ReadOnly)
      ButtonImageGadget(#Button_3, 410, 10, 30, 30,  ImageID(#Icon_Button_Kopi))
      ButtonImageGadget(#Button_4, 410, 50, 30, 30,  ImageID(#Icon_Button_Kopi))
      ButtonImageGadget(#Button_5, 410, 90, 30, 30,  ImageID(#Icon_Button_Kopi))
      CloseGadgetList()
     
      ;-Контейнер о программе
      ContainerGadget(#Container_s, 0, 0, 450, 340)
      SetGadgetColor(#Container_s, #PB_Gadget_BackColor, $f6d3c6)
      HideGadget(#Container_s, 1)
      CloseGadgetList()      
     
      ;-Всплывающие подсказки
      GadgetToolTip(#Button_0, "Добавить запись")
      GadgetToolTip(#Button_1, "Удалить запись")
      GadgetToolTip(#Button_2, "Редактировать запись")
      GadgetToolTip(#Button_Go, "Открыть адрес в браузере")
      GadgetToolTip(#Button_3, "Скопировать в буфер обмена")
      GadgetToolTip(#Button_4, "Скопировать в буфер обмена")
      GadgetToolTip(#Button_5, "Скопировать в буфер обмена")
      GadgetToolTip(#String_0, "Адрес")
      GadgetToolTip(#String_1, "Логин")
      GadgetToolTip(#String_2, "Пароль")
      GadgetToolTip(#Editor_0, "Любая дополнительная информация  -->  Скопировать"+ Chr(34)+"Ctrl+C"+ Chr(34))
  EndIf
;Конец создания окна  
;###################
 
;************
;Главный цикл    
 
If ListSize(ListDan()) > 0
  SortStructuredList(ListDan(), #PB_Sort_Ascending, OffsetOf(Structura\Imia), #PB_Sort_String)
  ForEach ListDan()
    AddGadgetItem (#Listview_0, -1, ListDan()\Imia)
  Next
  SetGadgetState(#Listview_0, 0)
  FirstElement(ListDan())
  SetGadgetText(#String_0,ListDan()\Adres)
  SetGadgetText(#String_1,ListDan()\Login)
  SetGadgetText(#String_2,ListDan()\Parol)
  SetGadgetText(#Editor_0,ListDan()\Opisanie)
EndIf
             
 Repeat
    WindowNumber = WaitWindowEvent()
    GadgetNumber = EventGadget()
    EventType = EventType()
    EventMenu = EventMenu()
    Timer = EventTimer()
;-Обработка событий    
    Select WindowNumber
;-Если нажали Закрыть окно        
        Case #PB_Event_CloseWindow
          End    
        Case #PB_Event_MinimizeWindow
          HideWindow(#Window_0,1)                 ;Скрываем окно          
          SetGadgetText(#String_7,"")
          SetGadgetText(#String_8,"")
          SetGadgetText(#String_9,"")
          SetGadgetText(#String_10,"")
          SetGadgetText(#Editor_1,"Дополнительная информация (необязательно)")                
          HideGadget(#Container_0, 1)
          HideGadget(#Container_s, 1)
          HideGadget(#Container_1, 0)                                
          AddSysTrayIcon(#SysTrayIcon, WindowID(#Window_0), ImageID(#Icon_SysTray));Помещаем иконку в трей
          AddWindowTimer(#Window_0, #Time_Close, 600000)
;-Если нажали иконку в трее          
        Case #PB_Event_SysTray
          Select EventType
            Case #PB_EventType_LeftClick                  ;------Левый клик
              RemoveSysTrayIcon(#SysTrayIcon)                    ;Убираем иконку из трея
              RemoveWindowTimer(#Window_0, #Time_Close)
              HideWindow(#Window_0,0)                             ;Отображаем окно
              StickyWindow(#Window_0, 1)
            Case #PB_EventType_RightClick                 ;------Правый клик
              DisplayPopupMenu(#SysTrayMenu, WindowID(#Window_0)) ;Выводим всплывающее меню
          EndSelect
;-Обработка событий в окне          
        Case #PB_Event_Gadget; -если произошло событие в гаджетах
          Select GadgetNumber
            Case #Button_0
              HideGadget(#Container_0, 0)
              HideGadget(#Container_1, 1)
              SetActiveGadget(#String_7)
              Udal_Redakt = 0
            Case #Button_1
              If ListSize(ListDan()) > 0              
                 SelectElement(ListDan(), GetGadgetState(#Listview_0))
                 If MessageRequester("Внимание","Вы деиствительно хотите удалить группу:  "+ListDan()\Imia +"?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
                    If ReadFile(#File_Key, GetCurrentDirectory() + "Key")
                       CloseFile(#File_Key)
                       CreateFile(#File_Sh, GetCurrentDirectory() + Rash2)
                       WriteData(#File_Sh, ?metka2, ?endmetka2-?metka2)
                       CloseFile(#File_Sh)
                       CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                          SetFileAttributes(GetCurrentDirectory() + Rash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                       CompilerEndIf                      
                       RunProgram(GetCurrentDirectory() + Rash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
                       DeleteFile(GetCurrentDirectory() + Rash2)
                         If OpenPreferences(GetCurrentDirectory() + "Key1")
                            If PreferenceGroup("KePa") = 1
                                    RemoveGadgetItem(#Listview_0, GetGadgetState(#Listview_0))
                                    RemovePreferenceGroup(ListDan()\Imia)
                                    DeleteElement(ListDan(),1)
                                       If ListSize(ListDan()) > 0
                                         SetGadgetText(#Listview_0,ListDan()\Imia)
                                         SetGadgetText(#String_0,ListDan()\Adres)
                                         SetGadgetText(#String_1,ListDan()\Login)
                                         SetGadgetText(#String_2,ListDan()\Parol)
                                         SetGadgetText(#Editor_0,ListDan()\Opisanie)
                                      Else
                                         SetGadgetText(#Listview_0,"")
                                         SetGadgetText(#String_0,"")
                                         SetGadgetText(#String_1,"")
                                         SetGadgetText(#String_2,"")
                                         SetGadgetText(#Editor_0,"")                                      
                                       EndIf
                                    ClosePreferences()
                                    CreateFile(#File_Sh, GetCurrentDirectory() + Zash2)
                                    WriteData(#File_Sh, ?metka1, ?endmetka1-?metka1)
                                    CloseFile(#File_Sh)
                                    CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                                      SetFileAttributes(GetCurrentDirectory() + Zash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                                    CompilerEndIf                                    
                                    RunProgram(GetCurrentDirectory() + Zash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
                                    DeleteFile(GetCurrentDirectory() + Zash2)
                                    DeleteFile(GetCurrentDirectory() + "Key1")                            
                            Else
                              ClosePreferences()                        
                              DeleteFile(GetCurrentDirectory() + "Key1")                        
                              End
                            EndIf                
                         EndIf
                    Else
                       End
                    EndIf                  
                 EndIf                
              EndIf
           Case #Button_2
              If ListSize(ListDan()) > 0              
                SelectElement(ListDan(), GetGadgetState(#Listview_0))
                 SetGadgetText(#String_7,ListDan()\Imia)
                 SetGadgetText(#String_8,ListDan()\Adres)
                 SetGadgetText(#String_9,ListDan()\Login)
                 SetGadgetText(#String_10,ListDan()\Parol)
                 SetGadgetText(#Editor_1,ListDan()\Opisanie)              
                 HideGadget(#Container_0, 0)
                 HideGadget(#Container_1, 1)
                 Udal_Redakt = 1
              EndIf
            Case #Button_Go
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Linux
        RunProgram("x-www-browser",GetGadgetText(#String_0),GetHomeDirectory())  
    CompilerCase #PB_OS_MacOS
        RunProgram(GetGadgetText(#String_0))  
    CompilerCase #PB_OS_Windows
        RunProgram(GetGadgetText(#String_0))
  CompilerEndSelect              
            Case #Button_6
               If GetGadgetText(#String_7) = ""
                  MessageRequester("Внимание!","Вы не ввели Имя группы!")
               Else
                 If ReadFile(#File_Key, GetCurrentDirectory() + "Key")
                    CloseFile(#File_Key)
                    CreateFile(#File_Sh, GetCurrentDirectory() + Rash2)
                    WriteData(#File_Sh, ?metka2, ?endmetka2-?metka2)
                    CloseFile(#File_Sh)
                    CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                       SetFileAttributes(GetCurrentDirectory() + Rash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                    CompilerEndIf                
                    RunProgram(GetCurrentDirectory() + Rash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
                    DeleteFile(GetCurrentDirectory() + Rash2)
                      If OpenPreferences(GetCurrentDirectory() + "Key1")
                         If PreferenceGroup("KePa") = 1
                              If PreferenceGroup(GetGadgetText(#String_7))=1 And Udal_Redakt = 0
                                 ClosePreferences()                        
                                 DeleteFile(GetCurrentDirectory() + "Key1")                              
                                 MessageRequester("Внимание!","Группа с именем:  "+GetGadgetText(#String_7)+Chr(13)+"Уже существует, введите другое имя")
                              ElseIf PreferenceGroup(GetGadgetText(#String_7))=1 And Udal_Redakt = 1  
                                 ListDan()\Adres = GetGadgetText(#String_8)
                                 ListDan()\Login = GetGadgetText(#String_9)
                                 ListDan()\Parol = GetGadgetText(#String_10)
                                 ListDan()\Opisanie = GetGadgetText(#Editor_1)
                                 SetGadgetText(#String_0,ListDan()\Adres)
                                 SetGadgetText(#String_1,ListDan()\Login)
                                 SetGadgetText(#String_2,ListDan()\Parol)
                                 SetGadgetText(#Editor_0,ListDan()\Opisanie)                              
                                 SetGadgetText(#String_7,"")
                                 SetGadgetText(#String_8,"")
                                 SetGadgetText(#String_9,"")
                                 SetGadgetText(#String_10,"")
                                 SetGadgetText(#Editor_1,"Дополнительная информация (необязательно)")                  
                                 WritePreferenceString("Adres", ListDan()\Adres)
                                 WritePreferenceString("Login", ListDan()\Login)
                                 WritePreferenceString("Parol", ListDan()\Parol)
                                      CompilerSelect #PB_Compiler_OS
                                        CompilerCase #PB_OS_Linux
                                           WritePreferenceString("Opisanie", ReplaceString(ListDan()\Opisanie, #LF$, Chr(138)))
                                        CompilerCase #PB_OS_MacOS
                                           WritePreferenceString("Opisanie", ReplaceString(ListDan()\Opisanie, #CR$, Chr(138)))      
                                        CompilerCase #PB_OS_Windows
                                           WritePreferenceString("Opisanie", ReplaceString(ListDan()\Opisanie, #CRLF$, Chr(138)))
                                      CompilerEndSelect                                
                                 HideGadget(#Container_0, 1)
                                 HideGadget(#Container_1, 0)                    
                                 ClosePreferences()
                                 CreateFile(#File_Sh, GetCurrentDirectory() + Zash2)
                                 WriteData(#File_Sh, ?metka1, ?endmetka1-?metka1)
                                 CloseFile(#File_Sh)
                                 CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                                   SetFileAttributes(GetCurrentDirectory() + Zash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                                 CompilerEndIf                              
                                 RunProgram(GetCurrentDirectory() + Zash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
                                 DeleteFile(GetCurrentDirectory() + Zash2)
                                 DeleteFile(GetCurrentDirectory() + "Key1")                              
                              Else  
                                 LastElement(ListDan())
                                 AddElement(ListDan())
                                 ListDan()\Imia = GetGadgetText(#String_7)
                                 ListDan()\Adres = GetGadgetText(#String_8)
                                 ListDan()\Login = GetGadgetText(#String_9)
                                 ListDan()\Parol = GetGadgetText(#String_10)
                                 ListDan()\Opisanie = GetGadgetText(#Editor_1)
                                 AddGadgetItem (#Listview_0, -1, ListDan()\Imia)
                                 SetGadgetText(#String_0,ListDan()\Adres)
                                 SetGadgetText(#String_1,ListDan()\Login)
                                 SetGadgetText(#String_2,ListDan()\Parol)
                                 SetGadgetText(#Editor_0,ListDan()\Opisanie)                              
                                 SetGadgetState(#Listview_0, CountGadgetItems(#Listview_0) - 1)
                                 SetGadgetText(#String_7,"")
                                 SetGadgetText(#String_8,"")
                                 SetGadgetText(#String_9,"")
                                 SetGadgetText(#String_10,"")
                                 SetGadgetText(#Editor_1,"Дополнительная информация (необязательно)")                  
                                 WritePreferenceString("Adres", ListDan()\Adres)
                                 WritePreferenceString("Login", ListDan()\Login)
                                 WritePreferenceString("Parol", ListDan()\Parol)
                                      CompilerSelect #PB_Compiler_OS
                                        CompilerCase #PB_OS_Linux
                                           WritePreferenceString("Opisanie", ReplaceString(ListDan()\Opisanie, #LF$, Chr(138)))
                                        CompilerCase #PB_OS_MacOS
                                           WritePreferenceString("Opisanie", ReplaceString(ListDan()\Opisanie, #CR$, Chr(138)))      
                                        CompilerCase #PB_OS_Windows
                                           WritePreferenceString("Opisanie", ReplaceString(ListDan()\Opisanie, #CRLF$, Chr(138)))
                                      CompilerEndSelect                                      
                                 HideGadget(#Container_0, 1)
                                 HideGadget(#Container_1, 0)                    
                                 ClosePreferences()
                                 CreateFile(#File_Sh, GetCurrentDirectory() + Zash2)
                                 WriteData(#File_Sh, ?metka1, ?endmetka1-?metka1)
                                 CloseFile(#File_Sh)
                                 CompilerIf #PB_Compiler_OS = #PB_OS_Linux Or #PB_Compiler_OS = #PB_OS_MacOS
                                   SetFileAttributes(GetCurrentDirectory() + Zash2, #PB_FileSystem_ExecUser | #PB_FileSystem_ExecGroup | #PB_FileSystem_ExecAll)
                                 CompilerEndIf                              
                                 RunProgram(GetCurrentDirectory() + Zash2,Master_Parol_1,GetCurrentDirectory(), #PB_Program_Wait)
                                 DeleteFile(GetCurrentDirectory() + Zash2)
                                 DeleteFile(GetCurrentDirectory() + "Key1")                            
                              EndIf
                         Else
                           ClosePreferences()                        
                           DeleteFile(GetCurrentDirectory() + "Key1")                        
                           End
                         EndIf                
                      EndIf
                 Else
                    End
                 EndIf              
               EndIf  
           Case #Button_7
              SetGadgetText(#String_7,"")
              SetGadgetText(#String_8,"")
              SetGadgetText(#String_9,"")
              SetGadgetText(#String_10,"")
              SetGadgetText(#Editor_1,"Дополнительная информация (необязательно)")                
              HideGadget(#Container_0, 1)
              HideGadget(#Container_1, 0)  
           Case #Listview_0
              SelectElement(ListDan(), GetGadgetState(#Listview_0))
              SetGadgetText(#String_0,ListDan()\Adres)
              SetGadgetText(#String_1,ListDan()\Login)
              SetGadgetText(#String_2,ListDan()\Parol)
              SetGadgetText(#Editor_0,ListDan()\Opisanie)
           Case #Button_3  
              SetClipboardText(GetGadgetText(#String_0))
           Case #Button_4  
              SetClipboardText(GetGadgetText(#String_1))
           Case #Button_5  
              SetClipboardText(GetGadgetText(#String_2))
           Case #Button_Generator
              Kol_Vo_Znakov = Random(15)+10
              For i=1 To Kol_Vo_Znakov
                Sluchainoe=Random(61)
                PassGener=PassGener+ch(Sluchainoe)
              Next
                SetGadgetText(#String_10,PassGener)
                PassGener = ""
          EndSelect
;Обработка событий в всплывающем меню          
        Case #PB_Event_Menu
         RemoveWindowTimer(#Window_0, #Time_Close)
          Select EventMenu
            Case #MenuItem1
              RemoveSysTrayIcon(#SysTrayIcon)                    ;Убираем иконку из трея
              HideWindow(#Window_0,0)
              HideGadget(#Container_0, 1)
              HideGadget(#Container_1, 1)
              HideGadget(#Container_s, 0)
            Case #MenuItem2 : End
            Case #MenuItem3 : Open_Window_Smena()                
          EndSelect
;Если тикнул таймер  
        Case #PB_Event_Timer
           Select Timer
              Case #Time_Close
                 End
              Case #Timer
                 If ReadFile(#File_Key, GetCurrentDirectory() + "Key")
                   CloseFile(#File_Key)
                 Else
                    End
                 EndIf                
           EndSelect
      EndSelect
 ForEver
;Конец главного цикла
;********************
 
DataSection
        Logo:   IncludeBinary "lock.png"
        Kopi:   IncludeBinary "clipboard_text.png"
        Dob:    IncludeBinary "plus.png"
        minus:  IncludeBinary "minus.png"
        Redakt: IncludeBinary "notebook.png"
        Go: IncludeBinary "globe-green.png"
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Linux
        metka1:IncludeBinary "01"
   endmetka1:
        metka2:IncludeBinary "11"
   endmetka2:  
    CompilerCase #PB_OS_MacOS
        metka1:IncludeBinary "01.app"
   endmetka1:
        metka2:IncludeBinary "11.app"
   endmetka2:  
    CompilerCase #PB_OS_Windows
        metka1:IncludeBinary "01.exe"
   endmetka1:
  metka2: IncludeBinary "11.exe"
   endmetka2:
  CompilerEndSelect
EndDataSection


Скомпилировать в уникоде и обозвать, как угодно
Иконки можно подставить свои, названия в дата секции.
Или скачать архив с исходниками http://www.purebasik.ru/load/khranitel_parolej_quot_kepa_quot/1-1-0-3
Скомпиленные файлы http://www.purebasik.ru/load/khranitel_parolej_quot_kepa_quot/1-1-0-2
Просьба к тем у кого есть мак-ось, скомпилируйте и скиньте файл для Мак-оси.

_________________
.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB