我在Kali Linux上做了一个项目,在那里我运行了工具Ettercap,它列出了网络上的IP地址并将它们保存到.txt。然后我需要在另一个工具nmap上使用这些IP,所以我想编写一个可以将IP从IP.txt保存到数组中的C代码。到目前为止,这是最接近的工作代码:
#include <stdio.h>
#include <stdlib.h>
main(){
FILE *ipList;
ipList = fopen("IP.txt", "r");
int ipArray[10];
int i;
if (ipList == NULL)
{
printf("Error\n");
exit (0);
}
for (i = 0; i < 10; i++)
{
fscanf(ipList, "%d,", &ipArray[i] );
}
for (i = 0; i < 10; i++)
{
printf("nmap -A -T4 -F %d\n\n", ipArray[i]);
}
fclose(ipList);
return 0;
}
结果输出只是一堆随机数。有任何想法吗?我使用Kali是否重要?我的ipArray设置为10;如果我没有10个IP地址会有问题吗?
IP地址存储如下:
IP地址:10.0.0.1
IP地址:10.0.0.2
IP地址:10.0.0.3
IP地址:10.0.0.4
我取得了进步。这是我目前的出局:
nmap -A -T4 -F IP | nnmap -A -T4 -F地址| nnmap -A -T4 -F:| nnmap -A -T4 -F 10.0.2.2 | nnmap -A -T4 -F IP | nnmap -A -T4 -F地址| nnmap -A -T4 -F:| nnmap -A -T4 -F 10.0.2.3 | nnmap -A -T4 -F IP | nnmap -A -T4 -F地址| nnmap -A -T4 -F:| nnmap -A -T4 -F 10.0.2.4
这是我目前的代码:
#include <stdio.h>
#include <stdlib.h>
main() {
FILE *ipList;
ipList = fopen("IP.txt","r");
char ip_addr[256];
while (fscanf(ipList, "%255s", ip_addr) == 1){
printf("nmap -A -T4 -F %s|n", ip_addr);
}
if (ipList == NULL){
printf("error\n");
exit (1);
}
fclose(ipList);
return 0;
}
所以现在我的目标是让代码忽略&#34; IP地址:&#34;如果可能的话,将其作为列表输出。
答案 0 :(得分:1)
鉴于输入格式是如下行:
IP address : 10.0.0.1
然后你需要将地址作为字符串读取,或者作为4个单独的小整数读取。
char *ip_address[16];
for (i = 0; i < 10; i++)
{
if (fscanf(fp, "IP address : %15s", ip_address) != 1)
…report format error…
…code to convert dotted-decimal to IPv4 address…
}
或:
int ip[4];
for (i = 0; i < 10; i++)
{
if (fscanf(fp, "IP address : %d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]) != 4)
…report format error…
for (j = 0; j < 4; j++)
{
if (ip[j] < 0 || ip[j] > 255)
…report bogus value…
}
…convert dotted-decimal values into IPv4 address…
}