python掃描區域網主機
⑴ python怎樣獲取連接的IP的設備信息
以前是有這樣的工具,它會通過常用協議去刺探設備類型。比如windows的版本,計算機名等。現在不知道還有沒有這樣的工具,搜索一下看。
哦。這個應該相當容易了。因為相機是專業設備。所以通常會有一個控制協議。因為是專業的,所以這個socket應該是加密的。 你只需要連接上後,隨便發一個命令,如果被斷開。很可能就是這個相機了。
另外相機通常都是有MAC地址的。如果你發現它在你預計的MAC地址范圍內,也可以知道是它。 相機是專業抓拍的。通常不會放在互聯網上,應該是區域網。你可以排除區域網上的其它計算機,自然了也就知道哪些是相機了。
這些都不是難題。你首先掃描所有的IP地址。再掃描它們的埠數量。如果埠數量多通常是計算機,如果埠只有1-2個就是專業設備。掃描不到的,應該就是計算機啦。
試試,並不難。
⑵ 我想用python掃描區域網內的ip和mac地址,需要什麼第三方庫
MAC地址也叫物理地址、硬體地址或鏈路地址,由網路設備製造商生產時寫在硬體內部。IP地址與MAC地址在計算機里都是以二進製表示的,IP地址是32位的,而MAC地址則是48位的。MAC地址的長度為48位(6個位元組),通常表示為12個16進制數,每2個16進制數之間用冒號隔開,如:08:00:20:0A:8C:6D就是一個MAC地址,其中前6位16進制數08:00:20代表網路硬體製造商的編號,它由IEEE(電氣與電子工程師協會)分配,而後3位16進制數0A:8C:6D代表該製造商所製造的某個網路產品(如網卡)的系列號。只要你不去更改自己的MAC地址,那麼你的MAC地址在世界是惟一的。
MAC地址的作用
IP地址就如同一個職位,而MAC地址則好像是去應聘這個職位的人才,職位可以既可以讓甲坐,也可以讓乙坐,同樣的道理一個節點的IP地址對於網卡是不做要求,基本上什麼樣的廠家都可以用,也就是說IP地址與MAC地址並不存在著綁定關系。本身有的計算機流動性就比較強,正如同人才可以給不同的單位幹活的道理一樣的,人才的流動性是比較強的。職位和人才的對應關系就有點像是IP地址與MAC地址的對應關系。比如,如果一個網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網卡。當然MAC地址除了僅僅只有這個功能還是不夠的,就拿人類社會與網路進行類比,通過類比,我們就可以發現其中的類浦?Γ??玫乩斫釳AC地址的作用。
無論是區域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。數據包在這些節點之間的移動都是由ARP(Address Resolution Protocol:地址解析協議)負責將IP地址映射到MAC地址上來完成的。其實人類社會和網路也是類似的,試想在人際關系網路中,甲要捎個口信給丁,就會通過乙和丙中轉一下,最後由丙 轉告給丁。在網路中,這個口信就好比是一個網路中的一個數據包。數據包在傳送過程中會不斷詢問相鄰節點的MAC地址,這個過程就好比是人類社會的口信傳送過程。相信通過這兩個例子,我們就可以進一步理解MAC地址的作用。
與MAC地址相關的命令與軟體
在人類社會社交中,我們認識一個人往往只會知道他的姓名,而身份證號碼在一般的人際交往中會被忽略。同樣在網路中,我們往往只會知道同事或者網友的IP地址,並不會去過多地關心對方的MAC地址。要成長為網路高手,我們可以使用一些方法去了解對方的MAC地址。在這里介紹兩種常用的方法,在Windows 9x 中可用WinIPcfg獲得,在Windows 2000/XP中可用IPconfig -all獲得。
使用命令只能單條獲得MAC地址,而且使用起來也是很麻煩的。對於網管人員,更希望有一款簡單化操作的軟體,我們可以利用「MAC掃描器」遠程批量獲取MAC地址。它是用於批量獲取遠程計算機網卡物理地址的一款網路管理軟體。該軟體運行於網路(區域網、Internet都可以)內的一台機器上,即可監控整個網路的連接情況,實時檢測各用戶的IP、MAC、主機名、用戶名等並記錄以供查詢,可以由用戶自己加以備注;能進行跨網段掃描,能和資料庫中得IP和MAC地址進行比較,有修改IP的或使用虛假MAC地址的,都能報警。
更改MAC地址
⑶ Python 實現埠掃描
一、常見埠掃描的原理
0、秘密掃描
秘密掃描是一種不被審計工具所檢測的掃描技術。
它通常用於在通過普通的防火牆或路由器的篩選(filtering)時隱藏自己。
秘密掃描能躲避IDS、防火牆、包過濾器和日誌審計,從而獲取目標埠的開放或關閉的信息。由於沒有包含TCP 3次握手協議的任何部分,所以無法被記錄下來,比半連接掃描更為隱蔽。
但是這種掃描的缺點是掃描結果的不可靠性會增加,而且掃描主機也需要自己構造IP包。現有的秘密掃描有TCP FIN掃描、TCP ACK掃描、NULL掃描、XMAS掃描和SYN/ACK掃描等。
1、Connect()掃描
此掃描試圖與每一個TCP埠進行「三次握手」通信。如果能夠成功建立接連,則證明埠開發,否則為關閉。准確度很高,但是最容易被防火牆和IDS檢測到,並且在目標主機的日誌中會記錄大量的連接請求以及錯誤信息。
TCP connect埠掃描服務端與客戶端建立連接成功(目標埠開放)的過程:
① Client端發送SYN;
② Server端返回SYN/ACK,表明埠開放;
③ Client端返回ACK,表明連接已建立;
④ Client端主動斷開連接。
建立連接成功(目標埠開放)
TCP connect埠掃描服務端與客戶端未建立連接成功(目標埠關閉)過程:
① Client端發送SYN;
② Server端返回RST/ACK,表明埠未開放。
優點:實現簡單,對操作者的許可權沒有嚴格要求(有些類型的埠掃描需要操作者具有root許可權),系統中的任何用戶都有權力使用這個調用,而且如果想要得到從目標埠返回banners信息,也只能採用這一方法。
另一優點是掃描速度快。如果對每個目標埠以線性的方式,使用單獨的connect()調用,可以通過同時打開多個套接字,從而加速掃描。
缺點:是會在目標主機的日誌記錄中留下痕跡,易被發現,並且數據包會被過濾掉。目標主機的logs文件會顯示一連串的連接和連接出錯的服務信息,並且能很快地使它關閉。
2、SYN掃描
掃描器向目標主機的一個埠發送請求連接的SYN包,掃描器在收到SYN/ACK後,不是發送的ACK應答而是發送RST包請求斷開連接。這樣,三次握手就沒有完成,無法建立正常的TCP連接,因此,這次掃描就不會被記錄到系統日誌中。這種掃描技術一般不會在目標主機上留下掃描痕跡。但是,這種掃描需要有root許可權。
·埠開放:(1)Client發送SYN;(2)Server端發送SYN/ACK;(3)Client發送RST斷開(只需要前兩步就可以判斷埠開放)
·埠關閉:(1)Client發送SYN;(2)Server端回復RST(表示埠關閉)
優點:SYN掃描要比TCP Connect()掃描隱蔽一些,SYN僅僅需要發送初始的SYN數據包給目標主機,如果埠開放,則相應SYN-ACK數據包;如果關閉,則響應RST數據包;
3、NULL掃描
反向掃描—-原理是將一個沒有設置任何標志位的數據包發送給TCP埠,在正常的通信中至少要設置一個標志位,根據FRC 793的要求,在埠關閉的情況下,若收到一個沒有設置標志位的數據欄位,那麼主機應該舍棄這個分段,並發送一個RST數據包,否則不會響應發起掃描的客戶端計算機。也就是說,如果TCP埠處於關閉則響應一個RST數據包,若處於開放則無相應。但是應該知道理由NULL掃描要求所有的主機都符合RFC 793規定,但是windows系統主機不遵從RFC 793標准,且只要收到沒有設置任何標志位的數據包時,不管埠是處於開放還是關閉都響應一個RST數據包。但是基於Unix(*nix,如Linux)遵從RFC 793標准,所以可以用NULL掃描。 經過上面的分析,我們知道NULL可以辨別某台主機運行的操作系統是什麼操作系統。
埠開放:Client發送Null,server沒有響應
埠關閉:(1)Client發送NUll;(2)Server回復RST
說明:Null掃描和前面的TCP Connect()和SYN的判斷條件正好相反。在前兩種掃描中,有響應數據包的表示埠開放,但在NUll掃描中,收到響應數據包表示埠關閉。反向掃描比前兩種隱蔽性高些,當精確度也相對低一些。
用途:判斷是否為Windows系統還是Linux。
4、FIN掃描
與NULL有點類似,只是FIN為指示TCP會話結束,在FIN掃描中一個設置了FIN位的數據包被發送後,若響應RST數據包,則表示埠關閉,沒有響應則表示開放。此類掃描同樣不能准確判斷windows系統上埠開發情況。
·埠開放:發送FIN,沒有響應
·埠關閉:(1)發送FIN;(2)回復RST
5、ACK掃描
掃描主機向目標主機發送ACK數據包。根據返回的RST數據包有兩種方法可以得到埠的信息。方法一是: 若返回的RST數據包的TTL值小於或等於64,則埠開放,反之埠關閉。
6、Xmas-Tree掃描
通過發送帶有下列標志位的tcp數據包。
·URG:指示數據時緊急數據,應立即處理。
·PSH:強制將數據壓入緩沖區。
·FIN:在結束TCP會話時使用。
正常情況下,三個標志位不能被同時設置,但在此種掃描中可以用來判斷哪些埠關閉還是開放,與上面的反向掃描情況相同,依然不能判斷windows平台上的埠。
·埠開放:發送URG/PSH/FIN,沒有響應
·埠關閉:(1)發送URG/PSH/FIN,沒有響應;(2)響應RST
XMAS掃描原理和NULL掃描的類似,將TCP數據包中的ACK、FIN、RST、SYN、URG、PSH標志位置1後發送給目標主機。在目標埠開放的情況下,目標主機將不返回任何信息。
7、Dump掃描
也被稱為Idle掃描或反向掃描,在掃描主機時應用了第三方僵屍計算機掃描。由僵屍主機向目標主機發送SYN包。目標主機埠開發時回應SYN|ACK,關閉時返回RST,僵屍主機對SYN|ACK回應RST,對RST不做回應。從僵屍主機上進行掃描時,進行的是一個從本地計算機到僵屍主機的、連續的ping操作。查看僵屍主機返回的Echo響應的ID欄位,能確定目標主機上哪些埠是開放的還是關閉的。
二、Python 代碼實現
1、利用Python的Socket包中的connect方法,直接對目標IP和埠進行連接並且嘗試返回結果,而無需自己構建SYN包。
2、對IP埠進行多線程掃描,注意的是不同的電腦不同的CPU每次最多創建的線程是不一樣的,如果創建過多可能會報錯,需要根據自己電腦情況修改每次掃描的個數或者將seelp的時間加長都可以。
看完了嗎?感覺動手操作一下把!
python學習網,免費的在線學習python平台,歡迎關注!
本文轉自:https://www.jianshu.com/p/243bb7cfc40f
⑷ Python多線程區域網掃IP的問題
樓主對於os.system方法理解有誤,不是你PING不通才返回的0,
os.system只是幫你執行命令而已,如果這個命令是有效的他返回0,如果無效則返回1,你可以試試os.system('abc')他是返回1的(因為abc這個命令是無效的),對於你的PING命令來說,只要他能成功執行無論PING通不PING通他都會返回0.
你要測試網路是否通不能採用這種方式,應該使用PYTHON自帶的庫。