• Network
  • Security
  • Software
  • Thủ thuật
  • Tin tức
  • Video hướng dẫn
  • Donate – Mời AnonyViet ly Cafe ☕
AnonyViet
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
AnonyViet
No Result
View All Result

Thêm “tin nhắn bí mật” vào hình ảnh bằng Python: Steganography

AnonyViet by AnonyViet
in Python
Reading Time: 6 mins read
A A
19

Mục lục bài viết

  1. Tổng quan về kỹ thuật Steganography
  2. Triển khai Steganography trong Python
    1. Phương thức:
    2. Hàm Main
  3. Cách sử dụng Python thêm/đọc/xóa tin nhắn trong file ảnh
  4. Giải thưởng:

Trước khi triển khai Steganography trong python, chúng ta cần hiểu chính xác Steganography là gì.

Tham gia kênh Telegram của AnonyViet  👉 Link 👈

Steganography là phương pháp che giấu thông tin trong dữ liệu rõ. Từ steganography xuất phát từ các từ tiếng Hy Lạp: steganos có nghĩa là “được bảo vệ” hoặc “bí mật” và graphein, có nghĩa là “viết”.

Các bài viết liên quan

Cách tạo Web App Chatbot viết code tự động bằng Python 4

Cách tạo Web App Chatbot viết code tự động bằng Python

20/03/2023
Cách vượt Captcha Google bằng python 5

Cách vượt Captcha Google bằng python

23/02/2023
code cay thong noel python

Code cây thông Noel bằng Python – Merry Christmas Python

24/12/2022
Tự tạo Chatbot ChatGPT bằng Python cho riêng mình 6

Tự tạo Chatbot ChatGPT bằng Python cho riêng mình

19/12/2022

Steganography “kỹ thuật số” có thể liên quan đến việc ẩn thông tin trong hình ảnh, tệp âm thanh và thậm chí cả  video. Ưu điểm của Steganography “kỹ thuật số” so với các phương pháp truyền thống là tin nhắn có thể được ẩn trong một tệp đã được nhìn thấy bằng mắt. Ví dụ: ai đó có thể ẩn nội dung tin nhắn trong hình ảnh được đăng trên trang web. Người nhận chỉ có thể xem tin nhắn nếu biết cách giải mã nó.

Để tăng mức độ bảo mật, người gửi có thể mã hóa tin nhắn trước khi sử dụng một số kỹ thuật Steganography.

Steganography có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm gửi tin nhắn bí mật, chia sẻ thông tin nhạy cảm và đánh dấu bản quyền các dữ liệu số.

Tổng quan về kỹ thuật Steganography

Nhìn vào hệ thập lục phân (hex) của hình ảnh, chúng ta có thể thấy rằng các tệp png và jpg luôn kết thúc bằng cùng một chuỗi byte.

Nếu dùng Linux, vì vậy chúng ta sẽ kiểm tra với lệnh xxd hoặc hoặc dùng phần mềm chỉnh sửa hex HxD trên Windows.

Khi dùng lệnh Linux xem hệ hex của file jpg: xxd -i image.jpg

Kết quả sẽ giống như thế này:

..... 
0xef, 0x47, 0xf7, 0x94, 0x70, 0x51, 0xec, 0xa2, 0x9f, 0x4a, 0x7d, 0xe6, 0xa8, 0x73, 0xff, 0x00, 0xc7, 0x3f, 0xff, 0xd9

Khi dùng HxD mở hình ảnh trên Windows.

giau tin nhan vao Steganography

Dù dùng cách nào thì bạn cũng thấy FF và D9 ở cuối cùng, đối với hình ảnh, các nội dung sau FF D9 đều sẽ không được đọc. Do đó ta dễ dàng thêm tin nhắn bí mất vào sau các vị trí này.

Quá trình tương tự có thể được thực hiện với png và chúng ta sẽ thấy kết quả tương tự như thế này

... 
0xfc, 0xab, 0x38, 0x9d, 0x9d, 0xa2, 0xee, 0x3d, 0xc0, 0x77, 0xfe, 0xd1, 0xef, 0xbf, 0xe8, 0x1f, 0x77, 0xc3, 0x86, 0x0d, 0x1b, 0x36, 0x6c, 0xb8, 0x3c, 0xfc, 0x6f, 0x44, 0x3a, 0x0e, 0x7e, 0xe2, 0x52, 0x24, 0x49, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82

