#!/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