如何通过端口扫描进行 *** 攻击_ *** 编程端口扫描

hacker|
166

c#高手请进~!

端口扫描器大家都不陌生吧,用着别人的端口扫描器,虽说方便,但是如果能够做一个,当然是一个赏心悦目的事。其实,实现自己的端口扫描器并不困难。而且原理也比较简单,只要我们具备基础的 *** 知识,明白tcp三次握手原则即可。

C#提供一组 *** 编程的类,使 *** 编程更加简单优美。其中,Socket封装了大多数用于 *** 通讯的api,要实现端口扫描,我们只需使用Socket.Connect() *** 。然后再判断Socket.Connected是否为真,如果为真 ,则表明该端口可以连接,也就是说该端口是开放的。所以,判断一个端口是否开放的代码如下:

public void ThreadFunc(object o)

{

int port = (int)o;

ScanSocket s = new ScanSocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

s.Port = port;

IPEndPoint ipport = new IPEndPoint(scanIP, port);

try

{

// s.BeginConnect(ipport, new AsyncCallback(EndConnect), s);

s.Connect(ipport);

if (s.Connected == true)

OnPortConnect(null, new ScanEventArg(s.Port));

}

catch (Exception e)

{

}

finally

{

lock (this)

{

finishThreads++;

}

if (OnPortThreadFinish != null)

OnPortThreadFinish(null, null);

}

}

为了实现快速扫描,不可避免的要使用多线程的。我的实现的思路是,每个线程只扫描一个端口号。扫描完了再分配一个新的端口号。直到所有的端口号扫描完为止(不知道大家有没有更好的 *** 呢)代码如下:

private void MainScan()

{

if (!AdjustPortAndIP(ip,ref sport, ref eport))

{

if (OnPortError != null)

OnPortError(null, null);

return;

}

if (maxThreadCount DEFAULT_THREAD_COUNT)

{

maxThreadCount = DEFAULT_THREAD_COUNT;

}

realThreadCount = 0;

ScanThread st = new ScanThread();

st.ScanIP = this.scanIP;

st.OnPortConnect += new ScanHandler(st_OnPortConnect);

st.OnPortThreadFinish += new EventHandler(st_OnPortThreadFinish);

for (int i = sport; i = eport; i++,realThreadCount++)

{

while (realThreadCount-st.FinishThreads maxThreadCount)

{

Thread.Sleep(10);

}

Thread.Sleep(10);

ParameterizedThreadStart ps = new ParameterizedThreadStart(st.ThreadFunc);

Thread start = new Thread(ps);

start.Start(i);

}

while (st.FinishThreads != realThreadCount) Thread.Sleep(1000);//等到所有线程全退出为止

//Thread.Sleep(10000);

if (OnScanFinish != null) //通知客户端扫描已经完成

OnScanFinish(null, null);

}

为了和客户段进行交互,所以在ScanPort.cs里定义了几个事件:

public event EventHandler OnPortError;

public event EventHandler OnScanFinish;

public event ScanHandler OnPortConnect;

public event EventHandler OnPortThreadFinish;

本文转摘自『蓝派网』

关于C++6.0 *** 编程学习问题请高手帮忙?

可以,建议你去学习黑客知识,看看TCP/IP协议的书籍。在看看VC SOCKET的书籍

就可以了,不断的努力,加油

如何使用Socket实现简单的端口扫描?

自己看书吧,说不明白

参考书籍:windows *** 编程经典实例讲解

人民邮电出版社

0条大神的评论

发表评论