Skip to content

Instantly share code, notes, and snippets.

@postmodern
Created March 22, 2013 03:47
Show Gist options
  • Save postmodern/5218815 to your computer and use it in GitHub Desktop.
Save postmodern/5218815 to your computer and use it in GitHub Desktop.
Example of using Ronin::Network::SSL::Proxy to intercept requests to rubygems.org
#!/usr/bin/env ruby
require 'bundler/setup'
require 'ronin/network/ssl/proxy'
Ronin::Network::SSL::Proxy.start(port: 1337, server: ['rubygems.org', 443]) do |proxy|
address = lambda { |socket|
addrinfo = socket.peeraddr
"#{addrinfo[3]}:#{addrinfo[1]}"
}
proxy.on_client_data do |client,server,data|
puts "#{address[client]} -> #{proxy}"
data.sub!('Host: localhost','Host: rubygems.org')
puts data
end
proxy.on_client_connect do |client|
puts "#{address[client]} -> #{proxy} [connected]"
end
proxy.on_client_disconnect do |client,server|
puts "#{address[client]} <- #{proxy} [disconnected]"
end
proxy.on_server_data do |client,server,data|
puts "#{address[client]} <- #{proxy}"
puts data
end
proxy.on_server_connect do |client,server|
puts "#{address[client]} <- #{proxy} [connected]"
end
proxy.on_server_disconnect do |client,server|
puts "#{address[client]} <- #{proxy} [disconnected]"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment