⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pseud.cpp

📁 DES算法及其在VC++6.0下的实现,编译时需要WinPcap开发包,您可以从http://www.vckbase.com/tools下载 WinPcap Developer s pack
💻 CPP
字号:
#include "stdafx.h"
#include "PIPMasq.h"

bool getAdapterInfo(
	const char* nicIPAddress,	// input
	char* AdapterName,			// output
	unsigned char*	macAddr		// output	
);


////////////////////////// PseudIF /////////////////////////////////

PseudIF::PseudIF(
	const char* wanIPAddr, 
	const char* pseudIPAddr,
	const char*	subWanIPAddr,
	unsigned const char* defaultGWMacAddr)
{
	//////////

	strcpy(m_wanIPAddr, wanIPAddr);
	memset(m_wanAdapterName, 0 , sizeof(m_wanAdapterName));

	if (getAdapterInfo(m_wanIPAddr, m_wanAdapterName, m_wanMacAddr))
		m_pseudLpAdapter = PacketOpenAdapter(m_wanAdapterName);
	else
		return;

	memcpy(m_pseudMacAddr, m_wanMacAddr, ETH_ALEN);
	memcpy(m_defaultGWMacAddr, defaultGWMacAddr, ETH_ALEN);

	PacketSetHwFilter(m_pseudLpAdapter,NDIS_PACKET_TYPE_DIRECTED);

	if((m_pseudLpPacket = PacketAllocatePacket())==NULL)
	{
  	 	sprintf(m_message,"\nError:failed to allocate the LPPACKET structure."); 
	 	return;
	}	
	
	PacketInitPacket(m_pseudLpPacket,(char*)m_pseudBuffer, MAX_ETH_SIZE);

	//////////

	m_wanIPAddr_u32 = htonl(inet_addr(wanIPAddr));
	m_pseudIPAddr_u32 = htonl(inet_addr(pseudIPAddr));
	m_subWanIPAddr_u32 = htonl(inet_addr(subWanIPAddr));
	m_netWanAddr_u32 = (m_wanIPAddr_u32 & m_subWanIPAddr_u32);

	//////////

	m_pseudIFLock = CreateMutex(0, FALSE, "pseudIFLock");

}

PseudIF::~PseudIF()
{
	PacketFreePacket(m_pseudLpPacket);
	PacketCloseAdapter(m_pseudLpAdapter);

	printf(".....PseudIF is destructed.\n");
//	Sleep(1000);	

}

bool
PseudIF::releasePacket(void* packet, int dataLen)
{
	WaitForSingleObject(m_pseudIFLock, INFINITE);	

	// Release Preparation
	PacketInitPacket(m_pseudLpPacket, (void *)packet, dataLen);

	// Release !
	BOOLEAN truefalse = PacketSendPacket(m_pseudLpAdapter,m_pseudLpPacket,TRUE);

	ReleaseMutex(m_pseudIFLock);

	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -