45 lines
5.2 KiB
Ruby
45 lines
5.2 KiB
Ruby
#!/usr/bin/env ruby
|
|
|
|
$:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
|
|
|
require 'rex/test'
|
|
require 'rex/proto/dcerpc/packet'
|
|
|
|
class Rex::Proto::DCERPC::Packet::UnitTest < Test::Unit::TestCase
|
|
|
|
Klass = Rex::Proto::DCERPC::Packet
|
|
|
|
def test_parse
|
|
|
|
actual = Klass.make_bind('367abb81-9844-35f1-ad32-98f038001003', '2.0')
|
|
expected = ["\005\000\v\003\020\000\000\000H\000\000\000\000\000\000\000\320\026\320\026\000\000\000\000\001\000\000\000\000\000\001\000\201\273z6D\230\3615\2552\230\3608\000\020\003\002\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000", 0]
|
|
assert_equal(expected, actual, 'bind')
|
|
|
|
srand(0)
|
|
actual = Klass.make_bind_fake_multi('367abb81-9844-35f1-ad32-98f038001003', '2.0')
|
|
expected = ["\005\000\v\003\020\000\000\0004\003\000\000\000\000\000\000\320\026\320\026\000\000\000\000\022\000\000\000\000\000\001\000t\277B\372\302f\010\322\024\361#VE\327W\213\002\000\001\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\001\000\001\000\345&V\255WP\244\030LG\010\223r\317\362\304\000\000\002\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\002\000\001\000b\327\260\362\034\222\222\215\246\037\300\010\270~\037\036\002\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\003\000\001\000\226\242\375\312q\266\e!\177\177\2434\204%\347\363\001\000\003\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\004\000\001\000\203h)\271\036w\000@\346\2508\"ev\n\255\002\000\003\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\005\000\001\000\177\215b4\213x\251S\312C\005\303.~\363\202\004\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\006\000\001\000\263\347M\216\223\342\271\026\316\214tT/0D\250\003\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\a\000\001\000^\304]\377p\261#\241/\\\202a)\314o\346\005\000\001\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\010\000\001\000~\377\211q*\271~\026\272\201xa=\242\335z\003\000\002\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\t\000\001\000\255\342\223\3201\232\r(9\300#\tU*g\n\002\000\003\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\n\000\001\000O\037\265\177%\022\255)r\267\273\347L\035\027|\002\000\003\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\v\000\001\000]\341j\fo'G\022^G\231\301\367\263B\353\005\000\002\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\f\000\001\000_\003\302\354\212\373U\314xlJ\267\017\227\234\224\001\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\r\000\001\000\273xut\274R\240g\237\343\372\372xE\324\036\005\000\003\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\016\000\001\000\201\273z6D\230\3615\2552\230\3608\000\020\003\002\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\017\000\001\000\267\227N(\021'\265\316\n\245n\\\370\200\336u\004\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\020\000\001\000|\027B\321\356\002\351\313\345\"\325\375\274\304\326*\000\000\003\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000\021\000\001\000g\323\211\265\352\244|\233n\347\001\032\322\330\2264\003\000\002\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000", 14]
|
|
assert_equal(expected, actual, 'bind fake multi')
|
|
|
|
actual = Klass.make_alter_context('367abb81-9844-35f1-ad32-98f038001003', '2.0')
|
|
expected = "\005\000\016\003\020\000\000\000H\000\000\000\000\000\000\000\320\026\320\026\000\000\000\000\001\000\000\000\000\000\001\000\201\273z6D\230\3615\2552\230\3608\000\020\003\002\000\000\000\004]\210\212\353\034\311\021\237\350\010\000+\020H`\002\000\000\000"
|
|
assert_equal(expected, actual, 'alter context')
|
|
|
|
actual = Klass.make_request(1337, '', 1024, 7331)
|
|
expected = ["\005\000\000\003\020\000\000\000\030\000\000\000\000\000\000\000\000\000\000\000\243\0349\005"]
|
|
assert_equal(expected, actual, 'make_request with no stub')
|
|
|
|
actual = Klass.make_request(1337, 'ABCD', 1024, 7331)
|
|
expected = ["\005\000\000\003\020\000\000\000\034\000\000\000\000\000\000\000\004\000\000\000\243\0349\005ABCD"]
|
|
assert_equal(expected, actual, 'make_request with stub')
|
|
|
|
actual = Klass.make_request(1337, 'ABCD', 3, 7331)
|
|
expected = ["\005\000\000\001\020\000\000\000\e\000\000\000\000\000\000\000\003\000\000\000\243\0349\005ABC", "\005\000\000\002\020\000\000\000\031\000\000\000\000\000\000\000\001\000\000\000\243\0349\005D"]
|
|
assert_equal(expected, actual, 'make_request with 2 frags')
|
|
|
|
actual = Klass.make_request(1337, 'ABCD', 1, 7331)
|
|
expected = ["\005\000\000\001\020\000\000\000\031\000\000\000\000\000\000\000\001\000\000\000\243\0349\005A", "\005\000\000\000\020\000\000\000\031\000\000\000\000\000\000\000\001\000\000\000\243\0349\005B", "\005\000\000\000\020\000\000\000\031\000\000\000\000\000\000\000\001\000\000\000\243\0349\005C", "\005\000\000\002\020\000\000\000\031\000\000\000\000\000\000\000\001\000\000\000\243\0349\005D"]
|
|
assert_equal(expected, actual, 'make_request with 4 frags')
|
|
|
|
end
|
|
end
|