Strings for the PC

Walter Bright bright at dataioDataio.UUCP
Sat Feb 8 04:52:04 AEST 1986


Here's a program I wrote a while back to look at any file and dump
out any ascii strings in it. It's fun to try it out on various MS-DOS
files to see what strings are embedded in them. It's very useful to
run strings on new suspect public domain programs before you run them
to get some idea of what they do (like 'trashing hard disk').

To compile it with Datalight C:

	DLC -mci strings

which will generate STRINGS.COM. For those who just want to run it,
a uuencoded version follows.

--------------- Source code starts -------------
/*_ strings.c	05-Feb-86	Walter Bright	*/
/**************************************************
 * Find the printable strings in a file.
 * Copyright (C) 1986 by Northwest Software
 * All Rights Reserved
 * Use:
 *	strings file
 */

#include	<stdio.h>

#define	BUFMAX	255			/* buffer size			*/
char buffer[BUFMAX + 1];
int bufpnt;				/* index into buffer[]		*/
int number = 3;				/* min string length		*/
FILE *fin;				/* input file			*/
bool flag_h = FALSE;			/* TRUE means dump offset in hex */
long offset;
int xc;

main(argc,argv)
int argc;
char *argv[];
{ int i;


  if (argc != 2)
  {	fprintf(stderr,"Error: wrong number of arguments\n");
	fprintf(stderr,"Use: strings file\n");
	exit(1);
  }
  fin = fopen(argv[1],"rb");		/* open file for binary read	*/
  if (!fin)
  {	fprintf(stderr,"Can't open file '%s'\n",argv[1]);
	exit(1);
  }

  offset = 0;
  while (TRUE)
  {
	offset += bufpnt;
	bufpnt = 0;
	xc = fgetc(fin);		/* read char from file		*/
	offset++;
	while (isprint(xc) && bufpnt < BUFMAX)
	{	buffer[bufpnt++] = xc;
		xc = fgetc(fin);
	}
	if (bufpnt >= number
#if 0
		 && (xc == '\0' || xc == '\n' || xc == '\r' ||
		     xc == '$' || bufpnt == BUFMAX)
#endif
	    )
	{	buffer[bufpnt] = '\0';
		if (flag_h) printf("%5lx ",offset - 1);
		printf("%s\n",buffer);
	}
	if (xc == EOF) break;
  }
}

bool isprint(c)
int c;
{
  return c >= ' ' && c <= '~';
}
---------- Source code ends ------ STRINGS.COM starts ---------
begin 644 strings.com
MZWJ0K"PP>"X\"7<JBL at R[:P*P'0</"!T&#P)=!0L,'@5/ EW$3+DD;\* /?G
M \CKWXD.A +#NJT ZQVZ_@#K&(L><@ [XW8-.R9X '<'@3^J574!P[J$ +0)
MS2&X 0!0Z   M##-(3P"<@F+[(I& K1,S2'_-GP ,\!0R_JX<!BY! #3Z(S)
M \&.V(P&? "+V"L>? ")'GH )HL> @ KV('[ !!R [O_#XO0 ]-"L033XX[0
MB^.!Z_ $@?L  G<%NI< ZY/[M##-(:-^ #P"<P6ZR@#K at HS CMB,T([ OH  
M_*PRY(O(O_ $\Z0RP*J,T([81X'G_O^)/G( QP6J5;[P!+L" *P\/74#Z/7^
M"L!T+SP@=/ \"73L at _M =@:ZY0#I,_].B;<J (/# JP*P'0//"!T!#P)=?,R
MP(A$_^O%T>N)'B@ BQZ$ H'[  )S![L  HD>A (#'G( <BV#PQ%R*('C\/^)
M'G8 B1YX +$$T^N)'G0  QYZ (X&? #ZM$K-(8S9CL%S!_NZEP#IQ_Z+)G@ 
M^X,^@@( ="&X\/\K!G8 4.C& EL]__]T"@4" %#H2P);ZP;'!H("  "X*@!0
M_S8H .@\ >AT_C/ 4.BB#U6#[ 2)Y8-^" )T([@J E"X @-0Z'T$B>RX3 )0
MN (#4.AP!(GLN $ 4.AU#XGLN%\"4(M>"H/# O\WB5X"Z*0"B>RC( ()P'4;
MBUX"_S>X8@)0N (#4. at Z!(GLN $ 4. at _#XGLQP8D @  QP8F @  H1P"F8G#
MB= !'B0"$08F L<&' (  /\V( +HB@^)[*,H H,&) (!@Q8F @#_-B@"Z'8 
MB>P)P'0E at 3X< O\ ?1VA* *+'AP"_P8< HB'' '_-B "Z% /B>RC* +KSJ$<
M CL&'@)\,XG#QH<< 0"#/B(" '08H28"BQXD H/#_Q7__U!3N'@"4.BS XGL
MN!P!4+A^ E#HI at .)[(,^* +_= /I7/^#Q 1=PU6)Y8M&!#T@ 'P%/7X ?@0S
MP.L#N $ 7</IROY5B^R+1 at 2+7@:#^P%T!O?C"])U>U#H&0"#Q (+P'00B_B+
MT(M-_M'I23/ \ZN+PEW#58OLBT8$!0, )?[_/00 <DV] @"+-FP B\[K!HOW
M._%T)HL\.P-W]'02 \4[ W0,*\4!!(LTBPLKR(D*AP6)!(DV< "- UW#4.CI
M %L]__]T# 4" %#H;@!;B^SKI3/ 7<-5B^R+7 at 2#ZP*+#XM&!@4# "7^_RO(
M<AJ#^01R$(O[ _B)#8/' HD'5^@Y %^+1 at 3K,?]V!NAF_XOE"\!TOE"+=@2+
M^(M,_CM-_G8#BTW^T>E)_/.E_W8$Z H @\0""\!8=9E=PU6+[(M>!+T" #L>
M> !V6CL>=@!S5/?# 0!U3BO=BP>+-G  ._-R![YL .L"B_>+/#OS<S4[^W<$
M._YW\(L* \X[RW4$ 0+K"8E' HD_B1R+\XDV< "+ @/&.\=U"(L%B02+ P$"
M,\!=P[C__UW#58OLBUX$@\,/@>/P_W0UB].Q!-/KB\L#'G0 <B>!^_\/=R$#
M'GH !HX&? "T2LTA!W(1H78 B]B)%P$6=@ !#G0 7<-=N/__PU6#[ *)Y<=&
M .H"BT8 N=H#.\%S((G#]T<&(P!U$5#_=@C_=@;H-P")[(/$ EW#@T8 #.O6
M,<"#Q )=PU6)Y8M>"/='!B, = 93Z#X+B>S_=@C_=@;_=@3H! ")[%W#58/L
M!HGE at WX* '1$@WX. '0^BUX*@#\ =#8QP(E& (E&!(M>#/]&#(H',.0]<@!T
M##UA '0./7< = [K$\=&  $ ZQ/'1 at 0! ,=&  ( ZP<QP(/$!EW#BUX,@#\K
M=0B!3@ @ /]&#(M>#( _8G0%@4X 0 #W1@ @ '0DN ( 4/]V"NA0#8GLB48"
M/?__=7LQP%#_=@KH40V)[(E& NMK]T8  @!T5H-^! !T0+@! %#_=@KH'PV)
M[(E& CW__W40,<!0_W8*Z" -B>R)1 at +K.K@" % QP#';4%/_=@+H1PV)[#W_
M_W4#Z6;_ZQXQP%#_=@KH] R)[(E& NL.,<!0_W8*Z- ,B>R)1@*+1@*+7 at Z)
M1P@]__]U ^DU_XM& *D@ '0#)?S_B4<&,<")!XE'"C' B4<$B4<"B=B#Q 9=
MPU6)Y?\VA at +_=@3H20N)[%W#58GEBT8$HX8"C48(4/]V!KA5!U#H:@")[%W#
M58GEQP:& O8"C48&4/]V!+A5!U#H3P")[%W#58GEBT8$BQZ( O\&B *(!UW#
M58/L HGEBT8&HX@"C48*4/]V"+B<!U#H'P")[(E&  G >04QP(E& (M>!@->
M ,8' (M& (/$ EW#58/L3HGEQT8   "+7E3_1E2*!S#DB48$"<!U ^D1"#TE
M '024/]64HGL"<!Y ^D'"/]& .O5QT8.B at +'1D0  (M>5/]&5(H',.2)1 at 0)
MP'0JOY("N00 _/*O=1__90:!3D0! .O:@4Y$ @#KTX%.1 0 Z\R!3D0( .O%
M,<")1A*#?@0J=2F+7E:+#XE.$H-&5@()R7D*@4Y$ 0#WV8E.$HM>5/]&5(H'
M,.2)1 at 3K-X-^!#!U!8%.1$  _W8$Z.T+B>P)P'0 at BT82N0H ]^D#1 at 0%T/^)
M1A*+7E3_1E2*!S#DB48$Z]0QP(E&%(-^!"YU=8%.1(  BUY4_T94B@\P[8E.
M!(/Y*G4GBUY6BP^)3A2#1E8""<EY"(%F1'__B484BUY4_T94B@<PY(E&!.LW
M at WX$,'4%@4Y$0 #_=@3H;0N)[ G =""+1A2Y"@#WZ0-&! 70_XE&%(M>5/]&
M5(H',.2)1 at 3KU(-^!&QU%(%.1!  BUY4_T94B@<PY(E&!.L8 at WX$3'42 at 4Y$
M( "+7E3_1E2*!S#DB48$BT8$OZ("N1  _/*O= /ICP;_91Z+7E:+!XE&0(-&
M5@)0Z-P*B>R)1D+W1D2  '4#Z3L%BTX4.\A] XE.0H-^0@!X ^DH!3' B49"
MZ2 %QD86)>L.BUY6B@<PY(A&%H-&5@*-1A:)1D#'1D(! .G^!,=&1 at H _W9$
MC4964. at I!HGLB48(B5X&B48,B5X*,<DQ]H?6Z#L+A]9Y%,=&- $ ]]CWVQT 
M (E&#(E>"NL%QT8T  #_=D3_=C3HNP:)[(E&#NMDQT9&" #K!<=&1 at H BT9$
M#0 "4(U&5E#HRP6)[(E&#(E>"NM @4Y$  ''1D80 (M&1 T  E"-1E90Z*D%
MB>R)1 at R)7 at J+3D3WP0@ =!>)P0G9=!&#?@18=06XBP+K [B. HE&#HU&,XE&
M0(M&"@M&#'1CBT8,BUX*B<>+1D:9B=&)QHGXA];H\@F'UHGP!3  BUY B >+
M7D" /SEV$?=&1  != 6X!P#K [@G   'BT9&F8G1B<:+1 at R+7@J'UNBZ"8E>
M"HE&#/].0(G!"=EUHO]&0.L&BUY Q@<PC48T*T9 B49".T84? /IOP.+1A0]
M'@!^!K@> (E&%(M&%"M&0HE& HM& O]. @G = O_3D"+7D#&!S#KZXM&%(E&
M0NF* _=&1(  =07'1A0& (M>5HM'!HM/ HL7BU\$B48\B5XZB4XXB58V at T96
M"(UV-%:-=DA6_W844%-14NB<]8GLB48^C486B49 _W9$_W8TZ$,%B>R)1 at Z#
M?D@ ?PF+7D#_1D#&!S"#?D@ ?B&+1D"-3C,[P7,7BUX^_T8^B@<PY(M>0/]&
M0(@'_TY(Z]F#?A0 ?P?W1D0( '19BUY _T9 Q@<N at WY( 'DBBT84_TX4"<!^
M&(M&0(U.-#O!<PZ+7D#_1D#&!S#_1DCKV(M&%/].% G ?AZ+1D"-3C0[P7,4
MBUX^_T8^B@<PY(M>0/]&0(@'Z]B+1D"-3A8KP8E&0HE.0.F( O=&1(  =07'
M1A0& (M>5HM'!HM/ HL7BU\$B48\B5XZB4XXB58V at T96"(UV-%:-=DA6BW84
M1E904U%2Z)CTB>R)1CZ-1A:)1D#_=D3_=C3H/P2)[(E&#HM>/O]&/HH',.2+
M7D#_1D"(!XM&% G ?PB+1D2I" !T,8M>0/]&0,8'+HM&%/].% G ?AZ+1D"-
M3B\[P7,4BUX^_T8^B@<PY(M>0/]&0(@'Z]B+1 at 2+7D#_1D"(!XM&-M'@"T8X
M"T8Z"T8\= /_3DC_=DB-1D!0Z$(#B>R+1D"-3A8KP8E&0HE.0.FD ?=&1(  
M=07'1A0& (M>5HM'!HM/ HL7BU\$B48\B5XZB4XXB58V at T96"(UV-%:-=DA6
M_W844%-14NBV\XGLB48^C486B49 _W9$_W8TZ%T#B>R)1@[_3DB+1D@]_?]\
M"#M&%'\#Z8P BUX^_T8^B@<PY(M>0/]&0(@'_TX4BT84"<!_"(M&1*D( '1#
MBUY _T9 Q@<NBT84_TX4"<!^'HM&0(U.+SO!<Q2+7C[_1CZ*!S#DBUY _T9 
MB ?KV/=&1 @ =0O_=D#H#0.)[(E&0(-^!&=U!;AE .L#N$4 BUY _T9 B ?_
M=DB-1D!0Z$ "B>SIB@"#?D@ >0F+7D#_1D#&!S"+1DC_3D@)P'@ABT9 C4XS
M.\%S%_].%(M>/O]&/HH',.2+7D#_1D"(!^O5 at WX4 '\']T9$" !T0XM>0/]&
M0,8'+HM&%/].% G ?AZ+1D"-3C0[P7,4BUX^_T8^B@<PY(M>0/]&0(@'Z]CW
M1D0( '4+_W9 Z%X"B>R)1D"+1D"-3A8KP8E&0HE.0.L6BUY6BP>)1DJ#1E8"
MBTX B<.)#^D%^?]V#NB,!8GLB480]T9$ 0!U" -&0CM&$GPOBT80 48 QT8"
M  "+1@([1A!]'(M>#O]&#HH',.10_U92B>P)P'D#Z>X _T8"Z]R+1A*+3D(#
M3A [P8E.3'XW]T9$ 0!U,"O! 48 B48"BT8"_TX""<!T'O=&1$  = 6X, #K
M [@@ %#_5E*)[ G >0/II #KV(M>#H _ '0LBT80 48 QT8"  "+1@([1A!]
M&8M>#O]&#HH',.10_U92B>P)P'AS_T8"Z]^+1D(!1@#'1@(  (M& CM&0GT9
MBUY _T9 B@<PY%#_5E*)[ G >$?_1 at +KWXM&$CM&0G\#Z0KX]T9$ 0!U ^D 
M^"M&0@%& (E& HM& O]. @G =0/IZO>X( !0_U92B>P)P'@*Z^2+1@"#Q$Y=
MP[C__X/$3EW#58/L!(GE]T8*$ !T%8M>"(LWBTP"BS2)3@*)=@"#!P3K)(M>
M"(L?BP>9B<.)T(E& HE> /=&"@ "= 6!9@(  (M>"(,' HM& HM> (/$!%W#
M58/L HGEBUX&BP>)1@"+1@@)P'D*]]B)1 at BX+0#K [@K (M> /]& (@'BT8(
M/6, ?AJY9 "9]_D%, "+7@#_1@"(!XM&")GW^8E6"(M&"+D* )GW^04P (M>
M /]& (@'BT8(F??Y@\(PBUX _T8 B!>+1@"+7@:)!X/$ EW#58GE at WX$ '0%
MN.("ZQJ+1@:I @!T!;CD NL-J00 = 6XY at +K [CH EW#58GEBUX$@'__,'4%
M_TX$Z_*+7 at 2 ?_\N=0/_3 at 2+1@1=PU6#[ :)Y8-^"@!U"+C__X/$!EW#QT8 
M  "+7 at J+1P:)1@*I(P!T'*D$ '4)4^A9 (GLB48 BUX*_W<(Z),"B>P)1@#W
M1@($ '4HBUX*BT<$"<")1 at 1T"%#H8_.)[.L3BUX*BT<*"<")1 at 1T!E#HP &)
M[+@, % QP%#_=@KH9 :)[(M& (/$!EW#58/L!HGEBUX*@\,&BP<E%@ ] @")
M7@)U98MV"H-\! !U"8MV"H-\"@!T4XMV"HM$ HMV"HM,!"O!B48 "<")3 at 1T
M'XMV"O]T"E!1BW8*_W0(Z+ !B>P[1@!T!XM> H$/$ "+7 at KW1P:  '0%N !0
MZP.X  *)!XM'!(E' NL'BUX*QP<  (M>"O='!A  = 6X___K C' @\0&7<-5
MB>6X 0!0Z 0 B>Q=PU6#[ *)Y<=& .H"BT8 N=H#.\%S%8G#]T<&(P!T!E#H
MK/Z)[(-&  SKX?]V!NB_[HGL@\0"7<-5B^R+1 at 2+7@8]"@!U$_='!D  = RX
M#0#H!P"+1 at 2+7@9=_P]X$/R+?P*,PHY'"JJ.PHE_ L-34.A] H/$!,-5B^R+
M7 at 3_#WD-4^C+ XOE"\!U,8M>!(MW OR,V8Y?"JR.V3+DB7<"]T<&0 !T%CT-
M '32/1H =0RX__^!3P8( ,<'  !=PU6+[(M>!+1(S2%R EW#,\!=PU6+[(%^
M!  0<_+_=@3HWO^#Q (+P'06!H[ B]B+3 at 31X='A,\ S__SSJP>+PUW#58OL
MBT8$!H[ M$G-(0>X  !S 4A=PU6+[(M>!(M6!HM."+0_S2%S [C__UW#58OL
M'HM&"H[8BUX$BU8&BTX(M#_-(1_KX%6+[(M>!(M6!HM."+1 S2%S [C__UW#
M58OL'HM&"H[8BUX$BU8&BTX(M$#-(1_KX(S8PU6+[(M6!(I&!K0]S2%S [C_
M_UW#58OLBU8$BTX&M#S-(7,#N/__7<-5B^R+7 at 2T/LTA<P6X___K C/ 7<-5
MB^R+5 at 2T0<TA<P6X___K C/ 7<-5B^R+7 at 2+5@:+3 at B*1 at JT0LTA<P>X__^+
MV.L$B]B+PEW#51Z#["R+[(O5M!K-(8M6,K1.S2&+1AR+7AJ#Q"P?7<-5B^R+
M?@0SP+G___SRKHO!]]!(7<-5B>6+7 at 1#BH?N S#D)8  7<.+\O?FB_B+P_?A
M _B+P_?F ]>+V(O"PXOQB_H+RG0^5;T!  OV>!)U!X?WO1$ Z_-%T>?1U at OV
M>?>+R(O3,\ SVSOQ=PMR!#OZ=P4KUQO.^='3T=#1[M'?377F7<.X__^+V#/)
M,]+#"\!Y'??8]]L=   +R7DH]]GWVH/9 .B7__?9]]J#V0##"\EYB_?9]]J#
MV0#H@?_WV/?;'0  P^AV__?9]]J#V0#K[#O!=0Y0,\ [VG0&=P-(ZP% 6,-5
M@^P&B>6+7 at R#PP:+!ZD@ (E& HE>!'0()?[_#0( B0>+7 at R+1P:)1@(E&@ ]
M @!T ^D< 8M& JD$ '0JN $ 4(U."E&+7 at S_=PCH!_Z)[#T! '0#Z?$ BUX,
MQP<  (M&"H/$!EW#BUX, at W\$ '5<@W\* '56 at SZ" @!T"[@ !5#H2OV)[.L"
M,<"+7 at R)1PJ+7 at R#?PH = >!3P:  .M7N  "4. at O[HGLBUX,B4<$BUX, at W\$
M '4)N 0 B4<&Z7S_Z,']BUX,B4<*ZRN+7 at R+1P*+3P0KP8E&  G B4X"=!90
M_W<*4%'_=PCH?_V#Q B)P5@[P752BUX,BT<$B4<"BUX,]T<&@ !T(K@! %"-
M1 at I0_W<"_W<*Z-(!B>R+7 at S_1P*+7 at S'!_]/ZQ6+1 at J+7@R+=P+_1P*(!(M>
M#,<'_P&+1 at J#Q 9=PXM>#(%/!A  BUX,QP<  +C__X/$!EW#58/L!HGEBUX*
M@\,&BP>I( ")1@")7@)T""7]_PT! (D'BUX*@\,&BP>)1@ E&0 ] 0")7@)T
M ^D2 8MV"H/&!(,\ (EV!'0#Z8( BWX*@WT* '5YBT8 J00 =4Z#/H(" '0+
MN  %4.@$_(GLZP(QP(M>"HE'"@G =2:X  )0Z/7LB>R+7 at 2)!PG =0F+7@*!
M#P0 ZQ7HC?R+7 at J)1PKK+8M>"H%/!H  ZR.+1 at JYZ@(KP;D, )GW^8G#C8?:
M XM>"HE'!.A>_(M>"HE'"HM>"HM'!(E' O='!H  B48 =!?_=PJY %!14/]W
M".CN^XGLBUX*B0?K(XM>"O='!@0 = 6X 0#K [@  E#_=P+_=PCHLON)[(M>
M"HD'BUX*_P^+!PG B48 >3,]__]U%X/#!H$/" "+!ZD@ (E> '0. at 2?O_^L(
MBUX*@4\&$ "+7 at K'!P  N/__@\0&7<,QP(/$!EW#58OLBWX$BT8&BTX(_/.J
MBT8$7<-5B^P>BTX$CMF+=@:+?@B+3 at KSI!]=PU6+[ :+3 at 2.P8M^!HMV"(M.
M"O.D!UW#            3F]R=&AW97-T($,L('=R:71T96X at 8GD@5V%L=&5R
M($)R:6=H= !C    )@                                          
M                                            ;    &P         
M                #0I3=&%C:R!/=F5R9FQO=PT*) T*3F]T(&5N;W5G:"!M
M96UO<GD-"B0-"D)A9"!S=&%C:R!S:7IE('!A<F%M971E<@T*) T*1$]3(#$N
M>'@@;F]T('-U<'!O<G1E9 T*) T*3VYL>2 S,B!A<F=S(&%L;&]W960-"B0-
M"D9L;V%T:6YG('!O:6YT(&YO="!L;V%D960-"B0                     
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                       #              !%<G)O<CH@=W)O;F<@;G5M
M8F5R(&]F(&%R9W5M96YT<PH 57-E.B!S=')I;F=S(&9I;&4* ')B $-A;B=T
M(&]P96X at 9FEL92 G)7,G"@ E-6QX(  E<PH  0  (       ,%@ ,'@  "T 
M*P @ ", 1 at A-"%0(6PAS "4 8P!D &D ;P!U %@ > !P &8 90!% &< 1P!N
M ),)S0G3">\)[PE""DD*9 at IK"FL*8PME#&4,20U)#=<.+0 K "          
M  !%              !&  $           !&  (           !D  ,     
M      !&  0                                                 
M                                                            
M                                                            
M                                                            
M                                           " @(" @(" @(# P,#
M P(" @(" @(" @(" @(" @(" @5 0$! 0$! 0$! 0$! 0$" @(" @(" @(" 
M0$! 0$! 0!@8&!@8&! 0$! 0$! 0$! 0$! 0$! 0$! 00$! 0$! *"@H*"@H
M(" @(" @(" @(" @(" @(" @("! 0$!  @                          
M                                                            
M                                                            
4                            
 
end



More information about the Comp.sources.unix mailing list