Encryption

使 GPG 加密文件看起來像二進制執行檔

  • April 26, 2022

我有一個奇怪的問題。我有一個 tararchive.tar.gz檔案,裡面裝滿了純文字文件。然後將該存檔 gpg 加密為archive.tgz.gpg. 總共archive.tgz.gpg小於 100KB。

現在,我想讓它archive.tgz.gpg看起來像一個 linux 二進製文件,並使用大多數 unix 標準實用程序對其進行非混淆處理。我知道它(很可能)不會作為二進制執行檔工作,這沒關係。但粗略一看,它應該大致顯示為損壞的二進制執行檔。

我得到的最遠的嘗試是嘗試使用修改標題catdd因此file無法正確返回文件類型,但我在網上找到有關執行此操作的大量資訊方面還沒有走得太遠。

如果有人能夠幫助我指出正確的方向,我將不勝感激。謝謝!

您可以將有效負載完全嵌入到工作執行檔中。

echo "I am your encrypted message." > message.txt
gpg2 --symmetric message.txt
ld -r -b binary -o message.o message.txt.gpg
gcc -o unsuspicious unsuspicious.c message.o

包含unsuspicious.c任何程序:

#include <stdio.h>
int main(int argc, char** argv) {
   printf("Hi. I am a totally unsuspicious executable.\n");
}

使用這種技術,有效載荷將最終出現在二進製文件的 .data 部分中。要檢索它,請提取整個數據部分:

objcopy --dump-section .data=data.bin unsuspicious

其他一些數據在我的 104 字節有效載荷之前。我曾經nm unsuspicious確定 和 之間的確切差異__data_start_binary_message_txt_gpg_start在我的例子中是 16 個字節。知道了這一點,我可以檢索有效負載:

dd if=data.bin skip=16 bs=1 count=104 of=message.txt.gpg

這是否是您目標的有效實現取決於您是否考慮nm,objcopydd“標準實用程序”。當然,您始終可以向程序本身添加一些邏輯,以便在詢問得當時列印有效負載。

引用自:https://unix.stackexchange.com/questions/700477