Đối với file png, chuỗi kết thúc bao gồm 12 byte cuối cùng là: 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82

Triển khai Steganography trong Python

Để viết script cho steganography trong python, chúng ta chỉ cần Python 3 và không cần thêm các thư viện bên.

Bước tiếp theo là tạo một từ điển (dictionary) chứa các chuỗi kết thúc cho để phân biệt giữa file .png và .jpg

file_end = {
    ".png": b'\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82',
    ".jpg": b'\xff\xd9'
}

Phương thức:

Đoạn mã  bên dưới mở một tệp ở chế độ “append binary” và ghi nội dung bí mật vào đó.

def append_secret(filename, file_extension, secret):
    with open(f"{filename}{file_extension}", "ab") as f:
        f.write(bytes(secret, encoding="utf-8"))

Hàm này sẽ kiểm tra xem đuôi file (png, jpg) của hình ảnh có trong từ điển “file_end” hay không.

Nếu đúng, hàm này sẽ mở file và đọc nó dưới dạng một mảng byte.

Sau đó, nó sẽ tìm vị trí của tệp kết thúc bằng mảng byte.

Sau khi tìm thấy vị, nó sẽ giải mã mảng byte từ vị trí đó trở đi (sau vị trí đó là tin nhắn bí mật) và trả về dưới dạng một chuỗi.

def retrieve_secret(filename, file_extension):
    if not file_extension in file_end:
        print("Format not supported!")
    else:
        with open(f"{filename}{file_extension}", 'rb') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            return buff[index+len(file_end[file_extension]):].decode('utf-8')

Hàm này sẽ đọc nội dung File ảnh, tìm vị trí kết thúc của file ảnh, xóa tất cả nội dung ở vị trí vị trí kết thúc của file ảnh ( xóa mã bí mật)

Lúc này chúng ta chỉ cần sử dụng chúng vào việc chính.

def clear_secret(filename, file_extension):

    if not file_extension in file_end:
        print("Format not supported!")
    else:
        buff = ''
        with open(f"{filename}{file_extension}", 'rb+') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            f.truncate(index+len(file_end[file_extension]))

Hàm Main

Về cơ bản, chúng ta có 3 tính năng sau:

  • Append: sẽ thêm tin nhắn bí mật vào hình ảnh
  • Retrieve: sẽ hiển thị tin nhắn bí mật
  • Clear: sẽ xóa tin nhắn bí mật
if __name__=="__main__":
    request = sys.argv[1]
    filename, file_extension = os.path.splitext(sys.argv[2])

    if request == "r":
        secret = retrieve_secret(filename, file_extension)
        print(secret)
    
    elif request == "a":
        append_secret(filename, file_extension, sys.argv[3])
    
    elif request == "c":
        clear_secret(filename, file_extension)
    
    else:
        print("[!] Wrong request, please use 'r' or 'a'")

Kết hợp các hàm lại với nhau ta sẽ có một chương trình tin nhắn vào hình ảnh bằng Python hoàn chỉnh:

Tạo file main.py với nội dung:

import sys
import os

file_end = {
    ".png": b'\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82',
    ".jpg": b'\xff\xd9'
}

def retrieve_secret(filename, file_extension):
    if not file_extension in file_end:
        print("Format not supported!")
    else:
        with open(f"{filename}{file_extension}", 'rb') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            return buff[index+len(file_end[file_extension]):].decode('utf-8')

def append_secret(filename, file_extension, secret):
    with open(f"{filename}{file_extension}", "ab") as f:
        f.write(bytes(secret, encoding="utf-8"))

def clear_secret(filename, file_extension):

    if not file_extension in file_end:
        print("Format not supported!")
    else:
        buff = ''
        with open(f"{filename}{file_extension}", 'rb+') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            f.truncate(index+len(file_end[file_extension]))

if __name__=="__main__":
    request = sys.argv[1]
    filename, file_extension = os.path.splitext(sys.argv[2])

    if request == "r":
        secret = retrieve_secret(filename, file_extension)
        print(secret)
    
    elif request == "a":
        append_secret(filename, file_extension, sys.argv[3])
    
    elif request == "c":
        clear_secret(filename, file_extension)
    
    else:
        print("[!] Wrong request, please use 'r' or 'a'")

