當前位置:首頁 » 操作系統 » s掃描源碼

s掃描源碼

發布時間: 2022-09-05 00:21:03

㈠ 什麼是S掃描

什麼是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,不支持這個命令!

所以你要打一下補丁!

㈡ 國內有哪些源代碼安全掃描工具

據行內客戶推薦,端瑪科技和360都有類似這方面的工具,端瑪科技專門做應用安全咨詢的,有自己的源代碼掃描工具,360在安全方面,有很產品,包含代碼掃描。

㈢ 如何用Scapy寫一個埠掃描器

常見的埠掃描類型有:
1. TCP 連接掃描
2. TCP SYN 掃描(也稱為半開放掃描或stealth掃描)
3. TCP 聖誕樹(Xmas Tree)掃描
4. TCP FIN 掃描
5. TCP 空掃描(Null)
6. TCP ACK 掃描
7. TCP 窗口掃描
8. UDP 掃描

下面先講解每種掃描的原理,隨後提供具體實現代碼。
TCP 連接掃描
客戶端與伺服器建立 TCP 連接要進行一次三次握手,如果進行了一次成功的三次握手,則說明埠開放。

客戶端想要連接伺服器80埠時,會先發送一個帶有 SYN 標識和埠號的 TCP 數據包給伺服器(本例中為80埠)。如果埠是開放的,則伺服器會接受這個連接並返回一個帶有 SYN 和 ACK 標識的數據包給客戶端。隨後客戶端會返回帶有 ACK 和 RST 標識的數據包,此時客戶端與伺服器建立了連接。如果完成一次三次握手,那麼伺服器上對應的埠肯定就是開放的。

當客戶端發送一個帶有 SYN 標識和埠號的 TCP 數據包給伺服器後,如果伺服器端返回一個帶 RST 標識的數據包,則說明埠處於關閉狀態。
代碼:
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

tcp_connect_scan_resp = sr1(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="S"),timeout=10)
if(str(type(tcp_connect_scan_resp))=="<type 'NoneType'>"):
print "Closed"
elif(tcp_connect_scan_resp.haslayer(TCP)):
if(tcp_connect_scan_resp.getlayer(TCP).flags == 0x12):
send_rst = sr(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="AR"),timeout=10)
print "Open"
elif (tcp_connect_scan_resp.getlayer(TCP).flags == 0x14):
print "Closed"

TCP SYN 掃描

這個技術同 TCP 連接掃描非常相似。同樣是客戶端向伺服器發送一個帶有 SYN 標識和埠號的數據包,如果目標埠開發,則會返回帶有 SYN 和 ACK 標識的 TCP 數據包。但是,這時客戶端不會返回 RST+ACK 而是返回一個只帶有 RST 標識的數據包。這種技術主要用於躲避防火牆的檢測。

如果目標埠處於關閉狀態,那麼同之前一樣,伺服器會返回一個 RST 數據包。
代碼:
#! /usr/bin/python
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

stealth_scan_resp = sr1(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="S"),timeout=10)
if(str(type(stealth_scan_resp))=="<type 'NoneType'>"):
print "Filtered"
elif(stealth_scan_resp.haslayer(TCP)):
if(stealth_scan_resp.getlayer(TCP).flags == 0x12):
send_rst = sr(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="R"),timeout=10)
print "Open"
elif (stealth_scan_resp.getlayer(TCP).flags == 0x14):
print "Closed"
elif(stealth_scan_resp.haslayer(ICMP)):
if(int(stealth_scan_resp.getlayer(ICMP).type)==3 and int(stealth_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):
print "Filtered"

TCP 聖誕樹(Xmas Tree)掃描

在聖誕樹掃描中,客戶端會向伺服器發送帶有 PSH,FIN,URG 標識和埠號的數據包給伺服器。如果目標埠是開放的,那麼不會有任何來自伺服器的回應。

如果伺服器返回了一個帶有 RST 標識的 TCP 數據包,那麼說明埠處於關閉狀態。

但如果伺服器返回了一個 ICMP 數據包,其中包含 ICMP 目標不可達錯誤類型3以及 ICMP 狀態碼為1,2,3,9,10或13,則說明目標埠被過濾了無法確定是否處於開放狀態。
代碼:
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

xmas_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="FPU"),timeout=10)
if (str(type(xmas_scan_resp))=="<type 'NoneType'>"):
print "Open|Filtered"
elif(xmas_scan_resp.haslayer(TCP)):
if(xmas_scan_resp.getlayer(TCP).flags == 0x14):
print "Closed"
elif(xmas_scan_resp.haslayer(ICMP)):
if(int(xmas_scan_resp.getlayer(ICMP).type)==3 and int(xmas_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):
print "Filtered"

TCP FIN掃描

FIN 掃描會向伺服器發送帶有 FIN 標識和埠號的 TCP 數據包。如果沒有伺服器端回應則說明埠開放。

如果伺服器返回一個 RST 數據包,則說明目標埠是關閉的。

如果伺服器返回了一個 ICMP 數據包,其中包含 ICMP 目標不可達錯誤類型3以及 ICMP 代碼為1,2,3,9,10或13,則說明目標埠被過濾了無法確定埠狀態。
代碼:
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

fin_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="F"),timeout=10)
if (str(type(fin_scan_resp))=="<type 'NoneType'>"):
print "Open|Filtered"
elif(fin_scan_resp.haslayer(TCP)):
if(fin_scan_resp.getlayer(TCP).flags == 0x14):
print "Closed"
elif(fin_scan_resp.haslayer(ICMP)):
if(int(fin_scan_resp.getlayer(ICMP).type)==3 and int(fin_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):
print "Filtered"

TCP 空掃描(Null)

在空掃描中,客戶端發出的 TCP 數據包僅僅只會包含埠號而不會有其他任何的標識信息。如果目標埠是開放的則不會回復任何信息。

如果伺服器返回了一個 RST 數據包,則說明目標埠是關閉的。

如果返回 ICMP 錯誤類型3且代碼為1,2,3,9,10或13的數據包,則說明埠被伺服器過濾了。
代碼:
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

null_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags=""),timeout=10)
if (str(type(null_scan_resp))=="<type 'NoneType'>"):
print "Open|Filtered"
elif(null_scan_resp.haslayer(TCP)):
if(null_scan_resp.getlayer(TCP).flags == 0x14):
print "Closed"
elif(null_scan_resp.haslayer(ICMP)):
if(int(null_scan_resp.getlayer(ICMP).type)==3 and int(null_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):
print "Filtered"

TCP ACK掃描
ACK 掃描不是用於發現埠開啟或關閉狀態的,而是用於發現伺服器上是否存在有狀態防火牆的。它的結果只能說明埠是否被過濾。再次強調,ACK 掃描不能發現埠是否處於開啟或關閉狀態。

客戶端會發送一個帶有 ACK 標識和埠號的數據包給伺服器。如果伺服器返回一個帶有 RST 標識的 TCP 數據包,則說明埠沒有被過濾,不存在狀態防火牆。

如果目標伺服器沒有任何回應或者返回ICMP 錯誤類型3且代碼為1,2,3,9,10或13的數據包,則說明埠被過濾且存在狀態防火牆。
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

ack_flag_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="A"),timeout=10)
if (str(type(ack_flag_scan_resp))=="<type 'NoneType'>"):
print "Stateful firewall presentn(Filtered)"
elif(ack_flag_scan_resp.haslayer(TCP)):
if(ack_flag_scan_resp.getlayer(TCP).flags == 0x4):
print "No firewalln(Unfiltered)"
elif(ack_flag_scan_resp.haslayer(ICMP)):
if(int(ack_flag_scan_resp.getlayer(ICMP).type)==3 and int(ack_flag_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):
print "Stateful firewall presentn(Filtered)"

TCP窗口掃描

TCP 窗口掃描的流程同 ACK 掃描類似,同樣是客戶端向伺服器發送一個帶有 ACK 標識和埠號的 TCP 數據包,但是這種掃描能夠用於發現目標伺服器埠的狀態。在 ACK 掃描中返回 RST 表明沒有被過濾,但在窗口掃描中,當收到返回的 RST 數據包後,它會檢查窗口大小的值。如果窗口大小的值是個非零值,則說明目標埠是開放的。

如果返回的 RST 數據包中的窗口大小為0,則說明目標埠是關閉的。
代碼:
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=80

window_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="A"),timeout=10)
if (str(type(window_scan_resp))=="<type 'NoneType'>"):
print "No response"
elif(window_scan_resp.haslayer(TCP)):
if(window_scan_resp.getlayer(TCP).window == 0):
print "Closed"
elif(window_scan_resp.getlayer(TCP).window > 0):
print "Open"

UDP掃描
TCP 是面向連接的協議,而UDP則是無連接的協議。
面向連接的協議會先在客戶端和伺服器之間建立通信信道,然後才會開始傳輸數據。如果客戶端和伺服器之間沒有建立通信信道,則不會有任何產生任何通信數據。
無連接的協議則不會事先建立客戶端和伺服器之間的通信信道,只要客戶端到伺服器存在可用信道,就會假設目標是可達的然後向對方發送數據。

客戶端會向伺服器發送一個帶有埠號的 UDP 數據包。如果伺服器回復了 UDP 數據包,則目標埠是開放的。

如果伺服器返回了一個 ICMP 目標不可達的錯誤和代碼3,則意味著目標埠處於關閉狀態。

如果伺服器返回一個 ICMP 錯誤類型3且代碼為1,2,3,9,10或13的數據包,則說明目標埠被伺服器過濾了。

但如果伺服器沒有任何相應客戶端的 UDP 請求,則可以斷定目標埠可能是開放或被過濾的,無法判斷埠的最終狀態。
代碼:
#! /usr/bin/python

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

dst_ip = "10.0.0.1"
src_port = RandShort()
dst_port=53
dst_timeout=10

def udp_scan(dst_ip,dst_port,dst_timeout):
udp_scan_resp = sr1(IP(dst=dst_ip)/UDP(dport=dst_port),timeout=dst_timeout)
if (str(type(udp_scan_resp))=="<type 'NoneType'>"):
retrans = []
for count in range(0,3):
retrans.append(sr1(IP(dst=dst_ip)/UDP(dport=dst_port),timeout=dst_timeout))
for item in retrans:
if (str(type(item))!="<type 'NoneType'>"):
udp_scan(dst_ip,dst_port,dst_timeout)
return "Open|Filtered"
elif (udp_scan_resp.haslayer(UDP)):
return "Open"
elif(udp_scan_resp.haslayer(ICMP)):
if(int(udp_scan_resp.getlayer(ICMP).type)==3 and int(udp_scan_resp.getlayer(ICMP).code)==3):
return "Closed"
elif(int(udp_scan_resp.getlayer(ICMP).type)==3 and int(udp_scan_resp.getlayer(ICMP).code) in [1,2,9,10,13]):
return "Filtered"

print udp_scan(dst_ip,dst_port,dst_timeout)

下面解釋下上述代碼中的一些函數和變數:
RandShort():產生隨機數
type():獲取數據類型
sport:源埠號
dport:目標埠號
timeout:等待相應的時間
haslayer():查找指定層:TCP或UDP或ICMP
getlayer():獲取指定層:TCP或UDP或ICMP

以上掃描的概念可以被用於「多埠掃描」,源碼可以參考這里:https://github.com/interference-security/Multiport
Scapy 是一個非常好用的工具,使用它可以非常簡單的構建自己的數據包,還可以很輕易的處理數據包的發送和相應。
(譯者註:上述所有代碼均在Kali 2.0下測試通過,建議讀者在Linux環境下測試代碼,如想在Windows上測試,請參見 Scapy官方文檔 配置好scapy環境)

㈣ 如何使用Sonar Runner進行代碼掃描

方法/步驟
1
安裝Sonar Runner
解壓附件中的sonar-runner-2.3.rar到任意目錄,為了方便,將安裝包解壓到D:\sonar\sonar-runner-2.3下。
2
配置環境變數
1) 打開「系統屬性」對話框,點擊「環境變數」,進入環境變數對話框。
2) 在「系統變數(S)」下點擊「新建(W)...」,在編輯系統變數對話框中添加SONAR_RUNNER_HOME變數。
3) 在「系統變數(S)」下找到「Path」,點擊「編輯(I)...」,在編輯系統變數對話框中「變數值(V):」輸入框內容未尾添加、「;%SONAR_RUNNER_HOME%\bin;」,點確定。
4) 依次點擊「環境變數」和「系統屬性」對話框的確定以保存剛添加的環境變數。
5) 按下圖所示命令進行驗證環境變數是否配置成功,如果展示結果如下圖所示,則表示配置成功。


3
配置Sonar Runner
編輯D:\sonar\sonar-runner-2.3\conf\sonar-runner.properties,配置指定的Sonar Server地址、資料庫URL、資料庫用戶名及密碼、Sonar Server用戶名及密碼。
4
配置sonar-project.properties
在項目源碼的根目錄下創建sonar-project.properties配置文件,下面以HubAirl項目為例進行講解。

5
代碼掃描

切換到項目源碼根目錄,執行以下命令:sonar-runner
掃描結果中出現「EXCUTION SUCCESS」字樣則表示代碼掃描成功。

6
查看代碼掃描結果
查看代碼掃描結果地址:http://172.26.3.110:9000/
註:此處172.26.3.110為SonarQube服務所在伺服器的IP地址。
7
補充說明
在實際應用過程中,可能會遇到報JVM空間不夠或內存溢出的情況,為了解決此問題,可以按下文所示方法通過修改批處理腳本D:\sonar\sonar-runner-2.3\sonar-runner.bat文件即可。
根據實際情況並參照下圖所示修改sonar-runner.bat文件中第77行。

注意事項
1、如果執行sonar-runner命令時,提示』sonar-runner』不是內部或外部命令,也不是可運行的程序或批處理文件,檢查環境變數是否配置成功。

㈤ 如何使用「Seay源代碼審計系統」掃描源代碼漏洞

打開Seay源代碼審計系統(安裝流程略),點擊「新建項目」按鈕新建一個審計項目。

打開一個審計項目後,可以看到審計系統左側列出了該項目的全部源代碼文件,點擊「自動審計」按鈕進入審計操作。

點擊「自動審計」操作下的「開始」按鈕,正式進入審計過程並等待審計掃描完成。

當Seay源代碼審計系統底部提示「掃描完成」時,這時候源代碼審計就完成了。

點擊「生成報告」生成本次審計報告並保存報告生成的html文件。

打開生成的審計報告,查看本次掃描出來的網站源代碼漏洞。

㈥ S掃描器必須有的s.exe是用什麼語言寫的,誰有源碼我想學習下,Email:[email protected]

你在網路上有詳細描述的。

㈦ 下了埠掃描源代碼 怎麼用

編譯程序以後,把Debug目錄下面那個.exe的程序,後再把那個程序拖到命令提示符裡面出,後面跟上所要的參數,從而可以使用

比如scan.exe 192.168.1.1 0 65535這樣試一下

熱點內容
python修改文件某一行 發布:2024-05-05 22:18:22 瀏覽:456
md5加密64 發布:2024-05-05 21:59:30 瀏覽:526
259pp頁面訪問升級 發布:2024-05-05 21:47:51 瀏覽:88
迅雷阻止上傳 發布:2024-05-05 21:26:19 瀏覽:913
資料庫運維題 發布:2024-05-05 21:21:47 瀏覽:961
RM魔塔編程 發布:2024-05-05 21:21:47 瀏覽:285
matlab獲取文件夾 發布:2024-05-05 21:12:24 瀏覽:291
一根式演算法 發布:2024-05-05 21:12:23 瀏覽:955
php無刷新 發布:2024-05-05 21:08:11 瀏覽:982
搭建一個流媒體伺服器 發布:2024-05-05 20:40:59 瀏覽:667