-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathrquine.gen.rb
66 lines (57 loc) · 2.17 KB
/
rquine.gen.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
MOD = ARGV[0] || 999989
tmpl = <<END.chomp
##################################################
##################################################
##################################################
##############....##############....##############
############.......############.......############
##########..........##########..........##########
#########............########............#########
#########.............######.............#########
########.............########.............########
########............##......##............########
#####################........#####################
#####################........#####################
######################......######################
#####################.######.#####################
####################..........####################
###################............###################
#################................#################
################..................################
###################............###################
##################################################
##################################################
##################################################
END
harness = <<'END'.chomp.sub("MODMOD") { MOD }
eval=eval=eval='Z'##'
/#{eval eval if eval .size>#{(s=%(eval$s=%q(#$s)#)).size-1}}}#LMNOPQRS
##thx.flagitious!## TUVWXY/.i rescue##/
3141592653589793+ +271828182845904;
9876543210;;eval "x=((#{s.sum}-eval.
sum)%256).chr;;eval .scan(//){a=$`+x+$'
a.unpack('H*')[0].hex%MODMOD==VV&&eval(a)}#"##"
eval eval#### (C) Copyright 2014 Yusuke Endoh ####
END
harness.gsub!(/ {10,}/) { ")+?@*#{ $&.size }+%(" }
harness.tr!(" \n'", "@_^")
harness.sub!("VV") { '#{s.unpack("H*")[0].hex%MODMOD}'.sub("MODMOD") { MOD } }
code = <<'END'.chomp.split.join.sub("HARNESS") { harness }
eval$s=%q(
eval(%w(
puts((%q(HARNESS)).tr("@_^",32.chr<<10<<39).sub(?Z,s));
exit
#ABCDEFGHIJK
)*%())
)
END
code = (" " * "eval=eval=eval='".size) + code
code = tmpl.tr(".", " ").gsub(/#/) { x=code.slice!(0, 1); x=="" ? ?# : x }
def puts(str)
$str = str + "\n"
end
def exit
throw(:exit)
end
catch(:exit) { eval code }
File.write("rquine.rb", $str)