Since Tek-Tips search isn't working well today, here's a rudimentary example of steganography.
(1) Right-click on the image at the bottom of this post and save it to your application path as "MyStego.bmp"

.
(2) Add a text box and a command button to a form.
(3) Click the button to place a message in the text box.
[tt]
Private Sub Command1_Click()
' Create a random seed from a password
PWD$ = "f3W#1"
For P = 1 To Len(PWD$)
RNDseed& = RNDseed& + (Asc(Mid$(PWD$, P, 1)) * P)
Next
a = Rnd(-1)
Randomize RNDseed&
StartByte& = 1079
f2 = FreeFile
Open App.Path & "\MyStego.bmp" For Binary As #f2
' The length of the text message was stored at
'the 1075th offset. Get the value.
Get #f2, 1075, TextLen&
Gout$ = String$(LOF(f2) - StartByte&, 0)
Get #f2, StartByte&, Gout$
Close #f2
Temp$ = String$(Len(Gout$), 255)
ClearText$ = ""
For Re = 1 To TextLen&
RandPos& = NextRandLoc&(Temp$)
'Get the text from the various "random" locations
' where it was stored in the BMP.
ClearText$ = ClearText$ & Mid$(Gout$, RandPos&, 1)
'Mark that location in Temp$ as having been read once.
Mid$(Temp$, RandPos&, 1) = Chr$(1)
Next
Text1.Text = ClearText$
End Sub
Private Function NextRandLoc&(Temp$)
' This just distributes the message
' "randomly" though a string of the right size.
Written = False
TempLen& = Len(Temp$)
Do While Not Written
' Try to find an unused random location
' five times. If that fails, use the
' next available location.
For Rep& = 1 To 5 'try 5 times
RandPos& = Fix(TempLen& * Rnd + 1)
If Mid$(Temp$, RandPos&, 1) = Chr$(255) Then
Written = True
Exit For
End If
Next
If Written = True Then Exit Do
RandPos& = InStr(RandPos&, Temp$, Chr$(255))
If RandPos& < 1 Then
RandPos& = InStr(1, Temp$, Chr$(255))
If RandPos& > 0 Then
Written = True
Exit Do
End If
End If
Loop
Mid$(Temp$, RandPos&, 1) = Chr$(1)
NextRandLoc& = RandPos&
End Function
[/tt]
This is really simplistic and you can probably find much better ways to do it... still, it demonstrates the basic concepts. Create a randomizing seed from a password and use it to scramble a message and mix it into a graphic. Use the same password to reverse the process and retrieve the message (in this case I suppose that would be your installation key).
I only included code for
reading the "encrypted" text. It shouldn't be huge undertaking to modify the code to allow
writes.
Suffice it to say that adding disk drives and a disk operating system to a personal microcomputer is guaranteed to increase its power dramatically.
CP/M and the Personal Computer