• 0
JohnyRox

Mac address - emulador / programa externo

Pergunta

Por acaso alguém aqui poderia compartilhar a forma de se pegar o mac-address do cliente, via emulador ou até mesmo como os shilds fazem exemplo o antigo Harmony Shield fazia. Sinto que esse assunto não é muito debatido e compartilhado nas comunidades de Ragnarok, e essa ferramenta poderia ajudar bastante as pessoas.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostass a esta questão

  • 0

Sem uma dll de sendmac atrelada ao hexed, de nada serve isso ai. É só como fazer o emulador aceita o mac durante o login.

Segredo está em criar uma dll em VB e arrumar uma forma de atrelar ao hexed Ex:

 

Dim mc As System.Management.ManagementClass
Dim mo As System.Management.ManagementBaseObject

mc = New Management.ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As Management.ManagementObjectCollection = mc.GetInstances

For Each mo In moc
    If mo.Item("IPenabled") = True Then
    ListBox1.Items.Add("Endereço MAC " & mo.Item("MacAddress"))
End If
#include <windows.h>
#include <shellapi.h>
#include <winsock.h>
#include <stdio.h>
#include <iphlpapi.h> 
#include <assert.h>

#define IP 127.0.0.1 // IP do servidor
#define PORT 6900    // Porta de Login

static void print_mac_address(unsigned char md[]);
static char mac_address[20];
int get_mac_address(void);

int main(void)
{
	struct sockaddr_in sdAddr, servAddr;
	LPHOSTENT host_entry;
	WSADATA wsaData;
	int sd;
	
	// Aloca o mac em uma matriz
	get_mac_address();
	
	WSAStartup(MAKEWORD(2,1), &wsaData);
	
	if(!(host_entry = gethostbyname(IP)))
		return -1;
		
	// Cria o socket
	if(!(sd = socket(AF_INET, SOCK_DGRAM, 0)))
		return -1;
	
	sdAddr.sin_family = AF_INET;
	sdAddr.sin_addr.s_addr = htonl(INADDR_ANY);
	sdAddr.sin_port = htons(0);
  
	servAddr.sin_family = AF_INET;
	servAddr.sin_addr = *((LPIN_ADDR)*host_entry->h_addr_list);
	servAddr.sin_port = htons(PORT);
	
	// Envia o Mac
	if(!(sendto(sd, mac_address, strlen(mac_address)+1, 0, (LPSOCKADDR) &servAddr, sizeof(struct sockaddr))))
		return -1;
		
	closesocket(sd);
}

int get_mac_address(void)
{
	IP_ADAPTER_INFO AdapterInfo[16];
	DWORD dwBufLen = sizeof(AdapterInfo);
   
	DWORD dwStatus = GetAdaptersInfo(AdapterInfo,&dwBufLen);
	assert(dwStatus == ERROR_SUCCESS);

	PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
	do {
		print_mac_address(pAdapterInfo->Address);
		pAdapterInfo = pAdapterInfo->Next;
	}
	while(pAdapterInfo);
	return 0;
}

static void print_mac_address(unsigned char md[])
{  
	sprintf(mac_address, "%02X-%02X-%02X-%02X-%02X-%02X", md[0], md[1], md[2], md[3], md[4], md[5]);
}

 

Editado por JohnyRox
@edit
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora