ParrotSec / parrot-menu

backup repository https://dev.parrotsec.org/parrot/parrot-menu/
https://dev.parrotsec.org/parrot/parrot-menu/
13 stars 16 forks source link

Importing Parrot Menu in XFCE 4.12 environment on Debian 10 (Buster) - root voice in the panel overrides subfolder icons #13

Closed D3vil0p3r closed 3 years ago

D3vil0p3r commented 3 years ago

Hello, I'm testing the import of Parrot Menu in other Linux environments, in this case, on a Debian 10 with XFCE 4.12 environment, by following the file parrot-menu.install

I imported files and icons from the latest Parrot OS release (Parrot-security-4.11.1_amd64) on this test environment with the same permissions, and the "Pentesting" voice appears correctly as also the subfolders (i.e. Information Gathering, Vulnerability Analysis, and so on) in the XFCE panel/Whisker menu.

The only issue is related to the icons: the subfolders show the "Pentesting" icon instead of their icons. For example, if I go in the /usr/share/desktop-directories/01-info-gathering.directory the "Icon" variable is set correctly as:

Icon=/usr/share/icons/parrot-common/info-gathering-trans.png

and this file is actually in that folder:

image

The result is: (for being simple, I'm showing only some subfolder voices)

image

So the "Pentesting" icon located in /usr/share/icons/parrot-common/pentesting.png is overriding the info-gathering-trans.png icon path.

If I consider the /etc/xdg/menus/applications-merged/parrot-applications.menu file that shows the hierarchy of these voices in the XFCE panel, and I try to remove the root voice (Pentesting, related to the Parrot.directory file) the subfolder voices icons are shown correctly: image

I noted also that, if in the *.directory file, in the variable "Icon=" I set an icon contained in the folders /usr/share/icons/hicolor/NxN/apps (where NxN is the size of the icon folder), it works correctly (i.e. Icon=parrot-info-gathering-trans (without using an absolute path)) works correctly.

Why in the case of the importing parrot menu in other environments, the icon of the root folder in the panel (Pentesting) overrides all the icons of the subfolders specified in the related /usr/share/desktop-directories/*.directory files?

Thank you in advance.

tissyp commented 3 years ago

Hello. Specifically speaking for this case, we already have an xfce customized version. If you want to know more, I suggest you to talk with xfce Maintainer @dmknght. And please, next time use a service like pastebin to attach logs and very long code. It'll be easier for us to read.

dmknght commented 3 years ago

Well first thing first, as i understand you are doing the copy files and folders method to install data of parrot menu to Debian. I'd suggest you try debuild command, which should belong to devscripts as i remember, to build the whole package and avoid some mistakes. You may want to try our parrot-menu on gitlab which is more updated with fixed bugs (small commits that weren't released yet) at https://nest.parrotsec.org/packages/parrot/parrot-menu

Second is, i don't really know why the problem is there. I want to explain about folder parrot-common first: in the previous releases of parrot-menu, icons of categories are in the /usr/share/icons/ and in my opinion it is not nice at all. I meant the tree of folders and files and all and well you see, 10 or 20 icons in the /usr/share/icons/ is not good at all; mean while other icons are in different folder which means more "beautiful". So i decided a folder parrot-common for any icons of Parrot team that has only 1 size. And as you mentioned, the icons are mapped from /usr/share/icons/<theme>/<size>/<icon_name>. As far as i remember, there was a problem of icons that won't show in menu either icons are in /usr/share/icons/ or /usr/share/icons/parrot-common/ so i had to use absolute path.

The next thing is, as i remember i did the menu customization on XFCE 4.14 and now it is 4.16 on Parrot. I don't really think that i did it for 4.12 (maybe the first version was on 4.12 if i'm wrong) so it could be version conflict or something. And because you are using the copy paste method so it could be the caching problem while you are using XFCE. The caching problem was a thing for me when i did the default customization for XFCE. It is not just menu but panels and especially all launchers on panels. When you overwrite the current configurations by new configurations from files, some icons of launchers won't be displayed. I really thing this is the same problem for the menu.

D3vil0p3r commented 3 years ago

Thank you for your answers.

I followed your suggestion by using debuild because it is a cleaner solution than mine.

After using debuildcommand, at the end I receive this output: https://pastebin.com/BFAgP70w with the following errors:

dh_dwz: dwz -q -- debian/parrot-menu/usr/share/parrot-menu/update-launchers returned exit code 1 make: *** [debian/rules:4: binary] Error 1 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 debuild: fatal error at line 1182: dpkg-buildpackage -us -uc -ui failed

I have another question: could be suitable in the future having a package in the repository to install the Parrot menu directly by apt-get install as we already have for Kali Linux (apt-get install kali-menu)?

dmknght commented 3 years ago

After using debuildcommand, at the end I receive this output: https://pastebin.com/BFAgP70w with the following errors:

Problem happened because you are missing Build-depend Nim. We are using Nim lang to update the launchers of pentest tool, which makes massive performance compare to old script which was written in golang and the older version was in perl. Please try sudo apt install nim and run debuild again. You don't need sudo to run debuild

I have another question: could be suitable in the future having a package in the repository to install the Parrot menu directly by apt-get install as we already have for Kali Linux (apt-get install kali-menu)?

The answer is yes and no. Why yes? Because you are installing local package which won't be replaced. Why no? The menu setting file could be overwritten. And kali-menu is using a perl script to update launchers. So it could use last script / binary to update launchers or use both. It will be conflicts of launchers. You might see duplicate launchers in menu.

D3vil0p3r commented 3 years ago

The output I attached before was produced with already nim installed. In practice, before debuild command I installed: dconf-cli, build-essential, nim, devscripts

nim is installed with the 0.19.4-1 version.

D3vil0p3r commented 3 years ago

Just now I also tested in a fresh machine debian-10.9.0-amd64-netinst (got from https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.9.0-amd64-netinst.iso and installed always the nim, build-essential, dconf-cli, devscripts packages and when I run debuild, I get also here the same output and the same error.

Please, tell me if you are able to reproduce the error.

According to my schedule, I will continue to perform tests on this issue.

dmknght commented 3 years ago

nim is installed with the 0.19.4-1 version.

I forgot to mention when i wrote the fix: Nim should be 1.4.x or at least 1.2.x

D3vil0p3r commented 3 years ago

Thank you for the tips.

Currently, nim 1.4x and all its dependencies (i.e. libc6) are in a not stable version. Correct me if I'm wrong, it means the user should install testing dependencies one by one with the risk to break something. I tried and I was asked of a big amount of unstable version of dependencies to install.

Sorry if I point on this, I would like to address the issue by using less as possible not stable version of packages for the average users. And also because security updates for testing packages are not often managed by the security team. So, testing does not get security updates in a timely manner.

Anyway, the current "stable" version of dwz is the 0.12-3. This version causes our issue. To solve it, I updated only dwz to unstable version 0.14-1 and it works.

After this, the process continued correctly until I received some warnings and errors (E?) that don't affect the process:

Now running lintian parrot-menu_2021.05.10_amd64.changes ... E: parrot-menu changes: bad-distribution-in-changes-file rolling W: parrot-menu source: package-depends-on-hardcoded-libc parrot-menu depends E: parrot-menu source: source-is-missing update-launchers E: parrot-menu source: source-contains-unsafe-symlink menu-icons/parrot-menu.png E: parrot-menu source: source-contains-unsafe-symlink menu-icons/hicolor/16x16/apps/parrot-menu.png E: parrot-menu source: source-contains-unsafe-symlink menu-icons/hicolor/24x24/apps/parrot-menu.png E: parrot-menu source: source-contains-unsafe-symlink menu-icons/hicolor/256x256/apps/parrot-menu.png E: parrot-menu source: source-contains-unsafe-symlink menu-icons/hicolor/32x32/apps/parrot-menu.png E: parrot-menu source: source-contains-unsafe-symlink menu-icons/hicolor/48x48/apps/parrot-menu.png W: parrot-menu source: missing-field-in-dep5-copyright license (paragraph at line 9) W: parrot-menu source: missing-field-in-dep5-copyright copyright (paragraph at line 9) W: parrot-menu source: ambiguous-paragraph-in-dep5-copyright paragraph at line 14 W: parrot-menu source: missing-license-text-in-dep5-copyright GPL-3+ (paragraph at line 14) W: parrot-menu source: newer-standards-version 4.5.0 (current is 4.3.0) W: parrot-menu-dbgsym: debug-file-with-no-debug-symbols usr/lib/debug/.build-id/04/5b71d56ca45e1e5ce637f1061ec5cbbc26b6af.debug E: parrot-menu: arch-dependent-file-in-usr-share usr/share/parrot-menu/update-launchers W: parrot-menu: icon-size-and-directory-name-mismatch usr/share/icons/hicolor/16x16/apps/parrot-rizin.png 11x11 W: parrot-menu: binary-without-manpage usr/bin/faraday-gtk W: parrot-menu: binary-without-manpage usr/bin/menuexec W: parrot-menu: binary-without-manpage usr/bin/menuexecg W: parrot-menu: binary-without-manpage usr/bin/nishang W: parrot-menu: binary-without-manpage usr/bin/pentestexec W: parrot-menu: binary-without-manpage usr/bin/pentestls W: parrot-menu: binary-without-manpage usr/bin/servicexc W: parrot-menu: executable-not-elf-or-script usr/bin/servicexc Finished running lintian.

(maybe could be useful for you for future small fixes) and then the following error messages related to gpg:

Now signing changes and any dsc files... signfile dsc parrot-menu_2021.05.10.dsc Lorenzo "Palinuro" Faletra palinuro@parrotsec.org gpg: skipped "Lorenzo "Palinuro" Faletra palinuro@parrotsec.org": No secret key gpg: /tmp/debsign.U9paibmz/parrot-menu_2021.05.10.dsc: clear-sign failed: No secret key debsign: gpg error occurred! Aborting.... debuild: fatal error at line 1112: running debsign failed

I thought could be the secret key associated to my machine used for signing files. I tried to generate a key by using gpg --full-generate-key but the error still there. I tried also to import with success the parrot key by following the following url https://docs.parrotlinux.org/info/verify-keys/ but the error is still there. How can I solve this issue related to the secret key?

Thank you for your support.

dmknght commented 3 years ago

Correct me if I'm wrong, it means the user should install testing dependencies one by one with the risk to break something.

Parrot is Debian-testing based :)

I thought could be the secret key associated to my machine used for signing files.

Please try debuild -us -uc -b

D3vil0p3r commented 3 years ago

Thank you @dmknght it works.

The process produced the following .deb files: parrot-menu_2021.05.10_amd64.deb, parrot-menu-dbgsym_2021.05.10_amd64.deb

I guess I should install only the first one.

When I try to install it by dpkg, it says me that the "package gksu" is not installed.

I solved it by: sudo apt-get install multiarch-support gconf-service libgconf-2-4 gconf2 libgtop2-common

Got several useful .deb packages:

sudo dpkg -i libgnome-keyring-common_3.12.0-1_all.deb
sudo dpkg -i libgnome-keyring0_3.12.0-1+b1_amd64.deb
sudo dpkg -i libgtop2-7_2.28.5-2+b1_amd64.deb
sudo dpkg -i libgksu2-0_2.0.13~pre1-8_amd64.deb
sudo dpkg -i gksu_2.0.2-9_amd64.deb

At the end I executed: sudo dpkg -i parrot-menu_2021.05.10_amd64.deb

ended with no error.

I can see the icons. The only issue is that I get always the same issue of the beginning (persistent pentesting icon in the subfolders of the menu): image

Should I also install the parrot-menu-dbgsym_2021.05.10_amd64.deb package or I need to perform another step? If I remember, gksu should be now deprecated. In the future, it will be substituted with another package?

Thank you again ^^

D3vil0p3r commented 3 years ago

Hello again.

After my tests, I can confirm you that the issue was caused by the Whisker Menu plugin (v. 2.3.1-1) that produces that bug. If I remove/disable that plugin and on XFCE I work only with the default application menu, we don't have the issue anymore.

For information: I opened an issue ticket on XFCE project for this bug: https://gitlab.xfce.org/panel-plugins/xfce4-whiskermenu-plugin/-/issues/52

The only last question before closing the issue: debuild command will produce two .deb files:

What is the difference between them? Are both of them needed?

dmknght commented 3 years ago

When I try to install it by dpkg, it says me that the "package gksu" is not installed.

Yes some tools need gksu to run as root (GUI apps)

After my tests, I can confirm you that the issue was caused by the Whisker Menu plugin (v. 2.3.1-1) that produces that bug. If I remove/disable that plugin and on XFCE I work only with the default application menu, we don't have the issue anymore.

Seems like old version of XFCE Whisker Menu - XFCE plugin is a problem.

parrot-menu-dbgsym_2021.05.10_amd64.deb

This package was generated because there are some issues during package compiling problem. Mostly because of Debian standards which can't be followed sometimes (for example: distro name is rolling instead of stable testing,...) and it is perfectly okay. You don't need to install any dbgsym. And the part is stand for debug-symbols i believe.

D3vil0p3r commented 3 years ago

Thank you for the answers @dmknght

I'm going to close this issue.