c语言arp
用系统调用。
也就是
while(1)
{
系统(" ARP-d ");
}
就是这样。
c语言读取arp报文、加急、在线等的txt文件的特定行的特定字节! #包含stdio.h
//#包含字符串. h
const int MAXLINES = 1000
const int MAXLEN = 200
//用newch替换info[]中的oldch。
void replace(char info[],char oldch,char newch) {
int I = 0;
while(info[i]) {
if(info[I]= = old ch)info[I]= newch;
我;
}
}
int main() {
int n = 0;
char info[MAXLINES][MAXLEN],丢弃[MAXLEN];
FILE * infp
字符文件名[60];
Printf("文件名:");
scanf("%s ",文件名);
if((infp = fopen(filename," rt))= = NULL){
Printf("无法打开数据文件:%s\n ",文件名);
返回1;
}
While (fgets (discard,maxlen,infp)nmax lines){//读取一个空行。
fgets(discard,MAXLEN,infp);//阅读时间等信息行。
fscanf(infp," %s ",丢弃);//读取|0
fgets(info[n ],MAXLINES,infp);//读取有用的信息。请注意,最后一个有效字符可能是' \n '
}
fclose(infp);
返回0;
}
c语言中指针的定义 A是行指针,即指向包含三个int的一维数组的指针(地址是指针,A是指针常量,P是指针变量)。如果要给p赋值,就得用一个线指针来连接,所以你声明的p指向一个包含三个int的指针p;如果声明是int,
*p,p是int的指针,数据类型不匹配。
如果输出,可以这样做:p[i][j]。如其所说,A和P都是地址。如果A能做到,P也能。只是说明P是变量,A不是。
当然,你可以转过身去:
int * p;
p =(int *)a;
但是你的p是一个指向int的指针,
输出不能是那样的,相反:
printf(" % d " ,*(P3 * I j));
或者
printf("%d ",p[3 * I j]);
也就是把两个维度当成一个维度,直接看元素个数。
用C语言写模拟ARP发送请求包和接收包。 让我给你一个技术思路。
如果想用C模拟ARP发送和接收数据包,可以用VC6.0开发win32控制台应用程序,然后开发一个windows控制台程序,使用API函数。
用c语言写ARP欺骗 #包含stdafx.h
#包括“iostream”
#包含“fstream”
#包含“字符串”
#包含“windows.h”
#包含“Iphlpapi.h”
#pragma注释(lib," IpHlpApi.lib ")
#pragma注释(lib," ws2_32.lib ")
#定义MACFILE "mac.ini" //mac配置文件
#定义网关" gateway.ini"//网关地址文件
使用命名空间std
int main(int argc,char * argv[])
{
字符串ipadd
字符串macadd
char bc
//读取网关ip地址
fstream _ ipadd
_ipadd.open(GATEWAY,IOs::in);
while(_ipadd.get(bc))
{
ipadd = bc
}
cout“ARP欺骗检查工具by:nee ao \ n”;
Cout "网关IP:" ipadd endl;
int iReturn
DWORD dwIP
byMAC[6]字节;
DWORD dwLen
WSADATA WsaData
WSAStartup(MAKEWORD(2,0),wsa data);
dwIP = inet _ addr(ipadd . c _ str());
//cout dwIP " \ n ";
if (dwIP == INADDR_NONE)
{
cout”IP地址错误:“ipadd
返回1;
}
//循环获取mac地址
while(真)
{
//发送ARP查询包获取MAC地址。
dwLen = 6;
iReturn = SendARP(dwIP,0,(PULONG) byMAC,dwLen);
如果(iReturn!= NO_ERROR)
{
Printf("错误:只能获取当前网关下主机的MAC地址。\n ",argv[1]);
//_ _休假;
返回1;
}
char MACadd[50];
sprintf(MACadd," %.2X-%.2X-%.2X-%.2X-%.2X ",byMAC[0],byMAC[1],byMAC[2],byMAC[3],byMAC[4],by MAC[5]);
//cout MACadd;
//判断macadd是否为空,如果不是直接跳过。
if(macadd== " ")
{
fstream _ mac
_mac.open(MACFILE,IOs::in);
如果(!_mac)
{
//coutMACFILE“未创建”;
//第一次运行写入mac地址,这是初始mac地址。
fstream _ macr
_macr.open(MACFILE,IOs::out | IOs::app);
如果(!_macr)
{
Cout "文件创建失败,磁盘不可写或文件是只读的!";
出口(1);
}
_ macr MACadd
_ macr . close();
macadd = MACadd
}
其他
{
char ch
字符串内容;
while(_mac.get(ch))
{
内容= ch
}
_ MAC . close();
macadd =内容;
cout”MAC地址为:“content endl
}
}
//判断mac地址
if(macadd==MACadd)
{
cout " ok \ n
//返回1;
}否则
{
cout“MAC地址已被修改\ n”;
//返回1;
}
睡眠(2000);//每2秒获取一次
}
返回0;
}
最后更新于 2023-10-09 04:09:03 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章