Run libpcap without sudo/root - c++

I am using libpcap to sniff packets and also to create raw packets in C++ in Ubuntu 18.04. These features require admin(sudo) permission. I am checking for a way to remove the dependency.
When I run my code without sudo, I get the following error:
pcap_open_live(): You don't have permission to capture on that device (socket: Operation not permitted)
I build my application using cmake and make and I have the executable test, which I run as ./test.
I have tried setcap cap_net_raw,cap_net_admin=eip ./test, but without sudo, I am unable to capture packets, with the same permission error as above.
Please help on this issue.

I found the answer here.
Issue turned out to be my hard disk not mounted with sudo. I built my tool in home folder and with setcap, I am able to sniff packets without sudo now.

Related

CLion: "Remote GDB Server" targeting Windows

Is it possible to run a remote debug session targeting Windows with CLion?
The docs say that I can do any system that has gdbserver:
Remote OS: any supporting gdbserver and SSH
However, when I try to run my remote app, I get an error:
10:53 PM Build finished in 3 sec, 44 ms
10:53 PM Error running 'remote'
1: 'env' is not recognized as an internal or external command,
operable program or batch file.
I can't find a place where I could see the whole command that CLion runs that causes this error.
Here is my configuration:
After some investigation, I have come to the conclusion that it is impossible to remote debug a Windows app with CLion 2021.3.1 (regardless of Host platform).
CLion does not support remote debugging when targeting Windows OS using GDB Server (hence targeting Windows is impossible) due to:
CLion does not handle cases when SSH Server is using a non-Unix shell like CMD.exe or PowerShell. Commands like exec, env, chmod can’t be handled. This can be circumvented by using a Unix shell:
a. Unfortunately, connection fails for MSYS2 Bash and Git Bash when Windows OpenSSH Server is configured to use one as a default shell.
b. Windows WSL SSH Server works. Connection is established, Unix commands are recognized. WSL must be installed. It is not easy to configure WSL when Windows itself is running on virtual machine.
c. MinGW64 SSH Server. Didn’t test it.
Uploading binaries via SFTP fails when OpenSSH Service is used. Can be circumvented with 1.b..
CLion doesn’t consider the binary’s file extension. It always assumes that the binary is built for Linux, hence the attempt to transfer fails, when a binary has an .exe extension (fails to find test, though test.exe was built). This is a major bug that prevents remote debugging targeting Windows. There are, however, ways to work around:
a. Manual renaming before running debug. Unacceptable.
b. Adding a conditional custom CMake command. May work but pollutes the CMakeLists.txt
CLion can’t connect to MinGW GDB Server it has started. Connection times out. However, if the Server was started from a terminal, CLion connects successfully and is able to run debug as intended. This can ONLY be worked around MANUALLY:
a. In Edit Configurations… one must put a stub command in GDB Server:, for example ‘sleep’. In GDB Server args: ‘5’. This will give a time to manually run the gdbserver.exe command via an SSH connection in Terminal.
These issues were reproduced for CLion versions for Windows 10 and Ubuntu 20.04.
3. and 4. are very serious and prevent from remote debugging targeting Windows as it was intended to be done.
This happens when CLion connects to the Server it has started:
This is a work around:
As can be seen from the screenshots, with this approach GDB’s console does not catch the output. You must switch to Terminal to see it.

Get err_connection_refused accessing django running on wsl2 from Windows but can curl from Windows terminal

