caster@jove.cs.pdx.edu (Brad J. Caster) (05/30/91)
Well, if a password program is executed from config.sys, then Ctrl-Break & Ctrl-C cannot break out of it. So it was futile to write a complicated program for that purpose. There may be something of use here anyway. The following is the Turbo Pascal (v5.0) source code I ended up with. It's a memory resident password program. It is armed when you first run it. BTW, does anyone know how to keep someone from just booting up from a floppy? Use: Run program with password as argument. With no argument, the default password is 'hello'. It starts out in Locked mode. To alternate between Locked and Unlocked modes, press both shift keys simultaneously, then type in password. The beep lets you know if you type it in correctly. You can "Lock" your computer any time you want, but no guarantees are made as to whether it will "Unlock" safely when you want. Be sure to save your data first. It will Lock permanently if someone tries typing on it. It can be run from config.sys, but beware that your password will be changed to upper-case by DOS. (ie. INSTALL=PASSWORD.EXE knockknock) Following the source code, is the UUencoded executable. ------- Cut Here ------- {$M 1024,0,0} program Password; uses crt,dos; var PW : string; C,P,L : byte; K : char; Pntr : pointer; Locked,InUse,Stop : boolean; Regs : registers; procedure Bleep; begin sound(128); delay(128); sound(512); delay(128); nosound; end; procedure Bleep2; begin sound(512); delay(128); sound(128); delay(128); nosound; end; procedure GetKey; interrupt; begin Intr($64,Regs); if not InUse then begin InUse := true; if Locked then begin C := C + 1; if C > 20 then repeat Bleep; until false; end; if (Mem[$0040:$0017] and $03 = $03) then begin P := 1; Stop := false; repeat Regs.AH := $00; intr($16,Regs); K := chr(Regs.AL); if K = PW[P] then P := P + 1 else Stop := true; until Stop or (P > L); if not Stop then if Locked then begin Bleep2; Locked := false; end else begin Bleep; C := 0; Locked := true; end; end; end; InUse := false; end; begin InUse := true; getintvec($64,Pntr); writeln; if Pntr = nil then begin C := 0; Locked := true; if ParamCount > 0 then PW := ParamStr(1) else PW := 'hello'; L := length(PW); writeln('Armed and Dangerous'); Bleep; getintvec($09,Pntr); setintvec($64,Pntr); setintvec($09,@GetKey); keep(0); end else writeln('Password Cannot be Loaded'); InUse := false; end. ------- Cut Here ------- begin 644 password.exe M35J 0H *@ - '@ > !C 0 $ "$ 0 ' @ 1 &@ ", L M ,0 #\ !( 40 %H !C : 'H ") X0 (<! M ", 0 I0$ *\! "T 0 SP$ .(! #P 0 !0( !T" B @ )P( M #<" !' @ 4 ( %<" !? @ <P( '@" !] @ C ( !< -0 J #4 M,@$U $ EP#= )< 6@>7 %6)Y3' FD0"EP"X@ !0FL8" M-0"X@ !0FIX"-0"X )0FL8"-0"X@ !0FIX"-0":\P(U (GL7<-5B>4QP)I$ M I< N "4)K& C4 N( 4)J> C4 N( 4)K& C4 N( 4)J> C4 FO,"-0") M[%W#4%-14E97'@95B>6X)P&.V+!D4+]* 1Y7F@L *0" /D<! '0#Z:H Q@9' M 0& /D8! '05H#X!,.1 HCX!@#X^ 11V!>A,_^O[N$ 4+\7 <FB@4D SP# M=7C&!C\! <8&2 $ Q@9+ 0"P%E"_2@$>5YH+ "D H$H!HD$!H#\!,.2+^(J% M/@ Z!D$!=0N@/P$PY$"B/P'K!<8&2 $!@#Y( 0!U": _ 3H&0 %VMX ^2 $ M=1Z /D8! '0*Z S_Q@9& 0#K#>C+_L8&/@$ Q@9& 0'&!D<! (GL70<?7UY: M65M8SP5H96QL;Q-!<FUE9"!A;F0@1&%N9V5R;W5S&5!A<W-W;W)D($-A;FYO M="!B92!,;V%D962: "7 )H #4 58GE@>P <8&1P$!L&10OT(!'E>:; I M +]R AY7FK 'EP":#@*7 *%" 0L&1 %T ^FA ,8&/@$ Q@9& 0&:N@B7 G M?A^-O@#_%E>X 0!0FFL(EP"_/@ >5[C_ %":=P*7 .L3OU !#E>_/@ >5[C_ M %":=P*7 * ^ *) ;]R AY7OU8!#E<QP%":+0B7 )JP!Y< F@X"EP#HU/VP M"5"_0@$>5YIL "D L&10_S9$ ?\V0@&:A I + )4+AN +H %)0FH0 *0 Q MP%":EP I .L<OW("'E>_:@$.5S' 4)HM")< FK 'EP":#@*7 ,8&1P$ B>Q= M,<":V "7 7EI96[ A4%-14E95'HOLG+M% Y3,]N.VXI>#-'CT>/%'QY3 MQ78(_*U0K8O8K8O(K8O0K8OHK5"MB_BM4*V.P!]>6/K+G 9758OLQ'X0_*N+ MPZN+P:N+PJM8JXO&JUBKC-BK6*M8JQ]=R@8 58OLBD8*M#7-(8S Q'X&_).K MDZM=R@8 58OL'L56!HI&"K0ES2$?7<H& %6+[*$R ([ )HL6 @ KT(I&!K0Q MS2%=R@( 58GEZ"H OW(!'E<.Z!\#OW(!'E>:U 27 M +]R AY7#N@, []R AY7FMD$EP")[%W+M _HTP4\!W0*/ -V!K@# .A6 .BA M +0(,O_HNP6*Q"1_HFX!HF0!,\"B7P&B;P&B< % HEX!N$ CL"_; FB@4F M.@5T^R:*!;G__^@_ K@W )'WT#/2]_&C:@$>#A^Z+P&X&R7-(1_#ND CL(F M@":' /X\!W0&/ 1R K #4+0 Z%0%6 KD="VX$A&S .A'!;@P$;< L@#H/06 M^BIU%B: #H< ;@ ;D !N@I!;02LR#H(@7#M _H' 50N# 1MP"R .@1!5BQ M K2=0BR&#P#=P*Q 8KRBM3^RK0 @/X8=@*T :-B 8D6; &(#F$!Q@9@ 0$S MP*-F 8D6: '#4!ZX)P&.V( ^7@$ = 7&!G ! 1]8SX ^< $ =0'#Q@9P 0"T M <T6= :T ,T6Z_2P7N@8 [!#Z!,#Z D#S2.+W#:+1P3H(__H;O^@;@&B9 '* M @"+W#:*5PHVBG<(-HI/!C:*;P0ZT7<G.O5W(_[*>!_^SG@;_LDZ#FP!=Q/^ MS3HN;0%W"XD69@&)#F@!Z#T#R@@ N &BCYD 8L.9@&+%F@!Z#0$BQ9F >@A M \OH%@.X :*/F0!B\J*%F@!Z!D$R[@!!^L#N $&4.CY EB*/F0!B@YF 8KN MBQ9H 3KN=0(RP.CT \N+W#:*5P8VBG<$_LH"%F8!<A<Z%F@!=Q'^S@(V9P%R M"3HV:0%W ^B^ LH$ .BQ HK"*@9F ?[ R^BE HK&*@9G ?[ RXO<-HI'!*CP M= 0D#PR @"9D 7 (!F0!R@( B]PVBD<$) >Q!-+@@"9D 8\(!F0!R@( @"9D M ??+@ YD 0C+H&X!HF0!RXO<-HM7! O2=!,S_X[')HH%BQYJ 8O+Z 8 2G7X MR@( )CH%=0+B^<.+W#:+7P2XW32Z$@ [TW,:]_.+V.1AJ -U" P#YF&PMN9# MBL/F0HK'YD+* @#D823\YF'+@#YO 0!U"+0!S1:P '0"L '+H&\!Q@9O 0 * MP'42,N3-%@K =0J()F\!"N1U K #Z!C^RXO<'C;%?P3'10*PU\=%!( C86 M (E%#(Q=#L=%$%D#C$T2QD4P !_*! "+W!XVQ7\$N)$#NV\$B\N!?0*QUW0* MQT4"LM>X/@2+V(E%%(Q-%HE=&(Q-&HE-'(Q-'C/ '\H$ %6+[,1^!B:+501* M2B:+=0@FQ'T,,]O&!F\! [H7/^Y 0 \"'0T/!-T,#P$=$1)/!MT)SP!=",\ M!G0W/!IT1CP-=$\\('+/.]ITRR:( 4/HF [WG; B_/KO O;=+BP".B' + @ MZ(( L CH?0!+XNKKI#O>=* FB@$\('*9Z&H 0^+OZY& /E\! '2*)H@!0^L* MZ$X )L<!#0I#0\1^!C/ )HE%"":)70I=R@0 B]PVQ'\$)HM-""8I30CC&2;$ M?0R /F ! '4+)HH%Z!P 1^+WZP/HG #HV_PSP,H$ #/ R@0 L WH @"P"E-1 M4@90Z'( 6#P'="H\"'0M/ UT,SP*=#6T"8H>9 $R_[D! %+H90%:_L(Z%F@! M=B"*%F8!ZQ>T#NA1 >L3.A9F 70-_LKK"8H69@'K ^@( .@M =:65O#_L8Z M-FD!=AC^SE%2N $&BCYD 8L.9@&+%F@!Z!8!6EG#M ,R_^D, ;0",O_I!0$> MN$ CMB+%E 'XO:B_<FB@4\!W0A/ AT+#P*=#4\#70Y1_[".A9H 78\Z&\ MZ*#_BA9F >LLZ&, 45*X!P[HPP!:6>L<Z%0 .A9F 703_LKK#^A' .AX_^L' MZ#\ BA9F 4>+]XO:XJ;H,0 >N$ CMB)%E BL;V)DH ,O8#PHO(BQ9C + . M[NL BL5"[NL 2K /[NL BL%"[A_#._=T8U%25QX&B\\KSHH680&*-F0!N$ MCMB*Q_8F2@ R_P/#T>"+^(O:BQ9C (/"!K@ N( ^20 '=0*TL 8?CL#\"MMT M%JR*V.RH 77[^NRH 73[B\.K^^+LZP:*YZRKXOP''U]:6<-65U4&S1 '75]> MPP "Z)P&.VHP&,@ S[8O$!1, L033Z(S2 \*C"@"C# # M!@0 HPX HQ@ HQP )J$" "T $*,@ +]R [[= ;D2 )#\+JRT-<TAB1V,10*# MQP3B\!X.'[K. +@ )<TANM4 N",ES2&ZG0"X)"7-(;K& +@_)<TA'[AR 1Y0 M'E"X!@(.4 [HX ,.Z$P$N'("'E >4+@& @Y0#NC, P[H/03+^X/$!EB#YQ^! MQY8 @/PY<P.___]7M%3-(8OL@$X6 5A;65I>7UT?!\^XT "#Q ;K [C( %E; MZP>X_P SR3/;NB<!CMK[HRP B\$+PW0?H1 "\!T$8[ )CL>$ !T!B:A% #K M[8S#*QXR (/K$(D.+@")'C Q!XH (S "\-T$S/ HR@ HRH HS8 N!(!#E & M4\NX<@$>4 [H]0.X<@(>4 [H[ ._<@.^W0&Y$@"0_"ZLM"4>Q17-(1^#QP3B M\:$N L&, !T*;OO >@J *$L .@R +O^ >@> *$P .A + ZZ%4 H2X Z#4 MNP,"Z < H2P M$S-(2Z*!PK = ;H. !#Z_/#L63H!P"Q"N@" .L$,N3V\00P M4.@> %B*Q,-0BL3H 0!84+$$TNCH P!8) \$,#PZ<@($!XK0M ;-(<, ALC M)#0U-C<X.3H[/#T^/W52=6YT:6UE(&5R<F]R( @870@ "X-"@ SP(<&-@#+ M@SXV !U <NA-@#IM?Z+]#:.1 (F.U4"?P=\%"8[!7(/)CM5!GP(?P<F.T4$ M=P'+N,D Z8W^B_0K\'(-@>X G('.S8T '(!R[C* .ET_OR+W(S:-L1_"#;% M=P2LJHK(,NWSI([:R@0 _(O<C-HVQ7<*-L1_!C:+3P2L.L%V HK!JHK(,NWS MI([:R@H B]PVQ'\$)HH%,N3*! #\B]R,VC;$?PPVQ7<(B@0RY#:+3P8+R7\# MN0$ _$KP7(30#:+3P0+R7T",\D[P78&B\'K C/ JHO(\Z2.VLH( /R+W(S: M-L1_"#;%=P0FB@TR[:PF 5S"";&!?^*P?;0 _E'BLCSI([:R@0 _(O<'C;% M=P@VQ'\$)HH-,NWC*4>L/ %R*7<(K/*N=1Q/ZQ\RY(O1*]!R$4*+R/.F= XK MR /Q _E'2G7P,\#K""OXB\<V*T<$'\H( /R+W(S:-L5W"#;$?P2L)HHE1XK( M.LQV HK,"LET!C+M\Z9U CK$CMK*" #\B]PVQ'\&L &J-HI'!*K* @#\B]R, MVC;$?PHVQ7<&-HM'!*J+R/.DCMK*!@!5B^R![ "C;X _Q97Q'X*!E>X 0!0 MBT8&2% .Z-#^Q'X.!E<.Z C_C;X _A97Q'X*!E?_=@:X_P!0#NBQ_@[H[O[$ M?@H&5_]V" [H;_Z+Y5W*# !5B^R![ "@WX& 'Y#C;X _Q97Q'X*!E>X 0!0 MBT8(2% .Z';^C;X _A97Q'X*!E>+1@@#1@90N/\ 4 [H7/X.Z)G^Q'X*!E>X M_P!0#N@9_HOE7<H( (O<'C;$?P@VQ7<$_#/ J[BPUZNX@ "K,\"KJZN-172K MC,"KN'D%JXS(JS/ N0X \ZNL/$]V K!/BL@R[?.D,L"J'\H( (O<-L1_"C:+ M1P0FB44$-HM'!B:)10PVBT<()HE%#C/ )HE%"":)10K*"@"ZL=?K"+JRU^L# MNK/7B]PVQ'\$)HM% CVQUW02/;+7= T]L-=T$,<&-@!F .LD4@97#N@D %HS MP":)50(FB44()HE%"KL0 .A* '0&)L=% K#7R@0 L #K K !B]PVQ'\$)H%] M K'7=!@F@7T"LM=T",<&-@!G .L84+L4 .@4 %@*P'0,NQP Z D )L=% K#7 MR@0 !E<&5R;_&0O = .C-@!?!\.+W!XVQ7\$,\F)#;@ /8%] K'7= VP O\% M@7T"L]=T K0\@'TP '0)C54PS2%R3XD%N%4&,\F+V8%] K'7="F+';@ 1,TA MN*H&B\B,R_;"@'41@7T"L]=U ^@F +B%!C/)B]G'10*RUXE%%(Q-%HE-&(E= M&L=%',H&C$T>,\ ?R@0 ,](SR8L=N )"S2$M@ "#V@!S!#/ ,]*+RHO0BQVX M $+-(8V5@ "Y@ "+';0_S2%S C/ ,]L[V'0@@+F !IT T/K\HO3*]"Y__^+ M';@"0LTA,\F+';1 S2'#B]P>-L1_!";%50PFBTT$)HL=M#_-(7(0)HE%"C/ M)L=%" '\H$ ";'10H .ONB]P>-L1_!";%50PSR2:'30@FBQVT0,TA<@<K MP70#N&4 '\H$ (O<'C;$?P0FQ54,,\DFATT()HL=M$#-(7(",\ ?R@0 B]PV MQ'\$)HL=@_L$=@:T/LTA<@(SP,H$ (,^-@ =0@F@7T"L==U#2:+70@FBU4* M)L1]#,/'!C8 : #KZSO:= 4FB@'XPXO\-L1] N@] (O0.]IU[+ :^<.#/C8 M '4()H%] K+7=0TFBUT()HM5!";$?0S#QP8V &D Z^LFB %#.]IT <.+_#;$ M?0)15AZZ)P&.VB:)70@&5P97)O]=% O = .C-@!?!R:+10HFBUT()HM5!";$ M?0P?7EG#B]PVQ'\$!E?H4?]U%.AP_SP:= U#/ UU].AD_SP*=0%#7P<FB5T( MZR6+W#;$?P0&5^AH_W4*L WHA?^P"NB _U\')HE=".L&B]PVQ'\$)H-]&@!U M \H$ (,^-@ =?8&5R;_71@+P'3LHS8 Z^=5B^P>Q'X,!E?HXO[%=@BY !U M%>C[_CP-= X\&G0*0T%&B 0[3@9UZROQB Q?!R:)70@?7<H& %6+[![$?@P& M5^CJ_G4EQ78(BTX&_*PRY"O(?@RP(.CY_N+YBD3_,N2+R.,'_*SHZ?[B^5\' M)HE="!]=R@8 58OLBU8&"])T!>A) .LPM##-(3P#N <B6.!C( )HX&+ S M__PF.@5T![G___*NZ_2#QP.+][D ?*ND?;0'@8?Q'X(_*J1\Z0?7<H" #/2 MZ ( D\N.!C( OX )HH-,NU',]OC"2: /2!W T?B]XOWXPDF@#T@=@-'XO>+ MQRO&= 1#2G7>PP J " end ------- Cut Here -------
caster@jove.cs.pdx.edu (Brad J. Caster) (05/30/91)
Checksum for uuencoded portion: 16-bit Checksum Blocks ---------------- ------ 63043 7
s2525090@techst02.technion.ac.il (Eran Davidov) (05/30/91)
there is a way to block someone from booting from a floppy, which I learned while playing around with HARDWARE security cards. they change the boot sectore (or partition) so that any dos not autorized by them cannot read the hard disk. when a user boots with a password (which is supplied to the ROM security program) the program puts in memory a filter that will change the boot sector to what it should be if anyone tries to read it, and that will write the altered sector, if anyone tries to write. that way if you reset the computer, you have to supply the password again. I dont know wether this is applicable to a software security routine, since the code in config.sys is read from the directory, thus there cannot be a filter ,but maybe if a pingpong like (the virus) boot sector method is used, it might work.