ip欺骗?

ouaim 2013-07-09 10:25:15
《Linux防火墙》 陈建译
http://ishare.iask.sina.com.cn/f/23362159.html

第2章 网络层的攻击与防御
2.3.2 IP欺骗
使用PERL语言实现IP欺骗

书上给出一个perl语言程序,这个程序就是个IP欺骗程序!

-----------------------------------------------------------------------------------------------

问题:
1.IP欺骗的原理是什么?

2.怎么用这个perl程序实现IP欺骗呢?
书上没有说,给个实例说说!

3.这个perl程序是个脚本程序,改成C语言是怎写?
...全文
387 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
不会再变le 2013-07-12
  • 打赏
  • 举报
回复
[/quote] ubuntu@ubuntu:~$ gcc a.c a.c:1:20: 致命错误: stdafx.h:没有那个文件或目录 编译中断。 ubuntu@ubuntu:~$ [/quote] 环境是VS2005,需要winpcap,这是其中的一个最重要的CPP,剩下的均为系统生成
ouaim 2013-07-12
  • 打赏
  • 举报
回复
引用 12 楼 a419635259 的回复:

#include "stdafx.h"
#include <pcap.h>
#include "fake.h"
#pragma comment(lib, "wpcap.lib")
#pragma comment(lib, "Packet.lib")
#pragma comment(lib, "wsock32.lib")//hton()函数用到

void Creatpack();//构造包声明
void fill_mac_data();//填充mac部分声明
void fill_ip_data();//填充ip部分声明
void fill_icmp_data();//填充icmp部分声明

u_short checksum(u_short *buffer, int size);//检验和函数
int main()
{
	pcap_t *fp;//打开网卡后返回的指针

	pcap_if_t *alldevs;//接口列表结点指针
	pcap_if_t *d;
	char errbuf[PCAP_ERRBUF_SIZE];

	int k=0;//总网卡数k
	int inum;//要欲输入的网卡号

	u_int num_pack=0;//发包数量
	u_int j=0;

	time_t lt;//时间相关
	struct tm *ltime;
	char timestr[30];

	/* 取得所有网卡列表*/
	if(pcap_findalldevs(&alldevs, errbuf) == -1)
	{
		fprintf(stderr,"Error in pcap_findalldevs: %s ", errbuf);
		exit(1);
	}

	/* 输出网卡列表*/
	for(d=alldevs; d; d=d->next)//直到d指向NULL
		printf("%d. %s ", ++k, d->name);//网卡名,网卡数k加1


	/* 选择欲抓包网卡号*/
	printf("Enter the interface number (1-%d):",k);
	scanf("%d", &inum);

	if(inum < 1 || inum > k)//输入网卡号错的话跳出
	{
		printf(" Interface number out of range. ");
		pcap_freealldevs(alldevs);
		return -1;
	}
	for(d=alldevs, k=0; k< inum-1 ;d=d->next, k++);//进行网卡选择


	/* 打开网卡 */
	if ((fp = pcap_open_live(d->name,  // name of the device
		65536,   // portion of the packet to capture. It doesn't matter in this case 
		1,    // promiscuous mode (nonzero means promiscuous)
		1000,   // read timeout
		errbuf   // error buffer
		)) == NULL)
	{
		fprintf(stderr," Unable to open the adapter. %s is not supported by WinPcap ", d->name);
		return 2;
	}

	/* 选择要发包的数量*/
	printf("Enter the packet number will send :");
	scanf("%d", &num_pack);

	Creatpack();

	/* 进行发包 */
	while(j<num_pack)
	{
		if (pcap_sendpacket(fp, // Adapter
			packet,    // buffer with the packet
			100     // size
			) != 0)
		{
			fprintf(stderr," Error sending the packet:  ", pcap_geterr(fp));
			return 3;
		}
		/* 获得时间*/
		lt = time(NULL);//日历日间
		ltime=localtime(<);//日历时间转化为本地时间
		strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);//时间显示格式

		printf("No: %-3d time:%s ",j+1,timestr);

		j++;
	}    
	printf("sending %d packet successfully ! ",num_pack);
	pcap_close(fp); 
	system("pause");
	return 0;
}

