Enviado em 03/03/2020 - 01:33h
​boa noite/bom-dia pessoal, não tenho conhecimento para fazer essa conversão ou deixar compatível, se alguém puder por favor fazer isso pra mim ficarei agradecido de coração.
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <WINSOCK2.H>
#define DEF_BUF_SIZE 1024
#define IP_HEADER_SIZE 20
#define ICMP_HEADER_SIZE 12
typedef struct _ICMP_HEADER
{
BYTE bType;
BYTE bCode;
USHORT nCheckSum;
USHORT nId;
USHORT nSequence;
UINT nTimeStamp;
}ICMP_HEADER, *PICMP_HEADER;
USHORT GetCheckSum(LPBYTE lpBuff, DWORD dwSize)
{
DWORD dwCheckSum = 0;
USHORT* lpWord = (USHORT*)lpBuff;
while(dwSize > 1)
{
dwCheckSum += *lpWord++;
dwSize -= 2;
}
if(dwSize ==1)
dwCheckSum += *((LPBYTE)lpBuff);
dwCheckSum = (dwCheckSum >> 16) + (dwCheckSum & 0XFFFF);
return (USHORT)(~dwCheckSum);
}
BOOL Ping(char* lpDestIP, int *nRet_, int *nTime_)
{
int nTime = 0;
int ret = 0;
char ICMPPack[ICMP_HEADER_SIZE] = {0};
char szRcvBuff[DEF_BUF_SIZE] = {0};
int i = 0;
int nRet = 0;
int nLen = 0;
int nError = 0;
SOCKET s;
PICMP_HEADER pRcvHeader;
SOCKADDR_IN SourceSockAddr;
SOCKADDR_IN DestSockAddr;
PICMP_HEADER pICMPHeader;
DestSockAddr.sin_family = AF_INET;
DestSockAddr.sin_addr.S_un.S_addr = inet_addr(lpDestIP);
DestSockAddr.sin_port = htons(0);
pICMPHeader = (PICMP_HEADER)ICMPPack;
pICMPHeader->bType = 8;
pICMPHeader->bCode = 0;
pICMPHeader->nId = (USHORT)GetCurrentProcessId();
pICMPHeader->nCheckSum = 0;
pICMPHeader->nTimeStamp = 0;
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
nTime = 1000;
ret = setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char*)&nTime, sizeof(nTime));
for(i=0; i <1; i++)
{
pICMPHeader->nCheckSum = 0;
pICMPHeader->nSequence = i;
pICMPHeader->nTimeStamp = GetTickCount();
pICMPHeader->nCheckSum = GetCheckSum((LPBYTE)(ICMPPack), ICMP_HEADER_SIZE);
nRet = sendto(s, ICMPPack, ICMP_HEADER_SIZE, 0, (SOCKADDR*)&DestSockAddr, sizeof(DestSockAddr));
if(nRet == SOCKET_ERROR)
{
return FALSE;
}
nLen = sizeof(SOCKADDR_IN);
if(nRet == SOCKET_ERROR)
{
return FALSE;
}
nRet = recvfrom(s, szRcvBuff,DEF_BUF_SIZE,0,(SOCKADDR*)&SourceSockAddr,&nLen);
if(nRet == SOCKET_ERROR)
{
return FALSE;
}
pRcvHeader = (PICMP_HEADER)(szRcvBuff + IP_HEADER_SIZE);
nTime = GetTickCount() - pRcvHeader->nTimeStamp;
//printf("Return Message: %s bytes=%d time=%dms\n", inet_ntoa(SourceSockAddr.sin_addr), nRet, nTime);
*nRet_ = nRet;
*nTime_ = nTime;
}
return TRUE;
}
#include "ping.c"
BUILDIN_FUNC(ping) {
//
const char *name;
char _cmd[500];
int nRet=0, nTime=0;
//
//
name = script_getstr(st,2);
Ping((char *)name, &nRet, &nTime);
if( nRet <= 0 || nTime < 0 )
sprintf(_cmd,"Return Message: %s fail to connect", (char *)name);
else
sprintf(_cmd,"Return Message: %s bytes=%d time=%dms\n", (char *)name, nRet, nTime);
//
script_pushstrcopy(st, _cmd);
return 0;
}
BUILDIN_DEF(ping,"s")
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta