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 7s2525090@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.