本文目录一览:
- 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上试试。