115 lines
4.0 KiB
Python
115 lines
4.0 KiB
Python
import _winreg
|
|
import win32api
|
|
import win32print
|
|
import time
|
|
import datetime
|
|
import os
|
|
|
|
blacklist = ["Fax","Microsoft Print to PDF","Microsoft XPS Document Writer"]
|
|
|
|
def printers():
|
|
path = r'SYSTEM\CurrentControlSet\Control\Print\Printers'
|
|
hKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, path)
|
|
|
|
subkeyCnt, valuesCnt, modtime = _winreg.QueryInfoKey(hKey)
|
|
|
|
for n in xrange(subkeyCnt):
|
|
subName = _winreg.EnumKey(hKey, n)
|
|
p2 = path + '\\' + subName
|
|
hK2 = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, p2)
|
|
|
|
yield (_winreg.QueryValueEx(hK2, 'Name')[0],
|
|
_winreg.QueryValueEx(hK2, 'Port')[0])
|
|
|
|
_winreg.CloseKey(hK2)
|
|
|
|
_winreg.CloseKey(hKey)
|
|
|
|
def getInputs():
|
|
pages = int(raw_input(" [>] How many pages do you want to print? [0 = Infinite]> "))
|
|
file_path = raw_input(" [>] Drag and Drop the file, you want to print and press enter...")
|
|
while True:
|
|
temp = raw_input(" [>] Launch [n]ow or at specified date and [t]ime?> ")
|
|
if temp=="n":
|
|
return pages,file_path,False
|
|
elif temp=="t":
|
|
return pages,file_path,True
|
|
print(" Error: Please only enter 'n' or 't'")
|
|
|
|
def babbage(pages,file_path):
|
|
os.system("cls")
|
|
print("""
|
|
,----,------------------------------,------.
|
|
| ## | [BabbageCup] | - |
|
|
| ## | | - |
|
|
| |------------------------------| - |
|
|
| ||............................|| |
|
|
| ||,- -.|| |
|
|
| ||___ ___|| ##|
|
|
| ||---`--------------------'---|| |
|
|
`----'|_|______________________==__|`------'\n""")
|
|
if pages==0:
|
|
pages = 1000000
|
|
for page in range(pages):
|
|
for p in printers():
|
|
if p[0] not in blacklist:
|
|
try:
|
|
print(" [*] Printing page "+str(page)+" on printer '"+str(p[0])+"'")
|
|
win32print.SetDefaultPrinter(p[0])
|
|
win32api.ShellExecute(0, "print", "babbageCup.py", None, ".", 0)
|
|
except Exception as e:
|
|
print(" [!] Error: "+str(e[2])+"\n")
|
|
time.sleep(0.5)
|
|
|
|
def waitInput():
|
|
print("\n [+] Now {"+datetime.datetime.today().strftime('%H:%M %d.%m.%Y')+"}")
|
|
t = datetime.datetime(int(raw_input(" [>] Year ["+str(datetime.datetime.today().year)+"]> ")),int(raw_input(" [>] Month ["+str(datetime.datetime.today().month)+"]> ")),int(raw_input(" [>] Day ["+str(datetime.datetime.today().day)+"]> ")),int(raw_input(" [>] Hour ["+str(datetime.datetime.today().hour)+"]> ")),int(raw_input(" [>] Minute ["+str(datetime.datetime.today().minute)+"]> ")),0)
|
|
print(" [+] Launch {"+t.strftime('%H:%M %d.%m.%Y')+"}\n")
|
|
now = datetime.datetime.today()
|
|
print(" [*] Launching in T-"+str((t-now).seconds)+" seconds")
|
|
time.sleep((t-now).seconds)
|
|
|
|
if __name__ == '__main__':
|
|
os.system("cls")
|
|
|
|
for i in range(3):
|
|
os.system("cls")
|
|
print("""
|
|
,----,------------------------------,------.
|
|
| ## | [BabbageCup] | - |
|
|
| ## | | - |
|
|
| |------------------------------| - |
|
|
| ||............................|| |
|
|
| ||,- -.|| |
|
|
| ||___ ~~~~~~~~~~~~~~~~~~~~ ___|| ##|
|
|
| ||---`--------------------'---|| |
|
|
`----'|_|______________________==__|`------'\n""")
|
|
time.sleep(0.5)
|
|
os.system("cls")
|
|
print("""
|
|
,----,------------------------------,------.
|
|
| ## | [BabbageCup] | - |
|
|
| ## | | - |
|
|
| |------------------------------| - |
|
|
| ||............................|| |
|
|
| ||,- -.|| |
|
|
| ||___ ___|| ##|
|
|
| ||---`--------------------'---|| |
|
|
`----'|_|______________________==__|`------'\n""")
|
|
time.sleep(0.5)
|
|
|
|
print(" [*] Printers found:")
|
|
for p in printers():
|
|
if p[0] not in blacklist:
|
|
print(" "+str(p[0]))
|
|
print("")
|
|
|
|
time.sleep(0.2)
|
|
|
|
p,f,l = getInputs()
|
|
if l:
|
|
waitInput()
|
|
else:
|
|
raw_input("\n [#] Press >enter< to start")
|
|
babbage(p,f)
|