// C# 实现端口扫描
//===========================================================
using System
using System.Collections.Generic
using System.Text
using System.Net
using System.Net.Sockets
using System.Threading
namespace ConsoleApplication3
{
class Program
{
//已扫描端口数目
internal static int scannedCount = 0
internal static int runningThreadCount = 0
internal static List <int>openedPorts = new List <int>()
static int startPort = 1
static int endPort = 500
static int maxThread = 100
static void Main(string[] args)
{
//简单提示
Console.WriteLine("////////////////////////////////////////////////////////////////////////////////////")
Console.WriteLine("// WriterFeeling")
Console.WriteLine("////////////////////////////////////////////////////////////////////////////////////")
Console.WriteLine("请输入要扫描的主机;")
string host = Console.ReadLine()
Console.WriteLine("请输入扫描的端口 例如:1-800")
string portRange =Console.ReadLine()
startPort = int.Parse(portRange.Split('-')[0].Trim())
endPort = int.Parse(portRange.Split('-')[1].Trim())
for (int port = startPortport <endPortport++)
{
Scanner scanner = new Scanner(host, port)
Thread thread = new Thread(new ThreadStart(scanner.Scan))
thread.Name = port.ToString()
thread.IsBackground = true
thread.Start()
runningThreadCount++
Thread.Sleep(10)
//循环,直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术
while (runningThreadCount >= maxThread)
}
//空循环,直到所有端口扫描完毕
while (scannedCount + 1 <(endPort - startPort))
Console.WriteLine()
Console.WriteLine()
//输出结果
Console.WriteLine("Scan for host:{0} has been completed, \n total {1} ports scanned, \n opened ports:{2}", host, (endPort - startPort), openedPorts.Count)
foreach (int port in openedPorts)
{
Console.WriteLine("\tport: {0} is open", port.ToString().PadLeft(6))
}
Console.ReadLine()
}
}
class Scanner
{
string m_host
int m_port
public Scanner(string host, int port)
{
m_host = host
m_port = port
}
public void Scan()
{
TcpClient tc = new TcpClient()
tc.SendTimeout = tc.ReceiveTimeout = 2000
try
{
tc.Connect(m_host, m_port)
if (tc.Connected)
{
Console.WriteLine("Port {0} is Open", m_port.ToString().PadRight(6))
Program.openedPorts.Add(m_port)
}
}
catch
{
Console.WriteLine("Port {0} is Closed", m_port.ToString().PadRight(6))
}
finally
{
tc.Close()
tc = null
Program.scannedCount++
Program.runningThreadCount--
}
}
}
}
在CMD下输入netstat -na可以直接查看机子端口的状态,或者使用TCPview查看机子端口状态以及程序使用端口状态,以下是软件下载地址以及转载了其具体使用方法 TCPview是一个小巧的TCP状态观察工具,只有93KB,是个绿色软件,不用安装。下载地址到处都是,华军软件园就有下载: http://www.onlinedown.net/soft/3483.htm TCPView v2.4 汉化版 - 霏凡软件站 http://www.crsky.com/soft/6955.html 个人觉得,只要用好了这个软件,加上对TCP/IP协议有一定了解,无论什么木马软件都可以查出来!还可以进一步了解常用网络程序的运行机制,下面来看看TCPview的强大功能 启动TCPview, 如果是第一次启动,字体可能会模糊不清,在font菜单里能够手动调整: TCP、UDP的基本概念: TCP和UDP是传输层的两个协议,一般我们访问网页、QQ聊天、MSN、远程控制……等等一系列活动都是在TCP、UDP通讯的基础上来进行,因此详细了解这两个协议是很重要的。 众所周知,TCP在建立一个连接时通常会经历“三次握手”,而且一个TCP连接在通讯初期至到通讯结束都会在数据包中打上“标记”,一般称之为“状态”。TCPview就可以监控这种“状态”! 打个比方:“状态是随着不同的情况而发生变化的,一个人“笑“是处于“高兴“的状态,他笑着笑着不笑了也就从“高兴“的状态变为别的状态了。状态是随着条件的不同而变化的,是动的,在不同的阶段,TCP协议的标志位各不相同,反映出来的现象就是状态的变化。 ” 实际举例: 在CMD模式下向221.237.222.6这台服务器发送一个Telnet请求: 然后在TCPview里观察这个通讯,可以看出这个新发起的TELNET通讯被突出显示为绿色,表示一个已初始化的连接。后面的状态也标记为“ESTABLISHED”。(注意:如果你再仔细一点,会发现ESTABLISHED状态之前还有一个SYN_SENT状态,这个状态只在通讯初始化时才会出现,其它过程中不会使用这个标记。偶抓图的时候慢了一步,没抓下SYN_SENT状态来,大家可以自己看看。) 当一个TCP或UDP连接结束时,TCPview也会将检测到的通讯状态以红色突出显示: 有时候,我们需要将一些常用端口以字母表示,这时可以将Resolve Addresses菜单选项打开,一些常用的端口将会以英文字母显示出来。当然,一般我们是不需要打开这个选项的 也可以手动在TCPview里结束一个通讯进程,这个功能对后台运行的木马程序非常有用: 最后,如果你觉得其中哪一个进程很可疑,还可以进一步请出Sniffer对抓包分析。下载地址:http://www.hackol.com/downsoft/06/s.rar扫描器是一款命令行下高速扫描利器,通过最新的瑞星杀毒软件测试
命令: s.exe syn ip1 ip2 端口号 /save
s.exe tcp ip1 ip2 端口号 线程数 /save
s.exe不可以在xp sp2下使用!那谁有xp sp2专版的!当然的使用syn代替TCP可以是可以但太慢了
s.exe扫描器的使用说明
首先我解释下什么是S扫描器,S扫描器是针对微软ms04045漏洞出的一个扫描,原来作者出这东西
的目的是为了扫描这个漏洞,但现在已经变成我们黑客手中的兵器了,大家也许看过很多如何找肉鸡的
动画或刷QB的动画,那些动画里面很多都是用S扫描器来扫描肉鸡或别人电脑所开放的端口及一些漏洞,
都用这工具的好处是它的扫描速度实在是一个字---强! 今天我就来教下大家如何使用S扫描器。
简单说明下它的用处:
S扫描器是一个简单的使用两种常用的扫描方式进行端口扫描的端口扫描器程序.
可实现的功能是:
1.两种不同的扫描方式(SYN扫描和一般的connect扫描)
2.可以扫描单个IP或IP段所有端口
3.可以扫描单个IP或IP段单个端口
4.可以扫描单个IP或IP段用户定义的端口
5.可以显示打开端口的banner
6.可将结果写入文件
7.TCP扫描可自定义线程数
用法:scanner TCP/SYN StartIP [EndIP] Ports [Threads] [/Banner] [/Save]
参数说明:
TCP/SYN ->TCP方式扫描或SYN方式扫描(SYN扫描需要在win 2k或以上系统才行),SYN扫描对本机无效
StartIP ->起始扫描的IP
EndIP ->结束扫描的IP,可选项,如果这一项没有,就只是对单个IP扫描
Ports ->可以是单个端口,连续的一段端口或非连续的端口
Threads ->使用最大线程数去扫描(SYN扫描不需要加这一项),不能超过1024线程
/Banner ->扫描端口时一并将Banner显示出来,这一选项只对TCP扫描有效
/Save ->将结果写入当前目录的Result.txt文件中去
我们先点击开始菜单--->运行--->CMD.EXE,因为我把扫描器放在F盘,你们的扫描器放哪你们就进哪里,
打开S扫描器,下面我举几个例子演示下S扫描器的主要几个作用。
例子一:
S TCP 218.80.12.1 218.80.12.123 80 512
TCP扫描218.80.12.1到218.80.12.123这IP段中的80端口,最大并发线程是512
例子二:
S TCP 218.80.12.1 218.80.12.123 21,5631 512 /Banner
TCP扫描218.80.12.1到218.80.12.123这IP段中的21和5631端口,最大并发线程是512,并显示Banner
例子三:
S TCP 218.80.12.1 218.80.12.12 1-200 512
TCP扫描218.80.12.1到218.80.12.12这IP段中的1到200端口,最大并发线程是512
例子四:
S TCP 218.80.12.7 1-200 512
TCP扫描218.80.12.7这IP中的1到200端口,最大并发线程是512
例子五:
S SYN 218.80.12.7 1-65535 /Save
SYN扫描218.80.12.7这IP中的1到65535端口,将结果写入Result.txt
扫描结束后Result.txt就存放在你的S扫描器所在的目录里。刚才扫描的东西都在里面。
例子六:
S SYN 218.80.12.1 218.80.12.255 21 /Save
SYN扫描218.80.12.1到218.80.12.255这IP段中的21端口,将结果写入Result.txt
这个我重点说明一下,因为这条命令就是专门用来找肉鸡的,扫描一个IP段有没有开3389的或1433的
我示范下:S SYN 218.80.1.1 218.80.255.255 3389 /Save (找开放3389肉鸡的指令,矮鸟要牢记哦)
一定会有好多开了3389的,大家只要利用这指令扫到开3389的IP,再用别工具继续扫开了3389的肉鸡的弱口令
找到了马上建立管理员,登陆进去,你就算得到一个肉鸡了
注意:
1.SYN扫描是很依赖于扫描者和被扫描者的网速的,如果你是内网的系统,那你不一定可以使用SYN扫描的
,因为你的网关的类型会决定内网系统是否能进行SYN扫描.如果你的配置较低的话,我也不推荐使用
SYN扫描.SYN扫描速度是比TCP扫描的速度快很多的,但在稳定性方面却不是太好,所以自己决定使用
哪种模式进行扫描。
2.SYN扫描不需要线程那个参数,请看上面例子5和6
3.TCP扫描的最大并发线程不能超过1024.
4.使用SYN模式扫描,不能扫描Banner,具体为什么不能,请查看有关SYN的资料
5.内网用户的朋友可以用tcp扫描
关于S.exe 的用法和错误解释
S扫描器扫描命令是:
文件名 参数 起始IP 结束IP 要扫描的端口 保存
s SYN 61.0.0.0 61.255.255.255 1433 save
433是SQL server 服务器端口
8080是代理服务器端口
s.exe syn 219.136.0.0 219.136.255.255 8080 700 /save
这是昨天一个“黑暗中的矩阵”扫描的IP段,也就是做刷Q币动画的。
有很多人不能用,为什么呢?
第一、你的S.exe没有放在你在运行的目录下,所以会提示:
's' 不是内部或外部命令,也不是可运行的程序或批处理文件。
第二、你在运用的时候你的参数错误!
第三、windows xp SP2,不支持这个命令!
所以你要打一下补丁!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)