packetfu 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -2
- data/.gitignore +1 -0
- data/LICENSE.txt +1 -1
- data/bench/after-2012-07-28.txt +25 -0
- data/bench/before-2012-07-28.txt +25 -0
- data/bench/benchit.rb +68 -0
- data/bench/calc_delta.rb +17 -0
- data/bench/octets.rb +22 -0
- data/bench/octets_after.txt +8 -0
- data/bench/octets_after_refactor.txt +8 -0
- data/bench/octets_before.txt +8 -0
- data/lib/packetfu.rb +8 -3
- data/lib/packetfu/packet.rb +2 -2
- data/lib/packetfu/pcap.rb +20 -4
- data/lib/packetfu/protos/arp.rb +7 -160
- data/lib/packetfu/protos/arp/header.rb +160 -0
- data/lib/packetfu/protos/arp/mixin.rb +38 -0
- data/lib/packetfu/protos/eth.rb +5 -247
- data/lib/packetfu/protos/eth/header.rb +247 -0
- data/lib/packetfu/protos/eth/mixin.rb +20 -0
- data/lib/packetfu/protos/hsrp.rb +13 -123
- data/lib/packetfu/protos/hsrp/header.rb +120 -0
- data/lib/packetfu/protos/hsrp/mixin.rb +31 -0
- data/lib/packetfu/protos/icmp.rb +10 -97
- data/lib/packetfu/protos/icmp/header.rb +93 -0
- data/lib/packetfu/protos/icmp/mixin.rb +17 -0
- data/lib/packetfu/protos/ip.rb +7 -295
- data/lib/packetfu/protos/ip/header.rb +335 -0
- data/lib/packetfu/protos/ip/mixin.rb +43 -0
- data/lib/packetfu/protos/ipv6.rb +7 -191
- data/lib/packetfu/protos/ipv6/header.rb +190 -0
- data/lib/packetfu/protos/ipv6/mixin.rb +31 -0
- data/lib/packetfu/protos/tcp.rb +13 -939
- data/lib/packetfu/protos/tcp/ecn.rb +42 -0
- data/lib/packetfu/protos/tcp/flags.rb +83 -0
- data/lib/packetfu/protos/tcp/header.rb +307 -0
- data/lib/packetfu/protos/tcp/hlen.rb +40 -0
- data/lib/packetfu/protos/tcp/mixin.rb +48 -0
- data/lib/packetfu/protos/tcp/option.rb +323 -0
- data/lib/packetfu/protos/tcp/options.rb +106 -0
- data/lib/packetfu/protos/tcp/reserved.rb +42 -0
- data/lib/packetfu/protos/udp.rb +12 -110
- data/lib/packetfu/protos/udp/header.rb +107 -0
- data/lib/packetfu/protos/udp/mixin.rb +23 -0
- data/lib/packetfu/utils.rb +24 -24
- data/lib/packetfu/version.rb +1 -1
- data/packetfu.gemspec +2 -2
- data/test/test_ip.rb +0 -19
- data/test/test_octets.rb +18 -21
- data/test/test_tcp.rb +10 -0
- data/test/test_udp.rb +17 -0
- metadata +79 -50
    
        data/test/test_tcp.rb
    CHANGED
    
    | @@ -302,6 +302,16 @@ class TCPPacketTest < Test::Unit::TestCase | |
| 302 302 | 
             
            		pkt.to_f('tcp_test.pcap','a')
         | 
| 303 303 | 
             
            	end
         | 
| 304 304 |  | 
| 305 | 
            +
            	def test_tcp_read_strip
         | 
| 306 | 
            +
            		str = "e0f8472161a600254ba0760608004500004403554000400651d0c0a83207c0a832370224c1d22d94847f0b07c4ba8018ffff30ba00000101080a8731821433564b8c01027165000000000000200000000000".bin
         | 
| 307 | 
            +
            		str << "0102".bin # Tacking on a couple extra bites tht we'll strip off.
         | 
| 308 | 
            +
            		not_stripped = TCPPacket.new
         | 
| 309 | 
            +
            		not_stripped.read(str)
         | 
| 310 | 
            +
            		assert_equal 18, not_stripped.tcp_header.body.length
         | 
| 311 | 
            +
            		stripped = TCPPacket.new
         | 
| 312 | 
            +
            		stripped.read(str, :strip => true)
         | 
| 313 | 
            +
            		assert_equal 16, stripped.tcp_header.body.length
         | 
| 314 | 
            +
            	end
         | 
| 305 315 | 
             
            end
         | 
| 306 316 |  | 
| 307 317 | 
             
            class TCPPacketTest < Test::Unit::TestCase
         | 
    
        data/test/test_udp.rb
    CHANGED
    
    | @@ -3,6 +3,12 @@ require 'test/unit' | |
| 3 3 | 
             
            $:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
         | 
| 4 4 | 
             
            require 'packetfu'
         | 
| 5 5 |  | 
| 6 | 
            +
            class String
         | 
| 7 | 
            +
            	def bin
         | 
| 8 | 
            +
            		self.scan(/../).map {|x| x.to_i(16).chr}.join
         | 
| 9 | 
            +
            	end
         | 
| 10 | 
            +
            end
         | 
| 11 | 
            +
             | 
| 6 12 | 
             
            class UDPTest < Test::Unit::TestCase
         | 
| 7 13 | 
             
            	include PacketFu
         | 
| 8 14 |  | 
| @@ -58,6 +64,17 @@ class UDPTest < Test::Unit::TestCase | |
| 58 64 | 
             
            		pkt.to_f('udp_test.pcap','a')
         | 
| 59 65 | 
             
            	end
         | 
| 60 66 |  | 
| 67 | 
            +
            	def test_udp_read_strip
         | 
| 68 | 
            +
            		str = "01005e7ffffa100ba9eb63400800450000a12d7c0000011159b446a5fb7ceffffffacdf3076c008d516e4d2d534541524348202a20485454502f312e310d0a486f73743a3233392e3235352e3235352e3235303a313930300d0a53543a75726e3a736368656d61732d75706e702d6f72673a6465766963653a496e7465726e6574476174657761794465766963653a310d0a4d616e3a22737364703a646973636f766572220d0a4d583a330d0a0d0a".bin
         | 
| 69 | 
            +
            		str << "0102".bin # Tacking on a couple extra bites tht we'll strip off.
         | 
| 70 | 
            +
            		not_stripped = UDPPacket.new
         | 
| 71 | 
            +
            		not_stripped.read(str)
         | 
| 72 | 
            +
            		assert_equal 135, not_stripped.udp_header.body.length
         | 
| 73 | 
            +
            		stripped = UDPPacket.new
         | 
| 74 | 
            +
            		stripped.read(str, :strip => true)
         | 
| 75 | 
            +
            		assert_equal 133, stripped.udp_header.body.length
         | 
| 76 | 
            +
            	end
         | 
| 77 | 
            +
             | 
| 61 78 | 
             
            	def test_udp_alter
         | 
| 62 79 | 
             
            		sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
         | 
| 63 80 | 
             
            		pkt = Packet.parse(sample_packet)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,65 +1,73 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: packetfu
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 1.1.6
         | 
| 4 5 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 1.1.5
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 8 8 | 
             
            - Tod Beardsley
         | 
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 12 | 
            +
            date: 2012-10-27 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 16 15 | 
             
              name: pcaprub
         | 
| 17 | 
            -
               | 
| 18 | 
            -
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 16 | 
            +
              requirement: &12628060 !ruby/object:Gem::Requirement
         | 
| 19 17 | 
             
                none: false
         | 
| 20 | 
            -
                requirements: | 
| 21 | 
            -
                - -  | 
| 22 | 
            -
                  - !ruby/object:Gem::Version | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 23 21 | 
             
                    version: 0.9.2
         | 
| 24 22 | 
             
              type: :development
         | 
| 25 | 
            -
              version_requirements: *id001
         | 
| 26 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 27 | 
            -
              name: rspec
         | 
| 28 23 | 
             
              prerelease: false
         | 
| 29 | 
            -
               | 
| 24 | 
            +
              version_requirements: *12628060
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: rspec
         | 
| 27 | 
            +
              requirement: &12627260 !ruby/object:Gem::Requirement
         | 
| 30 28 | 
             
                none: false
         | 
| 31 | 
            -
                requirements: | 
| 32 | 
            -
                - -  | 
| 33 | 
            -
                  - !ruby/object:Gem::Version | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 34 32 | 
             
                    version: 2.6.2
         | 
| 35 33 | 
             
              type: :development
         | 
| 36 | 
            -
              version_requirements: *id002
         | 
| 37 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 38 | 
            -
              name: sdoc
         | 
| 39 34 | 
             
              prerelease: false
         | 
| 40 | 
            -
               | 
| 35 | 
            +
              version_requirements: *12627260
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: sdoc
         | 
| 38 | 
            +
              requirement: &12626240 !ruby/object:Gem::Requirement
         | 
| 41 39 | 
             
                none: false
         | 
| 42 | 
            -
                requirements: | 
| 43 | 
            -
                - -  | 
| 44 | 
            -
                  - !ruby/object:Gem::Version | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 45 43 | 
             
                    version: 0.2.0
         | 
| 46 44 | 
             
              type: :development
         | 
| 47 | 
            -
               | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *12626240
         | 
| 47 | 
            +
            description: PacketFu is a mid-level packet manipulation library for Ruby. With it,
         | 
| 48 | 
            +
              users can read, parse, and write network packets with the level of ease and fun
         | 
| 49 | 
            +
              they expect from Ruby. Note that this gem does not automatically require pcaprub,
         | 
| 50 | 
            +
              since users may install pcaprub through non-gem means.
         | 
| 51 | 
            +
            email: todb@packetfu.com
         | 
| 50 52 | 
             
            executables: []
         | 
| 51 | 
            -
             | 
| 52 53 | 
             
            extensions: []
         | 
| 53 | 
            -
             | 
| 54 | 
            -
            extra_rdoc_files: 
         | 
| 54 | 
            +
            extra_rdoc_files:
         | 
| 55 55 | 
             
            - .document
         | 
| 56 56 | 
             
            - README.rdoc
         | 
| 57 | 
            -
            files: | 
| 57 | 
            +
            files:
         | 
| 58 58 | 
             
            - .document
         | 
| 59 59 | 
             
            - .gitignore
         | 
| 60 60 | 
             
            - INSTALL.rdoc
         | 
| 61 61 | 
             
            - LICENSE.txt
         | 
| 62 62 | 
             
            - README.rdoc
         | 
| 63 | 
            +
            - bench/after-2012-07-28.txt
         | 
| 64 | 
            +
            - bench/before-2012-07-28.txt
         | 
| 65 | 
            +
            - bench/benchit.rb
         | 
| 66 | 
            +
            - bench/calc_delta.rb
         | 
| 67 | 
            +
            - bench/octets.rb
         | 
| 68 | 
            +
            - bench/octets_after.txt
         | 
| 69 | 
            +
            - bench/octets_after_refactor.txt
         | 
| 70 | 
            +
            - bench/octets_before.txt
         | 
| 63 71 | 
             
            - examples/100kpackets.rb
         | 
| 64 72 | 
             
            - examples/ackscan.rb
         | 
| 65 73 | 
             
            - examples/arp.rb
         | 
| @@ -84,14 +92,36 @@ files: | |
| 84 92 | 
             
            - lib/packetfu/packet.rb
         | 
| 85 93 | 
             
            - lib/packetfu/pcap.rb
         | 
| 86 94 | 
             
            - lib/packetfu/protos/arp.rb
         | 
| 95 | 
            +
            - lib/packetfu/protos/arp/header.rb
         | 
| 96 | 
            +
            - lib/packetfu/protos/arp/mixin.rb
         | 
| 87 97 | 
             
            - lib/packetfu/protos/eth.rb
         | 
| 98 | 
            +
            - lib/packetfu/protos/eth/header.rb
         | 
| 99 | 
            +
            - lib/packetfu/protos/eth/mixin.rb
         | 
| 88 100 | 
             
            - lib/packetfu/protos/hsrp.rb
         | 
| 101 | 
            +
            - lib/packetfu/protos/hsrp/header.rb
         | 
| 102 | 
            +
            - lib/packetfu/protos/hsrp/mixin.rb
         | 
| 89 103 | 
             
            - lib/packetfu/protos/icmp.rb
         | 
| 104 | 
            +
            - lib/packetfu/protos/icmp/header.rb
         | 
| 105 | 
            +
            - lib/packetfu/protos/icmp/mixin.rb
         | 
| 90 106 | 
             
            - lib/packetfu/protos/invalid.rb
         | 
| 91 107 | 
             
            - lib/packetfu/protos/ip.rb
         | 
| 108 | 
            +
            - lib/packetfu/protos/ip/header.rb
         | 
| 109 | 
            +
            - lib/packetfu/protos/ip/mixin.rb
         | 
| 92 110 | 
             
            - lib/packetfu/protos/ipv6.rb
         | 
| 111 | 
            +
            - lib/packetfu/protos/ipv6/header.rb
         | 
| 112 | 
            +
            - lib/packetfu/protos/ipv6/mixin.rb
         | 
| 93 113 | 
             
            - lib/packetfu/protos/tcp.rb
         | 
| 114 | 
            +
            - lib/packetfu/protos/tcp/ecn.rb
         | 
| 115 | 
            +
            - lib/packetfu/protos/tcp/flags.rb
         | 
| 116 | 
            +
            - lib/packetfu/protos/tcp/header.rb
         | 
| 117 | 
            +
            - lib/packetfu/protos/tcp/hlen.rb
         | 
| 118 | 
            +
            - lib/packetfu/protos/tcp/mixin.rb
         | 
| 119 | 
            +
            - lib/packetfu/protos/tcp/option.rb
         | 
| 120 | 
            +
            - lib/packetfu/protos/tcp/options.rb
         | 
| 121 | 
            +
            - lib/packetfu/protos/tcp/reserved.rb
         | 
| 94 122 | 
             
            - lib/packetfu/protos/udp.rb
         | 
| 123 | 
            +
            - lib/packetfu/protos/udp/header.rb
         | 
| 124 | 
            +
            - lib/packetfu/protos/udp/mixin.rb
         | 
| 95 125 | 
             
            - lib/packetfu/structfu.rb
         | 
| 96 126 | 
             
            - lib/packetfu/utils.rb
         | 
| 97 127 | 
             
            - lib/packetfu/version.rb
         | 
| @@ -125,33 +155,31 @@ files: | |
| 125 155 | 
             
            - test/test_udp.rb
         | 
| 126 156 | 
             
            - test/vlan-pcapr.cap
         | 
| 127 157 | 
             
            homepage: https://github.com/todb/packetfu
         | 
| 128 | 
            -
            licenses: | 
| 158 | 
            +
            licenses:
         | 
| 129 159 | 
             
            - BSD
         | 
| 130 160 | 
             
            post_install_message: 
         | 
| 131 161 | 
             
            rdoc_options: []
         | 
| 132 | 
            -
             | 
| 133 | 
            -
            require_paths: 
         | 
| 162 | 
            +
            require_paths:
         | 
| 134 163 | 
             
            - lib
         | 
| 135 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 164 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 136 165 | 
             
              none: false
         | 
| 137 | 
            -
              requirements: | 
| 138 | 
            -
              - -  | 
| 139 | 
            -
                - !ruby/object:Gem::Version | 
| 140 | 
            -
                  version:  | 
| 141 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement | 
| 166 | 
            +
              requirements:
         | 
| 167 | 
            +
              - - ! '>='
         | 
| 168 | 
            +
                - !ruby/object:Gem::Version
         | 
| 169 | 
            +
                  version: '0'
         | 
| 170 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 142 171 | 
             
              none: false
         | 
| 143 | 
            -
              requirements: | 
| 144 | 
            -
              - -  | 
| 145 | 
            -
                - !ruby/object:Gem::Version | 
| 146 | 
            -
                  version:  | 
| 172 | 
            +
              requirements:
         | 
| 173 | 
            +
              - - ! '>='
         | 
| 174 | 
            +
                - !ruby/object:Gem::Version
         | 
| 175 | 
            +
                  version: '0'
         | 
| 147 176 | 
             
            requirements: []
         | 
| 148 | 
            -
             | 
| 149 177 | 
             
            rubyforge_project: packetfu
         | 
| 150 | 
            -
            rubygems_version: 1.8. | 
| 178 | 
            +
            rubygems_version: 1.8.15
         | 
| 151 179 | 
             
            signing_key: 
         | 
| 152 180 | 
             
            specification_version: 3
         | 
| 153 181 | 
             
            summary: PacketFu is a mid-level packet manipulation library.
         | 
| 154 | 
            -
            test_files: | 
| 182 | 
            +
            test_files:
         | 
| 155 183 | 
             
            - test/test_arp.rb
         | 
| 156 184 | 
             
            - test/test_eth.rb
         | 
| 157 185 | 
             
            - test/test_hsrp.rb
         | 
| @@ -166,3 +194,4 @@ test_files: | |
| 166 194 | 
             
            - test/test_structfu.rb
         | 
| 167 195 | 
             
            - test/test_tcp.rb
         | 
| 168 196 | 
             
            - test/test_udp.rb
         | 
| 197 | 
            +
            has_rdoc: 
         |