void Creatpack()
{
	memset( packet,0, sizeof(packet) );

	fill_mac_data();
	fill_ip_data();
	fill_icmp_data();
}

void fill_mac_data()
{  

	MacHeadr.type = htons(0x0800);//IP包类型
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//目标mac地址,下面的意思为00:E0:4C:04:8E:E7
	MacHeadr.dmac[0] = 0x00;
	MacHeadr.dmac[1] = 0xE0;
	MacHeadr.dmac[2] = 0x4C;
	MacHeadr.dmac[3] = 0x04;
	MacHeadr.dmac[4] = 0x8E;
	MacHeadr.dmac[5] = 0xE7;
	//源mac地址
	MacHeadr.smac[0] = 0x00;
	MacHeadr.smac[1] = 0x00;
	MacHeadr.smac[2] = 0x00;
	MacHeadr.smac[3] = 0x00;
	MacHeadr.smac[4] = 0x00;
	MacHeadr.smac[5] = 0x0F;
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////

	memcpy(packet,&MacHeadr,sizeof(MacHeadr));
}

void fill_ip_data()
{
	pIpHeader=&IpHeader;
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//目标ip地址,下面的意思是192.168.0.81
	IpHeader.daddr[0]        = 192;
	IpHeader.daddr[1]        = 168;
	IpHeader.daddr[2]        = 0;
	IpHeader.daddr[3]        = 81;
	//源ip地址
	IpHeader.saddr[0]        = 192;
	IpHeader.saddr[1]        = 168;
	IpHeader.saddr[2]        = 0;
	IpHeader.saddr[3]        = 114;
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	IpHeader.flags_fo        = htons(0);
	IpHeader.identification  = htons(0x3456);
	IpHeader.proto           = IPPROTO_ICMP;
	IpHeader.tlen            = htons(60);//IP头:20+ICMP头:8+ICMP请求包固定数据32,
	//错的话对方不会发回应包
	IpHeader.tos             = 0;
	IpHeader.ttl             = 128;
	IpHeader.ver_ihl         = 0x45;
	IpHeader.crc             = 0;
	IpHeader.crc             = checksum((u_short *)pIpHeader, sizeof(IpHeader));//已经是网络字符序了
	memcpy(packet+sizeof(MacHeadr),&IpHeader,sizeof(IpHeader));
}

void fill_icmp_data()
{ 
	pIcmpHeader=&IcmpHeader;

	IcmpHeader.i_type  = 8; 
	IcmpHeader.i_code  = 0; 
	IcmpHeader.i_id    = htons(0x2);; 
	IcmpHeader.i_seq   = htons(0); 
	IcmpHeader.i_cksum = 0;
	IcmpHeader.i_cksum = checksum((u_short *)pIcmpHeader,sizeof(IcmpHeader) ); //已经是网络字符序了

	memcpy(packet+sizeof(MacHeadr)+sizeof(IpHeader),&IcmpHeader,sizeof(IcmpHeader));


} 


u_short checksum(u_short *buffer, int size) { 

	unsigned long cksum=0; 

	while(size >1) { 
		cksum+=*buffer++; 
		size -=sizeof(u_short); 
	} 

	if(size ) { 
		cksum += *(UCHAR*)buffer; 
	} 

	cksum = (cksum >> 16) + (cksum & 0xffff); 
	cksum += (cksum >>16); 
	return (u_short)(~cksum); 
} 
上面这段程序可以给任意IP地址发任意内容,并任意填写发送方IP地址和MAC地址
ubuntu@ubuntu:~$ gcc a.c a.c:1:20: 致命错误: stdafx.h:没有那个文件或目录 编译中断。 ubuntu@ubuntu:~$
不会再变le 2013-07-12
  • 打赏
  • 举报
回复
引用 13 楼 u011349094 的回复:
[quote=引用 12 楼 a419635259 的回复:]

#include "stdafx.h"
#include <pcap.h>
#include "fake.h"
#pragma comment(lib, "wpcap.lib")
#pragma comment(lib, "Packet.lib")
#pragma comment(lib, "wsock32.lib")//hton()函数用到

