欢迎光临
我们一直在努力

Pft测试是什么打印机PCL漏洞原理分析

#!/usr/bin/env python
# -*- coding: UTF-8 -*- import socket
import json
import sys
from optparse import OptionParser PJL_START = "033%-12345X@PJL "
PJL_FINISH = "033%-12345X "
PJL_USTATUS = "USTATUS DEVICE="
PJL_INFO_ID = "INFO ID " EOF = PJL_START + PJL_USTATUS + "OFF " + PJL_FINISH #PJL 语言
DEVICEID = PJL_START + PJL_INFO_ID + PJL_FINISH #PJL 语言 获取设备型号 class Printer():
def __init__(self):
self.usage()
if sys.argv < 1 :
self.usage()
self.readfile(options.file) def usage(self):
parser = OptionParser()
parser.add_option("-i", "--ip", dest="ip",
help="test single ip") #
parser.add_option("-f", "--file",dest="file",
help="files ") #
global options
(options, args) = parser.parse_args() def Buildsocket(self, ip, port=9100):
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) #与主机建立socket连接
sock.settimeout(5)
try:
sock.connect((ip, port))
except:
print "[!*]-ip-%s-can't connect--" % ip
return 'error'
sock.send(EOF)
sock.send(DEVICEID) # 发送PJL指令给远程打印机
try:
device = sock.recv(1024)
except:
return 'No'
print "[!*]-ip-%s-is-ok deviceidis-%s" % (str(ip), device)
sock.close()
return 'OK' def GetDiviceMap(self, data,status):
f = open('result.txt', 'a+')
try:
f.write(str(data['ip']) + ', ' + status + ', ' + str(data['geoinfo']['country']['name']['en'])
+', '+ str(data['geoinfo']['city']['en']) + ', ' + str(data['geoinfo']['location']['longitude'])
+', '+ str(data['geoinfo']['location']['latitude']) + ', ' + str(data['geoinfo']['country']['code'])
+', ' + str(data['geoinfo']['continent']['name']['en']) + " ")
except:
pass
f.close() def readfile(self, file):
Vuln_ip = 0 # ip 列表输入的IP数量
No_vuln_ip = 0
CantConnectIP = 0
linenum = 0
f = open(file, 'r')
for line in f.readlines():
data = json.loads(line)
status = self.Buildsocket(data['ip'])
if status == 'error':
CantConnectIP += 1
elif status == 'No':
No_vuln_ip += 1
else:
Vuln_ip += 1
self.GetDiviceMap(data, status)
linenum += 1
print "[!*]-Now-is-%s-lines" % str(linenum)
f.close()
print str(CantConnectIP) + " " + str(No_vuln_ip) + " " + str(Vuln_ip) if __name__ == '__main__':
Printer()
赞(0)
未经允许不得转载:上海聚慕医疗器械有限公司 » Pft测试是什么打印机PCL漏洞原理分析

登录

找回密码

注册