Cài đặt chức năng lấy thụng tin từ ảnh

Một phần của tài liệu Một số phương pháp giấu tin trong tài liệu số hóa (Trang 69)

Lớp clsLSB: Cú mộthàm “ShowMess” lấy ra byte được thay thế trong từng byte ảnh Begin

- Input: InputStream, mess, i=0, j=0 - i là chỉ số của mảng byte hiddenMessage - j là chỉ số của từng bit trong hiddenMessage(i) While chưa đọc hết file ảnh

+ ByteĐọc=InputStream.ReadByte + If chưa đọc hết kớ tự trong mess then

*Lấy ra bit ở vị trớ thứ 0 của byte ảnh. Bit=Extract(bytedọc,0)

*Thay thế Bit vừa lấy ra ở trờn vào vị trớ j của mess(i). Replace(Hidemes(i),j,Bit)

*Tăng j lờn 1: j=j+1

*Nếu thay thế hết cỏc bit của 1 kớ tự trong Hidemess tức là j=7 thỡ khởi tạo lại j=0 và i=i+1 tức là thay thế kớ tự tiếp theo

End if - Loop

Return hideMess -End

Cú hàm lấy thụng tin được ẩn từ file ảnh: Đầu vào là 1 luồng chứa byte ảnh và chiều dài của thụng tin muốn lấy ra. Kết quả trả ra là mảng thụng tin đó được giấu trong file ảnh:

'Hàm lấy ra byte được thay thế trong từng byte ảnh

'Input: 1 luồng chứa byte ảnh và chiều dài của thụng tin muốn lấy ra 'Output: Mảng byte của thụng tin muốn lấy ra (hidden)

PublicFunction showMess(ByVal instream As FileStream, ByVal length AsInteger) AsByte()

Dim hideMess AsByte() = NewByte(length) {} 'Kieu byte ko co Constructors

Dim i AsInteger = 0

Dim j AsInteger = 0

Dim byteRead AsInteger

'Dim leng As Long = instream.Length

DoWhile i < length

byteRead = instream.ReadByte

bit = ClsBit.Extract(byteRead, 0)'Lấy ra bit tại vị trớ 0 của byte ảnh

ClsBit.Replace(hideMess(i), j, bit)' Đưa bit đú vào vị trớ thứ j của hideMess(i) j += 1 If j = 8 Then j = 0 i += 1 EndIf Loop Return hideMess EndFunction

Lớp clsStegoFile: Với chức năng chớnh là lấy được thụng tin ẩn trong file ảnh.Đầu vào là một file ảnh dạng bitmap(.bmp) đó chứa tin trong đú và cựng với mật khẩu dựng để mó hoỏ dữ liệu.Đầu ra là thụng tin đó bị giấu trong file ảnh và hiện thị nú lờn.

Thuật toỏn:

Hỡnh 3.3: Lưu đồ thuật toỏn giải mó thụng tin

Begin

- Input: InputStream, mess, i=0, j=0 - i là chỉ số của mảng byte hiddenMessage - j là chỉ số của từng bit trong hiddenMessage(i)

While chưa đọc hết file ảnh + ByteĐọc=InputStream.ReadByte + If chưa đọc hết kớ tự trong mess then

Bit=Extract(bytedọc,0) *Lấy ra bit ở vị trớ thứ 0 của byte ảnh.

Replace(Hidemes(i),j,Bit) *Thay thế Bit vừa lấy ra ở trờn vào vị trớ j của mess(i). *Tăng j lờn 1: j=j+1

*Nếu thay thế hết cỏc bit của 1 kớ tự trong Hidemess tức là j=7 thỡ khởi tạo lại j=0 và i=i+1 tức là thay thế kớ tự tiếp theo End if

Loop

-Buffer= HiddenMess „Mảng byte tin bị giấu

-Giải mó mảng byte tin đú cựng với mật khẩu buffer = lsb.ClsCryptoHelper.Decrypt(buffer, Pass) - output: HiddenMessage

End.

Mục đớch: Là để lấy lại những thụng tin đó giấu trong một file ảnh.

Xõy dựng phương thức ExtractHiddenMessage: Phương thức này ngược với phương thức giấu thụng tin CreateStegoFile ở trờn. Đầu tiờn sẽ phải đọc 4 byte đầu tiờn trong phần Data Pixel để lấy về chiều dài của nội dung thụng tin giấu trong ảnh. Sau đú mới đọc tiếp nội dung của thụng tin đó giấu. Với message là một chuỗi

'Lấy ra message được giấu trong file, với Message ở dạng xõu.

PublicFunction ExtractHiddenMessage() AsString

Dim inStream As FileStream = New FileStream(stegoFile, FileMode.Open, FileAccess.Read)

Dim offset AsInteger = 54

Dim lsb AsNew ClsLSB

inStream.Seek(offset, SeekOrigin.Begin) 'Lấy ra 4 byte chứa chiều dài của Message

Dim bLen() AsByte

bLen = lsb.showMess(inStream, 4)

bLen = ClsCryptoHelper.Decrypt(bLen, passWord)

Dim len AsInteger

len = BitConverter.ToInt32(bLen, 0) 'Lấy ra nội dung của message

'inStream.Seek(offset + 32, SeekOrigin.Begin)

'32 byte đầu tiờn của phần Data pixel chứa độ dài của Message(gồm 4 byte) 'vỡ mỗi byte của ảnh chỉ chứa 1 bit của Message.

inStream.Seek(offset + 4 * 8, SeekOrigin.Begin) 'bLenBox(inStream.ReadByte)

Dim buffer AsByte()

Try

buffer = lsb.showMess(inStream, len)

Catch ex As Exception

MsgBox("File ảnh này khụng được giấu thụng tin hoặc mật khẩu sai.")

Return""

EndTry

'buffer = noi2MangByte(bLen, buffer)

buffer = ClsCryptoHelper.Decrypt(buffer, passWord) 'Dim byteMessage As Byte() = GetByteMessage(buffer)

Dim unicode As UTF8Encoding = New UTF8Encoding(True) hidenMessage = unicode.GetString(buffer)

inStream.Dispose()

Return hidenMessage

EndFunction

Với message là một mảng cỏc byte

'Lấy ra message giấu trong file, với Message ở dạng mảng byte.

PublicFunction ExtractHidden() AsByte()

Dim inStream As FileStream = New FileStream(stegoFile, FileMode.Open, FileAccess.Read)

Dim offset AsInteger = 54

Dim lsb AsNew ClsLSB

inStream.Seek(offset, SeekOrigin.Begin) 'Lấy ra 4 byte chứa chiều dài của Message

Dim bLen() AsByte

bLen = lsb.showMess(inStream, 4)

bLen = ClsCryptoHelper.Decrypt(bLen, passWord)

Dim len AsInteger

len = BitConverter.ToInt32(bLen, 0) 'Lấy ra nội dung của message

inStream.Seek(offset + 4 * 8, SeekOrigin.Begin)

Dim buffer AsByte() = {}

Try

buffer = lsb.showMess(inStream, len)

buffer = ClsCryptoHelper.Decrypt(buffer, passWord)

Catch ex As Exception

MsgBox("File ảnh này khụng được gấu thụng tin hoặc mật khẩu sai.")

Return buffer ExitFunction EndTry inStream.Dispose() Return buffer EndFunction

- Lớp ClsCryptoHelper:Cú mộtphương thức giải mó thụng tin giấu được xỏc nhận bằng Password

Public Shared Function EncryptDecrypt(ByVal mess As Byte(), ByVal pass As String) As Byte()

'Dim passwordLength As Integer = pass.Length

Dim salt As Byte() = {0, 5, 1, 2, 1, 9, 8, 5} '8 bytes ngẫu nhiờn

'Dựng lớp Rfc2898DeriveBytes làm trung gian để chuyển Password từ dạng chuỗi sang dạng mảng cỏc byte

Dim retMessage As Byte() = New Byte(mess.Length) {} Try

Dim key As Byte() = pdb.GetBytes(64) 'pdb.getBytes(128)

Dim i As Integer

For i = 0 To mess.Length - 1 Dim index As Integer index = 1 Mod key.Length

retMessage(i) = CByte(key(index) Xor mess(i)) Next

Catch ex As Exception End Try

Return retMessage End Function

3.3.3 Thiết kế giao diện và chức năng của chƣơng trỡnh

Sau khi chọn chức năng là giấu một thụng điệp hay một file văn bản hay là một file ảnh thỡ bạn chọn vào từng chức năng trong menu chớnh.

Hỡnh 3.4: Giao diện chớnh của chương trỡnh

Hộp thoại tiếp theo sẽ mở ra.

Quỏ trỡnh giấu thụng điệp trong ảnh thực hiện qua cỏc bước sau :

- Chọn ảnh gốc để giấu thụng điệp (ảnh sẽ được hiển thị ở Picture box Ảnh gốc) - Nhập thụng điệp cần giấu trong ảnh

- Chọn đường dẫn lưu ảnh đó được giấu tin trong đú - Thiết lập mật khẩu

- Xỏc nhận mật khẩu (Nhập lại mật khẩu đó thiết lập ở trờn)

Sau khi nhấn vào nỳt Hide chương trỡnh sẽ thực hiện giấu thụng điệp vào trong ảnh và hiển thị thụng bỏo thành cụng (Ảnh sau khi được giấu tin vào hiển thị ở Picture box Ảnh chứa thụng điệp)

Hỡnh 3.6: Giao diện lấy thụng điệp từ ảnh

Ảnh sau khi giấu tin được gửi đi bờn nhận nhận ảnh và thực hiện quỏ trỡnh giải mó (lấy thụng điệp được giấu trong ảnh)

- Chọn file ảnh vừa nhận được (ảnh hiển thị ở Picture box Ảnh hiển thị) - Xỏc nhận mật khẩu

Khi nhấn nỳt Show chương trỡnh thực hiện kiểm tra mật khẩu nếu đỳng sẽ thực hiện giải mó và đưa ra thụng điệp được giấu trong ảnh, nếu mật khẩu sai sẽ cú thụng bỏo để nhập lại mật khẩu)

Hỡnh 3.7: Giao diện giấu file văn bản trong ảnh

Quỏ trỡnh giấu file văn bản được thực hiện như sau:

- Chọn ảnh gốc để giấu file văn bản (ảnh hiển thị ở Picture box Ảnh gốc) - Chọn file văn bản cần giấu

- Chọn đường dẫn lưu lại ảnh đó giấu file văn bản - Thiết lập mật khẩu

- Xỏc nhận mật khẩu ( Nhập lại mật khẩu đó thiết lập ở trờn)

Sau khi nhấn nỳt Hide chương trỡnh thực hiện quỏ trỡnh giấu file văn bản vào trong ảnh (Ảnh sau khi đó giấu file văn bản được hiển thị ở Picture box Ảnh chứa file text)

Sau khi nhận được ảnh chứa file văn bản của bờn gửi. Bờn nhận thực hiện quỏ trỡnh giải mó như sau:

- Chọn file ảnh vừa nhận được từ bờn gửi - Nhập mật khẩu

- Chọn đường dẫn lưu lại file văn bản được giấu trong ảnh

Sau khi nhấn nỳt Show chương trỡnh kiểm tra mật khẩu nếu đỳng thỡ thực hiện giải mó và đưa ra nội dung của file văn bản được giấu, nếu sai sẽ cú thụng bỏo để nhập lại mật khẩu.

KẾT LUẬN

Sau một thời gian học tập và tỡm hiểu, dưới sự hướng dẫn tận tỡnh của thầy giỏo ThS. Lờ Đắc Nhường cựng sự giỳp đỡ của cỏc thầy cụ bộ mụn tin trong trường, trong quỏ trỡnh thực hiện luận văn tốt nghiệp, luận văn đó được hoàn thành.

Trong luận văn này,em đó trỡnh bày một số khỏi niệm liờn quan tới việc che giấu thụng tin núi chung, cụ thể hơn là giấu thụng tin trong ảnh số và cũng trỡnh bày một thuật toỏn giấu thụng tin trong ảnh đen trắng. Trờn cơ sở đú phỏt triển thuật toỏn giấu tin trong ảnh màu và ảnh đa cấp xỏm.Với thuật toỏn giấu tin trong ảnh màu thỡ tớnh vụ hỡnh của thụng tin sau khi giấu được đảm bảo, thụng qua việc chọn m,n đủ lớn những biến đổi khụng gõy ra sự chỳ ý đỏng kể nào. Ảnh sau khi giấu tin sẽ ớt xuất hiện những điểm ảnh cú màu sắc khỏc so với cỏc điểm ảnh xung quanh và với thị giỏc của con người thỡ khụng thể phõn biệt được sự khỏc nhau đú. Tớnh mạnh mẽ ở đõy được hiểu là ảnh sau khi đó giấu thụng tin bởi một hệ thống giấu tin nào đú cú chịu được cỏc biến đổi trờn ảnh khụng hoặc cú chịu được cỏc cuộc tấn cụng cú chủ đớch. Đối với cỏch giấu thụng tin ở đõy, thỡ ảnh sau khi giấu sẽ khụng chịu được cỏc biến đổi trờn ảnh, cỏc phộp nộn ảnh và cỏc cuộc tấn cụng cú chủ đớch gỡ. Nếu thực hiện thỡ thụng tin giấu sẽ bị mất đi tớnh chõn thực ban đầu. Do đú, phương phỏp giấu tin trong ảnh này cú tỏc dụng rất lớn trong phỏt hiện thụng tin cú bị xuyờn tạc hay khụng. Cũn độ an toàn thuật toỏn chỉ rừ trong thuật toỏn giấu tin trong khối bit của ảnh đen trắng đó chứng minh với m,n,r đủ thuật toỏn trờn đảm bảo độ an toàn rất cao.

Do kiến thức cũn hạn chế, thời gian nghiờn cứu ngắn nờn em chỉ tập trung nghiờn cứu cỏc kỹ thuật giấu tin trong ảnh BMP(bitmap). Vỡ đõy là loại ảnh được sử dụng rộng rói nhất trong giấu thụng tin mật. Trong luận văn này khụng trỏnh khỏi thiếu sút. Vỡ vậy, em mong nhận được sự gúp ý của cỏc thầy cụ và cỏc bạn.

TÀI LIỆU THAM KHẢO

[1]. Phan Đỡnh Diệu, Lý thuyết mật mó và an toàn thụng tin, NXB Đại Học Quốc Gia Hà Nội 2002

[2]. Giỏo trỡnh an toàn và bảo mật thụng tin trong cỏc hệ thống điều hành sản xuất – Sở bưu chớnh viễn thụng.

[3]. Trần Quốc Dũng, Giấu tin trong dữ liệu đa phương tiện một cụng nghệ mới trong bảo mật thụng tin.

[4]. Giấu tin trong dữ liệu đa phương tiện - Tạp trớ PC World

[5]. Lờ Quang Liờm, Bựi Thỳy Hằng, Một số cải tiến của kỹ thuật giấu dữ liệu trong ảnh, Kỷ yếu hội nghị 25 năm thành lập Viện CNTT-Hà Nội

[6]. web: http://www.bartdart.com

Một phần của tài liệu Một số phương pháp giấu tin trong tài liệu số hóa (Trang 69)

Tải bản đầy đủ (PDF)

(78 trang)