void Creatpack();//构造包声明
void fill_mac_data();//填充mac部分声明
void fill_ip_data();//填充ip部分声明
void fill_icmp_data();//填充icmp部分声明

u_short checksum(u_short *buffer, int size);//检验和函数
int main()
{
	pcap_t *fp;//打开网卡后返回的指针

	pcap_if_t *alldevs;//接口列表结点指针
	pcap_if_t *d;
	char errbuf[PCAP_ERRBUF_SIZE];

	int k=0;//总网卡数k
	int inum;//要欲输入的网卡号

	u_int num_pack=0;//发包数量
	u_int j=0;

	time_t lt;//时间相关
	struct tm *ltime;
	char timestr[30];

	/* 取得所有网卡列表*/
	if(pcap_findalldevs(&alldevs, errbuf) == -1)
	{
		fprintf(stderr,"Error in pcap_findalldevs: %s ", errbuf);
		exit(1);
	}

	/* 输出网卡列表*/
	for(d=alldevs; d; d=d->next)//直到d指向NULL
		printf("%d. %s ", ++k, d->name);//网卡名,网卡数k加1


	/* 选择欲抓包网卡号*/
	printf("Enter the interface number (1-%d):",k);
	scanf("%d", &inum);

	if(inum < 1 || inum > k)//输入网卡号错的话跳出
	{
		printf(" Interface number out of range. ");
		pcap_freealldevs(alldevs);
		return -1;
	}
	for(d=alldevs, k=0; k< inum-1 ;d=d->next, k++);//进行网卡选择


	/* 打开网卡 */
	if ((fp = pcap_open_live(d->name,  // name of the device
		65536,   // portion of the packet to capture. It doesn't matter in this case 
		1,    // promiscuous mode (nonzero means promiscuous)
		1000,   // read timeout
		errbuf   // error buffer
		)) == NULL)
	{
		fprintf(stderr," Unable to open the adapter. %s is not supported by WinPcap ", d->name);
		return 2;
	}

	/* 选择要发包的数量*/
	printf("Enter the packet number will send :");
	scanf("%d", &num_pack);

	Creatpack();

	/* 进行发包 */
	while(j<num_pack)
	{
		if (pcap_sendpacket(fp, // Adapter
			packet,    // buffer with the packet
			100     // size
			) != 0)
		{
			fprintf(stderr," Error sending the packet:  ", pcap_geterr(fp));
			return 3;
		}
		/* 获得时间*/
		lt = time(NULL);//日历日间
		ltime=localtime(<);//日历时间转化为本地时间
		strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);//时间显示格式

		printf("No: %-3d time:%s ",j+1,timestr);

		j++;
	}    
	printf("sending %d packet successfully ! ",num_pack);
	pcap_close(fp); 
	system("pause");
	return 0;
}

void Creatpack()
{
	memset( packet,0, sizeof(packet) );

	fill_mac_data();
	fill_ip_data();
	fill_icmp_data();
}

void fill_mac_data()
{  

	MacHeadr.type = htons(0x0800);//IP包类型
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//目标mac地址,下面的意思为00:E0:4C:04:8E:E7
	MacHeadr.dmac[0] = 0x00;
	MacHeadr.dmac[1] = 0xE0;
	MacHeadr.dmac[2] = 0x4C;
	MacHeadr.dmac[3] = 0x04;
	MacHeadr.dmac[4] = 0x8E;
	MacHeadr.dmac[5] = 0xE7;
	//源mac地址
	MacHeadr.smac[0] = 0x00;
	MacHeadr.smac[1] = 0x00;
	MacHeadr.smac[2] = 0x00;
	MacHeadr.smac[3] = 0x00;
	MacHeadr.smac[4] = 0x00;
	MacHeadr.smac[5] = 0x0F;
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////

	memcpy(packet,&MacHeadr,sizeof(MacHeadr));
}

void fill_ip_data()
{
	pIpHeader=&IpHeader;
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//目标ip地址,下面的意思是192.168.0.81
	IpHeader.daddr[0]        = 192;
	IpHeader.daddr[1]        = 168;
	IpHeader.daddr[2]        = 0;
	IpHeader.daddr[3]        = 81;
	//源ip地址
	IpHeader.saddr[0]        = 192;
	IpHeader.saddr[1]        = 168;
	IpHeader.saddr[2]        = 0;
	IpHeader.saddr[3]        = 114;
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	IpHeader.flags_fo        = htons(0);
	IpHeader.identification  = htons(0x3456);
	IpHeader.proto           = IPPROTO_ICMP;
	IpHeader.tlen            = htons(60);//IP头:20+ICMP头:8+ICMP请求包固定数据32,
	//错的话对方不会发回应包
	IpHeader.tos             = 0;
	IpHeader.ttl             = 128;
	IpHeader.ver_ihl         = 0x45;
	IpHeader.crc             = 0;
	IpHeader.crc             = checksum((u_short *)pIpHeader, sizeof(IpHeader));//已经是网络字符序了
	memcpy(packet+sizeof(MacHeadr),&IpHeader,sizeof(IpHeader));
}

void fill_icmp_data()
{ 
	pIcmpHeader=&IcmpHeader;

	IcmpHeader.i_type  = 8; 
	IcmpHeader.i_code  = 0; 
	IcmpHeader.i_id    = htons(0x2);; 
	IcmpHeader.i_seq   = htons(0); 
	IcmpHeader.i_cksum = 0;
	IcmpHeader.i_cksum = checksum((u_short *)pIcmpHeader,sizeof(IcmpHeader) ); //已经是网络字符序了

	memcpy(packet+sizeof(MacHeadr)+sizeof(IpHeader),&IcmpHeader,sizeof(IcmpHeader));


} 


u_short checksum(u_short *buffer, int size) { 

	unsigned long cksum=0; 

	while(size >1) { 
		cksum+=*buffer++; 
		size -=sizeof(u_short); 
	} 

	if(size ) { 
		cksum += *(UCHAR*)buffer; 
	} 

	cksum = (cksum >> 16) + (cksum & 0xffff); 
	cksum += (cksum >>16); 
	return (u_short)(~cksum); 
} 
上面这段程序可以给任意IP地址发任意内容,并任意填写发送方IP地址和MAC地址
ubuntu@ubuntu:~$ gcc a.c a.c:1:20: 致命错误: stdafx.h:没有那个文件或目录 编译中断。 ubuntu@ubuntu:~$ [/quote] http://download.csdn.net/detail/a419635259/5742307
ouaim 2013-07-11
  • 打赏
  • 举报
回复
这个,谁说说呢?
不会再变le 2013-07-11
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include <pcap.h>
#include "fake.h"
#pragma comment(lib, "wpcap.lib")
#pragma comment(lib, "Packet.lib")
#pragma comment(lib, "wsock32.lib")//hton()函数用到

void Creatpack();//构造包声明
void fill_mac_data();//填充mac部分声明
void fill_ip_data();//填充ip部分声明
void fill_icmp_data();//填充icmp部分声明

u_short checksum(u_short *buffer, int size);//检验和函数
int main()
{
	pcap_t *fp;//打开网卡后返回的指针

	pcap_if_t *alldevs;//接口列表结点指针
	pcap_if_t *d;
	char errbuf[PCAP_ERRBUF_SIZE];

	int k=0;//总网卡数k
	int inum;//要欲输入的网卡号

	u_int num_pack=0;//发包数量
	u_int j=0;

	time_t lt;//时间相关
	struct tm *ltime;
	char timestr[30];

	/* 取得所有网卡列表*/
	if(pcap_findalldevs(&alldevs, errbuf) == -1)
	{
		fprintf(stderr,"Error in pcap_findalldevs: %s ", errbuf);
		exit(1);
	}

	/* 输出网卡列表*/
	for(d=alldevs; d; d=d->next)//直到d指向NULL
		printf("%d. %s ", ++k, d->name);//网卡名,网卡数k加1


	/* 选择欲抓包网卡号*/
	printf("Enter the interface number (1-%d):",k);
	scanf("%d", &inum);

	if(inum < 1 || inum > k)//输入网卡号错的话跳出
	{
		printf(" Interface number out of range. ");
		pcap_freealldevs(alldevs);
		return -1;
	}
	for(d=alldevs, k=0; k< inum-1 ;d=d->next, k++);//进行网卡选择


	/* 打开网卡 */
	if ((fp = pcap_open_live(d->name,  // name of the device
		65536,   // portion of the packet to capture. It doesn't matter in this case 
		1,    // promiscuous mode (nonzero means promiscuous)
		1000,   // read timeout
		errbuf   // error buffer
		)) == NULL)
	{
		fprintf(stderr," Unable to open the adapter. %s is not supported by WinPcap ", d->name);
		return 2;
	}

	/* 选择要发包的数量*/
	printf("Enter the packet number will send :");
	scanf("%d", &num_pack);

	Creatpack();

	/* 进行发包 */
	while(j<num_pack)
	{
		if (pcap_sendpacket(fp, // Adapter
			packet,    // buffer with the packet
			100     // size
			) != 0)
		{
			fprintf(stderr," Error sending the packet:  ", pcap_geterr(fp));
			return 3;
		}
		/* 获得时间*/
		lt = time(NULL);//日历日间
		ltime=localtime(<);//日历时间转化为本地时间
		strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);//时间显示格式

		printf("No: %-3d time:%s ",j+1,timestr);

		j++;
	}    
	printf("sending %d packet successfully ! ",num_pack);
	pcap_close(fp); 
	system("pause");
	return 0;
}

void Creatpack()
{
	memset( packet,0, sizeof(packet) );

	fill_mac_data();
	fill_ip_data();
	fill_icmp_data();
}

void fill_mac_data()
{  

	MacHeadr.type = htons(0x0800);//IP包类型
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//目标mac地址,下面的意思为00:E0:4C:04:8E:E7
	MacHeadr.dmac[0] = 0x00;
	MacHeadr.dmac[1] = 0xE0;
	MacHeadr.dmac[2] = 0x4C;
	MacHeadr.dmac[3] = 0x04;
	MacHeadr.dmac[4] = 0x8E;
	MacHeadr.dmac[5] = 0xE7;
	//源mac地址
	MacHeadr.smac[0] = 0x00;
	MacHeadr.smac[1] = 0x00;
	MacHeadr.smac[2] = 0x00;
	MacHeadr.smac[3] = 0x00;
	MacHeadr.smac[4] = 0x00;
	MacHeadr.smac[5] = 0x0F;
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////

	memcpy(packet,&MacHeadr,sizeof(MacHeadr));
}

void fill_ip_data()
{
	pIpHeader=&IpHeader;
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//begin//////////////////////////////////////////////////////////////////////////////////
	//目标ip地址,下面的意思是192.168.0.81
	IpHeader.daddr[0]        = 192;
	IpHeader.daddr[1]        = 168;
	IpHeader.daddr[2]        = 0;
	IpHeader.daddr[3]        = 81;
	//源ip地址
	IpHeader.saddr[0]        = 192;
	IpHeader.saddr[1]        = 168;
	IpHeader.saddr[2]        = 0;
	IpHeader.saddr[3]        = 114;
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	//end//////////////////////////////////////////////////////////////////////////////////
	IpHeader.flags_fo        = htons(0);
	IpHeader.identification  = htons(0x3456);
	IpHeader.proto           = IPPROTO_ICMP;
	IpHeader.tlen            = htons(60);//IP头:20+ICMP头:8+ICMP请求包固定数据32,
	//错的话对方不会发回应包
	IpHeader.tos             = 0;
	IpHeader.ttl             = 128;
	IpHeader.ver_ihl         = 0x45;
	IpHeader.crc             = 0;
	IpHeader.crc             = checksum((u_short *)pIpHeader, sizeof(IpHeader));//已经是网络字符序了
	memcpy(packet+sizeof(MacHeadr),&IpHeader,sizeof(IpHeader));
}

