Path: blob/master/payloads/examples/Tests/test-suite.txt
2968 views
VAR $PASS = 01VAR $FAILED = 023VAR $TOGGLE = 04VAR $CD = 356FUNCTION PASSED()7STRINGLN P8$PASS = ($PASS + 1)9END_FUNCTION1011FUNCTION FAIL()12STRINGLN F13LED_R14$FAILED = ($FAILED + 1)15END_FUNCTION1617EXTENSION TRANSLATE()18REM DEFINE STRICT_TRUTH FALSE19DEFINE PRINT_INT 020DEFINE PRINT_HEX 121VAR $DIGIT_PRINT_MODE = PRINT_INT22VAR $D = 023VAR $IN = 024VAR $INPUT = 025VAR $MOD = 026VAR $P = FALSE27VAR $NL = TRUE28FUNCTION PRINTDIGIT()29IF ($D == 0) THEN30STRING 031ELSE IF ($D == 1) THEN32STRING 133ELSE IF ($D == 2) THEN34STRING 235ELSE IF ($D == 3) THEN36STRING 337ELSE IF ($D == 4) THEN38STRING 439ELSE IF ($D == 5) THEN40STRING 541ELSE IF ($D == 6) THEN42STRING 643ELSE IF ($D == 7) THEN44STRING 745ELSE IF ($D == 8) THEN46STRING 847ELSE IF ($D == 9) THEN48STRING 949ELSE IF ($DIGIT_PRINT_MODE == PRINT_HEX) THEN50IF ($D == 10) THEN51STRING A52ELSE IF ($D == 11) THEN53STRING B54ELSE IF ($D == 12) THEN55STRING C56ELSE IF ($D == 13) THEN57STRING D58ELSE IF ($D == 14) THEN59STRING E60ELSE IF ($D == 15) THEN61STRING F62END_IF63ELSE64STRING ?65END_IF66END_FUNCTION67FUNCTION CONSUME()68$D = 069WHILE ($INPUT >= $MOD)70$D = ($D + 1)71$INPUT = ($INPUT - $MOD)72END_WHILE73IF (($D > 0) || ($P == TRUE)) THEN74$P = TRUE75PRINTDIGIT()76END_IF77END_FUNCTION78FUNCTION SWAP_ENDIAN()79$INPUT = ((($INPUT >> 8) & 0x00FF) | (($INPUT << 8) & 0xFF00))80END_FUNCTION81FUNCTION TRANSLATE_INT()82$DIGIT_PRINT_MODE = PRINT_INT83$P = FALSE84IF ( $INPUT >= 10000) THEN85$MOD = 1000086CONSUME()87END_IF88IF (($INPUT >= 1000) || ($P == TRUE)) THEN89$MOD = 100090CONSUME()91END_IF92IF (($INPUT >= 100) || ($P == TRUE)) THEN93$MOD = 10094CONSUME()95END_IF96IF (($INPUT >= 10) || ($P == TRUE)) THEN97$MOD = 1098CONSUME()99END_IF()100$D = $INPUT101PRINTDIGIT()102IF $NL THEN103ENTER104END_IF105END_FUNCTION106FUNCTION TRANSLATE_BOOL()107REM IF STRICT_TRUTH THEN108REM IF ($INPUT == TRUE) THEN109REM STRING TRUE110REM ELSE IF ($INPUT == FALSE) THEN111REM STRING FALSE112REM ELSE113REM STRING ?114REM END_IF115REM ELSE116IF $INPUT THEN117STRING TRUE118ELSE119STRING FALSE120END_IF121REM END_IF122IF $NL THEN123ENTER124END_IF125END_FUNCTION126FUNCTION TRANSLATE_HEX()127$DIGIT_PRINT_MODE = PRINT_HEX128VAR $chars = 0129VAR $d1 = 0130VAR $d2 = 0131VAR $d3 = 0132VAR $d4 = 0133WHILE ($INPUT > 0)134IF ($chars == 0) THEN135$d1 = ($INPUT % 16)136ELSE IF ($chars == 1) THEN137$d2 = ($INPUT % 16)138ELSE IF ($chars == 2) THEN139$d3 = ($INPUT % 16)140ELSE IF ($chars == 3) THEN141$d4 = ($INPUT % 16)142END_IF143$chars = ($chars + 1)144$INPUT = ($INPUT / 16)145END_WHILE146VAR $i = 0147STRING 0x148IF ($chars == 0) THEN149STRING 0x0000150ELSE IF ($chars == 1) THEN151STRING 000152$D = $d1153PRINTDIGIT()154ELSE IF ($chars == 2) THEN155STRING 00156$D = $d2157PRINTDIGIT()158$D = $d1159PRINTDIGIT()160ELSE IF ($chars == 3) THEN161STRING 0162$D = $d3163PRINTDIGIT()164$D = $d2165PRINTDIGIT()166$D = $d1167PRINTDIGIT()168ELSE IF ($chars == 4) THEN169STRING 0170$D = $d4171PRINTDIGIT()172$D = $d3173PRINTDIGIT()174$D = $d2175PRINTDIGIT()176$D = $d1177PRINTDIGIT()178END_IF179IF $NL THEN180ENTER181END_IF182END_FUNCTION183END_EXTENSION184185FUNCTION countdown()186WHILE ( $CD > 0 )187STRING .188$CD = ($CD - 1)189DELAY 1000190END_WHILE191END_FUNCTION192193DELAY 1000194ENTER195STRINGLN ~TEST SUITE~196STRINGLN press button NOW to stop & enter storage197DELAY 1000198199ENTER200STRINGLN _LED_201202STRING OFF :203LED_OFF204DELAY 500205PASSED()206207STRING R :208LED_R209DELAY 500210PASSED()211212STRING G :213LED_G214DELAY 500215PASSED()216217218FUNCTION injection_test()219ENTER220STRINGLN abcdefghijklmnopqrstuvxyz0123456789221STRINGLN ABCDEFGHIJKLMNOPQRSTUVXYZ0123456789222STRINGLN aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYzZ0123456789223STRINGLN _________224STRINGLN /__TEST__/\225STRINGLN \__.::.__\/226STRINGLN \::\ \227STRINGLN \::\ \228STRINGLN \::\ \229STRINGLN \__\/230END_FUNCTION231232233ENTER234STRINGLN _Injection_235injection_test()236STRING Basic injection :237PASSED()238239STRING (DEFAULT)HID->OFF->HID STORAGE :240DELAY 500241ATTACKMODE OFF242LED_OFF243DELAY 500244LED_R245DELAY 500246LED_OFF247ATTACKMODE HID STORAGE VID_05AC PID_021E MAN_TEST PROD_TEST SERIAL_133713371337248DELAY 500249PASSED()250251ENTER252STRINGLN _UNIT TESTS_253REM ------------------------------------------------------------------------------------------------------------------------------254255STRING TRUE :256IF TRUE THEN257PASSED()258ELSE259FAIL()260END_IF261262STRING FALSE :263IF FALSE THEN264FAIL()265ELSE266PASSED()267END_IF268STRING (TRUE) :269IF ( TRUE ) THEN270PASSED()271ELSE272FAIL()273END_IF274275STRING (FALSE) :276IF ( FALSE ) THEN277FAIL()278ELSE279PASSED()280END_IF281282STRING TRUE==TRUE :283IF ( TRUE == TRUE ) THEN284PASSED()285ELSE286FAIL()287END_IF288289STRING FALSE==FALSE :290IF ( FALSE == FALSE ) THEN291PASSED()292ELSE293FAIL()294END_IF295296STRING TRUE==FALSE :297IF ( TRUE == FALSE ) THEN298FAIL()299ELSE300PASSED()301END_IF302303STRING TRUE!=FALSE :304IF ( TRUE != FALSE ) THEN305PASSED()306ELSE307FAIL()308END_IF309310STRING 1==1 :311IF ( 1 == 1 ) THEN312PASSED()313ELSE314FAIL()315END_IF316317STRING 0==0 :318IF ( 0 == 0 ) THEN319PASSED()320ELSE321FAIL()322END_IF323324STRING ((1+1)==2) :325IF ((1+1) == 2) THEN326PASSED()327ELSE328FAIL()329END_IF330331STRING ((2-1)==(0+1)) :332IF ((2-1) == (0+1)) THEN333PASSED()334ELSE335FAIL()336END_IF337338STRING ((2*2)==4) :339IF ((2*2) == 4) THEN340PASSED()341ELSE342FAIL()343END_IF344345STRING ((4/2)==2) :346IF ((4/2) == 2) THEN347PASSED()348ELSE349FAIL()350END_IF351352STRING ((4/2)==2) :353IF ((4/2) == 2) THEN354PASSED()355ELSE356FAIL()357END_IF358359STRING (10>0) :360IF (10 > 0) THEN361PASSED()362ELSE363FAIL()364END_IF365366STRING (10<100) :367IF (10 < 100) THEN368PASSED()369ELSE370FAIL()371END_IF372373STRING (10<=11) :374IF (10 <= 11) THEN375PASSED()376ELSE377FAIL()378END_IF379380STRING (10<=10) :381IF (10 <= 10) THEN382PASSED()383ELSE384FAIL()385END_IF386387STRING (11>=10) :388IF (11 >= 10) THEN389PASSED()390ELSE391FAIL()392END_IF393394STRING (10>=10) :395IF (10 >= 10) THEN396PASSED()397ELSE398FAIL()399END_IF400401STRING (TRUE&&TRUE) :402IF (TRUE && TRUE) THEN403PASSED()404ELSE405FAIL()406END_IF407408STRING (FALSE&&TRUE) :409IF (FALSE && TRUE) THEN410FAIL()411ELSE412PASSED()413END_IF414415STRING (TRUE||TRUE) :416IF (TRUE || TRUE) THEN417PASSED()418ELSE419FAIL()420END_IF421422STRING (FALSE||TRUE) :423IF (FALSE || TRUE) THEN424PASSED()425ELSE426FAIL()427END_IF428429STRING ((10%2)==0) :430IF ((10 % 2) == 0) THEN431PASSED()432ELSE433FAIL()434END_IF435436STRING ((11%2)==1) :437IF ((11 % 2) == 1) THEN438PASSED()439ELSE440FAIL()441END_IF442443STRING $zero=0;($zero ==0) :444VAR $zero = 0445IF ( $zero == 0 ) THEN446PASSED()447ELSE448FAIL()449END_IF450451STRING ($zero==1) :452IF ( $zero == 1 ) THEN453FAIL()454ELSE455PASSED()456END_IF457458STRING $one=1;($one==1) :459VAR $one = 1460IF ( $one == 1 ) THEN461PASSED()462ELSE463FAIL()464END_IF465466STRING ($one!=1) :467IF ( $one != 1 ) THEN468FAIL()469ELSE470PASSED()471END_IF472473STRING ($one+1);($two==2) :474VAR $two = ( $one + 1 )475IF ( $two == 2 ) THEN476PASSED()477ELSE478FAIL()479END_IF480481STRING ($two!=2) :482IF ( $two != 2 ) THEN483FAIL()484ELSE485PASSED()486END_IF487488STRING ($two==$two) :489IF ( $two == $two ) THEN490PASSED()491ELSE492FAIL()493END_IF494495STRING ($two!=$two) :496IF ( $two != $two ) THEN497FAIL()498ELSE499PASSED()500END_IF501502STRING (($two==$one)||($two==$zero)) :503IF ( ($two == $one) || ($two == $zero) ) THEN504FAIL()505ELSE506PASSED()507END_IF508509STRING ((($one+1)==$two)&&((($zero+$two)+1)==3)) :510IF ( (($one + 1) == $two) && ((($zero + $two) + 1) == 3) ) THEN511PASSED()512ELSE513FAIL()514END_IF515516ENTER517STRINGLN _FUNCTIONS_518REM ------------------------------------------------------------------------------------------------------------------------------519520FUNCTION f_one()521RETURN 1522END_FUNCTION523524FUNCTION f_v_one()525RETURN $one526END_FUNCTION527528FUNCTION f_zero()529RETURN 0530END_FUNCTION531532FUNCTION early_ret()533IF ( 0 == 0 ) THEN534RETURN TRUE535ELSE536RETURN FALSE537END_IF538END_FUNCTION539540STRING (early_ret()==TRUE) :541IF (early_ret() == TRUE) THEN542PASSED()543ELSE544FAIL()545END_IF546547STRING (f_one()==1) :548IF (f_one() == 1) THEN549PASSED()550ELSE551FAIL()552END_IF553554STRING (f_zero()==0) :555IF (f_zero() == 0) THEN556PASSED()557ELSE558FAIL()559END_IF560561STRING $retVal=f_one();($retVal==1) :562VAR $retVal = f_one()563IF ($retVal == 1) THEN564PASSED()565ELSE566FAIL()567END_IF568569STRING $retVal=f_v_one();($retVal==1) :570$retVal = f_v_one()571IF ($retVal == 1) THEN572PASSED()573ELSE574FAIL()575END_IF576577ENTER578STRING _BUTTON_579REM ------------------------------------------------------------------------------------------------------------------------------580581FUNCTION print_button_states()582ENTER583STRING Button push received :584$INPUT = $_BUTTON_PUSH_RECEIVED585TRANSLATE_BOOL()586STRING Button Enabled :587$INPUT = $_BUTTON_ENABLED588TRANSLATE_BOOL()589STRING Button user defined :590$INPUT = $_BUTTON_USER_DEFINED591TRANSLATE_BOOL()592STRING Button timeout :593$INPUT = $_BUTTON_TIMEOUT594TRANSLATE_INT()595END_FUNCTION596597FUNCTION request_button_press()598STRING PRESS DUCK BUTTON :599WAIT_FOR_BUTTON_PRESS600PASSED()601END_FUNCTION602603print_button_states()604605request_button_press()606request_button_press()607608REM print_button_states()609STRINGLN $_BUTTON_ENABLED = FALSE;610$_BUTTON_ENABLED = FALSE611REM print_button_states()612STRING ($_BUTTON_ENABLED==TRUE) :613IF ($_BUTTON_ENABLED == TRUE) THEN614FAIL()615ELSE616PASSED()617END_IF618STRING PRESS DUCK BUTTON (expect no result) within 3s619$CD = 3620countdown()621PASSED()622REM print_button_states()623STRINGLN $_BUTTON_ENABLED = TRUE;624$_BUTTON_ENABLED = TRUE625REM print_button_states()626STRING ($_BUTTON_ENABLED==FALSE) :627IF ($_BUTTON_ENABLED == FALSE) THEN628FAIL()629ELSE630PASSED()631END_IF632633request_button_press()634635BUTTON_DEF636PASSED()637STRINGLN PRESSED ONCE638BUTTON_DEF639PASSED()640STRINGLN PRESSED TWICE641END_BUTTON642END_BUTTON643644DELAY 1000645STRING MASH BUTTON within 5s646$CD = 5647countdown()648ENTER649650STRINGLN Manual button check651$_BUTTON_ENABLED = FALSE652$_BUTTON_PUSH_RECEIVED = FALSE653REM print_button_states()654STRING PUSH BUTTON N times within 5s655$CD = 15656WHILE ($CD > 0)657IF ($_BUTTON_PUSH_RECEIVED == TRUE) THEN658STRINGLN p659$_BUTTON_PUSH_RECEIVED = FALSE660END_IF661$CD = ($CD - 1)662STRING .663DELAY 200664END_WHILE665$_BUTTON_ENABLED = TRUE666$_BUTTON_PUSH_RECEIVED = FALSE667668ENTER669STRINGLN _LOCKS_670REM ------------------------------------------------------------------------------------------------------------------------------671672STRING Saving lock state :673SAVE_HOST_KEYBOARD_LOCK_STATE674PASSED()675676FUNCTION compare_saved_lock_states()677STRING ($_SAVED_CAPSLOCK_ON==$_CAPSLOCK_ON) :678IF ($_SAVED_CAPSLOCK_ON == $_CAPSLOCK_ON) THEN679PASSED()680ELSE681FAIL()682END_IF683684STRING ($_SAVED_NUMLOCK_ON==$_NUMLOCK_ON) :685IF ($_SAVED_NUMLOCK_ON == $_NUMLOCK_ON) THEN686PASSED()687ELSE688FAIL()689END_IF690691STRING ($_SAVED_SCROLLLOCK_ON==$_SCROLLLOCK_ON) :692IF ($_SAVED_SCROLLLOCK_ON == $_SCROLLLOCK_ON) THEN693PASSED()694ELSE695FAIL()696END_IF697END_FUNCTION698699compare_saved_lock_states()700701STRING ($_CAPSLOCK_ON==TRUE) THEN; CAPSLOCK;702IF ( $_CAPSLOCK_ON == TRUE ) THEN703CAPSLOCK704DELAY 100705END_IF706707STRING ( $_CAPSLOCK_ON == FALSE ) :708IF ( $_CAPSLOCK_ON == FALSE ) THEN709PASSED()710ELSE711FAIL()712END_IF713714STRING ( $_NUMLOCK_ON == FALSE ) THEN; NUMLOCK;715IF ( $_NUMLOCK_ON == FALSE ) THEN716NUMLOCK717DELAY 100718END_IF719720STRING ( $_NUMLOCK_ON == TRUE ) :721IF ( $_NUMLOCK_ON == TRUE ) THEN722PASSED()723ELSE724FAIL()725END_IF726727FUNCTION wait_for_caps_on()728STRING press capslock(wait for caps on):729WAIT_FOR_CAPS_ON730PASSED()731END_FUNCTION732FUNCTION wait_for_caps_off()733STRING press capslock(wait for caps off):734WAIT_FOR_CAPS_OFF735PASSED()736END_FUNCTION737FUNCTION wait_for_caps_change()738STRING press capslock(wait for caps change):739WAIT_FOR_CAPS_CHANGE740PASSED()741END_FUNCTION742FUNCTION wait_for_num_off()743STRING press numlock(wait for num off):744WAIT_FOR_NUM_OFF745PASSED()746END_FUNCTION747FUNCTION wait_for_num_on()748STRING press numlock(wait for num on):749WAIT_FOR_NUM_ON750PASSED()751END_FUNCTION752FUNCTION wait_for_num_change()753STRING press numlock(wait for num change):754WAIT_FOR_NUM_CHANGE755PASSED()756END_FUNCTION757FUNCTION wait_for_scroll_off()758STRING press scroll lock(wait for scroll off):759WAIT_FOR_SCROLL_OFF760PASSED()761END_FUNCTION762FUNCTION wait_for_scroll_on()763STRING press scroll lock(wait for scroll on):764WAIT_FOR_SCROLL_ON765PASSED()766END_FUNCTION767FUNCTION wait_for_scroll_change()768STRING press scroll lock(wait for scroll change):769WAIT_FOR_SCROLL_CHANGE770PASSED()771END_FUNCTION772773IF ($_CAPSLOCK_ON == TRUE) THEN774wait_for_caps_off()775wait_for_caps_on()776ELSE777wait_for_caps_on()778wait_for_caps_off()779END_IF780781wait_for_caps_change()782wait_for_caps_change()783784IF ($_NUMLOCK_ON == TRUE) THEN785wait_for_num_off()786wait_for_num_on()787ELSE788wait_for_num_on()789wait_for_num_off()790END_IF791792wait_for_num_change()793wait_for_num_change()794795IF($_SCROLLLOCK_ON == TRUE) THEN796wait_for_scroll_off()797wait_for_scroll_on()798ELSE799wait_for_scroll_on()800wait_for_scroll_off()801END_IF802803wait_for_scroll_change()804wait_for_scroll_change()805806STRING Restoring lock state :807RESTORE_HOST_KEYBOARD_LOCK_STATE808PASSED()809810compare_saved_lock_states()811812813REM ------------------------------------------------------------------------------------------------------------------------------814815STRING Storage activity timeout :816$INPUT = $_STORAGE_ACTIVITY_TIMEOUT817TRANSLATE_INT()818819REM this is 0 because its already timed out820STRING ($_STORAGE_ACTIVITY_TIMEOUT==0) :821IF ( $_STORAGE_ACTIVITY_TIMEOUT == 0 ) THEN822PASSED()823ELSE824FAIL()825END_IF826827STRING Payload Parse Speed :828$INPUT = $_PAYLOAD_PARSE_SPEED829TRANSLATE_INT()830831STRING ($_PAYLOAD_PARSE_SPEED==2) :832IF ($_PAYLOAD_PARSE_SPEED == 2) THEN833PASSED()834ELSE835FAIL()836END_IF837838STRING System LEDs enabled :839$INPUT = $_SYSTEM_LEDS_ENABLED840TRANSLATE_BOOL()841842STRING Storage LEDs enabled :843$INPUT = $_STORAGE_LEDS_ENABLED844TRANSLATE_BOOL()845846STRING Injecting LEDs enabled :847$INPUT = $_INJECTING_LEDS_ENABLED848TRANSLATE_BOOL()849850STRING Exfil LEDs enabled :851$INPUT = $_EXFIL_LEDS_ENABLED852TRANSLATE_BOOL()853854STRING Received host lock LED reply :855$INPUT = $_RECEIVED_HOST_LOCK_LED_REPLY856TRANSLATE_BOOL()857858STRING EXFIL mode enabled :859$INPUT = $_EXFIL_MODE_ENABLED860TRANSLATE_BOOL()861862STRING ($_EXFIL_MODE_ENABLED==FALSE) :863IF ( $_EXFIL_MODE_ENABLED == FALSE) THEN864PASSED()865ELSE866FAIL()867END_IF868869STRING OS(default):870$INPUT = $_OS871TRANSLATE_INT()872873STRING Driver counter :874$INPUT = $_HOST_CONFIGURATION_REQUEST_COUNT875TRANSLATE_INT()876877STRING Storage active :878$INPUT = $_STORAGE_ACTIVE879TRANSLATE_BOOL()880881ENTER882STRINGLN _JITTER_883REM ------------------------------------------------------------------------------------------------------------------------------884885STRING Jitter enabled :886$INPUT = $_JITTER_ENABLED887TRANSLATE_BOOL()888889STRING ($_JITTER_ENABLED==FALSE) :890IF ($_JITTER_ENABLED == FALSE) THEN891PASSED()892ELSE893FAIL()894END_IF895896STRING Jitter max :897$INPUT = $_JITTER_MAX898TRANSLATE_INT()899900STRINGLN $_JITTER_ENABLED=TRUE;901$_JITTER_ENABLED = TRUE902STRING ($_JITTER_ENABLED == TRUE) :903IF ($_JITTER_ENABLED == TRUE) THEN904PASSED()905ELSE906FAIL()907END_IF908injection_test()909$_JITTER_ENABLED = FALSE910STRING TEST W/FW JITTER ON :911PASSED()912913ENTER914STRINGLN _HOLD_915REM ------------------------------------------------------------------------------------------------------------------------------916917STRINGLN HOLD a;DELAY 1500;RELEASE a :918HOLD a919DELAY 1000920RELEASE a921ENTER922PASSED()923924STRINGLN HOLD A;DELAY 1500;RELEASE A :925HOLD A926DELAY 1000927RELEASE A928PASSED()929930STRINGLN MANUAL INJECTMOD, HOLD MOD, KEY_DOWN, RELEASE a, RESET test :931INJECT_MOD932HOLD SHIFT933KEY_DOWN 0400934DELAY 1000935RELEASE a936RESET937938STRING MANUAL inject A :939INJECT 0402940STRING :941PASSED()942943STRING MANUAL state type A :944MOD_DOWN 0402945MOD_KEY_DOWN 0402946MOD_KEY_UP 0402947MOD_UP 0402948STRING :949PASSED()950951STRING MANUAL type a :952KEY_DOWN 0402953KEY_UP 0402954STRING :955PASSED()956957STRING DELAY $ :958VAR $T = 1000959STRING $T(1000) :960DELAY $T961PASSED()962STRINGLN $T = ($T * 2);963$T = ($T * 2)964STRING DELAY $T :965DELAY $T966PASSED()967968REM EXTENDED DELAY969REM DELAY 65536970971972STRINGLN _EXFIL VAR_973REM ------------------------------------------------------------------------------------------------------------------------------974STRING EXFIL $T :975$T = 1000976EXFIL $T977PASSED()978979STRING _RAND_980REM ------------------------------------------------------------------------------------------------------------------------------981ENTER982983STRING Rand min :984$INPUT = $_RANDOM_MIN985TRANSLATE_INT()986987STRING ($_RANDOM_MIN==0) :988IF ($_RANDOM_MIN == 0) THEN989PASSED()990ELSE991FAIL()992END_IF993994STRING Rand max :995$INPUT = $_RANDOM_MAX996TRANSLATE_INT()997998STRING ($_RANDOM_MAX==9) :999IF ($_RANDOM_MAX == 9) THEN1000PASSED()1001ELSE1002FAIL()1003END_IF10041005STRING $_RANDOM_INT :1006$INPUT = $_RANDOM_INT1007TRANSLATE_INT()10081009STRING 0<$_RANDOM_INT>9 bounds :1010IF (($_RANDOM_INT >= 0) && ($_RANDOM_INT <= 9)) THEN1011PASSED()1012ELSE1013FAIL()1014END_IF10151016STRING min<$_RANDOM_INT>max bounds :1017IF (($_RANDOM_INT >= $_RANDOM_MIN) && ($_RANDOM_INT <= $_RANDOM_MAX)) THEN1018PASSED()1019ELSE1020FAIL()1021END_IF10221023STRING Random seed :1024$INPUT = $_RANDOM_SEED1025TRANSLATE_INT()10261027VAR $length = 1001028FUNCTION generate_random_lower()1029$length = 1001030WHILE ( $length > 0 )1031RANDOM_LOWERCASE_LETTER1032$length = ($length - 1)1033END_WHILE1034ENTER1035END_FUNCTION10361037FUNCTION generate_random_upper()1038$length = 1001039WHILE ( $length > 0 )1040RANDOM_UPPERCASE_LETTER1041$length = ($length - 1)1042END_WHILE1043ENTER1044END_FUNCTION10451046FUNCTION generate_random_letter()1047$length = 1001048WHILE ( $length > 0 )1049RANDOM_LETTER1050$length = ($length - 1)1051END_WHILE1052ENTER1053END_FUNCTION10541055FUNCTION generate_random_number()1056$length = 1001057WHILE ( $length > 0 )1058RANDOM_NUMBER1059$length = ($length - 1)1060END_WHILE1061ENTER1062END_FUNCTION10631064FUNCTION generate_random_special()1065$length = 1001066WHILE ( $length > 0 )1067RANDOM_SPECIAL1068$length = ($length - 1)1069END_WHILE1070ENTER1071END_FUNCTION10721073FUNCTION generate_random_char()1074$length = 1001075WHILE ( $length > 0 )1076RANDOM_CHAR1077$length = ($length - 1)1078END_WHILE1079ENTER1080END_FUNCTION10811082STRINGLN RAND LOWER:1083generate_random_lower()1084STRINGLN RAND UPPER:1085generate_random_upper()1086STRINGLN RAND LETTER:1087generate_random_letter()1088STRINGLN RAND NUMBER:1089generate_random_number()1090STRINGLN RAND SPECIAL:1091generate_random_special()1092STRINGLN RAND CHAR:1093generate_random_char()10941095REM ------------------------------------------------------------------------------------------------------------------------------1096FUNCTION vid_pid_check()1097$INPUT = $_CURRENT_VID1098SWAP_ENDIAN()1099STRING ($INPUT(vid)==0x05AC) :1100IF ($INPUT == 0x05AC) THEN1101PASSED()1102ELSE1103FAIL()1104END_IF1105STRING $_CURRENT_VID(hex):1106TRANSLATE_HEX()1107$INPUT = $_CURRENT_PID1108SWAP_ENDIAN()1109STRING ($INPUT(pid)==0x021E) :1110IF ($INPUT == 0x021E) THEN1111PASSED()1112ELSE1113FAIL()1114END_IF1115STRING $_CURRENT_PID(hex):1116TRANSLATE_HEX()1117END_FUNCTION11181119vid_pid_check()11201121STRINGLN SAVE_ATTACKMODE;ATTACKMODE OFF;RESTORE_ATTACKMODE;1122SAVE_ATTACKMODE1123DELAY 5001124ATTACKMODE OFF1125DELAY 5001126LED_OFF1127DELAY 501128LED_R1129DELAY 501130LED_G1131DELAY 501132LED_R1133DELAY 501134LED_OFF1135RESTORE_ATTACKMODE1136PASSED()1137DELAY 50011381139vid_pid_check()11401141STRING ($_CURRENT_ATTACKMODE==3) :1142IF ($_CURRENT_ATTACKMODE == 3) THEN1143PASSED()1144ELSE1145FAILED1146END_IF11471148STRING ATTACKMODE HID STORAGE MAN_T PROD_T SERIAL_RANDOM :1149ATTACKMODE HID STORAGE MAN_T PROD_T SERIAL_RANDOM1150DELAY 5001151PASSED()11521153STRINGLN Setting BUTTON to toggle hide/restore1154BUTTON_DEF1155IF (($TOGGLE % 2) == 0) THEN1156ATTACKMODE OFF1157HIDE_PAYLOAD1158DELAY 5001159ATTACKMODE STORAGE1160ELSE1161ATTACKMODE OFF1162RESTORE_PAYLOAD1163DELAY 5001164ATTACKMODE STORAGE1165END_IF1166$TOGGLE = ($TOGGLE + 1)1167END_BUTTON11681169STRING ($_BUTTON_USER_DEFINED==TRUE) :1170IF ($_BUTTON_USER_DEFINED == TRUE) THEN1171PASSED()1172ELSE1173FAIL()1174END_IF11751176ENTER1177STRINGLN ~DONE~1178STRING F:1179$INPUT = $FAILED1180TRANSLATE_INT()1181STRING P:1182$INPUT = $PASS1183TRANSLATE_INT()1184IF ( $FAILED == 0 ) THEN1185STRINGLN TESTS PASSED1186LED_G1187ELSE1188STRINGLN TESTS FAILED1189LED_R1190END_IF1191ENTER1192STRINGLN DONE119311941195