2021年9月8日 星期三

自定Kali應用程式選單(Applications Menu) 的項目(成員)

Kali以前使用Gnome桌面,可以透過Alacarte工具編輯應用程式選單。改用Xfce桌面後,還是可以安裝Alacarte,但是它只能編輯現有項目的屬性,卻無法新增項目。

網路推薦的Xfce選單編輯器是menulibre,安裝後一執行卻出現「MenuLibre cannot be run as root.」,不能用root執行,偏偏我已習慣用root操作Kali。

為此,另外建了一組帳號,再執行「 su - kali -c menulibre」,這次出現別的錯誤:

root@kali-2020-3:~# su - kali -c menulibre
┏━(Message from Kali developers)

┃ We have kept /usr/bin/python pointing to Python 2 for backwards
┃ compatibility. Learn how to change this and avoid this message:
┃ ⇒ https://www.kali.org/docs/general-use/python3-transition/

┗━(Run: “touch ~/.hushlogin” to hide this message)
Unable to init server: Could not connect: Connection refused
Unable to init server: 無法連接:Connection refused

(menulibre:4377): Gtk-CRITICAL **: 08:10:06.059: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
No menu prefix found, MenuLibre will not function properly.
Unable to init server: 無法連接:Connection refused

(menulibre:4377): Gtk-WARNING **: 08:10:06.082: cannot open display: 

實在不想花太多時間去處理偶爾才用一次的功能,最後還是將menulibre移除了。


為什麼需要編輯功能表?因為新安裝工具後,若一段時間不用,常忘了工具的名稱,如果能將工具安排在選單裡,就算忘了名稱,大概還記得工具的類型,較容易從選單裡找到。

既然Alacarte及menulibre不能用,就改用手工編輯吧!反正偶爾才用一次。

注意:這不是標準,也非精確的作法,只是剛好解決在應用程式選單加入新項目的需求。

首先是xfce的選單項目是存放在「/usr/share/kali-menu/applications/」目錄裡,每個項目的副檔名是「.desktop」,就以「Kali-nmap.desktop」為例,其內容如下:

[Desktop Entry]
Name=nmap
Encoding=UTF-8
Exec=/usr/share/kali-menu/exec-in-shell "nmap"
Icon=kali-nmap
StartupNotify=false
Terminal=true
Type=Application
Categories=01-info-gathering;01-04-network-scanners;02-vulnerability-analysis;
X-Kali-Package=nmap

這是相對單純的項目內容,還有其他更複雜的項目,但這個單純範例已符合我的需要!當需要新增項目的,就可以直接複製Kali-nmap.desktop來修改,例如要增加一個vega選項:

cp Kali-nmap.desktop vega.desktop

然後編輯vega.desktop,如下:

[Desktop Entry]
Name=vega
Encoding=UTF-8
Exec=vega
Icon=kali-menu
StartupNotify=false
Terminal=true
Type=Application
Categories=01-info-gathering;03-05-web-vulnerability-scanners;
X-Kali-Package=vega

主要修改部分如紅粗字接著將此檔案複製一份到「/usr/share/applications/,這樣就完成選單項目新增,如下圖黃圈的vega就是我手工加到選單上的。當然,只要將檔案刪除就可移除選單項目。

再說一次,這不是標準作法,只是剛好解決增、刪、改選單項目的要求。

檔案內容說明

[Desktop Entry]                         # 區段名稱,不需修改
Version=1.0                              # 版號
Name=vega                              # 呈現的名稱,各語系通用,要修改
Comment=Web vulnerability Scanner          # 提示文字,當滑鼠停駐項目時彈出,各語系通用
Name[zh_CN]=vega 扫描            # zh_CN,作業系統使用簡中語系時呈現的名稱
Comment[zh_CN]= Web漏洞扫描工具     # zh_CN,作業系統使用簡中語系時呈現的提示文字
Name[zh_TW]=vega 掃描            # zh_TW,作業系統使用繁中語系時呈現的名稱
Comment[zh_TW]= Web漏洞 掃描 工具     # zh_TW,作業系統使用繁中語系時呈現的提示文字
Encoding=UTF-8                     # 編碼格式
Type=Application                    # 類型   Application,或Link
Exec=vega                             # 選擇此項目時要執行的命令,如同手動在終端機執行
Icon=kali-menu                          # 此選單項目的圖示,請參考下列「Icon的來源」段
StartupNotify=false                 # 啟動時,要不要顯示提示視窗?反正設為false就對了
Terminal=true                           # ?? 不清楚,照著設為true
Categories=02-vulnerability-analysis;                 # 要放在選單的哪個分類下,若要放在多個分類,請用「;」分隔,至於怎麼找到分類名稱,請參考下面「分類名稱來源」段的說明
X-Kali-Package=vega                  # kali裡的套件名稱 

除了Type=Application使用用Exec執行命令外,如果「Type=Link」則可透過「URL=<URL>」指定欲由預設瀏覽器開啟的網址。

如果希望應用程式在終端機內執行,可將Exec的值修改如下,前段的「/usr/share/kali-menu/exec-in-shell」會啟動作業系統的終端機,後段的「"hydra -h"」代表要在此終端機內執行的命令及傳遞 此命令的參數。

Exec=/usr/share/kali-menu/exec-in-shell "hydra -h"


Icon的來源

項目內容裡的Icon參數只需指定圖示名稱,系統會參照「/usr/share/icons/hicolor/DxD/apps/」內的同名稱圖示檔,如上例的「kali-menu」就是指 kali-menu.png,前述路徑裡的DxD是指圖示大小,有興趣者,可以自己到「/usr/share/icons/hicolor/」目錄下找找!

分類名稱來源

分類名稱就從現有的選單項目內容去,例如想找自定的選單項目放在「06-無線攻擊」裡的「藍牙工具集」,「cat kali-btscanner.desktop」就會發現分類名稱是「06-02-bluetooth-tools

root@kali-2019-3:/usr/share/applications# cat kali-btscanner.desktop
[Desktop Entry]
Name=btscanner
Encoding=UTF-8
Exec=/usr/share/kali-menu/exec-in-shell "btscanner -h"
Icon=kali-menu
StartupNotify=false
Terminal=true
Type=Application
Categories=06-02-bluetooth-tools;
X-Kali-Package=btscanner

不要問我如何新增分類夾,我還沒有找到答案,如果有人知道,也請告訴我,謝謝!

沒有留言:

張貼留言