Skip to content

Instantly share code, notes, and snippets.

@kyontan
Created December 6, 2015 06:46
Show Gist options
  • Save kyontan/bce54f513a2cdbe389bd to your computer and use it in GitHub Desktop.
Save kyontan/bce54f513a2cdbe389bd to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'capybara'
# require 'capybara/poltergeist'
require "selenium-webdriver"
Capybara.current_driver = :selenium
url = "http://qrlogic.pwn.seccon.jp:10080/game/"
s = Capybara::Session.new(:selenium)
# s = Capybara::Session.new(:poltergeist)
# s = Capybara::Session.new()
i = 0
begin
s.visit url
# 30.times do |i|
loop do
fname = "body%03d.txt" % [i]
File.write(fname, s.body)
puts s.body.match(/Stage: .*? \/ 30/)
puts ans = `ruby solver.rb #{fname}`
if ans == "ERROR"
ans = gets
end
i += 1
s.fill_in :ans, with: ans
fname = "body%03d.txt" % [i]
File.write(fname, s.body)
# s.click_button 'Submit'
end
rescue
retry
end
#!/usr/bin/env ruby
require "nokogiri"
require 'capybara'
# require 'capybara/poltergeist'
require "selenium-webdriver"
SOLVER = "http://www.lancs.ac.uk/~simpsons/nonogram/auto"
s2 = Capybara::Session.new(:selenium)
# s2 = Capybara::Session.new(:poltergeist)
html = File.read(ARGV[0])
doc = Nokogiri::HTML.parse(html)
verti = []
doc.css("table tr:first-child th").map{|x| verti << x.css("span").map{|y| y.text.to_i } }
verti.shift
horiz = doc.css("th.rows").map{|x| x.text.split.map(&:to_i) }
s = ""
s += "width #{verti.count}\n"
s += "height #{horiz.count}\n\n"
s += "rows\n"
horiz.each{|h| s += h.join(?,); s += "\n" }
s += "columns\n"
verti.each{|v| s += v.join(?,); s += "\n" }
s2.visit SOLVER
s2.choose "Use text:"
s2.fill_in :field, with: s
s2.select "Text", from: "of"
sleep 1
s2.click_button "Start"
if s2.body.include? ("Error")
puts "ERROR"
else
File.write("qr.txt", s2.body)
puts `./sqrd.py qr.txt`
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment