lemontree55 / packetgen

Ruby library to easily generate and capture network packets
MIT License
98 stars 13 forks source link

Adding HTTP Requests #112

Closed ramakrishnansr closed 3 years ago

ramakrishnansr commented 3 years ago

When I try to add a HTTP request to my packet using pkt = PacketGen.gen("IP").add("TCP").add("HTTP::Request"), I get the following error: 7: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/packet.rb:137:in `add' 6: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/packet.rb:442:in `add_header' 5: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/packet.rb:462:in `add_to_previous_header' 4: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/header/base.rb:132:in `set' 3: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/header/base.rb:132:in `each' 2: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/header/base.rb:132:in `block in set' 1: from /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/header/base.rb:41:in `set' /var/lib/gems/2.5.0/gems/packetgen-3.1.8/lib/packetgen/header/http/request.rb:119:in `block in <module:Header>': undefined method `chars' for nil:NilClass (NoMethodError)

I am not sure if this is because of something I missed in the initialization?

sdaubert commented 3 years ago

@ramakrishnansr Strings#chars only exists since Ruby 2.6.1. So this is a bug in HTTP::Request...

sdaubert commented 3 years ago

I spoke too early. This is not a #chars issue but a nil issue.

The binding of HTTP::Header on TCP is buggy as it does not handle adding header, but only parsing it.