Darkstar
25/11/2004, 23:49
Herkese selam,
Sizlerle kendi geliştirdiğim bir programı paylaşmak istiyorum. Bu program çok basit anlamda sizin bilgisayarınıza bağlı olan bilgisayarların IP'lerini veya NETBIOS isimlerini ve port numaralarını gösteriyor. Bunu yapabilmek için windows'ta olan "netstat" programını kullanıyor.
Programın parametreleri ile oynayarak programın kaç saat çalışacağını belirtiyorsunuz. Sizin belirttiğiniz süre içinde bilgisyarınızın tüm bağlantıları her 10 dk'da bir (bunu da değiştirebilirsiniz) inceleyerek toplam süre sonunda (siz belirliyorsunuz, N'i değiştirerek) bir text dosyasına çıktı yazıyor.
Basit bir program olmasına rağmen programlamaya yeni başlayanlar için dosya işlemleri, string parsing, vektörler ve sistem komutlarını kullanma konusunda temel bir fikir verecektir.
/************************************************** *********
* N E T G U A R D – V.1.0
*
* Written by darkstar, darkstar7619@yahoo.com
*
* Simple Windows sniffer application, which sniffs your TCP/IP connections.
* Output is written to “C:\Netguard.txt”
************************************************** *******/
#include <iostream>
#include <fstream>
#include <stdlib>
#include <string>
#include <vcl.h>
#include <stdio>
#include <iostream>
#include <dos.h>
#include <vector>
using namespace std;
const int LINESIZE = 400;
extern void ProcessInput(char *p, vector<string> &vs);
extern void RunNetGuard(vector<string> &vs);
extern void AddtoList(string &s, vector<string> &vs);
extern void WriteToFile(vector<string> &vs);
int main(int argc, char* argv[])
{
vector<string> vs;
int i, N;
// 10'dk da bir kontrol et...
// Toplam N saat çalışacak.
N = 2;
for (i=0; i<(N*6); i++)
{
printf("Checking in every 10 min.\n");
_sleep(10*60); // =10 minutes
RunNetGuard(vs);
}
WriteToFile(vs);
return 0;
}
void WriteToFile(vector<string> &vs)
{
int i;
ofstream out_file("D:\Netguard.txt");
for (i=0;i<vs.size();i++)
out_file<<vs[i]<<endl;
out_file.close();
}
void RunNetGuard(vector<string> &vs)
{
system("netstat > Netresults.txt");
char line[LINESIZE];
char *p;
int i;
ifstream myfile("Netresults.txt");
myfile.getline(line, LINESIZE, '\n'); // 1.satır -skip this
myfile.getline(line, LINESIZE, '\n'); // 2.satır -skip this
myfile.getline(line, LINESIZE, '\n'); // 3.satır -skip this
myfile.getline(line, LINESIZE, '\n'); // 4.satır -skip this
while (myfile.getline(line, LINESIZE, '\n') != 0)
{
p = strtok(line, " ");
ProcessInput(p, vs);
}
myfile.close();
}
void AddtoList(string &s, vector<string> &vs)
{
int i;
for (i=0;i<vs.size();i++)
{
if (s==vs[i])
return;
}
vs.push_back(s);
}
void ProcessInput(char *p, vector<string> &vs)
{
string s;
int i = 0;
do
{
p = strtok('\0', " ");
if (i==1)
{
if (p)
{
s = p;
AddtoList(s, vs);
}
i = 0;
return;
}
i++;
} while(p);
}
Sizlerle kendi geliştirdiğim bir programı paylaşmak istiyorum. Bu program çok basit anlamda sizin bilgisayarınıza bağlı olan bilgisayarların IP'lerini veya NETBIOS isimlerini ve port numaralarını gösteriyor. Bunu yapabilmek için windows'ta olan "netstat" programını kullanıyor.
Programın parametreleri ile oynayarak programın kaç saat çalışacağını belirtiyorsunuz. Sizin belirttiğiniz süre içinde bilgisyarınızın tüm bağlantıları her 10 dk'da bir (bunu da değiştirebilirsiniz) inceleyerek toplam süre sonunda (siz belirliyorsunuz, N'i değiştirerek) bir text dosyasına çıktı yazıyor.
Basit bir program olmasına rağmen programlamaya yeni başlayanlar için dosya işlemleri, string parsing, vektörler ve sistem komutlarını kullanma konusunda temel bir fikir verecektir.
/************************************************** *********
* N E T G U A R D – V.1.0
*
* Written by darkstar, darkstar7619@yahoo.com
*
* Simple Windows sniffer application, which sniffs your TCP/IP connections.
* Output is written to “C:\Netguard.txt”
************************************************** *******/
#include <iostream>
#include <fstream>
#include <stdlib>
#include <string>
#include <vcl.h>
#include <stdio>
#include <iostream>
#include <dos.h>
#include <vector>
using namespace std;
const int LINESIZE = 400;
extern void ProcessInput(char *p, vector<string> &vs);
extern void RunNetGuard(vector<string> &vs);
extern void AddtoList(string &s, vector<string> &vs);
extern void WriteToFile(vector<string> &vs);
int main(int argc, char* argv[])
{
vector<string> vs;
int i, N;
// 10'dk da bir kontrol et...
// Toplam N saat çalışacak.
N = 2;
for (i=0; i<(N*6); i++)
{
printf("Checking in every 10 min.\n");
_sleep(10*60); // =10 minutes
RunNetGuard(vs);
}
WriteToFile(vs);
return 0;
}
void WriteToFile(vector<string> &vs)
{
int i;
ofstream out_file("D:\Netguard.txt");
for (i=0;i<vs.size();i++)
out_file<<vs[i]<<endl;
out_file.close();
}
void RunNetGuard(vector<string> &vs)
{
system("netstat > Netresults.txt");
char line[LINESIZE];
char *p;
int i;
ifstream myfile("Netresults.txt");
myfile.getline(line, LINESIZE, '\n'); // 1.satır -skip this
myfile.getline(line, LINESIZE, '\n'); // 2.satır -skip this
myfile.getline(line, LINESIZE, '\n'); // 3.satır -skip this
myfile.getline(line, LINESIZE, '\n'); // 4.satır -skip this
while (myfile.getline(line, LINESIZE, '\n') != 0)
{
p = strtok(line, " ");
ProcessInput(p, vs);
}
myfile.close();
}
void AddtoList(string &s, vector<string> &vs)
{
int i;
for (i=0;i<vs.size();i++)
{
if (s==vs[i])
return;
}
vs.push_back(s);
}
void ProcessInput(char *p, vector<string> &vs)
{
string s;
int i = 0;
do
{
p = strtok('\0', " ");
if (i==1)
{
if (p)
{
s = p;
AddtoList(s, vs);
}
i = 0;
return;
}
i++;
} while(p);
}