1 import pike.core as core
2 import pike.model as model
3 import pike.smb2 as smb2
4 import pike.test
5
20
22 callback_future = model.Future()
23 def cb(frame):
24 with callback_future:
25 self.assertTrue(isinstance(frame, core.Frame))
26 self.assertTrue(isinstance(frame[0], smb2.Smb2))
27 self.assertTrue(isinstance(frame[0][0], smb2.NegotiateRequest))
28 self.assertTrue(hasattr(frame, "buf"))
29 self.assertEqual(frame.len + 4, len(frame.buf))
30 callback_future.complete(True)
31 self.default_client.register_callback(model.EV_REQ_POST_SERIALIZE, cb)
32 conn = self.default_client.connect(self.server)
33 conn.negotiate()
34 self.assertTrue(callback_future.result(timeout=2))
35
37 pre_callback_future = model.Future()
38 post_callback_future = model.Future()
39 expected_bytes = []
40 def pre_cb(data):
41 with pre_callback_future:
42 expected_bytes.insert(0, len(data))
43 self.assertGreater(expected_bytes[0], 16)
44 pre_callback_future.complete(True)
45 def post_cb(bytes_written):
46 with post_callback_future:
47 self.assertEqual(expected_bytes.pop(), bytes_written)
48 if not expected_bytes:
49 post_callback_future.complete(True)
50 self.default_client.register_callback(model.EV_REQ_PRE_SEND, pre_cb)
51 self.default_client.register_callback(model.EV_REQ_POST_SEND, post_cb)
52 conn = self.default_client.connect(self.server)
53 conn.negotiate()
54 self.assertTrue(pre_callback_future.result(timeout=2))
55 self.assertTrue(post_callback_future.result(timeout=2))
56
58 callback_future = model.Future()
59 def cb(data):
60 with callback_future:
61 self.assertGreater(len(data), 4)
62 callback_future.complete(True)
63 self.default_client.register_callback(model.EV_RES_PRE_DESERIALIZE, cb)
64 conn = self.default_client.connect(self.server)
65 conn.negotiate()
66 self.assertTrue(callback_future.result(timeout=2))
67
69 callback_future = model.Future()
70 def cb(frame):
71 with callback_future:
72 self.assertTrue(isinstance(frame, core.Frame))
73 self.assertTrue(isinstance(frame[0], smb2.Smb2))
74 self.assertTrue(isinstance(frame[0][0], smb2.NegotiateResponse))
75 self.assertTrue(hasattr(frame, "buf"))
76 self.assertEqual(frame.len + 4, len(frame.buf))
77 callback_future.complete(True)
78 self.default_client.register_callback(model.EV_RES_POST_DESERIALIZE, cb)
79 conn = self.default_client.connect(self.server)
80 conn.negotiate()
81 self.assertTrue(callback_future.result(timeout=2))
82
84 pre_callback_future = model.Future()
85 post_callback_future = model.Future()
86 expected_bytes = []
87 expected_rounds = [1,2]
88 def pre_cb(read_bytes):
89 with pre_callback_future:
90 expected_bytes.insert(0, read_bytes)
91 self.assertGreater(read_bytes, 3)
92 pre_callback_future.complete(True)
93 def post_cb(data):
94 with post_callback_future:
95 self.assertEqual(expected_bytes.pop(), len(data))
96 expected_rounds.pop()
97 if not expected_rounds:
98 post_callback_future.complete(True)
99 self.default_client.register_callback(model.EV_RES_PRE_RECV, pre_cb)
100 self.default_client.register_callback(model.EV_RES_POST_RECV, post_cb)
101 conn = self.default_client.connect(self.server)
102 conn.negotiate()
103 self.assertTrue(pre_callback_future.result(timeout=2))
104 self.assertTrue(post_callback_future.result(timeout=2))
105
120
122 callback_future = model.Future()
123 def cb(frame):
124 with callback_future:
125 self.assertTrue(isinstance(frame, core.Frame))
126 self.assertTrue(isinstance(frame[0], smb2.Smb2))
127 self.assertTrue(isinstance(frame[0][0], smb2.NegotiateRequest))
128 self.assertTrue(hasattr(frame, "buf"))
129 self.assertEqual(frame.len + 4, len(frame.buf))
130 callback_future.complete(True)
131 conn = self.default_client.connect(self.server)
132 conn.register_callback(model.EV_REQ_POST_SERIALIZE, cb)
133 conn.negotiate()
134 self.assertTrue(callback_future.result(timeout=2))
135
137 pre_callback_future = model.Future()
138 post_callback_future = model.Future()
139 expected_bytes = []
140 def pre_cb(data):
141 with pre_callback_future:
142 expected_bytes.insert(0, len(data))
143 self.assertGreater(expected_bytes[0], 16)
144 pre_callback_future.complete(True)
145 def post_cb(bytes_written):
146 with post_callback_future:
147 self.assertEqual(expected_bytes.pop(), bytes_written)
148 if not expected_bytes:
149 post_callback_future.complete(True)
150 conn = self.default_client.connect(self.server)
151 conn.register_callback(model.EV_REQ_PRE_SEND, pre_cb)
152 conn.register_callback(model.EV_REQ_POST_SEND, post_cb)
153 conn.negotiate()
154 self.assertTrue(pre_callback_future.result(timeout=2))
155 self.assertTrue(post_callback_future.result(timeout=2))
156
158 callback_future = model.Future()
159 def cb(data):
160 with callback_future:
161 self.assertGreater(len(data), 4)
162 callback_future.complete(True)
163 conn = self.default_client.connect(self.server)
164 conn.register_callback(model.EV_RES_PRE_DESERIALIZE, cb)
165 conn.negotiate()
166 self.assertTrue(callback_future.result(timeout=2))
167
169 callback_future = model.Future()
170 def cb(frame):
171 with callback_future:
172 self.assertTrue(isinstance(frame, core.Frame))
173 self.assertTrue(isinstance(frame[0], smb2.Smb2))
174 self.assertTrue(isinstance(frame[0][0], smb2.NegotiateResponse))
175 self.assertTrue(hasattr(frame, "buf"))
176 self.assertEqual(frame.len + 4, len(frame.buf))
177 callback_future.complete(True)
178 conn = self.default_client.connect(self.server)
179 conn.register_callback(model.EV_RES_POST_DESERIALIZE, cb)
180 conn.negotiate()
181 self.assertTrue(callback_future.result(timeout=2))
182
184 pre_callback_future = model.Future()
185 post_callback_future = model.Future()
186 expected_bytes = []
187 expected_rounds = [1,2]
188 def pre_cb(read_bytes):
189 with pre_callback_future:
190 expected_bytes.insert(0, read_bytes)
191 self.assertGreater(read_bytes, 3)
192 pre_callback_future.complete(True)
193 def post_cb(data):
194 with post_callback_future:
195 self.assertEqual(expected_bytes.pop(), len(data))
196 expected_rounds.pop()
197 if not expected_rounds:
198 post_callback_future.complete(True)
199 conn = self.default_client.connect(self.server)
200 conn.register_callback(model.EV_RES_PRE_RECV, pre_cb)
201 conn.register_callback(model.EV_RES_POST_RECV, post_cb)
202 conn.negotiate()
203 self.assertTrue(pre_callback_future.result(timeout=2))
204 self.assertTrue(post_callback_future.result(timeout=2))
205