Skip to content

Instantly share code, notes, and snippets.

@bararchy
Forked from ik5/fiddle.rb
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bararchy/bb0aba294cb347b53985 to your computer and use it in GitHub Desktop.
Save bararchy/bb0aba294cb347b53985 to your computer and use it in GitHub Desktop.
require 'fiddle'
require 'socket'
libssl = Fiddle.dlopen('/usr/lib/libssl.so')
ssl_init = Fiddle::Function.new(libssl['SSL_library_init'],[],Fiddle::TYPE_INT)
ssl_load_error = Fiddle::Function.new(libssl['SSL_load_error_strings'],[],Fiddle::TYPE_INT)
ssl_client_method = Fiddle::Function.new(libssl['SSLv3_client_method'],[],Fiddle::TYPE_LONG)
ssl_ctx = Fiddle::Function.new(libssl['SSL_CTX_new'],[Fiddle::TYPE_LONG],Fiddle::TYPE_LONG)
ssl_ctx_reneg = Fiddle::Function.new(libssl['SSL_CTX_sess_connect_renegotiate'],[Fiddle::TYPE_LONG],Fiddle::TYPE_LONG)
ssl_new = Fiddle::Function.new(libssl['SSL_new'],[Fiddle::TYPE_LONG],Fiddle::TYPE_LONG)
ssl_set_fd = Fiddle::Function.new(libssl['SSL_set_fd'],[Fiddle::TYPE_LONG, Fiddle::TYPE_INT],Fiddle::TYPE_LONG)
ssl_connect = Fiddle::Function.new(libssl['SSL_connect'],[Fiddle::TYPE_LONG],Fiddle::TYPE_LONG)
# Start Calls
ssl_init.call
ssl_load_error.call
meth = ssl_client_method.call
ctx = ssl_ctx.call(meth)
ctx = ssl_ctx_reneg(ctx)
ssl = ssl_new.call(ctx)
sock = TCPSocket.new("127.0.0.1", 5555)
ssl_set_fd.call(ssl, sock.to_i)
ssl_connect.call(ssl)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment