Exemplo n.º 1
0
void CH3CDlg::OnCbnSelchangeCombo1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData();
	GetMac(m_deviceNum);

	SaveDevice();

	UpdateData(FALSE);
}
Exemplo n.º 2
0
std::string _GetHandle()
{
	std::vector<unsigned char> mac;
	std::string res;
	if (GetMac(mac)) {
		res.assign(mac.begin(), mac.end());
		wxLogDebug(_T("Found mac: %s"), TowxString(MacToString(mac)).c_str());
		return std::string(mac.begin(), mac.end());
	}
	return res;
}
Exemplo n.º 3
0
void GetRouterLocal(char *dev)
{
    struct ifreq    ifr;
    int             fd;

    fd = CreateSocket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
    memcpy(ifr.ifr_name, dev, IFNAMSIZ);
    src_mac = GetMac(fd, dev);
    src_ip = GetIp(fd, dev);
    netmask = GetNetmask(fd, dev);
    router_ip = GetRouterIp();
    broadcast = GetBroadcast(fd, dev);
}
Exemplo n.º 4
0
Arquivo: ID.cpp Projeto: AnnRe/archive
std::string ID::GenerateId()
{
	std::string id1,id2;
	std::string MAC = GetMac();
	std::string SerialNumber = GetSerialNumber();
	std::string MAC_hash =KeyGen::GetMD5(MAC);
	//std::string SerialNumber_hash = GetSHA256(SerialNumber);

	//std::cout << "key-part1: " << GetIDPart1(MAC_hash, MAC) << std::endl;
	id1 = GetIDPart1(MAC_hash, MAC);
	id2 = GetIDPart2(SerialNumber);
	std::string id = id1;
	id += id2;
	//std::cout << "ID:" << id << std::endl;

	_number= id;
	return id;
}
Exemplo n.º 5
0
int GetNMac(int n,char *mac)
{
  LPHOSTENT ph;
  char hostname[128];
  if(Sock2Startup()==0)
  {
    if(GetLocalIP(&ph,hostname)==0)
    {
      if(n< ph->h_length / (int)sizeof(int))
      {
        if(GetMac(*((IPAddr *)ph->h_addr_list[n]),mac)==0)
          return 0;
        else
          return -4;
      }
      else return -3;
    }
    else
      return -1;
  }
  else
    return -2;
}
Exemplo n.º 6
0
BOOL CjobpostApp::InitInstance()
{
	// 如果一个运行在 Windows XP 上的应用程序清单指定要
	// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
	//则需要 InitCommonControls()。否则,将无法创建窗口。
	InitCommonControls();

	CWinApp::InitInstance();

	AfxEnableControlContainer();

	// 标准初始化
	// 如果未使用这些功能并希望减小
	// 最终可执行文件的大小,则应移除下列
	// 不需要的特定初始化例程
	// 更改用于存储设置的注册表项
	// TODO: 应适当修改该字符串,
	// 例如修改为公司或组织名
	SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
	gl_strMac = GetMac();
	CString strAppPath = "";
	GetAppPath(strAppPath);
	strAppPath += "set.ini";
	char szTemp[2048] = {0};
	CString strNode = "set";
	::GetPrivateProfileString(strNode,"username", "",(LPSTR)szTemp,2047, strAppPath);
	CString strUser = szTemp;	
	memset(szTemp,0,2048);
	::GetPrivateProfileString(strNode,"password", "",(LPSTR)szTemp,2047, strAppPath);
	CString strPwd = szTemp;
	int iRet = 0;
	if (strUser != "" && strPwd != "")
	{
		//进行验证
		iRet = Reg(strUser,strPwd,gl_strMac.c_str());
	}
	if (!iRet)
	{
		CRegDlg dlgReg;
		dlgReg.DoModal();
		iRet = dlgReg.m_iRegSuc;
		if (!iRet)
		{
			return FALSE;
		}
	}
	CjobpostDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: 在此放置处理何时用“确定”来关闭
		//对话框的代码
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: 在此放置处理何时用“取消”来关闭
		//对话框的代码
	}

	// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
	// 而不是启动应用程序的消息泵。
	return FALSE;
}
Exemplo n.º 7
0
int GetMac(char * ip,char * mac)
{
  IPAddr  ipAddr;
  ipAddr = inet_addr (ip);
  return GetMac(ipAddr,mac);
}
int AtiendeCliente(int socket, struct sockaddr_in addr)
{

     char buffer[BUFFERSIZE];
     char aux[BUFFERSIZE];
     int bytecount;
     int fin=0;
     int code=0;         /* Código de salida por defecto */
     time_t t;
     struct tm *tmp;

     while (!fin)
       {

     memset(buffer, 0, BUFFERSIZE);
     if((bytecount = recv(socket, buffer, BUFFERSIZE, 0))== -1)
       error(5, "No puedo recibir información");
     

     //verificamos si lo que mandan es una ip y entonces la cambiamos por MAC
     if (strncmp(buffer, "IP", 2)==0)
     {
         printf("Se trata de in IPHONE\n");
         std::string comando(buffer);
         comando=comando.substr(3);
         comando="weon:"+GetMac(comando);
         
         printf("El comando dice:");
         printf(comando.c_str());
         
         comando.copy(buffer,comando.length(),0);         
     }
     ///////////////////////////////////////
     /* Evaluamos los comandos */
     /* El sistema de gestión de comandos es muy rudimentario, pero nos vale */
     /* Comando TIME - Da la hora */
     //weon:mac
     if (strncmp(buffer, "weon", 4)==0)
       {
         t = time(NULL);
         tmp = localtime(&t);
         //separo la mac address
         std::string mac(buffer);
         mac=mac.substr(5,17);
         
         
         //registro el inicio de sesion, talvez solo registro todos
         
         memset(buffer, 0, 7);
         strftime(buffer, BUFFERSIZE, "echo '%H|", tmp);
         std::string txt(buffer);
         txt.append(mac);
         txt.append("' >> /etc/weon/InciosSesion.txt");
         memset(buffer, 0, txt.length());
         txt.copy(buffer,txt.length(),0);
         system(buffer);
         printf(buffer);
         //coloco la regla que logea
         //se registrara todo, esta linea no es necesaria
         
         txt="iptables -A FORWARD -p tcp --dport 443 -m mac --mac-source ";
         txt.append(mac);
         txt.append(" -m state --state NEW -j LOG --log-prefix 'weon:");
         txt.append(mac);
         txt.append("' --log-level 4 ");
         memset(buffer, 0, BUFFERSIZE);
         txt.copy(buffer,txt.length(),0);
         system(buffer);
         printf(buffer);
         
         //coloco la regla que concede permisos
         //std::string txt;
         txt="/sbin/iptables -A FORWARD -m mac --mac-source ";
         txt.append(mac);
         txt.append(" -j ACCEPT");
         memset(buffer, 0,BUFFERSIZE);
         txt.copy(buffer,txt.length(),0);
         system(buffer); 
         printf(buffer);
         
         //regla que manda todo a squid
         txt="/sbin/iptables -t nat -I PREROUTING 2 -m mac --mac-source ";
         txt.append(mac);
         txt.append(" -p tcp --dport 80 -j DNAT --to-destination 192.168.1.250:3128");
         memset(buffer, 0,BUFFERSIZE);
         txt.copy(buffer,txt.length(),0);
         system(buffer); 
         printf(buffer);
         //esta regla deja saliro todo el trafico que no va al 80
         txt="/sbin/iptables -t nat -I PREROUTING 3 -m mac --mac-source ";
         txt.append(mac);
         txt.append(" -j ACCEPT");
         memset(buffer, 0,BUFFERSIZE);
         txt.copy(buffer,txt.length(),0);
         system(buffer); 
         printf(buffer);
         
         //regreso mesage de concedido
         txt="OK:"+mac;
         memset(buffer, 0, BUFFERSIZE);
         txt.copy(buffer,txt.length(),0);
         fin=1;
       }
     
     else if (strncmp(buffer, "check", 5)==0)
     {
         
         std::string cmd(buffer);
         cmd=cmd.substr(6);
         memset(buffer,0,BUFFERSIZE);
         cmd.copy(buffer,cmd.length(),0);
         system(buffer);
         fin=1;
     }
     /* Comando DATE - Da la fecha */
     else if (strncmp(buffer, "DATE", 4)==0)
       {
         memset(buffer, 0, BUFFERSIZE);

         t = time(NULL);
         tmp = localtime(&t);

         strftime(buffer, BUFFERSIZE, "Hoy es %d/%m/%Y\n", tmp);
       }
     /* Comando HOLA - Saluda y dice la IP */
     else if (strncmp(buffer, "HOLA", 4)==0)
       {
         memset(buffer, 0, BUFFERSIZE);
         sprintf(buffer, "Hola %s, ¿cómo estás?\n", inet_ntoa(addr.sin_addr));
       }
     /* Comando EXIT - Cierra la conexión actual */
     else if (strncmp(buffer, "E", 1)==0)
       {
         memset(buffer, 0, BUFFERSIZE);
         sprintf(buffer, "Hasta luego. Vuelve pronto %s\n", inet_ntoa(addr.sin_addr));
         fin=1;
       }
     /* Comando CERRAR - Cierra el servidor */
     else if (strncmp(buffer, "Q",1)==0)
       {
         memset(buffer, 0, BUFFERSIZE);
         sprintf(buffer, "Adiós. Cierro el servidor\n");
         fin=1;
         code=99;        /* Salir del programa */
       }
     else
       {     
         sprintf(aux, "ECHO: %s\n", buffer);
         strcpy(buffer, aux);
       }

     if((bytecount = send(socket, buffer, strlen(buffer), 0))== -1)
       error(6, "No puedo enviar información");
       }

     close(socket);
     return code;
}
Exemplo n.º 9
0
BOOL CH3CDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	CreateMutex(NULL, true, _T("Huawei"));
	if(GetLastError() == ERROR_ALREADY_EXISTS)   
	{   
		MessageBoxEx(NULL, 
			_T("已经有一个实例在运行!"),
			_T("H3C 802.1x"),
			MB_OK|MB_APPLMODAL|MB_ICONEXCLAMATION,
			0x0804);
		Shell_NotifyIcon(NIM_DELETE,&tnd);
		PostQuitMessage(0);
		return FALSE;   
	}

	// 读取信息
	GetConfig();

	PIP_ADAPTER_INFO pAdapter = NULL;
	DWORD dwRetVal = 0;

	pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
	ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);

// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
	if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) 
	{
		free(pAdapterInfo);
		pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen); 
	}

	int devCount = 0;
	if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR) 
	{
		pAdapter = pAdapterInfo;
		while (pAdapter) 
		{
			string strDescri(pAdapter->Description);
			m_device.AddString(strtotstr(strDescri).c_str());

			string strMac = GetMac(pAdapter);
			if(m_deviceUsed == strMac)
				m_deviceNum = devCount;
			
			pAdapter = pAdapter->Next;
			++devCount;
		}
	}
	//else 
	//{
	//	printf("Call to GetAdaptersInfo failed.\n");
	//}

	if(m_deviceNum >= devCount)
		m_deviceNum = 0;
	GetMac(m_deviceNum);

	UpdateData(FALSE);
	
	CStrVector Paras = ParseCmdLine();
	for(CStrVector::iterator ite = Paras.begin(); ite != Paras.end(); ++ite)
		if(!(*ite).Compare(_T("-mini")))
			SetTimer(1, 200, NULL);

	SetCtrls(FALSE);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}