Gamestudio Links
Zorro Links
Newest Posts
Executing Trades on Next Bar Open
by vicknick. 06/13/24 08:51
Zorro Beta 2.61: PyTorch
by jcl. 06/10/24 14:42
New FXCM FIX Plugin
by flink. 06/04/24 07:30
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/22/24 13:41
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 1,259 guests, and 6 spiders.
Key: Admin, Global Mod, Mod
Newest Members
AemStones, LucasJoshua, Baklazhan, Hanky27, firatv
19059 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Snippets: Cryptography with 3dgs: STEGANO #57583
10/14/05 01:25
10/14/05 01:25
Joined: Aug 2005
Posts: 1,185
Ukraine
Lion_Ts Offline OP
Serious User
Lion_Ts  Offline OP
Serious User

Joined: Aug 2005
Posts: 1,185
Ukraine
Hi!
One more small (hope usefull) snippet from me
Actual encryption of the message inside the picture. I tryed to simplify code to show this old idea, implemented in C-script at

first time, I think.
Search 'steganography' or alike over Internet to read about main idea of this stuff.
Code:

bmap* TempSteganoBmpPtr;
string* TempSteganoStrPtr;
string TempSteganoStr;
string TempSteganoChar;

function SteganoEncrypt(ImgOrig, Str){ //returns -1 if error, 0 - success
var x;
var y;
var i;
var j;
var PixelData;
var CharMask;
var CharData;
var format;

TempSteganoBmpPtr=ImgOrig;
TempSteganoStrPtr=Str;
format=bmap_lock(TempSteganoBmpPtr, 0);

if (format!=8888){ //32bit images only (TGA with alpha for example)
bmap_unlock(TempSteganoBmpPtr);
return(-1);
}

x = 0;
y = 0;
i=0;
while(i < str_len(TempSteganoStrPtr)){
CharMask = 128; //80h;
j=1;
while(j < 9){
str_cpy(TempSteganoStr, TempSteganoStrPtr);
CharData = str_to_asc(str_clip(TempSteganoStr, i));
if (CharData==0){//EOL
bmap_unlock(TempSteganoBmpPtr);
return(0);
}
CharData = CharData & CharMask;
PixelData = pixel_for_bmap(TempSteganoBmpPtr, x, y);
if(CharData != 0){ //Data is not zero - change the LSB of the current pixel.
PixelData = PixelData | 1;
}else{
PixelData = PixelData & 4294967294;
}
pixel_to_bmap(TempSteganoBmpPtr, x, y, PixelData);
x += 1;
x %= bmap_width(TempSteganoBmpPtr);
if(x==0){
y+=1;
}
CharMask = CharMask >> 1;
j += 1;
}
i += 1;
}
bmap_unlock(TempSteganoBmpPtr);
return(0);
}

function SteganoDecrypt(ImgOrig){ //returns pointer to decrypted string
var x;
var y;
var i;
var j;
var PixelData;
var CharMask;
var CharData;
var format;

TempSteganoBmpPtr = ImgOrig;
TempSteganoStrPtr = TempSteganoStr;
str_cpy(TempSteganoStr, "");
format=bmap_lock(TempSteganoBmpPtr, 0);
if (format!=8888){ //32bit images only (TGA with alpha for example)
bmap_unlock(TempSteganoBmpPtr);
return(-1);
}
x = 0;
y = 0;
i=0;
while(1){
CharMask = 128; //80h;
j=1;
CharData=0;
while(j < 9){
PixelData = pixel_for_bmap(TempSteganoBmpPtr, x, y);
if ((PixelData & 1) !=0 ){
CharData = CharData | CharMask;
}
x += 1;
x %= bmap_width(TempSteganoBmpPtr);
if(x==0){
y+=1;
}
if(y > bmap_height(TempSteganoBmpPtr)){
bmap_unlock(TempSteganoBmpPtr);
return(TempSteganoStrPtr);
}
CharMask = CharMask >> 1;
j += 1;
}
if (CharData==0){//EOL
bmap_unlock(TempSteganoBmpPtr);
return(TempSteganoStrPtr);
}
str_for_asc(TempSteganoChar, CharData);
str_cat(TempSteganoStr, TempSteganoChar);
i += 1;
}
bmap_unlock(TempSteganoBmpPtr);
return(TempSteganoStrPtr);
}


usage example:
Code:

string RString;
bmap codedbmp=<coded.tga>;
panel codpan{
pos_x=256;
pos_y=256;
bmap = codedbmp; //show test image
flags = refresh,d3d,visible;
}
text teststr{
pos_x = 0;
pos_y = 0;
font = skinc_font;
string = RString; //show test string
flags = visible;
}
...
str_cpy(RString, "Multiline test\nof c-script stegano.\nstring ends with zero char\0");
SteganoEncrypt(codedbmp, RString); //Encode
str_cat(RString, "\n\n"); //if all Ok you have 2 identical groups of 3 lines
str_cat(RString, SteganoDecrypt(codedbmp)); //and decode our test message
...


For good results you have to experiment with image (image background hasn't be white, for example )
And I don't check length of string against image size, so be careful or provide this simple check.

Re: Snippets: Cryptography with 3dgs: STEGANO [Re: Lion_Ts] #57584
10/14/05 01:57
10/14/05 01:57
Joined: Dec 2001
Posts: 2,172
Portugal - Brazil
XNASorcerer Offline
Expert
XNASorcerer  Offline
Expert

Joined: Dec 2001
Posts: 2,172
Portugal - Brazil
I made a program for a client using this metod 'steganography' in vb a while ago. But I lost the source of it.

Re: Snippets: Cryptography with 3dgs: STEGANO [Re: XNASorcerer] #57585
10/14/05 18:04
10/14/05 18:04
Joined: Aug 2002
Posts: 2,692
California, USA
bupaje Offline
Expert
bupaje  Offline
Expert

Joined: Aug 2002
Posts: 2,692
California, USA
Had never heard of 'steganography' before this -took a look at Wikipedia; interesting stuff.


Find me at: |Stormvisions| Twitter|
Re: Snippets: Cryptography with 3dgs: STEGANO [Re: bupaje] #57586
10/15/05 14:55
10/15/05 14:55
Joined: Jul 2005
Posts: 81
DA_Chegga Offline
Junior Member
DA_Chegga  Offline
Junior Member

Joined: Jul 2005
Posts: 81
Bupaje, you could download Steganos Security Suite for playing around with. Pretty nice program. ( www.steganos.com )
I use it and I like it because it keeps my Data safe^^

It can also create huge passwords which are extremely complicated like this one:
!&Mb*&8jA&.MDC6BLG7JtSW6dq.m0jrYsvi&f#&_VJ_FhxEa;TBFf%ya*5itp4NLQ$r$XAbP+*Qz7b%ef2iOMM7§zC?e&mB6J*Co

Last edited by DA_Chegga; 10/15/05 15:13.

Moderated by  adoado, checkbutton, mk_1, Perro 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1