Сканиране мрежа

8 отговора 345 прегледа
#1

Сканиране мрежа

някой може ли да ми каже как мога да сканирам локална мрежа за Online машини и евентуално да пълня едно TreeView след това.

Отговор
в отговор на Vermax #2

Re: Сканиране мрежа

nmap mu e majkata Inache pochwash da chetesh za

"IP Helper [IPHelper], reference"

w MSDN-a i stawash haker :)

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на Vermax #3

Re: Сканиране мрежа

Пусни един google със "WNetEnumResource" и се радвай на живота.
Ако пък не те радва много, пиши пак и ще се постарая да намеря добър пример.

чети и дишай по-леко
Отговор
в отговор на Pechenia #4

Re: Сканиране мрежа

ti pod mreja "NetBeu" mreja li imash porediwid? a toj dali pod mreja ima predwid "LAN" shtoto ako i dwamata imate predwid mreja w smisala na IP i srodnite neshtata se reshawat predimno i osnowno s ping scan pri lan mojesh da polzwash i ARP scan ako twardo stoim na MS togawa moje i s WNetEnumResource werno

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на Vermax #5

Re: Сканиране мрежа

Ако ти се чете вж. SvrAPI для непродвинутых .Това са две статии с примерен код за реализация за W9x

Отговор
в отговор на SDR #6

Re: Сканиране мрежа

Ами познай за каква мрежа и какви обекти в нея става дума... Човека иска да наплющи всички машини и техните споделени ресурси в дърво - с картинки, аз предпочитане анимирани... Ако не е така ще си изям подложката за мишката...

чети и дишай по-леко
Отговор
в отговор на Vermax #7

Re: Сканиране мрежа

Dolnoto stawa no otkriwa mashinite w LAN mreja


//---------------------------------------------------------------------------

#include <vcl.h>
#include<windows.h>
#include<iostream.h>

#include<list>
#include<vector>
#include<string>
using namespace std;



#pragma hdrstop

/*class CEasyEnumNetResourceAbstract
{
protected:
DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE netRc;
public:
CEasyEnumNetResourceAbstract ()
{
//cEntries = -1 ;
cEntries=16;
cbBuffer = 16384;
netRc=0;
netRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);
}

~CEasyEnumNetResourceAbstract ()
{
::GlobalFree((HGLOBAL)netRc);
}

virtual void GetResource()=0;
void OpenEnum();
};

void CEasyEnumNetResourceAbstract::OpenEnum()
{
dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 1\n";
GetResource();
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 2\n";
}

class CEasyEnumProvider:public CEasyEnumNetResourceAbstract
{
public:
void GetResource();
};

void CEasyEnumProvider::GetResource()
{

DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE netRc;

cEntries=16;
cbBuffer = 16384;
netRc=0;
netRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);

dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 1\n";

do
{
dwResult = WNetEnumResource(hEnum,&cEntries,netRc,&cbBuffer);
if( dwResult == NO_ERROR )
{
for(ini i=0;i<cEntries;i++)
if(netRc.lpRemoteName)
cout<<netRc.lpRemoteName<<"\n";
else
cout<<netRc.lpComment<<"\n";
}
else break;
}while( dwResult != ERROR_NO_MORE_ITEMS );
::GlobalFree((HGLOBAL)netRc);
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 2\n";
} */


void GetResource(LPNETRESOURCE netRc,list<LPNETRESOURCE> &ls)
{

DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE ArrayNetRc;

cEntries=16;
cbBuffer = 16384;
//netRc=0;
ArrayNetRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);

dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0,netRc, &hEnum);
if(dwResult != NO_ERROR){
//cout<<"greshka 1\n";
return;
}

do
{
dwResult = WNetEnumResource(hEnum,&cEntries,ArrayNetRc,&cbBuffer);
if( dwResult == NO_ERROR )
{
for(int i=0;i<cEntries;i++)
{
if(ArrayNetRc.lpRemoteName)
ls.push_back(&ArrayNetRc);
//cout<<ArrayNetRc.lpRemoteName<<"\n";
// else
// cout<<ArrayNetRc.lpComment<<"\n";
// if(ArrayNetRc.dwUsage && RESOURCEUSAGE_CONTAINER )
//netRc=&ArrayNetRc;
//GetResource(&ArrayNetRc);
}
}
else break;
}while( dwResult != ERROR_NO_MORE_ITEMS );
//::GlobalFree((HGLOBAL)ArrayNetRc);
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
return;
}


void GetResource_STR(LPNETRESOURCE netRc,list<string> &ls)
{

DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE ArrayNetRc;

cEntries=16;
cbBuffer = 16384;
//netRc=0;
ArrayNetRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);

dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0,netRc, &hEnum);
if(dwResult != NO_ERROR){
//cout<<"greshka 1\n";
return;
}

do
{
dwResult = WNetEnumResource(hEnum,&cEntries,ArrayNetRc,&cbBuffer);
if( dwResult == NO_ERROR )
{
for(int i=0;i<cEntries;i++)
{
if(ArrayNetRc.lpRemoteName)
ls.push_back(ArrayNetRc.lpRemoteName);
//cout<<ArrayNetRc.lpRemoteName<<"\n";
// else
// cout<<ArrayNetRc.lpComment<<"\n";
// if(ArrayNetRc.dwUsage && RESOURCEUSAGE_CONTAINER )
//netRc=&ArrayNetRc;
//GetResource(&ArrayNetRc);
}
}
else break;
}while( dwResult != ERROR_NO_MORE_ITEMS );
//::GlobalFree((HGLOBAL)ArrayNetRc);
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
return;
}

void info(const list<LPNETRESOURCE>& ls)
{
cout<<"*************************************************\n";
list<LPNETRESOURCE>::const_iterator i;
for(i=ls.begin();i!=ls.end();i++)
cout<<((LPNETRESOURCE)*i)->lpRemoteName<<endl;
//cout<<"*************************************************\n";
}

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int k,j;
list<LPNETRESOURCE> ls_1;
list<LPNETRESOURCE>::iterator i;

LPNETRESOURCE netRc;
netRc=(LPNETRESOURCE) ::GlobalAlloc(GPTR, 16384);
GetResource(netRc,ls_1);
vector< list<LPNETRESOURCE> > vls_1(ls_1.size());
//"*************************************************\n";
for(i=ls_1.begin(),j=0;i!=ls_1.end();i++,j++)
GetResource(*i,vls_1[j]);

// unsigned sum=0;
// for(j=0;j<vls_1.size();j++)
// if(!vls_1[j].empty())
// sum+=vls_1[j].size();
// cout<<"sum="<<sum<<endl;
list<string> ls_str;


for(j=0;j<vls_1.size();j++)
if(!vls_1[j].empty())
for(i=vls_1[j].begin();i!=vls_1[j].end();i++)
GetResource_STR(*i,ls_str);

//*************************** Wajno ****************************
list<string>::const_iterator l;
for(l=ls_str.begin();l!=ls_str.end();l++)
cout<<((string)*l)<<endl;
//*********************************************************************

/* for(j=0;j<vls_1.size();j++)
if(!vls_1[j].empty())
info(vls_1[j]); */



//"*************************************************\n";
::GlobalFree((HGLOBAL)netRc);
cout<<"\n *************** END ********************** \n";
cin>>k;
return 0;
}
//---------------------------------------------------------------------------

Отговор
в отговор на Pechenia #8

Re: Сканиране мрежа

Nedei da si qde6 podlojkata - prav si taka e!
OS-to w Windows i mi trqbva da skaniram za online useri v LAN (TCP/IP) prez opredeleno vreme.
... no si misleh 4e ima i drug na4in osven WnetOpenResources i WnetEnumResources, no qvno nqma.

10x na vsi4ki!

Отговор
в отговор на Vermax #9

Re: Сканиране мрежа

taka wsichki linuxi w mrejata bez pusnata samba (a i na tezi koito ne e konfigurirana kakto trqbwa) nqma da se wijdata w taka definiranata kato "lokalna" mreja :) ako towa e OK dejstwaj s WnetEnumResources :) inache zemi procheti za SendARP w MSDN-a

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор