
침투 테스터와 소프트웨어 개발자가 데이터를 다양한 형식으로 디코딩/인코딩할 수 있도록 도와주는 확장 가능한 애플리케이션입니다.

Decoder++는 침투 테스터, 소프트웨어 개발자, 그리고 다양한 형식의 데이터를 쉽게 디코딩 및 인코딩하려는 모든 사용자를 위해 설계된 확장 가능한 애플리케이션입니다. 다양한 사전 설치된 스크립트와 코덱, 스마트 디코딩 및 형식 식별 기능을 포함하며, 그래픽 사용자 인터페이스(GUI)와 명령줄 인터페이스(CLI) 작업을 모두 지원합니다.
몇 단계만으로 Decoder++를 시작할 수 있습니다:
# Install using pip (latest:qt6)
pip3 install decoder-plus-plus[qt6]
# Or, for a qt5 backport:
pip3 install decoder-plus-plus[qt5]
# To leverage all features and plugins:
pip3 install decoder-plus-plus[extras]
자세한 설치 안내는 플랫폼별 지침을 포함한 설치 가이드를 참조하세요.
이 섹션에서는 Decoder++와 상호작용하는 개별적인 방법에 대한 개요를 제공합니다. 추가 사용 정보는 고급 사용법 섹션을 확인하세요.
그래픽 사용자 인터페이스는 두 가지 뚜렷한 상호작용 모드를 제공합니다:
main-window-mode와 dialog-mode입니다.

main-window-mode는 탭 기능을 지원하는 반면, dialog-mode는 변환된 콘텐츠를 stdout으로 반환하여 추가 처리가 가능합니다. 결과적으로 Decoder++는 입력 데이터의 유연한 변환을 위한 그래픽 사용자 인터페이스를 제공함으로써 다른 도구/스크립트를 향상시킬 수 있습니다.

Decoder++는 기본적으로 전체 입력 텍스트를 처리하지만, 선택적인 데이터 변환도 허용합니다. 텍스트의 특정 부분만 변환하려면 입력 필드에서 필요한 텍스트 세그먼트를 강조 표시한 다음 원하는 코덱을 적용하면 됩니다.

그래픽 사용자 인터페이스 외에도 Decoder++는 명령줄 인터페이스를 제공합니다:
$ dpp -e base64 -h sha1 "Hello, world!"
e52d74c6d046c390345ae4343406b99587f2af0d
Decoder++는 다양한 코덱과 스크립트 중에서 선택할 수 있도록 합니다:
더 많은 유연성이 필요한 경우 Decoder++는 Custom Code 스크립트를 사용하여 사용자 정의 스크립트로 데이터를 처리할 수 있습니다:

이 섹션에서는 명령줄 인터페이스를 사용하는 방법에 대한 추가 정보를 제공합니다.
명령줄 인터페이스는 사용 가능한 모든 코덱에 쉽게 접근할 수 있도록 합니다.
코덱을 나열하려면 -l 인수를 사용할 수 있습니다. 검색 범위를 좁히기 위해 -l 인수는 필터 역할을 하는 추가 매개변수를 허용합니다:
$ dpp -l base enc
Codec Type
----- ----
base16 encoder
base32 encoder
base64 encoder
Decoder++는 인코더, 디코더, 해셔 및 스크립트를 구분합니다. 그래픽 사용자 인터페이스와 마찬가지로 명령줄 인터페이스는 여러 코덱을 연속적으로 사용할 수 있습니다:
$ dpp "H4sIAAXmeVsC//NIzcnJ11Eozy/KSVEEAObG5usNAAAA" -d base64 -d gzip
Hello, world!
인코더, 디코더 및 해셔는 바로 사용할 수 있지만 일부 스크립트는 추가 구성이 필요할 수 있습니다. 특정 스크립트의 사용 가능한 모든 옵션을 표시하려면 help 매개변수를 추가하십시오:
$ dpp "Hello, world!" -s split_and_rejoin help
Split & Rejoin
==============
Name Value Group Required Description
---- ----- ----- -------- -----------
split_by_chars split_behaviour yes the chars used at which to split the text
split_by_length 0 split_behaviour yes the length used at which to split the text
rejoin_with_chars yes the chars used to join the splitted text
특정 스크립트를 구성하려면 개별 옵션을 이름-값 쌍으로 제공해야 합니다 (예: search_term="Hello"):
$ dpp "Hello, world!" -s search_and_replace search_term="Hello" replace_term="Hey"
Hey, world!
기능 요청이나 버그 보고를 위해 자유롭게 새 티켓을 열어주세요. 새로운 기능/플러그인에 대한 풀 리퀘스트도 언제든지 환영합니다. Decoder++ 개발에 대한 자세한 내용은 개발 가이드에서 확인할 수 있습니다.
다음 분들께 감사드립니다:
Mac OS에서 Decoder++를 시작할 때 시그널이 작동하지 않습니다.
이는 PyQt6가 homebrew를 사용하여 설치된 경우 발생할 수 있습니다.
CygWin에서 Decoder++를 시작할 때 오류가 발생합니다:
ModuleNotFoundError: No module named 'PyQt6'
이는 PyQt6가 pip를 사용하여 설치된 경우에도 발생할 수 있습니다. 현재 이에 대한 해결책은 없습니다. 대신 Windows 명령줄을 사용하여 Decoder++를 시작하는 것이 좋습니다.
Decoder++를 시작할 때 콘솔에 No module named 'PyQt6.sig' 오류가 표시됩니다. 이는 경쟁하는 버전의 PyQt6가 설치된 경우 발생할 수 있습니다. PyQt6를 다시 설치하면 이 오류가 해결됩니다.
$ sudo pip3 uninstall PyQt6
$ sudo pip3 install PyQt6
적어도 Ubuntu 22.04에서는 apt를 사용하여 다음 패키지를 설치해야 할 수 있습니다:
apt install libqt6core6 libqt6network6 libqt6openglwidgets6 libqt6widgets6
컨테이너/가상 머신 내에서 dpp를 실행하려면 컨테이너/가상 머신 내에 qt6-qpa-plugins를 설치하고 QT_QPA_PLATFORM_PLUGIN_PATH를 적절히 구성해야 할 수 있습니다:
apt install qt6-qpa-plugins
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt6/plugins/platforms/
Decoder++ Docker 컨테이너를 빌드하고 실행하는 방법에 대한 자세한 내용은 Docker 빌드 및 실행 스크립트를 참조하세요.