2015-09-26 102 views
-4

我正在使用libpng-c庫來檢查有效的.png文件。如果文件有效,它會通過測試。我想在其中注入shell代碼。我如何製作.png文件,以便它仍然是一個有效的圖像文件,並且還包含一些shell代碼。請告訴我怎麼可能。謝謝。.png文件中的代碼注入

+0

應注入的外殼代碼被執行? –

+0

是的,代碼將被執行,但我想要的是保持圖像文件有效。 – sonam

+0

@Nate,如果通過在其中編寫一些shell代碼來更改.png文件並且將變爲無效(嘗試了無效部分),但我想保留該文件在其中的一些shell代碼有效。這怎麼可能,有一些竅門? – sonam

回答

0

那麼,AFAIK沒有辦法將代碼注入到png文件中並執行它。但是你可以將你的png文件注入到shell腳本中,然後查看它。但是你必須說服你開發的那個可執行文件,並通過終端打開所謂的png文件。

的程序是:

  1. 創建一個文本文件,把它executeme.png
  2. 下面的代碼粘貼到它,注意,不應該在文件末尾的所有新訂單。

-

#!/bin/bash 

PNG_FILE=$(mktemp /tmp/hack.XXXXXXX.png) 

ARCHIVE=$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' $0) 
tail -n+$ARCHIVE $0 > "$PNG_FILE" 

# whatever you want to do is here! 

xdg-open $PNG_FILE 

exit 0 

__ARCHIVE_BELOW__ 
  • 您的原始PNG文件使用cat injectme.png >> executeme.png追加。
  • 使executeme.png可執行。
  • 如果您從終端運行executeme.png,將使用默認圖像查看器顯示原始png文件,並且您的注入代碼將會運行。
  • 注:我不認爲有人執行該文件是如此愚蠢。

    注2:在Ubuntu上,executeme.png不能從文件管理器執行,因爲它試圖使用文件管理器打開,因爲png擴展名。您可以將executeme.png重命名爲execute.\rpng(在點之後在png之前附加回車符),所以起初它看起來像一個png文件,因爲它的擴展名不是PNG,如果它是可執行的,它將被雙擊執行。要進行重命名,您可能需要使用終端。

    有一個很好的黑客時間! :d

    進一步閱讀:Linux journal, making installers