ICFP Contest 2006
Team: Abstraction Anonymous

hack.bas

Download

  1. I DIM nums(X) AS STRING
  2. II nums(I) = "0"
  3. III nums(II) = "1"
  4. IV nums(III) = "2"
  5. V nums(IV) = "3"
  6. VI nums(V) = "4"
  7. VII nums(VI) = "5"
  8. VIII nums(VII) = "6"
  9. VIV nums(VIII) = "7"
  10. X nums(VIV) = "8"
  11. XI nums(X) = "9"
  12. LX REM
  13. LXV IF ARGS() > I THEN GOTO LXXXV
  14. LXX PRINT "usage: ./hack.exe username"
  15. LXXV PRINT CHR(X)
  16. LXXX END
  17. LXXXV REM
  18. XC REM get username from command line
  19. XCV DIM username AS STRING
  20. C username = ARG(II)
  21. CV REM common words used in passwords
  22. CX DIM pwdcount AS INTEGER
  23. CXV pwdcount = LIII
  24. CXX DIM words(pwdcount) AS STRING
  25. CXXV words(I) = "airplane"
  26. CXXX words(II) = "alphabet"
  27. CXXXV words(III) = "aviator"
  28. CXL words(IV) = "bidirectional"
  29. CXLV words(V) = "changeme"
  30. CL words(VI) = "creosote"
  31. CLV words(VII) = "cyclone"
  32. CLX words(VIII) = "december"
  33. CLXV words(IX) = "dolphin"
  34. CLXX words(X) = "elephant"
  35. CLXXV words(XI) = "ersatz"
  36. CLXXX words(XII) = "falderal"
  37. CLXXXV words(XIII) = "functional"
  38. CXC words(XIV) = "future"
  39. CXCV words(XV) = "guitar"
  40. CC words(XVI) = "gymnast"
  41. CCV words(XVII) = "hello"
  42. CCX words(XVIII) = "imbroglio"
  43. CCXV words(XIX) = "january"
  44. CCXX words(XX) = "joshua"
  45. CCXXV words(XXI) = "kernel"
  46. CCXXX words(XXII) = "kingfish"
  47. CCXXXV words(XXIII) = "(\b.bb)(\v.vv)"
  48. CCXL words(XXIV) = "millennium"
  49. CCXLV words(XXV) = "monday"
  50. CCL words(XXVI) = "nemesis"
  51. CCLV words(XXVII) = "oatmeal"
  52. CCLX words(XXVIII) = "october"
  53. CCLXV words(XXIX) = "paladin"
  54. CCLXX words(XXX) = "pass"
  55. CCLXXV words(XXXI) = "password"
  56. CCLXXX words(XXXII) = "penguin"
  57. CCLXXXV words(XXXIII) = "polynomial"
  58. CCXC words(XXXIV) = "popcorn"
  59. CCXCV words(XXXV) = "qwerty"
  60. CCC words(XXXVI) = "sailor"
  61. CCCV words(XXXVII) = "swordfish"
  62. CCCX words(XXXVIII) = "symmetry"
  63. CCCXV words(XXXIX) = "system"
  64. CCCXX words(XL) = "tattoo"
  65. CCCXXV words(XLI) = "thursday"
  66. CCCXXX words(XLII) = "tinman"
  67. CCCXXXV words(XLIII) = "topography"
  68. CCCXL words(XLIV) = "unicorn"
  69. CCCXLV words(XLV) = "vader"
  70. CCCL words(XLVI) = "vampire"
  71. CCCLV words(XLVII) = "viper"
  72. CCCLX words(XLVIII) = "warez"
  73. CCCLXV words(XLIX) = "xanadu"
  74. CCCLXX words(L) = "xyzzy"
  75. CCCLXXV words(LI) = "zephyr"
  76. CCCLXXX words(LII) = "zeppelin"
  77. CCCLXXXV words(LIII) = "zxcvbnm"
  78. CCCXC REM try each password
  79. CCCXCV PRINT "attempting hack with " + pwdcount + " passwords " + CHR(X)
  80. CCCXCVI REM
  81. DII DIM k AS INTEGER
  82. DV i = I
  83. DX j = I
  84. DXV k = I
  85. DXVI PRINT "Attempt: " + words(i) + nums(j) + nums(k) + CHR(X)
  86. DXX IF CHECKPASS(username, words(i) + nums(j) + nums(k)) THEN GOTO DXXXV
  87. DXXI k = k + I
  88. DXXII IF k < XI THEN GOTO DXX
  89. DXXIII j = j + I
  90. DXXIV IF j < XI THEN GOTO DXV
  91. DXXV i = i + I
  92. DXXX IF i > pwdcount THEN GOTO DL
  93. DXXXI GOTO DX
  94. DXXXII REM
  95. DXXXV PRINT username + ":" + words(i) + nums(j) + nums(k) + CHR(X)
  96. DL END
  97.  
  98.  

Hell is other programming languages. -- Sartran
Hell is that programming language! -- Dan
Ordinarily, one would enrich this language with more powerful means of computation. Instead I take a different tack... -- Harmonious Monk