Using an idea started with this website: Upside-Down-Ternet
And mentioned by XKCD:
Reamweaver, software created in collaboration with Amy Alexander:
I have created my own proxy software to subvert the web and promote hacktivism.
Grab the free source code here:
Download a pre-configured web browser to view the code in action:
Windows: Click Here
OS-X: Click Here
1. Squid Cache: Runs the url redirection script to manipulate links
2. Apache HTTP Server: Serves the manipulated content.
3. Ruby with GChart gem: Helps create random charts
4. Python with flickrfs: Search flickr by tag for interesting photos
5. Perl: Squid redirections script calls other code on the fly
6. Bash script: Set up cron jobs and run code periodically
README:
1. You need the squid proxy server. Set squid's user as apache if using the apache web server.
httpd.conf:
User apache Group apachesquid.conf:
# OPTIONS FOR URL REWRITING # ----------------------------------------------------------------------------- url_rewrite_program /class/putty.pl # TAG: cache_effective_user # If you start Squid as root, it will change its effective/real # UID/GID to the user specified below. The default is to change # to UID of squid. # see also; cache_effective_group # #Default: cache_effective_user apache
2. You need ruby installed with the gcharts gem.
bash_script:
while true; do random_chart.rb; sleep 3; done
random_chart.rb:
# To change this template, choose Tools | Templates
# and open the template in the editor.
require 'googlecharts'
require 'gchart'
#require 'gtk2'
require 'uri'
require 'rubygems'
require 'open-uri'
require 'fileutils'
require 'net/http'
if ARGV[0] == nil
ARGV[0] = 'Obama'
#exit
end
options = ["Communists","Socialists","Democrats","Republicans","World Bank","Treasury",
"Facists","United Nations","NATO","Haitians","New England","Africa","Libertarian Party",
"Nationalists","Labour Party","Muslisms","Health Care","Lobbyist","Christians","Your Mama","Warhawks","Military
Industrial Complex","CNN","FOX News","Faux News","MSNBC","Bernanke","The Fed","Tea Party","Conspiracy Theorists","Pro-lifers","Abortionists"
]
aopts = Array.new(4)
aopts[0] = options[rand(options.size-1)]
aopts[1] = options[rand(options.size-1)]
aopts[2] = options[rand(options.size-1)]
aopts[3] = options[rand(options.size-1)]
aopts = aopts.uniq
def unique_ar(options)
aopts = Array.new(4)
aopts[0] = options[rand(options.size-1)]
aopts[1] = options[rand(options.size-1)]
aopts[2] = options[rand(options.size-1)]
aopts[3] = options[rand(options.size-1)]
aopts = aopts.uniq
end
if (aopts.size != 4)
unique_ar(options)
end
#puts aopts
first = 100 - (rand(60) + 3) #subtract 3-62 -> 97-38
second = 100 - first - (rand(30) + 4)
second = second.abs
third = 100 - first - second - (rand(10) + 4)
third = third.abs
forth = 100 - (first+second+third)
forth = forth.abs
fifth = 100 - (rand(50) + 1)
#puts first
#puts second
#puts third
#puts forth
#puts fifth
random = rand(6)
if (random == 0)
# puts "Zero"
url = Gchart.meter(
:title => 'Who loves ' + ARGV[0]+ '?',
:size=> '400x200',
:data => [first,second,third,forth],
:labels=> [aopts[0],aopts[1],aopts[2],aopts[3]])
end
if (random == 1)
# puts "One"
url = Gchart.bar(
:title => 'Who loves ' + ARGV[0]+ '?',
:size=> '400x200',
:data => [first,second,third,forth],
:labels=> [aopts[0],aopts[1],aopts[2],aopts[3]])
end
if (random == 2)
# puts "Two"
url = Gchart.venn(
:title => 'Who loves ' + ARGV[0]+ '?',
:size=> '400x200',
:data => [first,second,third,forth,fifth],
:labels=> [aopts[0],aopts[1],aopts[2]])
end
if (random == 3)
# puts "Three"
url = Gchart.pie_3d(
:title => 'Who loves ' + ARGV[0]+ '?',
:size=> '400x200',
:data => [first,second,third,forth],
:labels=> [aopts[0],aopts[1],aopts[2],aopts[3]])
end
if (random == 4)
# puts "Four"
url = Gchart.pie(
:title => 'Who loves ' + ARGV[0]+ '?',
:size=> '400x200',
:data => [first,second,third,forth],
:labels=> [aopts[0],aopts[1],aopts[2],aopts[3]])
end
if (random == 5)
# puts "Five"
url = Gchart.line(
:title => ARGV[0]+"'s Approval Rating",
:size=> '400x200',
:data => [first,second,third,forth],
:labels=> ["Monthly Rating"],
:encoding=> "text")
end
#url.to_url
#url.fetch
#url.write("/images/chart.png")
#url.write(stream)
#puts url
#system("wget " +""" + url +""" + "-.png")
system("wget " +""" + url +""" + ".png -O chart.png")
#Gtk.init
#clipboard = Gtk::Clipboard.get(Gdk::Selection::CLIPBOARD)
#clipboard.set_text(url)
#clipboard.store
#uri = URI.parse(url)
#uri.path
#h = Net::HTTP.new(uri.hosts, uri.port)
#data = h.get(uri.path,nil)
#f = File.open("chart.png","w+")
#f << data
#f.close()
3. You need python installed to access flickr photos.
4. For (3) you need the fuse library installed.