Cách sử dụng Python thêm/đọc/xóa tin nhắn trong file ảnh

Chuẩn bị 1 tấm ảnh và đặt tên là anonyviet.jpg hoặc anonyviet.png

Thêm tin nhắn bí mật vào hình ảnh:

Linux:python main.py a anonyviet.jpg "tin nhắn bí mật"

Đọc tin nhắn bí mật trong file ảnh:

python main.py r anonyviet.jpg

Xóa tin nhắn đã thêm trong ảnh:

python main.py c anonyviet.jpg

Đây là kỹ thuật Steganography giúp ẩn giấy nội dung tin nhắn vào hình ảnh bằng Python, bạn có thể sáng chế thêm việc mã hóa code để người khác khi đọc được nội dung cũng không giải mã được trừ khi có Private Key. Đây là bài tập nâng cao, các bạn thử tự áp dụng vào thực tế nhé.

Giải thưởng:

05 bạn tìm được “Nội dung bí mật” và trong tấm ảnh bên dưới và ghi cách giải sau đó bình luận dưới bài viết này sẽ được tặng Card điện thoại 10K nha.

 

anonyviet

Bài viết đạt: 4.9/5 - (61 bình chọn)
Tags: ẩn tin nhắnpythonSteganographytin nhắn bí mật
AnonyViet

AnonyViet

Kiến thức như một ngọn lửa, càng chia sẽ nó sẽ càng bùng cháy!

Related Posts

Cách vượt Captcha Google bằng python 7
Python

Cách vượt Captcha Google bằng python

23/02/2023
PYTHON CO BAN CHUOI
Python

Chương 3: Chuỗi – Python cơ bản

30/09/2022 - Updated on 03/10/2022
python cơ bản biến và định danh
Python

Chương 2: Biến và định danh – Python cơ bản

23/09/2022
python co ban bai 1
Python

Chương 1: Làm quen với Python – Python cơ bản

23/09/2022
Next Post
Đăng ký tài khoản trên Fun88nhacai.com nhận khuyến mãi hấp dẫn

Tại sao nên đăng ký tài khoản Fun88 tại Fun88nhacai.com?

19 Comments
oldest
newest
Inline Feedbacks
View all comments
Ngô Hoài Phong
Ngô Hoài Phong
4 months ago

QW5vbnlWaWV0IFlldSBDYWMgQmFu

AnonyViet
Author
AnonyViet
4 months ago
Reply to  Ngô Hoài Phong

mới đc 1/2q quảng đường

Hùng NH
Hùng NH
4 months ago

Nội dung trong ảnh là “AnonyViet Yeu Cac Ban”

AnonyViet
Author
AnonyViet
4 months ago
Reply to  Hùng NH

do bạn tạo nhiều acc trả lời, nên mình trao thưởng cho acc cuối cùng. Đã gửi mail cho bạn (1)

c0l04c4t
c0l04c4t
4 months ago

AnonyViet Yeu Cac Ban

AnonyViet
Author
AnonyViet
4 months ago
Reply to  c0l04c4t

(2)

Anh
Anh
4 months ago

AnonyViet Yeu Cac Ban

@baonhi35
@baonhi35
4 months ago

AnonyViet Yeu Cac Ban

@baonhi35
@baonhi35
4 months ago

AnonyViet Yeu Cac Ban

admin liên hệ qua tele giúp em nhé

AnonyViet
Author
AnonyViet
4 months ago
Reply to  @baonhi35

do chưa ghi lời giải nên đáp án không tính nha. Hẹn gặp bạn ở câu tiếp theo

Bình
Bình
4 months ago

AnonyViet Yeu Cac Ban

AnonyViet
Author
AnonyViet
4 months ago
Reply to  Bình

do chưa ghi lời giải nên đáp án không tính nha. Hẹn gặp bạn ở câu tiếp theo

Kiệt
Kiệt
4 months ago

AnonyViet Yeu Cac Ban

Hàm append có encoding=”utf-8″, lấy giá trị QW5vbnlWaWV0IFlldSBDYWMgQmFu decode là được.

AnonyViet
Author
AnonyViet
4 months ago
Reply to  Kiệt

(3)

Vũ Hồng Phúc
Vũ Hồng Phúc
4 months ago

