I REM *================================================* II REM | QVICKBASIC pwd Cracker Complete foxxtrot | III REM | | IV REM | To use: Compile with /bin/qbasic | V REM | Run as ./pcw.exe with a list of all the | VI REM | usernames you'd like to try to crack | VII REM | | VIII REM | For Educational Purposes Only | IX REM *================================================* X IF ARGS() > I THEN GOTO XX XI PRINT "usage: ./pwc.exe " + CHR(X) XII END XX DIM currentuser AS INTEGER XXI currentuser = II XXV DIM username AS STRING XXVI DIM pwdcount AS INTEGER XXX pwdcount = LIII XXXV DIM words(pwdcount) AS STRING XXXVI words(I) = "airplane" XXXVII words(II) = "alphabet" XXXVIII words(III) = "bidirectional" XXXIX words(IV) = "changeme" XL words(V) = "creosote" XLI words(VI) = "cyclone" XLII words(VII) = "december" XLIII words(VIII) = "dolphin" XLIV words(IX) = "elephant" XLV words(X) = "ersatz" XLVI words(XI) = "falderal" XLVII words(XII) = "functional" XLVIII words(XIII) = "future" XLIX words(XIV) = "guitar" LX words(XV) = "gymnast" LXI words(XVI) = "hello" LXII words(XVII) = "imbroglio" LXIII words(XVIII) = "january" LXIV words(XIX) = "joshua" LXV words(XX) = "kernel" LXVI words(XXI) = "kingfish" LXVII words(XXII) = "(\b.bb)(\v.vv)" LXVIII words(XXIII) = "millenium" LXIX words(XXIV) = "monday" LXX words(XXV) = "nemesis" LXXI words(XXVI) = "oatmeal" LXXII words(XXVII) = "october" LXXIII words(XXVIII) = "paladin" LXXIV words(XXIX) = "pass" LXXV words(XXX) = "password" LXXVI words(XXXI) = "penguin" LXXVII words(XXXII) = "polynomial" LXXVIII words(XXXIII) = "popcorn" LXXIX words(XXXIV) = "qwerty" LXXX words(XXXV) = "sailor" LXXXI words(XXXVI) = "swordfish" LXXXII words(XXXVII) = "symmetry" LXXXIII words(XXXVIII) = "system" LXXXIV words(XXXIX) = "tattoo" LXXXV words(XL) = "thursday" LXXXVI words(XLI) = "tinman" LXXXVII words(XLII) = "topography" LXXXVIII words(XLIII) = "unicorn" LXXXIX words(XLIV) = "vader" XC words(XLV) = "vampire" XCI words(XLVI) = "viper" XCII words(XLVII) = "warez" XCIII words(XLVIII) = "xanadu" XCIV words(XLIX) = "xyzzy" XCV words(L) = "zephyr" XCVI words(LI) = "zeppelin" XCVII words(LII) = "zxcvbnm" XCVIII words(LIII) = "aviator" CD DIM i AS INTEGER CDI DIM j AS INTEGER CDII DIM k AS INTEGER CDIII DIM t AS STRING DI username = ARG(currentuser) DII PRINT "attempting crack of " + username + " with " + pwdcount + " passwords" + CHR(X) DIII i = I DV IF CHECKPASS(username,words(i)) THEN GOTO DL DVII i = i + I DX IF i > pwdcount THEN GOTO DC DXI GOTO DV DL PRINT "found password for " + username + ": " + words(i) + CHR(X) DLI currentuser = currentuser + I; DLII IF currentuser >= ARGS() THEN END ELSE GOTO DI DC PRINT "no simple match for " + username + CHR(X) M i = I MI j = I MII t = words(i) + CHR(XLVIII) + CHR(XLVIII) MIV IF CHECKPASS(username, t) THEN GOTO MCC MX t = words(i) + CHR(XLVIII) + CHR(XLVIII+j) MXII IF CHECKPASS(username, t) THEN GOTO MCC MXIII j = j + I MXIV IF j <= IX THEN GOTO MX MXX j = I MXXI k = I MXXII t = words(i) + CHR(XLVIII+j) + CHR(XLVIII+k) MXXIV IF CHECKPASS(username,t) THEN GOTO MCC MXXV k = k+I MXXVI IF k <= IX THEN GOTO MXXII MXXVII j = j+I MXXVIII IF j <= IX THEN GOTO MXXI MXXX j = I MXXXI t = words(i) + CHR(XLVIII+j) + CHR(XLVIII) MXXXII IF CHECKPASS(username,t) THEN GOTO MCC MXXXIII j = j + I MXXXIV IF j <= IX THEN GOTO MXXXI ML i = i+I MLI IF i <= pwdcount THEN GOTO MI MC PRINT "no complex match for " + username + CHR(X) MCI GOTO DLI MCC PRINT "found password for " + username + ": " + t + CHR(X) MCCI GOTO DLI STOP