void fill_icmp_data()
{ 
	pIcmpHeader=&IcmpHeader;

	IcmpHeader.i_type  = 8; 
	IcmpHeader.i_code  = 0; 
	IcmpHeader.i_id    = htons(0x2);; 
	IcmpHeader.i_seq   = htons(0); 
	IcmpHeader.i_cksum = 0;
	IcmpHeader.i_cksum = checksum((u_short *)pIcmpHeader,sizeof(IcmpHeader) ); //已经是网络字符序了

	memcpy(packet+sizeof(MacHeadr)+sizeof(IpHeader),&IcmpHeader,sizeof(IcmpHeader));


} 


u_short checksum(u_short *buffer, int size) { 

	unsigned long cksum=0; 

	while(size >1) { 
		cksum+=*buffer++; 
		size -=sizeof(u_short); 
	} 

	if(size ) { 
		cksum += *(UCHAR*)buffer; 
	} 

	cksum = (cksum >> 16) + (cksum & 0xffff); 
	cksum += (cksum >>16); 
	return (u_short)(~cksum); 
} 
上面这段程序可以给任意IP地址发任意内容,并任意填写发送方IP地址和MAC地址
zjwangmin 2013-07-11
  • 打赏
  • 举报
回复
#!/usr/bin/perl -w
 
use Net::RawIP;
use strict;
my $src=$ARGV[0] or &usage();     //src获取第一个参数,设为源IP地址
my $dst=$ARGV[1] or &usage();     //dst获取第二个参数,设为目的地址
my $str=$ARGV[2] or &usage();     //str获取第三个参数,设为数据
 
my $rawpkt=new Net::PawIP(
    {
      ip=>
        {
          saddr=>$src,
          daddr=>$dst
        },
          udp=>{} 
    };
$rawpkt->set({ip=>{
    saddr=>$src,      //源地址
    daddr=>$dst},    //目的地址
    udp=>{
      source=>10001,
      dest=>53,
      data=>$str,    //数据
    }
   });
$rawpkt->send();
print'[+]Sent'.length($str)."bytes of data...\n";
exit 0;
sub usage()
  {
    die "usage: $0 <src> <dst> <str>";
  }
简单的说就是把自己的数据包的源地址、目的地址都换掉,可以自己设置,个人理解。
flyrack 2013-07-11
  • 打赏
  • 举报
回复
数据包经过路由时会被加入额外的数据么
ouaim 2013-07-10
  • 打赏
  • 举报
回复
这个谁说说呢?
add1 2013-07-10
  • 打赏
  • 举报
回复
ip欺骗,加个身份验证就挂了~
ouaim 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 ForestDB 的回复:
LZ好歹把perl代码贴上来吧。
心如刀割 2013-07-10
  • 打赏
  • 举报
回复
引用 2 楼 nice_cxf 的回复:
大概就是换掉了源IP地址,自己wireshark等抓包工具抓包看一下就明白了
你会抓包吗
whizer 2013-07-09
  • 打赏
  • 举报
回复
google/baidu搜: IP地址欺骗是指行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身分.
nice_cxf 2013-07-09
  • 打赏
  • 举报
回复
大概就是换掉了源IP地址,自己wireshark等抓包工具抓包看一下就明白了
ForestDB 2013-07-09
  • 打赏
  • 举报
回复
LZ好歹把perl代码贴上来吧。
ouaim 2013-07-09
  • 打赏
  • 举报
回复
引用 1 楼 ForestDB 的回复:
LZ好歹把perl代码贴上来吧。

#!/usr/bin/perl -w

use Net::RawIP;
use strict;
my $src=$ARGV[0] or &usage();
my $dst=$ARGV[1] or &usage();
my $str=$ARGV[2] or &usage();

my $rawpkt=new Net::PawIP(
    {
      ip=>
        {
          saddr=>$src,
          daddr=>$dst
        },
          udp=>{} 
    };
$rawpkt->set({ip=>{
    saddr=>$src,
    daddr=>$dst},
    udp=>{
      source=>10001,
      dest=>53,
      data=>$str,
    }
   });
$rawpkt->send();
print'[+]Sent'.length($str)."bytes of data...\n";
exit 0;
sub usage()
  {
    die "usage: $0 <src> <dst> <str>";
  }

程序以书本为准!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