在启动TCP连接时是否可以发送带有自定义有效负载的SYN数据包?我的直觉是它在理论上是可行的.我正在寻找一种在Linux中实现这一目标的简单方法(使用C或Go语言),但由于它不是标准行为,我还没有找到有用的信息.(这篇文章很相似,但不是很有帮助.)
请帮帮我,谢谢!
编辑:抱歉模棱两可.不仅是这种任务的可能性,我也在寻找一种方法,甚至是样本代码来实现它.
更详细地说,问题是:没有root权限,一个进程是否可以读取(而不仅仅是写入)另一个进程的内存?(例如,通过某种方式读取 /proc/gcore 或 /proc/[PID]/mem。我还不确定他们的权限要求。)
我确实明白虚拟地址是实现的,每个进程都有自己的空间。我进行了快速搜索,但既没有找到强有力的保证,也没有找到破解方法。这篇文章说:
系统中的每个进程都有自己的虚拟地址空间。这些虚拟地址空间彼此完全独立,因此运行一个应用程序的进程不会影响另一个应用程序。此外,硬件虚拟内存机制允许保护内存区域免遭写入。这可以保护代码和数据不被恶意应用程序覆盖。
我不确定“影响”是否也包括“读取”,硬件似乎只保护内存不被覆盖。
大家知道Linux系统的这种隔离是否有强有力的保证,或者如果它可能被黑客攻击,如何保证?
提前致谢!
我的目的很简单:以某种方式查看由 glog 库提供的 VLOG(5) 打印的日志。
我有以下代码:
google::InitGoogleLogging(argv[0]);
google::ParseCommandLineFlags(&argc, &argv, true);
FLAGS_logtostderr = 1;
FLAGS_v = 10;
LOG(INFO) << "info"; // OK, I see it
LOG(WARNING) << "warning"; // OK
VLOG(5) << "vlog"; // Nothing :(
Run Code Online (Sandbox Code Playgroud)
无论我在这里手动设置标志(FLAGS_logtostderr和FLAGS_v),还是通过命令行(--v=10)传递它,我都从未在任何地方找到字符串“vlog”:既没有 stdout、stderr 也没有在\tmp. 我想我没有改变输出路径。
我在这里想念什么吗?知道如何启用VLOG吗?
根据这个,Wireshark是能够将数据包之前,(我自己因此我不能让这样的数据包)下降。而且我仍然想知道wireshhark在Linux内核中的确切位置以获取数据包。
答案是“在UN * Xes上,它使用libpcap,而在Linux上,它使用AF_PACKET套接字。” 有谁有使用“ AF_PACKET套接字”的更具体示例?如果我正确理解Wireshark,则网络接口卡(NIC)会复制所有传入数据包,并将其发送到用户定义的过滤器(伯克利数据包过滤器)。但是,这发生在哪里呢?还是我对这种理解有误,在这里我想念什么吗?
提前致谢!
我试图找到给定进程的所有TCP 套接字的文件描述符,即。给定它的 pid,这样我就可以在另一个进程中获得套接字选项而无需修改原始进程。
例如,如果我知道文件描述符是fd,那么我希望调用getsockopt(fd, ...)以在另一个进程中检索选项。我想知道这可行吗?如果是这样,如何fd在原始过程之外获得我需要的?
我试图在创建套接字时打印出返回值,即。s = socket(...); printf("%d\n", s);,保持原始进程运行并在getsockopt(s, ...)其他地方调用但它不起作用 - 似乎这样的返回值是依赖于进程的。
我也找到了 unix 域套接字的解决方案,但我不想修改原始进程的代码。
至于\proc\<PID>\fd直接阅读还是利用阅读lsof,我想说我不知道如何从他们那里找到我需要的东西。我的直觉是它们可能是潜在的解决方案。
当然,也欢迎任何其他想法。说实话,我对Linux中的文件描述符机制不是很熟悉。