صفحه 1 از 1

به دست آورن اطلاعات TCP

ارسال شده: شنبه ۶ خرداد ۱۳۸۵, ۸:۱۵ ب.ظ
توسط Mahdi1944
با عرض پوزش خدمت دوستان باید پوزش من را در بروز نرساندن وبلاگ بپذیرید درگیر کارها شخصی بودم


آیا تاکنون از ابزار netstat استفاده کردهاید آن می خواهید بدانید این ابزار چگونه این اطلاعات را به دست می آورد؟

این نرم افزار برای به دست آوردن اطلاعات اتصالات TCP/UDP از دو تابع GetTcpTableو GetUdpTable استفاده می کند این دو تابع به صورت زیر عمل می کنند
DWORD GetTcpTable(
PMIB_TCPTABLE pTcpTable, // ساختاری برای نگهداشتن اطلاعات اتصالات
PDWORD pdwSize, // سايز ساختار
BOOL bOrder // آيا مرتب شود
);

مقدار اول اشاره دارد به ساختار PMIB_TCPTABLE که اطلاعات اتصالات را به شما میدهد این همان اطلاعاتی است که شما می توانید در netstat با استفاده از سوئیچ –a به آن برسید

این تابع در Iphlpapi.h وجود دارد و شما می توانید از آن استفاده کنیددر زیر مثالی آورده شده که از این روش برای به دست آوردن اطلاعات از آن استفاده کنيد
AnsiString mess,LocalIP,RemotIP,name;

GetTcpTable(NULL,&d,true);

pTcpTable = (PMIB_TCPTABLE)new char[d] ;

if( pTcpTable ){
if( GetTcpTable( (PMIB_TCPTABLE)pTcpTable,&d,true) == NO_ERROR ){
{

unsigned char *local_ip = (unsigned char * )&(pTcpTable->table[pTcpTable->dwNumEntries-1].dwLocalAddr);
p = (unsigned char * )&(pTcpTable->table[pTcpTable->dwNumEntries-1].dwLocalPort);
p1= pTcpTable->table[pTcpTable->dwNumEntries-1].dwLocalPort;

unsigned int local_port = *(p+0)*256 + *(p+1);

unsigned char *remote_ip = (unsigned char * )&(pTcpTable->table[pTcpTable->dwNumEntries-1].dwRemoteAddr);

p = (unsigned char * )&(pTcpTable->table[pTcpTable->dwNumEntries-1].dwRemotePort);
p2 = pTcpTable->table[pTcpTable->dwNumEntries-1].dwRemotePort;

unsigned int remote_port = *(p+0)*256 + *(p+1);


LocalIP=Format("%d.%d.%d.%d", ARRAYOFCONST((*(local_ip+0),
*(local_ip+1),*(local_ip+2),*(local_ip+3))));



RemotIP=Format("%d.%d.%d.%d", ARRAYOFCONST((*(remote_ip+0),
*(remote_ip+1),*(remote_ip+2),*(remote_ip+3))));