diff --git a/ructf2011/rev200/README b/ructf2011/rev200/README new file mode 100644 index 0000000..6321f33 --- /dev/null +++ b/ructf2011/rev200/README @@ -0,0 +1,5 @@ +key.hex is AVR AtMega64 (or 128) code + +1. look at key.txt at end +2. look at key.bin in hex after substring "key:" +3. look into key.idb to calls to CreateChar function diff --git a/ructf2011/rev200/avrsimulatoridesetup151.exe b/ructf2011/rev200/avrsimulatoridesetup151.exe new file mode 100644 index 0000000..626295f Binary files /dev/null and b/ructf2011/rev200/avrsimulatoridesetup151.exe differ diff --git a/ructf2011/rev200/bin2font.rb b/ructf2011/rev200/bin2font.rb new file mode 100755 index 0000000..e1e80d8 --- /dev/null +++ b/ructf2011/rev200/bin2font.rb @@ -0,0 +1,12 @@ +#!/usr/bin/ruby +data = File.read('key.bin') +i=1 +data.each_byte do |b| + s = "%08b" % b + puts s.tr('01','.#') + if i==8 + #puts + i=0 + end + i+=1 +end diff --git a/ructf2011/rev200/fc.rb b/ructf2011/rev200/fc.rb new file mode 100755 index 0000000..2a61142 --- /dev/null +++ b/ructf2011/rev200/fc.rb @@ -0,0 +1,28 @@ +#!/usr/bin/ruby +# simple binary file compare (c) http://zed.0xff.me +# like good old DOS "fc /b" + +if ARGV.size < 2 + puts("[!] gimme at least two filenames") + exit +end + +handles = ARGV.map{ |fname| open(fname) } + +while !handles.any?(&:eof) + bytes = handles.map(&:readbyte) + if bytes.uniq.size > 1 + @diff = true + printf "%08x:"+" %02x"*handles.size+"\n", handles[0].pos-1, *bytes + end +end + +unless handles.all?(&:eof) + @diff = true + puts + ARGV.each do |fname| + printf "[!] %20s is %8d bytes long\n", fname, File.size(fname) + end +end + +puts "[.] all files are identical" unless @diff diff --git a/ructf2011/rev200/hex2bin.rb b/ructf2011/rev200/hex2bin.rb new file mode 100755 index 0000000..4fd20a7 --- /dev/null +++ b/ructf2011/rev200/hex2bin.rb @@ -0,0 +1,17 @@ +#!/usr/bin/ruby +data = File.read(ARGV.first) +a = '' +data.strip.split("\n").each do |l| + l.strip! + if l =~ /^:100/ + else + $stderr.puts "[?] #{l}" + next + end + l.sub! /^:100...../,'' + l = l[0..-3] + (0..15).each do |i| + a << l[i*2,2].to_i(16).chr + end +end +$stdout << a diff --git a/ructf2011/rev200/key.bin b/ructf2011/rev200/key.bin new file mode 100644 index 0000000..93999d8 Binary files /dev/null and b/ructf2011/rev200/key.bin differ diff --git a/ructf2011/rev200/key.hex b/ructf2011/rev200/key.hex new file mode 100644 index 0000000..aeb5157 --- /dev/null +++ b/ructf2011/rev200/key.hex @@ -0,0 +1,159 @@ +:100000000C9462000C941D040C944A040C948A0015 +:100010000C948A000C948A000C948A000C948A0038 +:100020000C948A000C948A000C948A000C948A0028 +:100030000C948A000C948A000C948A000C948A0018 +:100040000C9403030C948A000C948A000C948A008C +:100050000C948A000C948A000C948A000C948A00F8 +:100060000C948A000C948A000000000024002700F1 +:100070002A0000000000250028002B0000000000DE +:1000800023002600290004040404040404040202DA +:100090000202020203030303030301020408102007 +:1000A0004080010204081020010204081020000012 +:1000B0000007000201000003040600000000000029 +:1000C0000000A40211241FBECFEFD8E0DEBFCDBFD9 +:1000D00011E0A0E0B1E0E2E8F9E002C005900D9285 +:1000E000A634B107D9F711E0A6E4B1E001C01D9232 +:1000F000A636B107E1F710E0C4ECD0E004C02297C7 +:10010000FE010E94BB04C23CD107C9F70E94ED0268 +:100110000C94BF040C940000CF93DF93EC018C810E +:1001200060E00E94B10381E090E00E944B038C816B +:1001300061E00E94B10381E090E00E944B038C815A +:1001400060E00E94B10384E690E00E944B03DF91DF +:10015000CF910895AF92BF92CF92DF92EF92FF922C +:100160001F93DF93CF930F92CDB7DEB7182FE12EF9 +:10017000F92EAA24BB24C62EDD24F701858161E077 +:1001800099830E949203B6010A2C02C07595679567 +:100190000A94E2F76170F70185810E94B103089427 +:1001A000A11CB11C0894E11CF11C9981F8E0AF1668 +:1001B000B10419F7812F0E948C000F90CF91DF912D +:1001C0001F91FF90EF90DF90CF90BF90AF90089578 +:1001D000AF92BF92CF92DF92EF92FF921F93DF9385 +:1001E000CF930F92CDB7DEB7182FE12EF92EAA24A8 +:1001F000BB24C62EDD24F701858161E099830E942E +:100200009203B6010A2C02C0759567950A94E2F72D +:100210006170F70185810E94B1030894A11CB11C93 +:100220000894E11CF11C9981F4E0AF16B10419F7B0 +:10023000812F0E948C000F90CF91DF911F91FF9032 +:10024000EF90DF90CF90BF90AF9008951F93CF9322 +:10025000DF93EC01162F8A81642F0E94B1038B81FA +:1002600060E00E94B1038D8584FF05C0CE01612F3F +:100270000E94AA000EC0612F70E084E0759567951A +:100280008A95E1F7CE010E94E800CE01612F0E941D +:10029000E800DF91CF911F91089541E00E9426016F +:1002A000089540E00E9426010895EF92FF920F9377 +:1002B0001F93CF93DF93EC017A016770660F660F8F +:1002C000660F60640E94510100E010E0E881F9814E +:1002D000D701A00FB11F0190F081E02DCE016C91EC +:1002E00009950F5F1F4F0830110581F7DF91CF91FE +:1002F0001F910F91FF90EF900895FC016685262FC6 +:10030000246026876C600E9451010895DF93CF938B +:10031000CDB7DEB728970FB6F894DEBF0FBECDBFBE +:10032000DE011196EDE3F1E028E001900D922150FD +:10033000E1F7FC012189241710F4422F4150E42FEA +:10034000F0E0EE0FFF1FEC0FFD1F2181260F20684C +:10035000622F0E94510128960FB6F894DEBF0FBE9F +:10036000CDBFCF91DF91089561E00E94510180EDF2 +:1003700097E00E944B030895CF93DF93EC01423046 +:1003800018F08D8588608D87498B1A8A222329F081 +:10039000413019F48D8584608D8780E593EC0E944F +:1003A0004B038A8160E00E94B1038C8160E00E946F +:1003B000B1038B8160E00E94B1036D8564FD1DC0B7 +:1003C000CE0163E00E94E80084E991E10E944B03C2 +:1003D000CE0163E00E94E80084E991E10E944B03B2 +:1003E000CE0163E00E94E80086E990E00E944B03A2 +:1003F000CE0162E00E94E80016C06062CE010E9459 +:10040000510184E991E10E944B036D856062CE0148 +:100410000E94510186E990E00E944B036D85606265 +:10042000CE010E9451016D856062CE010E94510192 +:1004300084E08E87CE010E947D01CE010E94B4012E +:1004400082E08F87CE0166E00E945101DF91CF915B +:1004500008956F927F928F92AF92CF92EF920F9307 +:100460001F93DF93CF93CDB7DEB73C01162F842FB8 +:10047000F301428323830483E582C682A7828086B8 +:100480009D8591879E8592879F859387988994877C +:1004900061E00E949203F301838161E00E94920374 +:1004A000F301848161E00E949203112319F0F301AA +:1004B000158603C080E1F3018587C30160E141E057 +:1004C00020E00E94BC01CF91DF911F910F91EF902E +:1004D000CF90AF908F907F906F9008958F92AF9252 +:1004E000CF92EF920F93CF93DF93E62F742F522F7B +:1004F000302FAE2C8C2CA7E3B1E0EC01B983A8839C +:1005000000D000D0ADB7BEB71196CDB7DEB7198217 +:1005100011961C92119712961C92129713961C9288 +:1005200061E04E2F2FEF072FE52EC32E0E942902E8 +:100530000F900F900F900F90DF91CF910F91EF9050 +:10054000CF90AF908F900895CF92EF920F9386E463 +:1005500091E067E048E029E00AE05BE0E52E3CE05E +:10056000C32E0E946E020F91EF90CF900895CF930B +:10057000DF93C6E4D1E0CE0161E043E151E00E94A7 +:100580005501CE0165E04BE151E00E945501CE01DD +:1005900063E04BE051E00E945501CE0162E043E28E +:1005A00051E00E945501CE0164E04BE251E00E940F +:1005B0005501CE0160E142E020E00E94BC0182E0F2 +:1005C00060E00E94920380E062EF72E043E050E05E +:1005D0000E94FD03DF91CF9108950E9458030E946D +:1005E000B702FFCFCF93DF93C6E4D1E0CE0160E046 +:1005F00040E00E948601CE0160E071E00E94B104FB +:10060000DF91CF9108951F920F920FB60F92112490 +:100610002F933F938F939F93AF93BF9380915D01EF +:1006200090915E01A0915F01B091600130916101F4 +:100630000196A11DB11D232F2D5F2D3720F02D57C1 +:100640000196A11DB11D2093610180935D019093DE +:100650005E01A0935F01B093600180915901909178 +:100660005A01A0915B01B0915C010196A11DB11DE1 +:100670008093590190935A01A0935B01B0935C0160 +:10068000BF91AF919F918F913F912F910F900FBE8E +:100690000F901F901895019751F0880F991F880FA0 +:1006A000991F02972FB7F8940197F1F72FBF08957C +:1006B000789484B5826084BD84B5816084BD85B53D +:1006C000826085BD85B5816085BDEEE6F0E0808104 +:1006D00081608083E1E8F0E08081826080838081B6 +:1006E00081608083E0E8F0E0808181608083E1EBDD +:1006F000F0E0808184608083E0EBF0E080818160C5 +:100700008083EAE7F0E0808184608083808182607A +:100710008083808181608083808180688083109263 +:10072000C1000895282F30E0C90186569F4FFC0173 +:100730009491F901EA57FF4FE491EE2389F0F0E03C +:10074000EE0FFF1FE859FF4FA591B491662329F4DE +:100750008C91909589238C9308958C91892B8C93FF +:100760000895482F50E0CA0182559F4FFC01949193 +:100770009A0126563F4FF9012491FA01EA57FF4F9B +:10078000E491EE23C9F1992331F1933021F4909152 +:1007900080009F7705C0943031F4909180009F7D58 +:1007A0009093800018C0913019F494B59F7704C0DD +:1007B000923021F494B59F7D94BD0DC0963021F404 +:1007C0009091B0009F7705C0973029F49091B000C8 +:1007D0009F7D9093B000F0E0EE0FFF1FEE58FF4FAB +:1007E000A591B491662329F48C91209582238C9352 +:1007F00008958C91822B8C9308958230E8F4E82F31 +:10080000F0E0EE0FFF1FEE59FE4F718360838130E1 +:1008100041F0809169008C7F842B80936900E89A75 +:10082000089580916900440F551F440F551F837F21 +:10083000842B80936900E99A08951F920F920FB656 +:100840000F9211242F933F934F935F936F937F9356 +:100850008F939F93AF93BF93EF93FF938091620128 +:1008600090916301009729F0E0916201F09163019A +:100870000995FF91EF91BF91AF919F918F917F91DA +:100880006F915F914F913F912F910F900FBE0F90FD +:100890001F9018951F920F920FB60F9211242F934D +:1008A0003F934F935F936F937F938F939F93AF93F8 +:1008B000BF93EF93FF93809164019091650100973E +:1008C00029F0E0916401F09165010995FF91EF91A4 +:1008D000BF91AF919F918F917F916F915F914F9158 +:1008E0003F912F910F900FBE0F901F9018950F936F +:1008F0001F93CF93DF93EC018B0109C00F5F1F4F54 +:10090000E881F9810190F081E02DCE010995F8018F +:100910006081662399F7DF91CF911F910F91089520 +:10092000EF92FF920F931F93CF93DF93EC018B0114 +:100930007A010DC0F80161918F01E881F981019080 +:10094000F081E02DCE0109950894E108F108E11449 +:10095000F10481F7DF91CF911F910F91FF90EF90FC +:100960000895DC01ED91FC910280F381E02D099561 +:100970000895EE0FFF1F0590F491E02D0994F8946F +:02098000FFCFA7 +:100982006B65793A01020304030500000E10101092 +:10099200100E00001E121C12121E00000E0404048F +:1009A200040400001C02021E121F000004000404C2 +:1009B200040400000000004D017704900400004090 +:0609C200001400540000C7 +:00000001FF diff --git a/ructf2011/rev200/key.idb b/ructf2011/rev200/key.idb new file mode 100644 index 0000000..57b26c7 Binary files /dev/null and b/ructf2011/rev200/key.idb differ diff --git a/ructf2011/rev200/key.txt b/ructf2011/rev200/key.txt new file mode 100644 index 0000000..4bc5d7f --- /dev/null +++ b/ructf2011/rev200/key.txt @@ -0,0 +1,2496 @@ +....##.. +#..#.#.. +.##...#. +........ +....##.. +#..#.#.. +...###.# +.....#.. +....##.. +#..#.#.. +.#..#.#. +.....#.. +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +......## +......## +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +....##.. +#..#.#.. +#...#.#. +........ +........ +........ +........ +........ +..#..#.. +........ +..#..### +........ +..#.#.#. +........ +........ +........ +........ +........ +..#..#.# +........ +..#.#... +........ +..#.#.## +........ +........ +........ +........ +........ +..#...## +........ +..#..##. +........ +..#.#..# +........ +.....#.. +.....#.. +.....#.. +.....#.. +.....#.. +.....#.. +.....#.. +.....#.. +......#. +......#. +......#. +......#. +......#. +......#. +......## +......## +......## +......## +......## +......## +.......# +......#. +.....#.. +....#... +...#.... +..#..... +.#...... +#....... +.......# +......#. +.....#.. +....#... +...#.... +..#..... +.......# +......#. +.....#.. +....#... +...#.... +..#..... +........ +........ +........ +.....### +........ +......#. +.......# +........ +........ +......## +.....#.. +.....##. +........ +........ +........ +........ +........ +........ +........ +........ +#.#..#.. +......#. +...#...# +..#..#.. +...##### +#.#####. +##..#### +###.#### +##.##... +###..... +##.####. +#.###### +##..##.# +#.###### +...#...# +###..... +#.#..... +###..... +#.##...# +###..... +###...#. +###.#... +#####..# +###..... +......#. +##...... +.....#.# +#..#.... +....##.# +#..#..#. +#.#..##. +..##.#.. +#.##...# +.....### +##.##..# +####.### +...#...# +###..... +#.#..##. +###..#.. +#.##...# +###..... +.......# +##...... +...###.# +#..#..#. +#.#..##. +..##.##. +#.##...# +.....### +###....# +####.### +...#.... +###..... +##...#.. +###.##.. +##.#.... +###..... +.....#.. +##...... +..#...#. +#..#.### +#######. +.......# +....###. +#..#.#.. +#.###.## +.....#.. +##....#. +..####.. +##.#...# +.....### +##..#..# +####.### +....###. +#..#.#.. +###.##.# +......#. +....##.. +#..#.#.. +#.###### +.....#.. +....##.. +#..#.#.. +........ +........ +##..#### +#..#..## +##.##### +#..#..## +###.##.. +.......# +#...##.. +#......# +.##..... +###..... +....###. +#..#.#.. +#.##...# +......## +#......# +###..... +#..#.... +###..... +....###. +#..#.#.. +.#..#.## +......## +#...##.. +#......# +.##....# +###..... +....###. +#..#.#.. +#.##...# +......## +#......# +###..... +#..#.... +###..... +....###. +#..#.#.. +.#..#.## +......## +#...##.. +#......# +.##..... +###..... +....###. +#..#.#.. +#.##...# +......## +#....#.. +###..##. +#..#.... +###..... +....###. +#..#.#.. +.#..#.## +......## +##.##### +#..#...# +##..#### +#..#...# +....#... +#..#.#.# +#.#.#### +#..#..#. +#.###### +#..#..#. +##..#### +#..#..#. +##.##### +#..#..#. +###.#### +#..#..#. +######## +#..#..#. +...##### +#..#..## +##.##### +#..#..## +##..#### +#..#..## +....#### +#..#..#. +##..##.# +#.##.### +##.####. +#.##.### +...##... +..#.#### +###....# +..#.###. +#####..# +..#.###. +#.#.#.#. +..#..#.. +#.###.## +..#..#.. +##...##. +..#.###. +##.###.# +..#..#.. +####.### +.......# +#....#.# +#......# +.##....# +###..... +#..##..# +#.....## +....###. +#..#.#.. +#..#..#. +......## +#.##.##. +.......# +....#.#. +..#.##.. +......#. +##...... +.###.#.# +#..#.#.# +.##..### +#..#.#.# +....#.#. +#..#.#.. +###...#. +####.### +.##....# +.###.... +####.### +.......# +#....#.# +#......# +....###. +#..#.#.. +#.##...# +......## +....#... +#..#.#.. +#.#....# +...###.. +#.##...# +...###.. +....#... +#..#.#.. +###....# +...###.. +####...# +...###.. +#..##..# +#......# +#####... +###..... +#.#.#### +...#.##. +#.##...# +.....#.. +...##..# +####.### +#......# +..#.#### +....###. +#..#.#.. +#...##.. +........ +....#### +#..#.... +##..#### +#..#...# +##.##### +#..#...# +...##### +#..#...# +######## +#..#.... +###.#### +#..#.... +##.##### +#..#.... +##..#### +#..#.... +#.###### +#..#.... +#.#.#### +#..#.... +....#... +#..#.#.# +#.#.#### +#..#..#. +#.###### +#..#..#. +##..#### +#..#..#. +##.##### +#..#..#. +###.#### +#..#..#. +######## +#..#..#. +...##### +#..#..## +##.##### +#..#..## +##..#### +#..#..## +....#### +#..#..#. +##..##.# +#.##.### +##.####. +#.##.### +...##... +..#.#### +###....# +..#.###. +#####..# +..#.###. +#.#.#.#. +..#..#.. +#.###.## +..#..#.. +##...##. +..#.###. +##.###.# +..#..#.. +####.### +.......# +#....#.# +#......# +.##....# +###..... +#..##..# +#.....## +....###. +#..#.#.. +#..#..#. +......## +#.##.##. +.......# +....#.#. +..#.##.. +......#. +##...... +.###.#.# +#..#.#.# +.##..### +#..#.#.# +....#.#. +#..#.#.. +###...#. +####.### +.##....# +.###.... +####.### +.......# +#....#.# +#......# +....###. +#..#.#.. +#.##...# +......## +....#... +#..#.#.. +#.#....# +...###.. +#.##...# +...###.. +....#... +#..#.#.. +###....# +...###.. +####...# +...###.. +#..##..# +#......# +####.#.. +###..... +#.#.#### +...#.##. +#.##...# +.....#.. +...##..# +####.### +#......# +..#.#### +....###. +#..#.#.. +#...##.. +........ +....#### +#..#.... +##..#### +#..#...# +##.##### +#..#...# +...##### +#..#...# +######## +#..#.... +###.#### +#..#.... +##.##### +#..#.... +##..#### +#..#.... +#.###### +#..#.... +#.#.#### +#..#.... +....#... +#..#.#.# +...##### +#..#..## +##..#### +#..#..## +##.##### +#..#..## +###.##.. +.......# +...#.##. +..#.#### +#...#.#. +#......# +.##..#.. +..#.#### +....###. +#..#.#.. +#.##...# +......## +#...#.## +#......# +.##..... +###..... +....###. +#..#.#.. +#.##...# +......## +#...##.# +#....#.# +#....#.. +######## +.....#.# +##...... +##..###. +.......# +.##....# +..#.#### +....###. +#..#.#.. +#.#.#.#. +........ +....###. +##...... +.##....# +..#.#### +.###.... +###..... +#....#.. +###..... +.###.#.# +#..#.#.# +.##..### +#..#.#.# +#...#.#. +#..#.#.# +###....# +####.### +##..###. +.......# +....###. +#..#.#.. +###.#... +........ +##..###. +.......# +.##....# +..#.#### +....###. +#..#.#.. +###.#... +........ +##.##### +#..#...# +##..#### +#..#...# +...##### +#..#...# +....#... +#..#.#.# +.#.....# +###..... +....###. +#..#.#.. +..#..##. +.......# +....#... +#..#.#.# +.#...... +###..... +....###. +#..#.#.. +..#..##. +.......# +....#... +#..#.#.# +###.#### +#..#..#. +######## +#..#..#. +....#### +#..#..## +...##### +#..#..## +##..#### +#..#..## +##.##### +#..#..## +###.##.. +.......# +.####.#. +.......# +.##..### +.###.... +.##..##. +....#### +.##..##. +....#### +.##..##. +....#### +.##..... +.##..#.. +....###. +#..#.#.. +.#.#...# +.......# +........ +###..... +...#.... +###..... +###.#... +#......# +#####..# +#......# +##.#.### +.......# +#.#..... +....#### +#.##...# +...##### +.......# +#..#.... +####.... +#......# +###..... +..#.##.# +##..###. +.......# +.##.##.. +#..#...# +....#..# +#..#.#.# +....#### +.#.##### +...##### +.#..#### +....#... +..##.... +...#...# +.....#.# +#......# +####.### +##.##### +#..#...# +##..#### +#..#...# +...##### +#..#...# +....#### +#..#...# +######## +#..#.... +###.#### +#..#.... +....#... +#..#.#.# +######.. +.......# +.##..##. +#....#.# +..#..##. +..#.#### +..#..#.. +.##..... +..#..##. +#....### +.##.##.. +.##..... +....###. +#..#.#.. +.#.#...# +.......# +....#... +#..#.#.# +##.##### +#..#..## +##..#### +#..#..## +##..##.# +#.##.### +##.####. +#.##.### +..#.#... +#..#.### +....#### +#.##.##. +#####... +#..#.#.. +##.####. +#.###### +....#### +#.#####. +##..##.# +#.###### +##.####. +.......# +...#...# +#..#.##. +###.##.# +###...## +####...# +###..... +..#.#... +###..... +.......# +#..#.... +....##.# +#..#..#. +..#....# +.#.#.... +###....# +####.### +######.. +.......# +..#....# +#...#..# +..#..#.. +...#.### +...#.... +####.#.. +.#....#. +..#.#### +.#.....# +.#.#.... +###..#.. +..#.#### +####.... +###..... +###.###. +....#### +######## +...##### +###.##.. +....#### +######.# +...##### +..#....# +#......# +..#..##. +....#### +..#..... +.##.#... +.##...#. +..#.#### +....###. +#..#.#.. +.#.#...# +.......# +..#.#... +#..#.##. +....#### +#.##.##. +#####... +#..#.#.. +##.####. +#.###### +....#### +#.#####. +##..##.# +#.###### +##..#### +#..#...# +##.##### +#..#...# +....#... +#..#.#.# +.##....# +###..... +....###. +#..#.#.. +.#.#...# +.......# +#....... +###.##.# +#..#.### +###..... +....###. +#..#.#.. +.#..#.## +......## +....#... +#..#.#.# +##..#### +#..#..## +##.##### +#..#..## +###.##.. +.......# +.#....#. +..##.... +...##... +####.... +#...##.# +#....#.# +#...#... +.##..... +#...##.# +#....### +.#..#..# +#...#.## +...##.#. +#...#.#. +..#...#. +..#...## +..#.#..# +####.... +.#.....# +..##.... +...##..# +####.#.. +#...##.# +#....#.# +#....#.. +.##..... +#...##.# +#....### +#....... +###..#.# +#..#..## +###.##.. +....###. +#..#.#.. +.#..#.## +......## +#...#.#. +#......# +.##..... +###..... +....###. +#..#.#.. +#.##...# +......## +#...##.. +#......# +.##..... +###..... +....###. +#..#.#.. +#.##...# +......## +#...#.## +#......# +.##..... +###..... +....###. +#..#.#.. +#.##...# +......## +.##.##.# +#....#.# +.##..#.. +######.# +...###.# +##...... +##..###. +.......# +.##...## +###..... +....###. +#..#.#.. +###.#... +........ +#....#.. +###.#..# +#..#...# +###....# +....###. +#..#.#.. +.#..#.## +......## +##..###. +.......# +.##...## +###..... +....###. +#..#.#.. +###.#... +........ +#....#.. +###.#..# +#..#...# +###....# +....###. +#..#.#.. +.#..#.## +......## +##..###. +.......# +.##...## +###..... +....###. +#..#.#.. +###.#... +........ +#....##. +###.#..# +#..#.... +###..... +....###. +#..#.#.. +.#..#.## +......## +##..###. +.......# +.##...#. +###..... +....###. +#..#.#.. +###.#... +........ +...#.##. +##...... +.##..... +.##...#. +##..###. +.......# +....###. +#..#.#.. +.#.#...# +.......# +#....#.. +###.#..# +#..#...# +###....# +....###. +#..#.#.. +.#..#.## +......## +.##.##.# +#....#.# +.##..... +.##...#. +##..###. +.......# +....###. +#..#.#.. +.#.#...# +.......# +#....##. +###.#..# +#..#.... +###..... +....###. +#..#.#.. +.#..#.## +......## +.##.##.# +#....#.# +.##..... +.##...#. +##..###. +.......# +....###. +#..#.#.. +.#.#...# +.......# +.##.##.# +#....#.# +.##..... +.##...#. +##..###. +.......# +....###. +#..#.#.. +.#.#...# +.......# +#....#.. +###..... +#...###. +#....### +##..###. +.......# +....###. +#..#.#.. +.#####.# +.......# +##..###. +.......# +....###. +#..#.#.. +#.##.#.. +.......# +#.....#. +###..... +#...#### +#....### +##..###. +.......# +.##..##. +###..... +....###. +#..#.#.. +.#.#...# +.......# +##.##### +#..#...# +##..#### +#..#...# +....#... +#..#.#.# +.##.#### +#..#..#. +.####### +#..#..#. +#...#### +#..#..#. +#.#.#### +#..#..#. +##..#### +#..#..#. +###.#### +#..#..#. +....#### +#..#..## +...##### +#..#..## +##.##### +#..#..## +##..#### +#..#..## +##..##.# +#.##.### +##.####. +#.##.### +..####.. +.......# +...#.##. +..#.#### +#....#.. +..#.#### +####..## +.......# +.#....#. +#.....## +..#...## +#.....## +.....#.. +#.....## +###..#.# +#.....#. +##...##. +#.....#. +#.#..### +#.....#. +#....... +#....##. +#..###.# +#....#.# +#..#...# +#....### +#..####. +#....#.# +#..#..#. +#....### +#..##### +#....#.# +#..#..## +#....### +#..##... +#...#..# +#..#.#.. +#....### +.##....# +###..... +....###. +#..#.#.. +#..#..#. +......## +####..## +.......# +#.....## +#......# +.##....# +###..... +....###. +#..#.#.. +#..#..#. +......## +####..## +.......# +#....#.. +#......# +.##....# +###..... +....###. +#..#.#.. +#..#..#. +......## +...#...# +..#...## +...##..# +####.... +####..## +.......# +...#.#.# +#....##. +......## +##...... +#....... +###....# +####..## +.......# +#....#.# +#....### +##....## +.......# +.##..... +###....# +.#.....# +###..... +..#..... +###..... +....###. +#..#.#.. +#.####.. +.......# +##..#### +#..#...# +##.##### +#..#...# +...##### +#..#...# +....#### +#..#...# +###.#### +#..#.... +##..#### +#..#.... +#.#.#### +#..#.... +#...#### +#..#.... +.####### +#..#.... +.##.#### +#..#.... +....#... +#..#.#.# +#...#### +#..#..#. +#.#.#### +#..#..#. +##..#### +#..#..#. +###.#### +#..#..#. +....#### +#..#..## +##..#### +#..#..## +##.##### +#..#..## +###..##. +..#.#### +.###.#.. +..#.#### +.#.#..#. +..#.#### +..##.... +..#.#### +#.#.###. +..#.##.. +#...##.. +..#.##.. +#.#..### +###...## +#.##...# +###..... +###.##.. +.......# +#.###..# +#.....## +#.#.#... +#.....## +........ +##.#.... +........ +##.#.... +#.#.##.# +#.##.### +#.#####. +#.##.### +...#...# +#..#.##. +##..##.# +#.##.### +##.####. +#.##.### +...##..# +#.....#. +...#...# +#..#.##. +...###.. +#..#..#. +...#...# +#..#.### +...#..#. +#..#.##. +...###.. +#..#..#. +...#..#. +#..#.### +...#..## +#..#.##. +...###.. +#..#..#. +.##....# +###..... +.#..###. +..#.#### +..#.#### +###.#### +.....### +..#.#### +###..#.# +..#.###. +##....## +..#.###. +....###. +#..#.#.. +..#.#..# +......#. +....#### +#..#.... +....#### +#..#.... +....#### +#..#.... +....#### +#..#.... +##.##### +#..#...# +##..#### +#..#...# +....#### +#..#...# +###.#### +#..#.... +##..#### +#..#.... +#.#.#### +#..#.... +#...#### +#..#.... +....#... +#..#.#.# +##..#### +#..#..#. +###.#### +#..#..#. +....#### +#..#..## +#....##. +###..#.. +#..#...# +###..... +.##..### +###..... +.#..#... +###..... +..#.#..# +###..... +....#.#. +###..... +.#.##.## +###..... +###..#.# +..#.###. +..####.. +###..... +##....## +..#.###. +....###. +#..#.#.. +.##.###. +......#. +....#### +#..#...# +###.#### +#..#.... +##..#### +#..#.... +....#... +#..#.#.# +##..#### +#..#..## +##.##### +#..#..## +##...##. +###..#.. +##.#...# +###..... +##..###. +.......# +.##....# +###..... +.#....## +###....# +.#.#...# +###..... +....###. +#..#.#.. +.#.#.#.# +.......# +##..###. +.......# +.##..#.# +###..... +.#..#.## +###....# +.#.#...# +###..... +....###. +#..#.#.. +.#.#.#.# +.......# +##..###. +.......# +.##...## +###..... +.#..#.## +###..... +.#.#...# +###..... +....###. +#..#.#.. +.#.#.#.# +.......# +##..###. +.......# +.##...#. +###..... +.#....## +###...#. +.#.#...# +###..... +....###. +#..#.#.. +.#.#.#.# +.......# +##..###. +.......# +.##..#.. +###..... +.#..#.## +###...#. +.#.#...# +###..... +....###. +#..#.#.. +.#.#.#.# +.......# +##..###. +.......# +.##..... +###....# +.#....#. +###..... +..#..... +###..... +....###. +#..#.#.. +#.####.. +.......# +#.....#. +###..... +.##..... +###..... +....###. +#..#.#.. +#..#..#. +......## +#....... +###..... +.##...#. +###.#### +.###..#. +###..... +.#....## +###..... +.#.#.... +###..... +....###. +#..#.#.. +######.# +......## +##.##### +#..#...# +##..#### +#..#...# +....#... +#..#.#.# +....###. +#..#.#.. +.#.##... +......## +....###. +#..#.#.. +#.##.### +......#. +######## +##..#### +##..#### +#..#..## +##.##### +#..#..## +##...##. +###..#.. +##.#...# +###..... +##..###. +.......# +.##..... +###..... +.#...... +###..... +....###. +#..#.#.. +#....##. +.......# +##..###. +.......# +.##..... +###..... +.###...# +###..... +....###. +#..#.#.. +#.##...# +.....#.. +##.##### +#..#...# +##..#### +#..#...# +....#... +#..#.#.# +...##### +#..#..#. +....#### +#..#..#. +....#### +#.##.##. +....#### +#..#..#. +...#...# +..#..#.. +..#.#### +#..#..## +..###### +#..#..## +#...#### +#..#..## +#..##### +#..#..## +#.#.#### +#..#..## +#.###### +#..#..## +#....... +#..#...# +.#.###.# +.......# +#..#.... +#..#...# +.#.####. +.......# +#.#..... +#..#...# +.#.##### +.......# +#.##.... +#..#...# +.##..... +.......# +..##.... +#..#...# +.##....# +.......# +.......# +#..#.##. +#.#....# +...###.# +#.##...# +...###.# +..#...## +..#.#### +..#.##.# +.#.##### +..#.##.# +..##.### +..#..... +####.... +..#.##.# +.#.#.### +.......# +#..#.##. +#.#....# +...###.# +#.##...# +...###.# +..#..... +#..#..## +.##....# +.......# +#....... +#..#..## +.#.###.# +.......# +#..#.... +#..#..## +.#.####. +.......# +#.#..... +#..#..## +.#.##### +.......# +#.##.... +#..#..## +.##..... +.......# +#....... +#..#...# +.#.##..# +.......# +#..#.... +#..#...# +.#.##.#. +.......# +#.#..... +#..#...# +.#.##.## +.......# +#.##.... +#..#...# +.#.###.. +.......# +.......# +#..#.##. +#.#....# +...###.# +#.##...# +...###.# +#....... +#..#..## +.#.##..# +.......# +#..#.... +#..#..## +.#.##.#. +.......# +#.#..... +#..#..## +.#.##.## +.......# +#.##.... +#..#..## +.#.###.. +.......# +#.###### +#..#...# +#.#.#### +#..#...# +#..##### +#..#...# +#...#### +#..#...# +..###### +#..#...# +..#.#### +#..#...# +....#### +#..#.... +....#### +#.#####. +....#### +#..#.... +...##### +#..#.... +...##... +#..#.#.# +.......# +#..#.### +.#.#...# +####.... +#...#... +....#### +#..##..# +...##### +#...#... +....#### +#..##..# +...##### +......#. +#..#.### +..#.#### +#.##.### +#####... +#..#.#.. +.......# +#..#.### +####...# +####.### +..#.#### +#.###### +....#... +#..#.#.# +.####... +#..#.#.. +#....#.. +#.##.#.# +#.....#. +.##..... +#....#.. +#.####.# +#....#.. +#.##.#.# +#......# +.##..... +#....#.. +#.####.# +#....#.# +#.##.#.# +#.....#. +.##..... +#....#.# +#.####.# +#....#.# +#.##.#.# +#......# +.##..... +#....#.# +#.####.# +###.###. +###..##. +####.... +###..... +#....... +#......# +#......# +.##..... +#....... +#.....## +###....# +###.#... +####.... +###..... +#....... +#......# +#.....#. +.##..... +#....... +#.....## +#....... +#......# +#......# +.##..... +#....... +#.....## +###..... +###.#... +####.... +###..... +#....... +#......# +#......# +.##..... +#....... +#.....## +###....# +###.#.## +####.... +###..... +#....... +#......# +#....#.. +.##..... +#....... +#.....## +###..... +###.#.## +####.... +###..... +#....... +#......# +#......# +.##..... +#....... +#.....## +###.#.#. +###..### +####.... +###..... +#....... +#......# +#....#.. +.##..... +#....... +#.....## +#....... +#......# +#.....#. +.##..... +#....... +#.....## +#....... +#......# +#......# +.##..... +#....... +#.....## +#....... +#......# +#....... +.##.#... +#....... +#.....## +...#.... +#..#..#. +##.....# +........ +....#... +#..#.#.# +..#.#... +..#.#### +..##.... +###..... +##..#..# +.......# +#....##. +.#.#.##. +#..##### +.#..#### +######.. +.......# +#..#.#.. +#..#...# +#####..# +.......# +###.#.#. +.#.#.### +######## +.#..#### +###..#.. +#..#...# +###.###. +..#...## +#...#..# +####.... +####.... +###..... +###.###. +....#### +######## +...##### +###.#... +.#.##..# +######## +.#..#### +#.#..#.# +#..#...# +#.##.#.. +#..#...# +.##..##. +..#...## +..#.#..# +####.#.. +#...##.. +#..#...# +#..#.... +#..#.#.# +#...#..# +..#...## +#...##.. +#..#..## +....#... +#..#.#.# +#...##.. +#..#...# +#...#..# +..#.#.## +#...##.. +#..#..## +....#... +#..#.#.# +.#..#... +..#.#### +.#.#.... +###..... +##..#.#. +.......# +#.....#. +.#.#.#.# +#..##### +.#..#### +######.. +.......# +#..#.#.. +#..#...# +#..##.#. +.......# +..#..##. +.#.#.##. +..###### +.#..#### +#####..# +.......# +..#..#.. +#..#...# +#####.#. +.......# +###.#.#. +.#.#.### +######## +.#..#### +###..#.. +#..#...# +###.###. +..#...## +##..#..# +####...# +#..##..# +..#...## +..##...# +####...# +#..#..## +..##.... +..#....# +####.#.. +#..#.... +#..#...# +#....... +........ +#..##### +.###.### +.....#.# +##...... +#..#.#.. +..##.... +..##...# +####.#.. +#..#.... +#..#...# +#....... +........ +#..##### +.#####.# +#..#.... +#..#..## +#....... +........ +...##... +##...... +#..#...# +..##.... +...##..# +####.#.. +#..#.#.. +#.##.#.# +#..##### +.###.### +.....#.. +##...... +#..#..#. +..##.... +..#....# +####.#.. +#..#.#.. +#.##.#.# +#..##### +.#####.# +#..#.#.. +#.####.# +....##.# +##...... +#..#.##. +..##.... +..#....# +####.#.. +#..#.... +#..#...# +#.##.... +........ +#..##### +.###.### +.....#.# +##...... +#..#.### +..##.... +..#.#..# +####.#.. +#..#.... +#..#...# +#.##.... +........ +#..##### +.#####.# +#..#.... +#..#..## +#.##.... +........ +####.... +###..... +###.###. +....#### +######## +...##### +###.###. +.#.##... +######## +.#..#### +#.#..#.# +#..#...# +#.##.#.. +#..#...# +.##..##. +..#...## +..#.#..# +####.#.. +#...##.. +#..#...# +..#..... +#..#.#.# +#.....#. +..#...## +#...##.. +#..#..## +....#... +#..#.#.# +#...##.. +#..#...# +#.....#. +..#.#.## +#...##.. +#..#..## +....#... +#..#.#.# +#.....#. +..##.... +###.#... +####.#.. +###.#... +..#.#### +####.... +###..... +###.###. +....#### +######## +...##### +###.###. +.#.##..# +#######. +.#..#### +.###...# +#.....## +.##..... +#.....## +#......# +..##.... +.#.....# +####.... +#....... +#..#...# +.##.#..# +........ +#...##.. +.####### +#....#.. +..#.#.## +#....... +#..#..## +.##.#..# +........ +###.#... +#..##.#. +....#... +#..#.#.# +#....... +#..#...# +.##.#..# +........ +.#...#.. +....#### +.#.#.#.# +...##### +.#...#.. +....#### +.#.#.#.# +...##### +#.....## +.####### +#....#.. +..#.#.## +#....... +#..#..## +.##.#..# +........ +###.#..# +#..##.#. +....#... +#..#.#.# +...##### +#..#..#. +....#### +#..#..#. +....#### +#.##.##. +....#### +#..#..#. +...#...# +..#..#.. +..#.#### +#..#..## +..###### +#..#..## +.#..#### +#..#..## +.#.##### +#..#..## +.##.#### +#..#..## +.####### +#..#..## +#...#### +#..#..## +#..##### +#..#..## +#.#.#### +#..#..## +#.###### +#..#..## +###.#### +#..#..## +######## +#..#..## +#....... +#..#...# +.##...#. +.......# +#..#.... +#..#...# +.##...## +.......# +........ +#..#.### +..#.#..# +####.... +###..... +#..#...# +.##...#. +.......# +####.... +#..#...# +.##...## +.......# +....#..# +#..#.#.# +######## +#..#...# +###.#### +#..#...# +#.###### +#..#...# +#.#.#### +#..#...# +#..##### +#..#...# +#...#### +#..#...# +.####### +#..#...# +.##.#### +#..#...# +.#.##### +#..#...# +.#..#### +#..#...# +..###### +#..#...# +..#.#### +#..#...# +....#### +#..#.... +....#### +#.#####. +....#### +#..#.... +...##### +#..#.... +...##... +#..#.#.# +...##### +#..#..#. +....#### +#..#..#. +....#### +#.##.##. +....#### +#..#..#. +...#...# +..#..#.. +..#.#### +#..#..## +..###### +#..#..## +.#..#### +#..#..## +.#.##### +#..#..## +.##.#### +#..#..## +.####### +#..#..## +#...#### +#..#..## +#..##### +#..#..## +#.#.#### +#..#..## +#.###### +#..#..## +###.#### +#..#..## +######## +#..#..## +#....... +#..#...# +.##..#.. +.......# +#..#.... +#..#...# +.##..#.# +.......# +........ +#..#.### +..#.#..# +####.... +###..... +#..#...# +.##..#.. +.......# +####.... +#..#...# +.##..#.# +.......# +....#..# +#..#.#.# +######## +#..#...# +###.#### +#..#...# +#.###### +#..#...# +#.#.#### +#..#...# +#..##### +#..#...# +#...#### +#..#...# +.####### +#..#...# +.##.#### +#..#...# +.#.##### +#..#...# +.#..#### +#..#...# +..###### +#..#...# +..#.#### +#..#...# +....#### +#..#.... +....#### +#.#####. +....#### +#..#.... +...##### +#..#.... +...##... +#..#.#.# +....#### +#..#..## +...##### +#..#..## +##..#### +#..#..## +##.##### +#..#..## +###.##.. +.......# +#...#.## +.......# +....#..# +##...... +....#### +.#.##### +...##### +.#..#### +###.#... +#......# +#####..# +#......# +.......# +#..#.... +####.... +#......# +###..... +..#.##.# +##..###. +.......# +....#..# +#..#.#.# +#####... +.......# +.##..... +#......# +.##..##. +..#...## +#..##..# +####.### +##.##### +#..#...# +##..#### +#..#...# +...##### +#..#...# +....#### +#..#...# +....#... +#..#.#.# +###.#### +#..#..#. +######## +#..#..#. +....#### +#..#..## +...##### +#..#..## +##..#### +#..#..## +##.##### +#..#..## +###.##.. +.......# +#...#.## +.......# +.####.#. +.......# +....##.# +##...... +#####... +.......# +.##....# +#..#...# +#...#### +.......# +###.#... +#......# +#####..# +#......# +.......# +#..#.... +####.... +#......# +###..... +..#.##.# +##..###. +.......# +....#..# +#..#.#.# +....#... +#..#.#.. +###....# +....#... +####...# +....#... +###....# +...#.#.. +####...# +.....#.. +#......# +####.### +##.##### +#..#...# +##..#### +#..#...# +...##### +#..#...# +....#### +#..#...# +######## +#..#.... +###.#### +#..#.... +....#... +#..#.#.# +##.###.. +.......# +###.##.# +#..#...# +######.. +#..#...# +......#. +#....... +####..## +#......# +###..... +..#.##.# +....#..# +#..#.#.# +....#... +#..#.#.# +###.###. +....#### +######## +...##### +.....#.# +#..#.... +####.#.. +#..#...# +###..... +..#.##.# +....#..# +#..#.#.. +#####... +#..#.#.. +.##.#.## +.##..#.# +.####..# +..###.#. +.......# +......#. +......## +.....#.. +......## +.....#.# +........ +........ +....###. +...#.... +...#.... +...#.... +...#.... +....###. +........ +........ +...####. +...#..#. +...###.. +...#..#. +...#..#. +...####. +........ +........ +....###. +.....#.. +.....#.. +.....#.. +.....#.. +.....#.. +........ +........ +...###.. +......#. +......#. +...####. +...#..#. +...##### +........ +........ +.....#.. +........ +.....#.. +.....#.. +.....#.. +.....#.. +........ +........ +........ +........ +........ +.#..##.# +.......# +.###.### +.....#.. +#..#.... +.....#.. +........ +........ +.#...... diff --git a/ructf2011/rev300/README b/ructf2011/rev300/README new file mode 100644 index 0000000..be9ce57 --- /dev/null +++ b/ructf2011/rev300/README @@ -0,0 +1,2 @@ +program must output 94.35% +found with tbl_shuffle.rb after some launches and 1-2 hours diff --git a/ructf2011/rev300/brute.rb b/ructf2011/rev300/brute.rb new file mode 100755 index 0000000..cf54233 --- /dev/null +++ b/ructf2011/rev300/brute.rb @@ -0,0 +1,22 @@ +#!/usr/bin/ruby +@chars = "23456789TJQKAhscd " + +def check c + system "echo #{c}44444 | wine pe1.exe" + r = $?.exitstatus + printf "[.] %10s : %d %s\n", c, r, "*"*r if r>6 + r +end + +def loop s0="" + @chars.each_char do |c| + s = s0 + c + r = check s + if r >= s.size + print "\r#{s}: #{r}" + loop s + end + end +end + +loop diff --git a/ructf2011/rev300/check.rb b/ructf2011/rev300/check.rb new file mode 100755 index 0000000..4b46be2 --- /dev/null +++ b/ructf2011/rev300/check.rb @@ -0,0 +1,319 @@ +#!/usr/bin/ruby + +chars = @chars = "23456789TJQKAhscd " + +tbl = @tbl = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 58, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, + 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, + 122, 123, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 147, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 150, 151, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 154, 155, 156, 157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 160, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163, + 164, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 170, 171, 172, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 180, + 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 183, 184, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 187, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 191, 192, 193, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 212, 213, 214, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 217, 218, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 221, 222, 223, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 229, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 232, 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 236, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 241, 242, 243, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 245, + 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 248, 249, 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 258, 259, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 261, 262, + 263, 0, 0, 0, 0, 0 ] + + +############################################### + +def char2pos c + @chars.index(c) || 18 +end + +def check s + r = 1 + n = 0 + s.each_char do |c| + pos = char2pos c +# if (r*19+pos) >= @tbl.size +# puts "tbl size = #{@tbl.size}" +# puts "r*19+pos = #{r*19+pos}" +# puts "s = '#{s}'" +# raise "BOO" +# end +# printf "%s pos = %x; r = %x; r*19=%x; tbl => %x\n", c, pos, r, r*19, @tbl[r*19+pos] + r = @tbl[r*19+pos] + break if r == 0 + n+=1 + end + if r == 0x0d4 + out = `echo #{s[0..4]}__#{s[5..-1]} | wine pe.exe`.strip + if out.to_i > 90 + puts "\r[*] #{s} : #{out} " + else + print "\r[.] #{s} : #{out}" + end + end + n +end + +def loop s0="" + @chars.split('').shuffle.each do |c| + s = s0 + c + r = check s + if (r == 10) && ($r == 0x0d4) + out = `echo #{s[0..4]}ZZ#{s[5..-1]} | wine pe.exe` + puts "[*] #{s} : #{out.strip}" + end + if r >= s.size && s.size < 10 +# print "\r#{s} (#{s.size}): #{r} " + loop s + end + end +end + +check ARGV.first diff --git a/ructf2011/rev300/pe.exe b/ructf2011/rev300/pe.exe new file mode 100644 index 0000000..176bc51 Binary files /dev/null and b/ructf2011/rev300/pe.exe differ diff --git a/ructf2011/rev300/pe1.exe b/ructf2011/rev300/pe1.exe new file mode 100644 index 0000000..d95b0f3 Binary files /dev/null and b/ructf2011/rev300/pe1.exe differ diff --git a/ructf2011/rev300/shuffle.rb b/ructf2011/rev300/shuffle.rb new file mode 100755 index 0000000..04d00ae --- /dev/null +++ b/ructf2011/rev300/shuffle.rb @@ -0,0 +1,27 @@ +#!/usr/bin/ruby +@chars = "23456789TJQKAhscd " + +def check c + system "echo #{c}44444 | wine pe1.exe" + r = $?.exitstatus + printf "[.] %10s : %d %s\n", c, r, "*"*r if r>6 + r +end + +def loop s0="" + @chars.each_char do |c| + s = s0 + c + r = check s + if r >= s.size + print "\r#{s}: #{r}" + loop s + end + end +end + +ac = @chars.split('') +while true do + s = ac.shuffle.join + r = check s + print "\r#{s}: #{r}" if r > 2 +end diff --git a/ructf2011/rev300/tbl b/ructf2011/rev300/tbl new file mode 100644 index 0000000..9dbc0f4 --- /dev/null +++ b/ructf2011/rev300/tbl @@ -0,0 +1,265 @@ +.data:00403182 tbl dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 ; DATA XREF: check+24r +.data:00403182 dw 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15 +.data:00403182 dw 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40 +.data:00403182 dw 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 58, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64 +.data:00403182 dw 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67 +.data:00403182 dw 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 96, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102 +.data:00403182 dw 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119 +.data:00403182 dw 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121 +.data:00403182 dw 122, 123, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 0, 0, 133, 134 +.data:00403182 dw 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139 +.data:00403182 dw 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133 +.data:00403182 dw 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 +.data:00403182 dw 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138 +.data:00403182 dw 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 +.data:00403182 dw 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137 +.data:00403182 dw 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142 +.data:00403182 dw 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136 +.data:00403182 dw 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141 +.data:00403182 dw 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135 +.data:00403182 dw 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140 +.data:00403182 dw 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134 +.data:00403182 dw 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139 +.data:00403182 dw 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133 +.data:00403182 dw 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 +.data:00403182 dw 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138 +.data:00403182 dw 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 +.data:00403182 dw 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137 +.data:00403182 dw 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142 +.data:00403182 dw 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136 +.data:00403182 dw 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141 +.data:00403182 dw 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135 +.data:00403182 dw 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140 +.data:00403182 dw 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134 +.data:00403182 dw 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139 +.data:00403182 dw 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133 +.data:00403182 dw 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 +.data:00403182 dw 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138 +.data:00403182 dw 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 +.data:00403182 dw 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137 +.data:00403182 dw 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142 +.data:00403182 dw 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136 +.data:00403182 dw 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141 +.data:00403182 dw 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135 +.data:00403182 dw 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140 +.data:00403182 dw 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134 +.data:00403182 dw 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139 +.data:00403182 dw 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133 +.data:00403182 dw 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 +.data:00403182 dw 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138 +.data:00403182 dw 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 +.data:00403182 dw 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137 +.data:00403182 dw 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142 +.data:00403182 dw 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136 +.data:00403182 dw 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141 +.data:00403182 dw 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135 +.data:00403182 dw 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140 +.data:00403182 dw 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134 +.data:00403182 dw 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139 +.data:00403182 dw 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133 +.data:00403182 dw 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 +.data:00403182 dw 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138 +.data:00403182 dw 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 +.data:00403182 dw 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137 +.data:00403182 dw 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142 +.data:00403182 dw 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136 +.data:00403182 dw 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146 +.data:00403182 dw 147, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 150, 151, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 154, 155, 156, 157, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 160, 161, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163 +.data:00403182 dw 164, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 170, 171, 172, 173, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 180 +.data:00403182 dw 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182 +.data:00403182 dw 183, 184, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 186, 187, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 190, 191, 192, 193, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 195, 196, 197, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 199, 200 +.data:00403182 dw 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 212, 213, 214, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 216, 217, 218, 219, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 221, 222, 223, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, 226 +.data:00403182 dw 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228 +.data:00403182 dw 229, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 232, 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 236, 237, 238, 239, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 241, 242, 243, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 245 +.data:00403182 dw 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 248, 249, 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 258, 259, 0, 0 +.data:00403182 dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 261, 262 +.data:00403182 dw 263, 0, 0, 0, 0, 0 diff --git a/ructf2011/rev300/tbl.rb b/ructf2011/rev300/tbl.rb new file mode 100755 index 0000000..88727ef --- /dev/null +++ b/ructf2011/rev300/tbl.rb @@ -0,0 +1,317 @@ +#!/usr/bin/ruby + +chars = @chars = "23456789TJQKAhscd " + +tbl = @tbl = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 58, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, + 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, + 122, 123, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 147, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 150, 151, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 154, 155, 156, 157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 160, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163, + 164, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 170, 171, 172, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 180, + 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 183, 184, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 187, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 191, 192, 193, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 212, 213, 214, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 217, 218, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 221, 222, 223, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 229, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 232, 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 236, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 241, 242, 243, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 245, + 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 248, 249, 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 258, 259, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 261, 262, + 263, 0, 0, 0, 0, 0 ] + + +############################################### + +def char2pos c + @chars.index(c) || 18 +end + +def check s + r = 1 + n = 0 + s.each_char do |c| + pos = char2pos c +# if (r*19+pos) >= @tbl.size +# puts "tbl size = #{@tbl.size}" +# puts "r*19+pos = #{r*19+pos}" +# puts "s = '#{s}'" +# raise "BOO" +# end +# printf "%s pos = %x; r = %x; r*19=%x; tbl => %x\n", c, pos, r, r*19, @tbl[r*19+pos] + r = @tbl[r*19+pos] + break if r == 0 + n+=1 + $r = r + end + n +end + +#check "Qd 8hs7KcTA453629" +#check "As 9h53Kc8QJd64T27" + +def loop s0="" + @chars.each_char do |c| + s = s0 + c + r = check s + if (r == 10) && ($r == 0x0d4) + out = `echo #{s[0..4]}__#{s[5..-1]} | wine pe.exe` + puts "[*] #{s} : #{out.strip}" + end + if r >= s.size && s.size < 10 + print "\r#{s} (#{s.size}): #{r} " + loop s + end + end +end + +loop +#check '2h 2h2h 2h5' + diff --git a/ructf2011/rev300/tbl_shuffle.rb b/ructf2011/rev300/tbl_shuffle.rb new file mode 100755 index 0000000..2147907 --- /dev/null +++ b/ructf2011/rev300/tbl_shuffle.rb @@ -0,0 +1,319 @@ +#!/usr/bin/ruby + +chars = @chars = "23456789TJQKAhscd " + +tbl = @tbl = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 58, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, + 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, + 122, 123, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, 0, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 147, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 150, 151, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 154, 155, 156, 157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 160, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163, + 164, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 170, 171, 172, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 180, + 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 183, 184, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 187, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 191, 192, 193, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 212, 213, 214, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 217, 218, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 221, 222, 223, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 229, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 232, 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 236, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 241, 242, 243, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 245, + 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 248, 249, 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 258, 259, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 261, 262, + 263, 0, 0, 0, 0, 0 ] + + +############################################### + +def char2pos c + @chars.index(c) || 18 +end + +def check s + r = 1 + n = 0 + s.each_char do |c| + pos = char2pos c +# if (r*19+pos) >= @tbl.size +# puts "tbl size = #{@tbl.size}" +# puts "r*19+pos = #{r*19+pos}" +# puts "s = '#{s}'" +# raise "BOO" +# end +# printf "%s pos = %x; r = %x; r*19=%x; tbl => %x\n", c, pos, r, r*19, @tbl[r*19+pos] + r = @tbl[r*19+pos] + break if r == 0 + n+=1 + end + if r == 0x0d4 + out = `echo #{s[0..4]}__#{s[5..-1]} | wine pe.exe`.strip + if out.to_i > 90 + puts "\r[*] #{s} : #{out} " + else + print "\r#{s} : #{out}" + end + end + n +end + +def loop s0="" + @chars.split('').shuffle.each do |c| + s = s0 + c + r = check s + if (r == 10) && ($r == 0x0d4) + out = `echo #{s[0..4]}__#{s[5..-1]} | wine pe.exe` + puts "[*] #{s} : #{out.strip}" + end + if r >= s.size && s.size < 10 +# print "\r#{s} (#{s.size}): #{r} " + loop s + end + end +end + +loop