?? mento supplicantdlg.cpp
字號(hào):
if ( iHotKeyLen != 0 )
{
m_wVirtualKey = ((UINT)(dwHotKey[1])<<8) + dwHotKey[0];
m_wKeyModifier = ((UINT)(dwHotKey[3])<<8) + dwHotKey[2];
m_HotKey.SetHotKey( m_wVirtualKey, m_wKeyModifier );
}
else
{
m_wKeyModifier = 0;
m_wVirtualKey = 0;
}
if ( m_iCallWay == 0 )
m_HotKey.EnableWindow( false );
else
m_HotKey.EnableWindow( true );
WriteDebugInfo("InitCertP"," >> Step 4");
UpdateData(false);
WriteDebugInfo("InitCertP"," >> Step 5");
//處理智能選項(xiàng)
m_bIntelligentReconnect = AfxGetApp()->GetProfileInt( ssIntelligentSection,
ssIntelligentReconnect, 1 );
//處理隱藏選項(xiàng)
CheckAndSetButtonStatus();
if(m_bArtificalAddressEnable)
{
UpdateData();
m_IP_set = AfxGetApp()->GetProfileString( ssHidenSection, ssIP_set, "" );
m_NetGate_set = AfxGetApp()->GetProfileString( ssHidenSection, ssNetGage_set, "" );
m_NetMask_set = AfxGetApp()->GetProfileString( ssHidenSection, ssNetMask_set, "" );
m_DNS1_set = AfxGetApp()->GetProfileString( ssHidenSection, ssDNS_set, "" );
}
//是否開機(jī)自動(dòng)運(yùn)行?如果是,則不生效熱鍵和系統(tǒng)欄圖標(biāo)
if ( stricmp( pApp->m_lpCmdLine, "-StartupConnect" ) == 0 )
m_bIsStartupConnect = true;
WriteDebugInfo("InitCertP"," >> Step 6");
return true;
}
bool CMentoSupplicantDlg::InitNICs()
{
pcap_if_t *pAllDevs=NULL;
pcap_if_t *pcapTemp;
pcap_t *pHandle;
NIC_Device *pNICTemp; //新添加網(wǎng)卡
CString sNICName;
CString sNICDescription;
CString sNICIP;
byte bNICIP[4];
char sErrorBuf[PCAP_ERRBUF_SIZE];
CString sMsg;
int iRtn;
int iErrorNo=0; //記錄錯(cuò)誤啟動(dòng)的網(wǎng)卡數(shù)
WriteDebugInfo("InitNICs"," >> Step 0");
if ( m_bNICInitSign ) //已經(jīng)初始化過了
return true;
WriteDebugInfo("InitNICs"," >> Step 1");
/* Retrieve the device list */
if ( pcap_findalldevs(&pAllDevs, sErrorBuf) == -1 || pAllDevs == NULL )
{
sMsg.Format(" ** 找不到網(wǎng)卡錯(cuò)誤: %s", sErrorBuf);
PrintOutput ( sMsg, " ** 初始化網(wǎng)卡錯(cuò)誤", true);
return false;
}
WriteDebugInfo("InitNICs"," >> Step 2");
/* 遍歷初始化網(wǎng)卡 */
for(pcapTemp=pAllDevs ; pcapTemp ; pcapTemp=pcapTemp->next)
{
/* 裝入每個(gè)網(wǎng)卡 */
if ( pcapTemp->name == NULL )
{
WriteDebugInfo(" InitNICError", " ** 您有網(wǎng)卡未命名!!");
iErrorNo ++;
continue;
}
sNICName = pcapTemp->name;
sNICName.TrimRight();
if ( ( pHandle = pcap_open_live(pcapTemp->name,
65536, 1, 1000, sErrorBuf ) ) == 0)
{
pcap_freealldevs(pAllDevs);
sMsg.Format(" ** 不能初始化網(wǎng)卡: %s!!", sNICName);
WriteDebugInfo(" InitNICError", " ** 初始化網(wǎng)卡錯(cuò)誤!!");
PrintOutput( sMsg, " ** 初始化網(wǎng)卡錯(cuò)誤", true );
iErrorNo ++;
continue;
}
sNICDescription = pcapTemp->description;
sNICDescription.TrimRight();
struct pcap_addr *ip_Description;
ip_Description = pcapTemp->addresses;
while ( ip_Description != NULL && ip_Description->addr != NULL )
{
sNICIP=iptos(((SOCKADDR_IN *)ip_Description->addr)->sin_addr.S_un.S_addr, bNICIP);
pNICTemp = new NIC_Device( sNICName, pHandle, sNICDescription, sNICIP, bNICIP );
iRtn=m_NIC_Select.AddString( "IP: " + sNICIP + " 所在的網(wǎng)卡" );
if ( m_pNICs == NULL )
m_pNICs = pNICTemp;
else
m_pNICs->AddNext( pNICTemp );
if ( sNICIP.Compare("192.168.1")<0 || sNICIP.Compare("192.168.3")>0 )
{
m_NIC_Select.SetCurSel(iRtn);
m_pCurrentNIC = pNICTemp;
m_sNICIP = sNICIP;
}
if ( ip_Description->next != NULL )
ip_Description = ip_Description->next;
else
break;
}
}
if ( iErrorNo != 0 )
{
sMsg.Format( " ** 網(wǎng)卡初始化共有 %d 個(gè)錯(cuò)誤!!", iErrorNo);
PrintOutput(sMsg);
}
WriteDebugInfo("InitNICs"," >> Step 3");
pcap_freealldevs(pAllDevs);
m_bNICInitSign = true;
WriteDebugInfo("InitNICs"," >> Step 4");
return true;
}
bool CMentoSupplicantDlg::InitInterface()
{
m_OptionTab.InsertItem( 0, "查看輸出" );
m_OptionTab.InsertItem( 1, "認(rèn)證選項(xiàng)" );
m_OptionTab.InsertItem( 2, "運(yùn)行選項(xiàng)" );
m_OptionTab.InsertItem( 3, "激活選項(xiàng)" );
m_OptionTab.InsertItem( 4, "智能選項(xiàng)" );
m_OptionTab.InsertItem( 5, "偽造選項(xiàng)" );
RECT myRect;
RECT listRect;
GetWindowRect(&myRect);
m_OptionTab.GetWindowRect(&listRect);
m_hLarge = myRect.bottom - myRect.top;
m_hSmall = listRect.top - myRect.top;
MoveWindow( myRect.left, myRect.top,
myRect.right - myRect.left , m_hLarge , true );
bLargeSign = true;
return true;
}
bool CMentoSupplicantDlg::InitNICParamater()
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
{
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
{
PrintOutput("不能取得操作系統(tǒng)的版本號(hào)!!", " ** 你這是什么操作系統(tǒng)啊?", true);
return FALSE;
}
}
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
InitNICParamaterNT();
break;
case VER_PLATFORM_WIN32_WINDOWS:
InitNICParamater98();
break;
case VER_PLATFORM_WIN32s:
MessageBox("你還用這么老的操作系統(tǒng)???");
PostQuitMessage(0);
break;
}
WriteDebugInfo("InitNICP"," >> Step 5");
//初始化MAC地址
if ( GetMacByIP( m_pCurrentNIC->m_sIP, bLocalMAC ) == false )
{
PrintOutput( "不能初始化硬件地址,可能是網(wǎng)線沒連好或IP沖突!" , " ** 網(wǎng)絡(luò)地址初始化錯(cuò)誤", true);
return false;
}
WriteDebugInfo("InitNICP"," >> Step 7");
ProcessHidenArgs();
WriteDebugInfo("InitNICP"," >> Step 8");
return true;
}
boolean CMentoSupplicantDlg::GetMacByIP(CString sIP, byte mac[])
{
PIP_ADAPTER_INFO pinfo=NULL;
unsigned long len=0;
unsigned long nError;
nError = GetAdaptersInfo(pinfo,&len);
if (nError==ERROR_NO_DATA)
{
PrintOutput(" ** 找不到網(wǎng)卡!!", " ** 取得MAC地址出錯(cuò)!!", true);
return false;
}
if (nError==ERROR_NOT_SUPPORTED)
{
PrintOutput("當(dāng)前操作系統(tǒng)不支持獲得MAC地址!!",
" ** 取得MAC地址出錯(cuò)!!", true);
return false;
}
if (nError==ERROR_BUFFER_OVERFLOW)
{
pinfo= (PIP_ADAPTER_INFO)malloc(len);
nError = GetAdaptersInfo(pinfo,&len);
if ( nError != 0 )
{
PrintOutput("當(dāng)前操作系統(tǒng)不支持獲得MAC地址!!",
" ** 取得MAC地址出錯(cuò)!!", true);
return false;
}
}
while ( pinfo != NULL )
{
// m_macaddress.Format("%02X:%02X:%02X:%02X:%02X:%02X",pinfo->Address[0],pinfo->Address[1],pinfo->Address[2],pinfo->Address[3],pinfo->Address[4],pinfo->Address[5]);
// m_description = pinfo->Description;
// m_description.TrimRight();
// m_type.Format("%d",pinfo->Type);
PIP_ADDR_STRING pAddressList = &(pinfo->IpAddressList);
while( pAddressList != NULL )
{
if ( sIP.Compare(pAddressList->IpAddress.String) == 0 )
{
for ( int i=0 ; i<6 ; i++ )
bLocalMAC[i] = pinfo->Address[i];
return true;
}
else
pAddressList = pAddressList->Next;
}
pinfo = pinfo->Next;
}
return false;
}
bool CMentoSupplicantDlg::InitNICParamaterNT()
{
LONG kResult;
DWORD dwType;
DWORD cbData;
LPDWORD lpcbData = &cbData;
BYTE bData[50];
LPBYTE lpData = bData;
HKEY kLocalMachine;
LPCTSTR lpNetworkSubKey =
"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces";
CString sNetworkSubKey;
CString sForNetGate = "DefaultGateway";
CString sForDNS = "NameServer";
CString sForNetMask = "SubnetMask";
CString sClassIDofNIC;
WriteDebugInfo("InitNICP"," >> Step 1");
//注冊(cè)表主鍵打開
sClassIDofNIC = m_pCurrentNIC->m_sName.Right(38);
sNetworkSubKey.Format("%s\\%s", lpNetworkSubKey, sClassIDofNIC );
WriteDebugInfo("InitNICP"," >> Step 0");
//獲得初始化系統(tǒng)設(shè)置 IP Mask NetGate DNS
if ( m_pCurrentNIC == NULL )
{
PrintOutput( "請(qǐng)確認(rèn)你裝有具有外網(wǎng)網(wǎng)址的網(wǎng)卡"," ** 沒有合適的網(wǎng)卡",true);
return false;
}
m_IP[0] = m_pCurrentNIC->m_bIP[0];
m_IP[1] = m_pCurrentNIC->m_bIP[1];
m_IP[2] = m_pCurrentNIC->m_bIP[2];
m_IP[3] = m_pCurrentNIC->m_bIP[3];
kResult = ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, sNetworkSubKey, NULL,
KEY_EXECUTE, &kLocalMachine);
if( kResult != ERROR_SUCCESS )
{
DWORD dwTemp = GetLastError();
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwTemp, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0, NULL );
PrintOutput( (const char*)lpMsgBuf ," ** 初始化網(wǎng)絡(luò)配置參數(shù)錯(cuò)誤!!", true );
return false;
}
WriteDebugInfo("InitNICP"," >> Step 2");
//初始化網(wǎng)關(guān)參數(shù)
dwType = REG_MULTI_SZ;
cbData = 50;
kResult = ::RegQueryValueEx( kLocalMachine, sForNetGate, NULL, &dwType,
lpData, lpcbData);
if(kResult != ERROR_SUCCESS)
{
DWORD dwTemp = GetLastError();
m_bStartupConnect = false;
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwTemp, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0, NULL );
PrintOutput( (const char*)lpMsgBuf ," ** 獲取網(wǎng)關(guān)參數(shù)錯(cuò)誤!!", true );
return false;
}
{
unsigned short int i1,i2,i3,i4;
m_sNetGate = lpData;
sscanf( (const char*)lpData, "%d.%d.%d.%d", &i1, &i2, &i3, &i4);
m_NetGate[0] = (byte) i1;
m_NetGate[1] = (byte) i2;
m_NetGate[2] = (byte) i3;
m_NetGate[3] = (byte) i4;
}
WriteDebugInfo("InitNICP"," >> Step 3");
//初始化網(wǎng)絡(luò)掩碼參數(shù)
dwType = REG_MULTI_SZ;
cbData = 50;
kResult = ::RegQueryValueEx( kLocalMachine, sForNetMask, NULL, &dwType,
lpData, lpcbData);
if(kResult != ERROR_SUCCESS)
{
DWORD dwTemp = GetLastError();
m_bStartupConnect = false;
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwTemp, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0, NULL );
PrintOutput( (const char*)lpMsgBuf ," ** 獲取網(wǎng)絡(luò)掩碼錯(cuò)誤!!", true );
return false;
}
{
unsigned short int i1,i2,i3,i4;
sscanf( (const char*)lpData, "%d.%d.%d.%d", &i1, &i2, &i3, &i4);
m_NetMask[0] = (byte) i1;
m_NetMask[1] = (byte) i2;
m_NetMask[2] = (byte) i3;
m_NetMask[3] = (byte) i4;
}
WriteDebugInfo("InitNICP"," >> Step 4");
//初始化DNS參數(shù)
dwType = REG_SZ;
cbData = 50;
kResult = ::RegQueryValueEx( kLocalMachine, sForDNS, NULL, &dwType,
lpData, lpcbData);
if(kResult != ERROR_SUCCESS)
{
DWORD dwTemp = GetLastError();
m_bStartupConnect = false;
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwTemp, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0, NULL );
PrintOutput( (const char*)lpMsgBuf ," ** 獲取DNS錯(cuò)誤!!", true );
return false;
}
::RegCloseKey(kLocalMachine);
for ( int i=0 ; i<50 ; i++ )
{
if ( lpData[i] == ',' )
{
lpData[i] = '\0';
break;
}
else if ( lpData[i] == '\0' )
break;
}
{
unsigned short int i1,i2,i3,i4;
sscanf( (const char*)lpData, "%d.%d.%d.%d", &i1, &i2, &i3, &i4);
m_DNS1[0] = (byte) i1;
m_DNS1[1] = (byte) i2;
m_DNS1[2] = (byte) i3;
m_DNS1[3] = (byte) i4;
}
return true;
}
bool CMentoSupplicantDlg::InitNICParamater98()
{
LONG kResult;
DWORD dwType;
BYTE bData[50];
LPBYTE lpData = bData;
DWORD cbData;
HKEY kLocalMachine;
LPCTSTR lpDNSSubKey =
"System\\CurrentControlSet\\Services\\VxD\\MSTCP";
LPCTSTR lpNGSubKey =
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -