本文目錄一覽:
- 1、我想用python腳本telnet電腦Ensp里的交換機,但是沒效果,也沒報錯,是有什麼問題嗎?求解答
- 2、接收icmp數據包
- 3、請大牛指教python問題。通過pip方式下載了個ping.py(改名為:ping_pip.py)代碼,測試的時候遇到問題。
- 4、如何使用發包工具構造icmp報文
- 5、用python篡改icmp報文再發送給接收方
- 6、python編寫ping程序出現socket.error: [Errno 10013] 錯誤
我想用python腳本telnet電腦Ensp里的交換機,但是沒效果,也沒報錯,是有什麼問題嗎?求解答
1、在備份配置之前進行ping操作,所有IP地址放在HW_IP_List.txt中,ping通的地址放到HW_IP_True.txt中,ping不通的地址放到HW_IP_False.txt中。
腳本文件icmp_reply.py
#!/usr/bin/python
# -*- coding:gb2312 -*-
#import tab
import time,os
start_time = int (time.time())
def hw_ping_test():
ips = open(‘HW_IP_List.txt’,’r’)
ip_True = open(‘HW_IP_True.txt’,’w’)
ip_False = open(‘HW_IP_False.txt’,’w’)
count_True,count_False=0,0
for ip in ips.readlines():
ip = ip.replace(‘\n’,”)
return1= os.system(‘ping -n 1 -w 1 %s’%ip)
if return1 :
print ‘ping %s is fail’%ip
ip_False.write(ip+’\n’)
count_False += 1
else:
print ‘ping %s is ok’%ip
ip_True.write(ip+’\n’)
count_True += 1
ip_True.close()
ip_False.close()
ips.close()
end_Time = int(time.time())
print “time(sencond):”,end_Time – start_time,”s”
print “ping OK IP:”,count_True,” ping False IP:”,count_False
hw_ping_test()
2、編輯核心腳本,調用icmp_reply.py,程序執行時會先自動運行icmp_reply.py,調用生成的HW_IP_True.txt文件,先要選擇設備類型,然後選擇執行的動作,輸入TFTP伺服器地址,程序就開始執行選擇的相應的動作。
接收icmp數據包
1.你把防火牆設置成中級看看還有沒有騷擾。
如果沒有騷擾,那就OK了。
如果有騷擾進入下一步
2。ICMP包是個ping 包,你會就收ICMP數據包 有兩種可能,別人ping你,要求你回答,或者你ping別人,別人回答你。
由於你是用的路由器,這麼多不同的人ping你,最大的可能是你ping了他們所有的人,然後他們回答你。ICMP應該是不能IP欺騙的。
有兩種辦法可以判斷是不是你電腦中毒了,第一 更換你的IP地址 ,將最後的101改為102,如果還有這個情況基本上就是你中毒了
第二,下載個Wireshark軟體 抓取數據包,點擊capture—option-start
在filter中輸入 ICMP ,然後你就可以看到ICMP包的情況了,如果
目標地址是192.168.1.101 ,例如下面
sourc是119.116.182.167 (等等), destination是192.168.1.101
info是Echo (ping) reply
則很顯然是你的機器有木馬 亂往外面發ICMP數據請求包(換句話說是亂ping外網阻塞自己網路)。
如果確認了這些,就可以試一下ping病毒 或ping木馬的專殺工具,
或者重新裝下網卡。。。也許可以解決。(知道原理,害過人,可惜沒有自己中過這種病毒。按常理來說如果是病毒,應該可以少毒少出來的吧,所以提供方法供你查找原因,如果不知道如何用Wireshark.
請大牛指教python問題。通過pip方式下載了個ping.py(改名為:ping_pip.py)代碼,測試的時候遇到問題。
別快速的ping很多的地址。 有可能防火牆會攔截, 也有可能是文件句柄數超過了操作系統的限制。
如果出錯了。你忽略它,然後重試一次。應該可以解決這個問題。
如何使用發包工具構造icmp報文
如何使用發包工具構造icmp報文
使用的是類型8和0,其過程如下:
ICMP ECHO(Type 8) 和ECHO Reply (Type 0)
我們使用一個ICMP ECHO數據包來探測主機地址是否存活(當然在主機沒
有被配置為過濾ICMP形式),通過簡單的發送一個ICMP ECHO(Type 8)數據包到目標
主機,如果ICMP ECHO Reply(ICMP type 0)數據包接受到,說明主機是存活狀態。
如果沒有就可以初步判斷主機沒有在線或者使用了某些過濾設備過濾了ICMP的REPLY。
|————————————————————-
| |
| —— ICMP ECHO request —— |
| |HOST| ——————————— |HOST| |
| | A | ———————– | B | |
| | | 如果存活或者沒有過濾 | | |
| —— 將返回ICMP RCHO REPLY —— |
| |
————————————————————–
這種機制就是我們通常所用的ping命令來檢測目標主機是否可以ping到。
用python篡改icmp報文再發送給接收方
程序處理上有些問題,建議深入研究一下ICMP協議。下面是Python 3的一個ICMP的簡單實現,可以參考一下。
import socket
import struct
def checksum(source_string):
sum = 0
countTo = (len(source_string)/2)*2
count = 0
while countcountTo:
thisVal = ord(source_string[count + 1:count + 2])*256 + ord(source_string[count:count + 1])
sum = sum + thisVal
sum = sum 0xffffffff
count = count + 2
if countTolen(source_string):
sum = sum + ord(source_string[len(source_string) – 1])
sum = sum 0xffffffff
sum = (sum 16) + (sum 0xffff)
sum = sum + (sum 16)
answer = ~sum
answer = answer 0xffff
answer = answer 8 | (answer 8 0xff00)
return answer
def ping(ip):
rawsocket1=socket.socket(socket.AF_INET,socket.SOCK_RAW, socket.getprotobyname(‘icmp’))
packet = struct.pack(‘!BBHHH8s’, 8, 0, 0, 0, 0, b’abcdefgh’)
chksum=checksum(packet)
packet = struct.pack(‘!BBHHH8s’, 8, 0, chksum, 0, 0, b’abcdefgh’)
rawsocket1.sendto(packet, (ip, 1))
ping(‘10.172.23.254’)
python編寫ping程序出現socket.error: [Errno 10013] 錯誤
錯誤號的解釋
以一種訪問許可權不允許的方式做了一個訪問套接字的嘗試。
試試管理員許可權,不行換到xp上試試。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/189157.html