原始套接字透析之实现IP地址欺骗(6)

2019-08-31 17:12

创建界面中表格及获得网卡列表、对话框初始化的代码如下:

BOOL CNetHackerKillDlg::OnInitDialog() {

CDialog::OnInitDialog();

// Add \

// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX &0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu *pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) {

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) {

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }

// Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here int i = 0;

char errbuf[PCAP_ERRBUF_SIZE]; /* 取得列表 */

if (pcap_findalldevs(&alldevs, errbuf) == - 1) {

MessageBox(\获得网络适配器列表失败,请确认您正确安装了WINPCAP!\网络黑手\MB_ICONEXCLAMATION);

GetDlgItem(IDC_STARTSTOP_BUTTON)->EnableWindow(FALSE); }

/* 输出列表 */

for (d = alldevs; d; d = d->next) {

CString str(d->name);

if (str.Find(\ m_adapterList.AddString(str); }

m_hostList.Create(CRect(12, 114, 435, 322), this, 1000); m_hostList.SetCols(4); m_hostList.SetRows(16);

for (i = 0; i < 16; i++) {

m_hostList.SetRowHeight(i, 13); for (int j = 0; j < 5; j++) {

m_hostList.SetAlignment(i, j, DT_CENTER); } }

m_hostList.SetColWidth(0, 120); m_hostList.SetColWidth(1, 140); m_hostList.SetColWidth(2, 100); m_hostList.SetColWidth(3, 62); m_hostList.SetColWidth(4, 62);

m_hostList.SetText(0, 0, \地址\ m_hostList.SetText(0, 1, \地址\ m_hostList.SetText(0, 2, \是否网络黑手\ m_hostList.SetText(0, 3, \黑手状态\

return TRUE; // return TRUE unless you set the focus to a control }

简单的修改ARP请求函数的目标地址:

void SendArpReq(unsigned long srcIp,unsigned long desIp,UCHAR * srcMac) { //…

eth.eh_dst[5]=0xfe; //… }

GetData()函数则不再需要侦听报文:

void GetData(LPPACKET lp) {

ULONG ulbytesreceived, off; ETHDR *eth; ARPHDR *arp;

char *buf, *pChar, *base; struct bpf_hdr *hdr;

ulbytesreceived = lp->ulBytesReceived; buf = (char*)lp->Buffer;

off = 0;

while (off < ulbytesreceived) {

hdr = (struct bpf_hdr*)(buf + off); off += hdr->bh_hdrlen;

pChar = (char*)(buf + off); base = pChar;

off = Packet_WORDALIGN(off + hdr->bh_caplen);

eth = (PETHDR)pChar;

arp = (PARPHDR)(pChar + sizeof(ETHDR));

if (eth->eh_type == htons(ETH_IP)) {

continue; }

else if (eth->eh_type == htons(ETH_ARP)) {

if (arp->arp_tpa == htonl(myip) && arp->arp_opt == htons(ARP_REPLY)) { int i;

for (i = 0; i < currentHstIndex; i++) {

if (hostList[i].ip == arp->arp_spa) { break; } }

if (i >= currentHstIndex) {

hostList[currentHstIndex].ip = arp->arp_spa;

memcpy(hostList[currentHstIndex].mac, eth->eh_src, 6); currentHstIndex++; } }

else if (arp->arp_spa == htonl(myip) && arp->arp_opt == htons(ARP_REPLY)) memcpy(mmac, eth->eh_src, 6); } } }

如何判断处于混杂模式的主机是否使用的是\网络黑手\呢?又如何终止对方\网络黑手\的使用呢?道理很简单,我们只需要在\网络黑手\与\网络黑手终结者\之间约定一套通信协议,按照该协议进行控制。剩下的工作留给读者朋友了。

3、攻防演示

下面的界面显示了搜索局域网内192.168.1.1~192.168.1.30范围内的节点并侦听192.168.1.2,我们简单的抓一些报文后按下\停止\,看看其中的一个TCP报文,简单的信息让我们看出对方正在上http://www.sina.com.cn这个网页。

我们完全可以把网络黑手做的更牛X一点,对应用层报文进行分析,从而完整地监视目标的行为。

现在我们给目标192.168.1.2 伪造ARP报文让其一直被提示IP冲突\地址与网络上的其他系统有冲突\,抓图如下:

我们用\或者\网络黑手终结者\都可以扫描出局域网内处于混杂模式的主机,如果确定对方使用的是\网络黑手\,在表格的黑手状态项目对应的行里双击,就会给\网络黑手\发送终止报文,\网络黑手\软件将自动关闭。

洪水攻击原理及代码实现全攻略(附源代码)

一、 什么是洪水攻击

洪水之猛、势不可挡。如果将洪水比作对计算机的攻击,那大家可以想象得出,攻击是多的猛烈。

在安全领域所指的洪水攻击是指向目标机器发送大量无用的数据包,使得目标机器忙于处理这些无用的数据包,而无法处理正常的数据包。在攻击过程中,目标机器的CPU的使用率将高于正常值,有时甚至会达到100%。这样将使目标机器的性能急剧下降。这有些象我们在日常生活中的电话,如果要使某个电话瘫痪,就不停地拨这个电话的号码,那么其它的电话就无法拨通这个电话,当然,要想不接到骚扰电话,唯一的方法是将电话线拔了。同样,要想计算机完全避免洪水攻击的唯一方法,就是不让这台计算机上网,更直接的就是将网线拔了。

二、 洪水攻击的原理

洪水攻击也称为拒绝服务攻击。可以有很多种方式进行这种攻击,本文主要讨论比较常用的利用TCP三次握手的漏洞来耗尽计算机资源的方式来进行攻击。

那么什么是TCP的三次握手呢?其实原理很简单。这要从TCP的连接过程说起。我们一般使用Socket API来进行TCP连接。要做的只是将IP或计算机名以及端口号传入connect函数,如果参数正确,目标


原始套接字透析之实现IP地址欺骗(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:解析几何题型与方法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: