WeChall Traning: LSB

2022. 8. 7. 14:23· SWING
728x90

http://www.wechall.net/challenge/training/stegano/LSB/index.php

색 변환 툴

https://stegonline.georgeom.net/upload

 

[WeChall] Training: LSB

Training: LSB - The least significant bit This is a very simple, yet spectacular trick. Can you see the hidden solution? Note: The solution is bound to your session ID and consists of twelve letters. Hidden Hint: http://wechall.blogspot.com/2007/11/stegana

www.wechall.net

 

문제 파일

플래그는 세션 ID에 바인딩되며 12자로 구성되어 있다고 한다. stegsolve.jar을 이용해서 풀면 더욱 빨리 풀 수 있지만 원리를 알아보기 위해서  파이썬 코드를 직접 짜서 문제를 해결할 것이다.

RGB 값을 파이썬의 Image 모듈을 이용해서 추출했다. Image 모듈을 사용하려면 파이썬 PIL(Pygthon Image Library)를 설치해야 한다.  cmd창을 열어서 PIL라이브러리를 설치해준다.

픽셀은 크게 두 가지의 정보를 가지고 있다.

1. 픽셀의 위치(X, Y)

2. 픽셀의 색깔(R, G, B)

 

size명령어를 통해 문제 이미지의 정확한 픽셀의 개수를 파악하고 for문으로 모든 픽셀에 대한 탐색을 할 것이다.

getpixel함수를 이용해서 각 위치에서 rgb값을 추출해준다.

from PIL import Image

def bitSolve(img):
    img = Image.open(file)
    width, height = img.size

    for x in range(width):
        for y in range(height):
            color = img.getpixel( (x,y) )
            r,g,b = color

Green의 여덟 번째 비트가 1인 경우는 0xFFFFFF(흰색), 0인 경우는 0x000000(검정색)을 r,g,b 변수에 저장하고

putpixel함수를 이용해서 그 값을 해당 위치의 픽셀에 넣었다.

#0xFFFFFF(흰색),  0x000000(검정색)
if g&8 != 0: #Green의 여덟 번째 비트가 1인 경우
	r,g,b = (0xFF,0xFF,0xFF) #흰색으로

else: #Green의 여덟 번째 비트가 0인 경우
	r,g,b = (0,0,0) #검정색으로

img.putpixel( (x,y), (r,g,b) )

#이미지를 solved.png 파일로 저장
img.save("solved.png","png")

메인 코드

if __name__ == '__main__':
    file = "problem.png"
    bitSolve(file)

코드 전체

from PIL import Image

def bitSolve(img):
    img = Image.open(file)
    width, height = img.size

    for x in range(width):
        for y in range(height):
            color = img.getpixel( (x,y) )
            r,g,b = color

            #0xFFFFFF(흰색),  0x000000(검정색)
            if g&8 != 0: #Green의 여덟 번째 비트가 1인 경우
                r,g,b = (0xFF,0xFF,0xFF) #흰색으로

            else: #Green의 여덟 번째 비트가 0인 경우
                r,g,b = (0,0,0) #검정색으로

            img.putpixel( (x,y), (r,g,b) )

    #이미지를 solved.png 파일로 저장
    img.save("solved.png","png")

if __name__ == '__main__':
    file = "GwvwsxAmGLemy9b4.png"
    bitSolve(file)

코드를 실행하면 solved.png 파일이 생긴다.

FLAG: OGBDECHFBGCI

참고:

https://blackperl-security.gitlab.io/blog/2016/12/04/2016-12-04-amalmot/

https://blog.naver.com/jsk6824/222004059178

'SWING' 카테고리의 다른 글

스테가노그래피 02  (0) 2022.08.05
스테가노그래피 01  (0) 2022.08.05
defcon-Multimedia-파일에서 이미지를 찾아라!  (0) 2022.08.04
RC4 알고리즘 암호화  (0) 2022.07.03
'SWING' 카테고리의 다른 글
  • 스테가노그래피 02
  • 스테가노그래피 01
  • defcon-Multimedia-파일에서 이미지를 찾아라!
  • RC4 알고리즘 암호화
오호츠크해 기단
오호츠크해 기단
오호츠크해 기단
공기덩어리
오호츠크해 기단
전체
오늘
어제
  • 분류 전체보기 (223)
    • Linux (14)
    • Web (20)
    • Forensic (20)
    • Reversing (18)
    • System (28)
    • Fuzzing (4)
    • WHS 1st (12)
    • SWING (5)
    • CTF (37)
    • 활동들.. (24)
      • 개인정보보호 국민점검단 (1)
      • 스쿨혁명 1784 (1)
      • Incognito (10)
      • 코드클럽 (10)
      • 월드프렌즈코리아 ICT봉사단 (2)
    • Dreamhack (16)
      • Web Hacking (10)
      • Crypto (6)
    • 개발 (19)
      • C++ (12)
      • Git (3)
      • Figma (1)
      • Clone (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코드클럽
  • readme
  • SW교육기부단
  • 방
  • github
  • 마크다운 문법
  • 마크다운
  • 깃허브
  • 월클
  • MD

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
오호츠크해 기단
WeChall Traning: LSB
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.