Şimdi Ara

kapandı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
26
Cevap
0
Favori
1.935
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • kapandı



    < Bu mesaj bu kişi tarafından değiştirildi bilgisayarmüh -- 14 Haziran 2005, 11:42:47 >



  • bu tür formatların sonuna datayı direkt şifreleyip eklersen viewer ve editor programlarında sorun çıkarmadan çalışacaktır.
  • Bahsettiğin işe watermarking deniyor. bmp imgelere bilgi gömmek oldukça kolay; en değerliksiz birkaç biti kullanarak bilgi saklayabilirsin. Ancak bu gibi yöntemler sıkıştırmaya karşı dayanıksızdır. Watermarking oldukça güncel bir konu google da basit bir arama yaparsan binlerce kaynak ve yüzlerce kod bulabilirsin.
  • quote:

    Orjinalden alıntı: HYP

    Bahsettiğin işe watermarking deniyor. bmp imgelere bilgi gömmek oldukça kolay; en değerliksiz birkaç biti kullanarak bilgi saklayabilirsin. Ancak bu gibi yöntemler sıkıştırmaya karşı dayanıksızdır. Watermarking oldukça güncel bir konu google da basit bir arama yaparsan binlerce kaynak ve yüzlerce kod bulabilirsin.

    Aslında konuyu biraz açsak daha iyi olacak gibi. benimde vaktim çok kısıtlı ama bildiğim kadarıyla.ve bilgiyi paylaşmak adına. biraz yazayım
    Şimdi aslında Steganografi ile watermark arasında fark var. watermarkta veride, veri dediğimiz resim veya medya(video audio) dosyasında veri gizlendiği zaman datanın boyutunda değişiklik olur. ve datanın boyutu büyür. ve watermarktaki amaç telif hakları korumaktır daha çok ticari anlamda kullanılır. ve verinin bozulması istenmez bu nedenle dataya ek yük getirilir. Steganografi de ise asıl amaç veriyi gizlemektir. ve bir medyaya dataya gizlendiği zaman boyutunda değişiklik olması istenmez. yani örneğin bir resim dosyasının içine bir text gömeriz fakat resmin boyutu değişmez. işte Steganografi budur. asıl amaç veriyi gizlemektir. ve bunu en basitinden nasıl yapılır. örneğin bmp dosyasını renk bitlerini teker teker okuyup buna mesela
    x:0 y:0 kordiantındaki bit değer FE olsun siz buna artık sizin algoritamanıza kalmaış bir bit eklersiniz. yani bu bir bit sizin şifreleyeceğiniz. metinin bir ilk biti olabilir. yada bmp'a belli aralıklarla bir byte lık değişilikte yapbilirisiniz. ve bu aralıklarla veriyi gömebilirsiniz. ee şimdi bir bitlik değişiklik yaptık ne değişti. FF oldu buradaki değer ve renkte bir bitik sapma oldu artık milyonlarca rengin içindeki bir bitlik renk sapmasınıda gözle farkedilemez. ve sonuçta hem resimde bariz bozulmada olmadan içine veriyi saklamış oluruz. aynı durum bir media içinde geçerli.

    hatta Steganografi ilk defa bir savaşta uygulanmış.diğer tüm şifrelem çeşitleri gibi. zaten Steganografi bir savaş stratejisi diyeibiliriz. çünkü şifreleme ve gizleme savaşlarda önemli rol oynar ve oynamıştır. dünyanın kaderinide bu şifre teknikleri ve bunların çözülmesi değiştirmiştir zaten. herneyse bu teknik ilk defa şöyle uygulanmış yanlış hatırlamıyrsam bir askerin kafası kazınmış ve kafasına gizli bir mesaj yazılmış sonra asker bilgini ulaştırılacağı yere gitmiş ve saçlarını tekrar kazıratak bilgiyi ulaştırmış. tabi yanlış hatılamıyorsam. sonra ne bilim. sonraları Steganografi reklam amaçlı kulanıldı ama bunu farkeken kişi çok az. hem televiyonda bilinç altına yerleiştirdi. hemde sinemalarda. eskiden makara filmi olduğu sıralarda. hani bi filmin bir saniyesini standart 25 kareden oluşurya bunun bir karesini reklama yada vb şeylere ayırırlardı. sinema sahipleri tabi bunu daha öteside var. neyse işte ne bilim 25. kareye reklam yaparlardı. buda 1000/25= 40 evet buda saniye başına 40ms eder. ve insan beyni aynı anda bir çok şeyi algılayabilir ama birşeye yoğunlaşabilir. bu sayede bazı reklamlar insanın biliç altında yer ediyor. ve buda bir reklam strajisidir. tabi biz burada daha kötü olasılıkları düşünmeyelim. aslında bu teknikler üst düzeyde kulnaılırdı. ama artık teknolijinin gelişimi ile kişisele kadar indi. çünkü hayatmızın tamamı neredeyse artık sayısal ortamda. örneğin terörist örgütleri intermet sayfalarındaki resimlerle haberleşiyor. bunların içinde çok önemli, bilgiler gizli. ve bu asla belli olabilcek bir yöntem değil. rc6 ve aes şifreleme algoritmaların çözmekten daha güç işler.ama tabiki bunalr çözülüyor. geçmişte örmek çok savaş alanıda yani. samanlıkta iğne aramek gibi birşeyde diyebiliriz. tabiki bu algoritmaya göre değişir.neyse bilgi paylaşmak içindir. Arkdaşım sanda fikir verdim am sen zatn bunu yapbiliyormuşsun. benim ise beynim böyle birşey düşünüp uygulamayacak kadar yorgun malum öss ye hazırlanıyorum. ama biraz uğraşırsan sanırım kendi başınada yapabilrsin gibi geliyor bana.



    < Bu mesaj bu kişi tarafından değiştirildi drony -- 15 Mayıs 2005, 14:13:11 >




  • Doğru anladıysam eğer Çeşitli sıkıştırma algoritmaları ilede alakalı bu konu bir zaman elime bir Jpg virusunun! nasıl yazıldığına ilişkin kodlar geçmişti!. Gerçekten çok ilginç bir husus. Veriyi datanın sonuna ekleyerek basit şekilde yapılabilir zaten ama galiba asıl olay içine belli bir şifreleme sistemi ile dağıtmakta :)
  • quote:

    Orjinalden alıntı: bilgisayarmüh

    ewet arkadaşlar delphi de steganografi projem üzerinde çalışıyorum.Steganografi resim arkasına veri gizlemek anlamına gelir şu anda bmp resimlere mesaj gizleme aşamasındayım resime ses ve resim gizlemem gerekiyo bu konu hakkında bilgisi olan arkadaşlar varsa yardımcı olurlarsa sevinirim kaynak kitap,kaynak kod vs...



    Merhaba bilgisayarmüh arkadaşım.

    bu konu ile ilgili seneler önce kullandığım bir program vardı adı Camouflage bu program ile resim içerisine txt,mp3,tekrar resim, vs herşey gizleyebilirsinz. Tabi bu program ile Hertürlü dosyanın içerisine hertürlü program saklamak mümkün şifre koyabiliyorsunuz. kimse göremesin ve açamasın diye.. Aşağıdaki linkten indirebilirsiniz.

    http://camouflage.unfiction.com/FAQ.html




  • quote:

    Orjinalden alıntı: Aspci79

    Doğru anladıysam eğer Çeşitli sıkıştırma algoritmaları ilede alakalı bu konu bir zaman elime bir Jpg virusunun! nasıl yazıldığına ilişkin kodlar geçmişti!. Gerçekten çok ilginç bir husus. Veriyi datanın sonuna ekleyerek basit şekilde yapılabilir zaten ama galiba asıl olay içine belli bir şifreleme sistemi ile dağıtmakta :)

    sıkıştırma ile alakası yok
  • steganografi ve kriptoloji benim de cok ilgimi cekiyor hatta kriptoloji uzerine bir tez calismasi yapmak istiyorum ama pek yemiyor :)
    Steganografi cok populer bizim uyduruk chip dergisinde falan bile konu edilmisti.
    Istedigini daha acik yazarsan yardimci olmaya calisiriz. LSB'lerin MSB oldugu ender alanlardan biridir
  • biraz amatörce olcak ama ben bunu ms-dos ta bile yapıyom

    copy /b /v /-y birinci.bmp+ikinci.uzantı sonuç.bmp

    yapınca birleşiyolar resim açılıyo kullanıcı bişey farketmiyor ama boyut alıp gidiyo
    her dosyadada çalışıyo .exe .mp3 .gif .jpg .bmp ...

    birleşimde sorun yok ama ayırma baya problem oluyo

    ama sen proje olarak yapıcaan için işine yaramı bilmem.
  • quote:

    Orjinalden alıntı: drony


    quote:

    Orjinalden alıntı: Aspci79

    Doğru anladıysam eğer Çeşitli sıkıştırma algoritmaları ilede alakalı bu konu bir zaman elime bir Jpg virusunun! nasıl yazıldığına ilişkin kodlar geçmişti!. Gerçekten çok ilginç bir husus. Veriyi datanın sonuna ekleyerek basit şekilde yapılabilir zaten ama galiba asıl olay içine belli bir şifreleme sistemi ile dağıtmakta :)

    sıkıştırma ile alakası yok


    Veriyi sıkıştırırken Stream içerisindeki Byte olarak yer değiştiren bir algoritma örneği vardı bende yani mesela elimizde Bir *.Dat dosyası var bunu sıkıştırırken İçeriğindeki String boşlukları tarayıp yeni bir Stream de birleştiriyordu.(Byte cinsinden) Birleştirme stilini de yine dosya içerisine Gizliyordu yani değişim sıralarını ! Açarken Buradan okumak için Bende benzer düşündüm yani mesela resim dede benzerlik kurulabilir.BMP neyse yine ama JPG nin zaten sıkışmış bir format olması sanırım sorun olan kısım.




  • quote:

    ya işte burda öyle tam anlamıyla sıkıştırma mantığı değil buradaki mantık şöyle bak anlatayım
    örnek olarak
    8 bitlik bir resimde pikseller 1 ve 0 lardan oluşur bu bitler 2^8 256 renk meydana getirir.
    şimdi
    10110111 sayısını ele alalım .bu ayı onluk düzende 183 dür.sondaki bit 1 veya 0 olması değer çok fazla değiştirmeyecek ve gözle görülür bir değişikliğe neden olmayacak.Ne olacak son bit 0 olsa 182 olacak.İşte biz bu tür bitlere lsb bitler diyoruz.amacımız bu bitler yerine gireceğimiz datanın verilerini girerek datamızı gizlemiş olacaz..
    bu olay bmp de kolay ..
    ancak jpeg,jpg,gif olayına girince ve girdiğimiz verilerin boyutu arttığı resim veya ses saklama olayı işimiz güçleşiyo..

    Ben bu konuda görüşlerinizi bekliyorum özellikle image processing konusunda ve bu resim incelemeler farklar felam konusunda acemiyim yardımcı olursanız sevinirim..Zaten o mantığı anlarsam (rgb) mantığı felam veri saklama işi kolay..


    Anlatılmak istenen şeyi çok iyi anladım ben inan iyi niyetle elimdeki kod örneklerini karıştırdım ama istediğin tarz bişeye rastlayamadım.Benim de daha önce bu tarz bir çalışmam hiç olmadı.Ama rastlarsam buraya eklerim :) Fikir olarak Borland Delphi ve C++ JPEG unitlerine bir göz gezdir istersen belki sana fikir verebilir biraz olsun :)
    Kolay gelsin ...




  • yav bilgisayarmüh kardeş kusura bakma sana cevap yazmak yerine soru soruyoz delphide ses dosyasını nasıl işleyebiliyorsun bunun hakkında birşeyler söyleyebilirmisin benim de projem var ses içine ses gizleme ama bu konuda pek bilgim yok internette 2 gündür arıyom ama ne steganografi ne ses işleme hakkında bi döküman bulamadım bi yerlerden başlasam devamı gelecek te başlayamıyoz bilen birileri birşeyler söylerse iyi olur hadi
    sizlere kolay gele...
  • @bilgisayarmuh

    özür dilerim arkdaşım haddime düşmeyerek söylüyorum bu beni bile çok aşıyor bu jpeg için veri gömme işi.
    bmp yada pcm wave tamam ama. jpeg güç. şimdi zaten bmp ve wave yerleştimek şöyle bir düşündümde bayağı basit zaten evde şuan bitmap üzerinde uğraşıyorum bitleri dizdimde daha çıkaramadım. birazda onla uğraştımmı program bitti demektir. ama vakit bulduğumda bitiricem. sen elindeki örmneği bizlerle paylaşırsan sevinirm.
    şimdi jpeg bitmap gibi değil bitmap adı üzerinde bit haritası bitler olduğu gibi diziliyor hiçbir sıkıştırma vs. yok karmasşık stream olayı yok istedeğin yerinde değişkilk yap yapı bozulmaz direk renk biti olarak görürür. tabi headara dokunmak yok. orası decoderin tanıması için lazımçünkü . artık bmp için ne decoderıysa.

    şimdi jpegte değişkenlerimiz neler.
    öncelikle senin jpegin hangi formatta olduğunu tanıman gerekir.
    tabiki farklı sıkıştırma tabloları farklı quantization varda var.

    şimdi öncelikle pixel format olayı var yuv1.11 yuv 1.22
    progresive yap waveless sıkıştıma var hani bazı jpeg dosyları tam ekran yukarıdan aşağı scan yapılırya bilinki o wavelet sıkıştırma kullanılmış. bunlar drawing method.buda dahil peki diğeri ne dir tabiki blocklar halinde 8*8 64*64 gibi bloklar halinde çizilir bir method daha var ama anlamıyorum yani ne olduğunu bilmiyorum pek.ama dikkat ettiğimde önce uzak bitler çiziliyor ekrana daha sonra yüksek sıkıştırılma yapılmış bitler çiziliyor ekrana buda sıkıştırma methodu ama adını yine bilmiyorum. (ekisn huffmandır bu)

    sonra huffman dedilen denyonun sıkıştırma ve optimize durumu var. bunların hepsine göre programını tekrar hazırlayacaksın
    dedimya renk formatları var
    rgb - grayscale(monochrome) - Y_Cb_Cr -cmyk ... gibi renk tabloları var ki senin en çok üzerine eğilmen gereken konu. benim bildiğim bu kdar kesinlikle daha fazlası vardır ama. neyse canını daha fazla sıkmim :)

    vaktim olursa biraz üzerinde gidicem bunların ama.
    konuyu biraz daha açayım bari divxte jpeg formatından türemiştir ee divxte mpegten türemiştir.
    peki neden divx yada mpegte bu kaliteyi elde edemiyoruz. tabi burada olay birazdaha farklı ama biz gelelim divxteki bloklaşma sorununa sorun jpegten bildiğimiz blok yapınsından oluşuyor tabiki saniyede ortalama 25 frame in düşük konfigrusyonlu pcde açılması için blok method tercih ediliyor aslında blcokalra ne kadar fazla yol ayırırsak işlemciden okdar yiyor haliyle ama şöyle bir durum var. eğer işlemcilerimiz çok çok hızlı olsaydı. wavelet yapıdaki divx leri blocklaşma olmadan izleme imkanımız olacaktı.en kötü ihtimal takılma olacaktı. öncekji frame bakar bakar duruduk artık:) ama bunu engelleyen tek neden işlemciler. ya divx ise gerçekten mucize bir durum.


    konuyu biraz toplarsak sana yukarıda saydığım her yöntem ve method için ayrı ayrı stegeno kod altyapısını hazırlaman olcaktır. tabi üsteklerin hepsi etki etmiyor ama bu başlıbaşına çok zor bir iş bence. tabi benim için. mutlaka çok iyi arkdaşlar vardır burada. ben sadece biraz daha ufkunu açmak adına yazdım okadar. ama istersen sana jpeglib gönderebilirim.
    unutma her sıkıştırma tekniği ve renk tablosu için ayrı kod hazırlaman gerek tabi birde programın bunu tanıyacak ona göre değerlendirecek falan. en azından şuna sevin jpegte crc yok. :) yoksa bitmiştin en birde onla uğraş işin yoksa.


    sonra neden jpeg tercih ettin jpeg başına bmp den daha fazla veri sıkıştırabilceğini düşündüğü varsıyorum çünkü sıf çeşit olsun diye böyle bir işkenceye girilmez. :)

    aaa bak bide ne geldi aklıma ama artık günümüzde pek gerek kalmaz. birde downsampling den olayı vardır hani mp3tende biliriz. yok ama zaten ayı progamla açıcan neyse unut bunu :)

    şimdi daha fazla veri sıkıştırıcam diyorsun evet haklsın ama nasıl olcak o iş kafam durdu biraz. farkınmısın dimi resmi tekrar encode yapman gerekecek bmp gibi teker teker gömemeyecesksin. bu yüzden sana jpeg encoder lazım. jpeg debug edilirken sende araya serpiştircen kodları. off gerçektende zor iş yaws. kardeş kusura bakma senin morali bayağı bozdum ama ne bilim bana göre gerçkten çok fazla.
    tabii bu benim mantığım. yazdıklarımda bir hata varsa lütfen düzeltin. sonuçta bilgi yanlış olma ihtimalide var dimi.?

    http://k.domaindlx.com/dronyx/pasjpeg.z




  • ohooo
    quote:

    seni bile aşıyorsa
    hiç uğraşmayalim yahu
  • Belki işine yarar. jpeg'in sıkıştırma formülü.

    burada C(x), x=0 => 1/kökiki, x=diger => 1.


  • 8x8 bloklarin her birine bu donusum uygulandiktan sonra quantalama uygulayip 0 lari huffman yapip sikistiriyosun. geriye donusumde ayni islemlerin tersi. ama cok amatorce :)
  • sen algoritmami gelistirmeye calisiyorsun yoksa uygulamami hala anlamadim.
    algoritma gerekli ise temeli yukardaki gibi olan birseyi gelistirip yazabilirim sana, ama kod ise istedigin delphi de yardimci olamam :(
  • @Bilgisayarmuh kardeşim verdiğini örneği inceledim. TImage sınıfı kullanarak resimi okumuşsun öneri olarak JPEG ünitini kullanmanı önerebilirim.

    JPG -> ünit

    TJPEGimage -> Nesne

    bu şekilde hafızada JPeg formatlı resmi image kullanmadan işleyebilirsin BMP ye yaptığın olayı sanırım benzer şekilde uygulanabilir gibi geldi bana ama denemedim maalesef. Bi dene...Örn.

    var
    image:Tjpegimage;
    begin
    image:=image.create;
    image.loadfromfile("resim")
    ...

    gibi pixele göre tarama yapmayı bir dene istersen :)
  • biraz uğraştırdı ama oldu.
    1 bit ile 24 bitlik tüm bitmap dosyalarına istediğini gömebilirsin. varmı dahası:)
    biraz aceleye geldi. çok if'li ifade kullandım artık toparlasın biraz birazda hatalar için özelliştirme falan yaparsın. artık yazmışken bunu yeni projemde kullanayım bari

    ayrıca arkadaşlar beta tester arıyorum.
    haftaya kadar vakit bulursam bitecek olan bir programım var. hata olduğunu sanmıyorum ama:) çok sıkı çalıştım üzerinde eksik bir şey olsun istemiyorum yardımcı olacak arkdaşlara şimdiden thx. sadece yazılm kullnaıp hata arıyacaksınız okadar:)

    galiba senin tezindi bu umarım mezun olursun.


    indir







    {Drony
    www.codeinside.gen.ms
    www.deu3.gen.ms.
    www.dronymc.cjb.net
    dronyx@gmail.com
    }
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Buttons, Math, ComCtrls, ExtDlgs, Menus, ExtCtrls,
    RbDrawCore, RbButton, Gauges;

    type
    TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    bmp_opend: TOpenPictureDialog;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Gauge1: TGauge;
    Button1: TButton;
    Button2: TButton;
    Label2: TLabel;
    Button4: TButton;
    attfile: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    procedure Shape3ContextPopup(Sender: TObject; MousePos: TPoint;
    var Handled: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure attfileMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;


    type TRGBcarr = array[1..3] of byte;
    type Tarr = array[0..65536] of TRGBcarr;
    type Parr = ^Tarr;

    implementation



    {$R *.dfm}

    var tbmp : TBitmap;
    SourceBmp,SourceFile : String;
    fattackedbyte:integer;
    //*********************

    x,y,i,ct,cbit,l,max:integer;
    df:File;
    buffer:byte;
    cdb,cdo:boolean;
    arr:Parr;
    RGBcarr:TRGBcarr;
    fsize:longword;
    fname:string;
    fs:array[1..4] of byte;
    function takefilesize(filename: String): string;
    var
    dSize: Integer;
    dFile: THandle;
    strSize: String;
    begin
    dFile := CreateFile(PChar (filename),0,FILE_SHARE_READ, nil,OPEN_EXISTING, 0, 0);
    dSize := GetFileSize(dFile, nil);
    CloseHandle(dFile);
    if dsize =-1 then
    Result := 'Geçersiz Dosya'
    else
    Result := floattostr(dsize)+strsize
    end;

    procedure moveme;
    begin
    ReleaseCapture;
    Form1.Perform($0112,$f012,0);
    Application.ProcessMessages;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    tbmp := TBitmap.Create;
    AutoSize:=true;
    DoubleBuffered:=true;
    end;

    procedure TForm1.Exit1Click(Sender: TObject);
    begin
    application.Terminate;
    end;

    procedure TForm1.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    moveme;
    end;

    procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    moveme;
    end;

    procedure TForm1.Shape3ContextPopup(Sender: TObject; MousePos: TPoint;
    var Handled: Boolean);
    begin
    moveme;
    end;

    procedure TForm1.Button1Click(Sender: TObject);

    begin
    if FileExists(bmp_opend.FileName) then begin
    try
    if (tbmp.Width*tbmp.Height div 8-4 -256)<1 then raise Exception.Create('büyüde gel (dosya çok kçük)');
    if opendialog1.Execute then begin
    SourceFile := opendialog1.FileName;
    AssignFile(df,SourceFile);
    Reset(df,1);
    if FileSize(df) > (tbmp.Width*tbmp.Height*3 div 8-4-256) then if MessageDlg('Gömmek istediğiniz dosya bu image için çok büyük.Sadece bir kısmı gömülebilecek.('+inttostr( strtoint( takeFilesize(bmp_opend.FileName))-fattackedbyte )+' bytes veri kaybolacak) devam etmek istermisiniz?',mtWarning,[mbYes, mbNo],0) = mrNo then exit;

    CloseFile(df);

    max := tbmp.Width*tbmp.Height*3;

    AssignFile(df, SourceFile);
    Reset(df, 1);

    fname := ExtractFileName(SourceFile);
    fsize := FileSize(df);
    LongWord(fs):=fsize;
    ct:=0;
    l:=0;
    for x:=0 to (tbmp.Width-1) do begin
    for y:=0 to (tbmp.Height-1) do begin

    arr := tbmp.ScanLine[y];
    RGBcarr := arr^[x];

    for i := 1 to 3 do begin
    cbit := 7 - (ct mod 8);

    if (cbit=7) and (not eof(df)) and (ct>2079) then BlockRead(df,buffer, 1);
    if (cbit=7) and (ct<=31) then begin
    Inc(l);
    buffer := fs[l];
    end;
    if (cbit=7) and (ct>31) and (ct<=2079) then begin
    Inc(l);
    buffer := Byte(fname[l-4]);
    if l = (length(fname)+5) then buffer:=14;
    end;
    if Power(2,cbit)<=buffer then begin
    buffer:=buffer-Trunc(Power(2,CBit));
    cdb:=true;
    end else cdb:=false;

    cdo:=Boolean(RGBcarr mod 2);
    if cdo>cdb then Dec(RGBcarr);
    if cdo<cdb then Inc(RGBcarr);
    inc(ct);
    end;
    arr^[x] := RGBcarr;
    end;

    Gauge1.Progress:=trunc(((ct+1)/max)*100);
    application.ProcessMessages;
    end;

    CloseFile(df);
    tbmp.SaveToFile(sourcebmp);
    end;
    except
    raise Exception.Create('bi sorun var . yani dosya bozulmuş olabilir. yada bu bir bitmap dosyası değil.');
    end;end else Button4.OnClick(Sender); end;


    procedure TForm1.Button2Click(Sender: TObject);

    begin
    if bmp_opend.Execute then begin
    try
    sourcebmp:=bmp_opend.FileName;
    tbmp.LoadFromFile(sourcebmp);
    tbmp.PixelFormat := pf24bit;
    max := tbmp.Width*tbmp.Height * 3;
    ct := 0;
    l := 0;
    buffer := 0;
    fname := '';
    for x := 0 to (tbmp.Width - 1) do begin
    for y := 0 to (tbmp.Height - 1) do begin

    arr := tbmp.ScanLine[y];
    RGBcarr := arr^[x];

    for i := 1 to 3 do begin
    cbit := 7 - (ct mod 8);
    cdo := Boolean(RGBcarr mod 2);

    if cdo then buffer := buffer + Trunc(Power(2, cbit));
    if ct = 32 then fsize := LongWord(fs);
    if ct = 2080 then begin
    if FileExists(ExtractFilePath(sourcebmp)+fname) then
    if MessageDlg('File ''' + fname + ''' adlı dosya zaten var. Yeniden adlandır?',mtWarning,[mbYes, mbNo],0) = mrNo then exit;
    AssignFile(df, ExtractFilePath(sourcebmp)+'extracted_'+fname);
    Rewrite(df, 1);
    end;
    if (cbit=0) and (ct>2079) and (ct<=((fsize + 4 + 256)*8-1)) then begin
    BlockWrite(df,buffer,1);
    buffer:=0;
    end;
    if (cbit=0) and (ct>31) and (ct<=2079) then begin
    if buffer=14 then l:=10;
    if l <> 10 then fname := fname + Char(buffer);
    buffer := 0;
    end;
    if (cbit=0) and (ct<=31) then begin
    Inc(l);
    fs[l]:=buffer;
    buffer:=0;
    end;
    Inc(ct);
    end;end;
    Gauge1.Progress:=trunc(((ct+1)/max)*100);
    application.processMessages;
    end;
    CloseFile(df);
    except
    raise exception.Create('dosyayı çıkaramıyorum :) ');
    end;
    end;
    end;

    procedure TForm1.Label2Click(Sender: TObject);
    begin
    Application.Terminate;

    end;

    procedure TForm1.Button4Click(Sender: TObject);
    begin
    if bmp_opend.Execute then begin
    sourcebmp:=bmp_opend.FileName;
    tbmp.LoadFromFile(sourcebmp);
    tbmp.PixelFormat := pf24bit;
    fattackedbyte:=tbmp.Width*tbmp.Height * 3 div 8 - 4 - 256;
    attfile.caption:= 'Gömülebilecek max. dosya boyutu: '+inttostr(fattackedbyte div 1024)+'KB ('+IntToStr(fattackedbyte)+ ' Bytes)';

    end;
    end;

    procedure TForm1.attfileMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    moveme;
    end;

    end.



    < Bu mesaj bu kişi tarafından değiştirildi drony -- 26 Aralık 2005 11:56:10 >




  • Ya zahmet olmuş baya cidden ama zaten BMP de yapılmış zaten bu olay :) JPG için kassaydın bari
    Ama dosya gömme tarafı güzel olmuş ;)
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.