I got the err_connection_refused when trying to accessing django running on wsl2 (http://localhost:8000) from Windows but when I use curl http://localhost:8000 from Windows terminal bash, it's working fine. I have tried to add a new firewall inbound rule for port 8000 but it's still not working. Is there anything else I need to take care of.
Thanks a lot
Seems like a forwarding problem. WSL2's interface is NAT'd, whereas WSL1 was bridged by default. WSL seems to do some "auto-forwarding" of ports, but only on localhost. However, sometimes this auto-forwarding mechanism seems to "break down". The main culprit seems to be hibernation or Windows Fast Startup (which are both closely-related features).
Does the problem resolve if you do a wsl --shutdown and then restart the WSL2 session? If so, try disabling Windows' Fast Startup. I already had Fast Startup disabled due to a different (non-WSL issue) on my system, so that could be related to why I am not able to reproduce.
Along the same lines, do you Hibernate instead of powering off? In that case, a wsl --shutdown might resolve as well.
For future readers, note that the above two points seem to resolve the issue for most people who have upvoted and responded in the comments. However, if that does not work for you, the following were my original "additional suggestions":
For some additional ideas, see this github issue. There are some suggestions on services that might be needed. (Side question - Are you running Windows Home or Professional?)
Is there any chance that your Windows hosts file (e.g. c:\windows\system32\drivers\etc\hosts) points localhost to an IP other than 127.0.0.1? If I attempt to access via my local Windows IP address, rather than 127.0.0.1 or localhost, I get an ERR_CONNECTION_REFUSED as well.
Since you were looking at the firewall rules, maybe look at a forwarding rule instead of just an inbound allow?
If all else fails, try exporting/backing up the WSL2 session (see wsl --export), then import it in as a new WSL1 session. See if it works there.
On my WSL2/Ubuntu 20.04 system, I attempted to reproduce (but haven't been able to yet) with the following steps:
mkdir -p ~/src/dj-test
cd ~/src/dj-test
python3 -m venv dj
source dj/bin/activate
pip install Django
django-admin startproject config .
python manage.py runserver
(although I used activate.fish since I'm running the fish shell)
From Vivaldi web browser in Windows, accessed localhost:8000, which returned "The install worked successfully! Congratulations! ..."
curl under Powershell Core worked as well.

Intel Vtune Profiler: Remote Profiling with Sudo

I'm using Intel Vtune to profile a remote application that requires sudo access on another machine. I have been able to profile remote applications on that machine before that do not require sudo access, but Intel Vtune is not working for applications that require sudo access. I tried two different approaches:
I called the application with sudo pre-appended in the vtune app.
This attempted solution didn't even run and gave me an error.
I created a bash script that called the application with sudo pre-appended inside the script. I also disabled password to escalate permissions to superuser, so that the script won't prompt for a password.
Vtune ran this attempt and did not return an error, but it didn't really work. When analyzing the results it ran for less than 1 second (the application is supposed to run for a few mins), and it didn't even capture enough data to give me any information. It obviously didn't run properly, but I didn't see any errors or warnings so I can't really tell what is going on.
Any ideas on how to properly run remote applications with sudo permissions in Vtune?
For your case you should be actually using sudo for the application and should be giving your actual application and parameters to it in the parameters field. Please find an attached image as example.
This is because you are passing your app to sudo executable which takes in your app as parameter and executes required action.
Your second example did not work as the bash file might have sudo dependencies and would work only if this is executed with sudo/root. A normal execution(by a normal user) might not even run the bash script.

Remote gdb with Eclipse Oxygen 3a

I've read several guides/stackoverflows but not found a similar situation/solution.
I have my remote ssh working (can browse files).
I don't get why I need a local Windows application (although I have a compiled .exe it's not the version I want to debug which is only on the Linux server).
When I try and launch a remote debug session it immediately fails with
Exception occurred during launch
Reason:
Error during file upload.
and below in the details
Could not write file: <my windows exe path>
Permission denied
...
The aforementioned file is writable and in any event I also started eclipse as administrator just in case.
In any event the .exe is irrelevant. I just want to debug code remotely.
(I know all about gdbserver...happy to manually kick that off if need be....don't think I'm there yet though)
Below is the options page I'm presented with:
Had the same experience on TI Code Composer Studio Version: 9.3.0.00012.
This seems to happen while uploading the cross compiled binary from host to target. If you set the check box "Skip download to target path" the error should disappear.
I propose to workaround the upload.
Setup a web server on the host, the line python.exe -m http.server --directory \source\hello\Debug\ would be sufficient
Run wget on the target, see screenshot

How to build and install the latest nightly Firefox OS on Alcatel One Touch Fire?

I want to upgrade Firefox OS 1.1 on my Alcatel One Touch Fire to the master branch (the latest revision). After having read the Mozilla Wiki, I cloned the B2G repository, built it for the hamachi target by typing:
./config.sh hamachi && ./build.sh
(There are even prebuilt images)
Now is the hardest part, since Alcatel phones are not rooted and seems to have a locked bootloader.
The docs say that I should flash the device by typing:
./flash.sh
But all I get are these errors:
adbd cannot run as root in production builds
remount failed: Operation not permitted
push: /home/user/B2G/objdir-gecko/dist/b2g/dictionaries/en-US.aff -> /system/b2g/dictionaries/en-US.aff
failed to copy '/home/user/B2G/objdir-gecko/dist/b2g/dictionaries/en-US.aff' to '/system/b2g/dictionaries/en-US.aff': Read-only file system
Could anybody write an simple step-by-step tutorial (easier than this) on how to install the latest Firefox OS to a stock Alcatel One Touch Fire?
I guess first we can check if the phone itself is rooted.
You could try,
$ adb shell
And if shows,
root#android:/ #
Then I think the phone is rooted, and you can flash your phone with ./flash.sh.
If it is not rooted, I think the link you mentioned has provided the steps to create a new boot.img so that you could root the phone.
Here is an excerpt from Mozilla guide on flashing phones related to Hamachi (Alcatel One Touch Fire):
Best build for Hamachi: moz-central Use your LDAP to go here: https://pvtbuilds.mozilla.org/pvt/mozilla.org/b2g_ril/latest-hamachi-mozilla-central/
And then run this script command line: fullflash_gecko_ril_gaia.sh You
may need to preface this with ./ but it should just run upon your
hitting enter. DON'T run ./flash.sh. THIS CAN BRICK YOUR HAMACHI :( -
GB
What is my order of operations from the beginning?
FOR ALL DEVICES... AFTER you have installed ADB, Git, and Xcode, you should:
Connect your device to your machine via USB. You're SURE it's plugged in? OK then...
Get your build with your LDAP credentials (from moz-central): Buri: Need from Naoki Hamachi:
https://pvtbuilds.mozilla.org/pvt/mozilla.org/b2g_ril/latest-hamachi-mozilla-central/
Run this script: fullflash_gecko_ril_gaia.sh
Download gaia from github (it's easier than the command line as you avoid a pull request) at: https://github.com/mozilla-b2g/gaia Along
the right hand side there is an option to "Download ZIP." Unpack that
into a folder, open Terminal and "cd" (ask Stephany or Francis if you
need help with this) into the folder (i.e. wherever you unpacked your
zip file). Run "make reset-gaia".
You should see... a whole bunch of stuff scrolling by on the command line and your device should reboot. If your device does NOT
reboot, try ADB reboot.