Sử dụng strings nhận được 1 đoạn mã được encode: QW5vbnlWaWV0IFlldSBDYWMgQmFu
Vào CyberCheft sử dụng Magic nhận được đoạn text sau khi decode là: AnonyViet Yeu Cac Ban

AnonyViet
Author
AnonyViet
4 months ago
Reply to  Vũ Hồng Phúc

(4)

r4pp3r
r4pp3r
4 months ago

steghide anonyviet.jpg  => tìm được chuỗi QW5vbnlWaWV0IFlldSBDYWMgQmFu => decode base64 => Nội dung bí mật : “AnonyViet Yeu Cac Ban”

r4pp3r
r4pp3r
4 months ago

mình note lại : dùng strings anonyviet.jpg => dc chuỗi QW5vbnlWaWV0IFlldSBDYWMgQmFu => decode base64
=> AnonyViet Yeu Cac Ban

AnonyViet
Author
AnonyViet
4 months ago
Reply to  r4pp3r

(5)

wpdiscuz   wpDiscuz

Asia 300×600

Liên hệ Quảng Cáo

Lien he AnonyViet

Đối tác —

Fshare

Các bài mới

cac nhom hacker apt tren the gioi

Tổng hợp các nhóm Hacker APT trên thế giới

25/03/2023
Cách dùng AI của DALL-E 2 để tạo hình ảnh theo ý bạn 8

Cách dùng AI của DALL-E 2 để tạo hình ảnh theo ý bạn

24/03/2023
kiem tra file folder lon nhat linux

Cách tìm File/Folder lớn nhất trên Linux

23/03/2023
Cách đăng ký và sử dụng Google Bard - AI của Google 9

Cách đăng ký và sử dụng Google Bard – AI của Google

22/03/2023
Xiaomi Redmi Note 12 | Pro 5G giá bao nhiêu, mua điện thoại nào tốt? 10

Xiaomi Redmi Note 12 | Pro 5G giá bao nhiêu, mua điện thoại nào tốt?

22/03/2023

Ads

Giới thiệu

AnonyViet

AnonyViet

Nơi chia sẻ những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến AnonyViet.

Hãy cùng AnonyViet xây dựng một cộng đồng CNTT lớn mạnh nhất!

Giới thiệu

AnonyViet là Website chia sẻ miễn phí tất cả các kiến thức về công nghệ thông tin. AnonyViet cung cấp mọi giải pháp về mạng máy tính, phần mềm, đồ họa và MMO.

Liên hệ

Email: anonyviet.com[@]gmail.com

1409 Hill Street #01-01A
Old Hill Street Police Station
Singapore 179369

 

Bản quyền: DMCA.com Protection Status

Phản hồi gần đây

  • thái trong Download IObit Uninstaller 12 Full Key – Gỡ bỏ phần mềm tận gốc
  • tiến trong Hướng dẫn Fake link Facebook để spam
  • Mạnh Cường trong Cách đăng ký và sử dụng Google Bard – AI của Google
  • Co Dang trong Cách Active Microsoft 365 Miễn Phí
  • hoahung trong Tổng quan về giới UG. Phần 1: UG là gì, CC chùa là gì
https://shbet8.org

©2023 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ. Google Bing Github Github stackoverflow Youtube wikipedia reddit iwinclublink.app tải game iwin tải iwin apk tải tdtc w88 top tải win456 iwin888 ku11net.co ku fun twin F8BET https://new8869.com https://okuytin.com

No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC

©2023 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ. Google Bing Github Github stackoverflow Youtube wikipedia reddit iwinclublink.app tải game iwin tải iwin apk tải tdtc w88 top tải win456 iwin888 ku11net.co ku fun twin F8BET https://new8869.com https://okuytin.com

wpDiscuz
!

Ads

Ads Blocker Detected!!! - Vui lòng tắt Ad Blocker!!!

Vui lòng tắt Ad Blocker

Có vẻ như bạn đang bật trình chặn Quảng cáo.

{Trường hợp bạn đang dùng trình duyệt từ Facebook, hãy copy link bài viết qua Chrome để xem nội dung, như vậy sẽ không bị chặn}

Website chúng tôi duy trì nhờ vào doanh thu quảng cáo, vì vậy hãy tắt trình chặn quảng cáo để chúng tôi có kinh phí chi trả tiền thuê Server, xin cảm ơn!

I've disable Adblock - Tôi đã tắt Adblock