2차원 코드 작성 및 해독

CTF에서 2차원 코드가 출제되는 경우가 있어, 자신의 공부를 위해 2차원 코드를 조사해 보았습니다. 조사해 알았습니다만, 어쨌든 2차원 코드는 종류가 많기 때문에, 본 투고에서는 유명한 코드에 숨어 기재합니다. 함께, 각종 코드의 작성 방법과 해독 방법도 실어 둡니다. 또한, 이러한 커맨드/프로그램의 동작 확인은 Ubuntu20.04에서 실시하고 있습니다.

코드 유형


https://qiita.com 를 각종 2차원 코드로 코드화해 보았습니다.


코드명
코드
표준


qrcode

ISO/IEC18004:2015

azteccode

ISO/IEC24778:2008

datamatrix

ISO/IEC16022:2006

maxicode

ISO/IEC16023:2000

pdf417

ISO/IEC15438:2015


코드 작성



treepoem이라는 라이브러리를 사용합니다.
  • 설치

  • 설치
    pip install treepoem
    
  • 생성

  • bash 예제
    treepoem -o qrcode.png -t qrcode "https://qiita.com"
    

    파이썬 예제
    import treepoem
    code = treepoem.generate_barcode(barcode_type='qrcode',data='https://qiita.com')
    code.save('qrcode.png')
    

    ※treepoem에는 더 많은 코드가 들어 있으므로, 흥미가 있으면 조사해 보면 좋을지도 모릅니다.

    코드 해독



    ZXing(제브라 크로싱)은 Google사의 오픈 소스 라이브러리로 1차원·2차원 코드를 해독할 수 있습니다. 이번에는 이것을 사용합니다.
  • 설치

  • ZXing은 Java에서 실행되므로 Java 설치가 필요합니다.

    설치
    apt install default-jre
    pip install zxing
    
  • 해독

  • 해독 프로그램을 설명합니다. 코드 유형 판별은 자동입니다.

    bash 예제
    zxing code.png
    

    파이썬 예제
    import zxing
    reader = zxing.BarCodeReader()
    code = reader.decode('code.png')
    print(code.raw)
    

    좋은 웹페이지 즐겨찾기