1% Tests for nlm module 2############ 3############ 4+ Packet creation tests 5 6= Create subpackets 7File_Object() 8NLM4_Cookie() 9Object_Name() 10 11= Create nlm Calls 12SHARE_Call() 13UNSHARE_Call() 14LOCK_Call() 15UNLOCK_Call() 16GRANTED_MSG_Call() 17GRANTED_RES_Call() 18CANCEL_Call() 19TEST_Call() 20 21= Create nlm Replies 22SHARE_Reply() 23UNSHARE_Reply() 24LOCK_Reply() 25UNLOCK_Reply() 26GRANTED_MSG_Reply() 27GRANTED_RES_Reply() 28CANCEL_Reply() 29TEST_Reply() 30 31+ Layer bindings tests 32 33= RPC Layer Bindings for NLM Calls 34from scapy.contrib.oncrpc import * 35pkt = RPC()/RPC_Call()/SHARE_Call() 36assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 20) 37pkt = RPC()/RPC_Call()/UNSHARE_Call() 38assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 21) 39pkt = RPC()/RPC_Call()/LOCK_Call() 40assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 2) 41pkt = RPC()/RPC_Call()/UNLOCK_Call() 42assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 4) 43pkt = RPC()/RPC_Call()/GRANTED_MSG_Call() 44assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 10) 45pkt = RPC()/RPC_Call()/GRANTED_RES_Call() 46assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 15) 47pkt = RPC()/RPC_Call()/CANCEL_Call() 48assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 3) 49pkt = RPC()/RPC_Call()/TEST_Call() 50assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 1) 51 52= RPC Layer Bindings for NLM Replies 53from scapy.contrib.oncrpc import * 54pkt = RPC()/RPC_Reply()/SHARE_Reply() 55assert pkt.mtype == 1 56pkt = RPC()/RPC_Reply()/UNSHARE_Reply() 57assert pkt.mtype == 1 58pkt = RPC()/RPC_Reply()/LOCK_Reply() 59assert pkt.mtype == 1 60pkt = RPC()/RPC_Reply()/UNLOCK_Reply() 61assert pkt.mtype == 1 62pkt = RPC()/RPC_Reply()/GRANTED_MSG_Reply() 63assert pkt.mtype == 1 64pkt = RPC()/RPC_Reply()/GRANTED_RES_Reply() 65assert pkt.mtype == 1 66pkt = RPC()/RPC_Reply()/CANCEL_Reply() 67assert pkt.mtype == 1 68pkt = RPC()/RPC_Reply()/TEST_Reply() 69assert pkt.mtype == 1 70 71+ Test Built Packets Against Raw Strings 72 73= Built NLM Calls vs Raw Strings 74pkt = SHARE_Call( 75 cookie=NLM4_Cookie( 76 length=6, 77 contents='COOKIE', 78 fill='\x00\x00' 79 ), 80 caller=Object_Name( 81 length=6, 82 _name='CALLER', 83 fill='\x00\x00' 84 ), 85 filehandle=File_Object( 86 length=4, 87 fh='file' 88 ), 89 owner=Object_Name( 90 length=5, 91 _name='OWNER', 92 fill='\x00' 93 ), 94 mode=1, 95 access=2, 96 reclaim='YES' 97) 98assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01' 99 100pkt = UNSHARE_Call( 101 cookie=NLM4_Cookie( 102 length=6, 103 contents='COOKIE', 104 fill='\x00\x00' 105 ), 106 caller=Object_Name( 107 length=6, 108 _name='CALLER', 109 fill='\x00\x00' 110 ), 111 filehandle=File_Object( 112 length=4, 113 fh='file' 114 ), 115 owner=Object_Name( 116 length=5, 117 _name='OWNER', 118 fill='\x00' 119 ), 120 mode=1, 121 access=2, 122 reclaim='YES' 123) 124assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01' 125 126pkt = LOCK_Call( 127 cookie=NLM4_Cookie( 128 length=6, 129 contents='COOKIE', 130 fill='\x00\x00' 131 ), 132 block='YES', 133 exclusive='YES', 134 caller=Object_Name( 135 length=6, 136 _name='CALLER', 137 fill='\x00\x00' 138 ), 139 filehandle=File_Object( 140 length=4, 141 fh='file' 142 ), 143 owner=Object_Name( 144 length=5, 145 _name='OWNER', 146 fill='\x00' 147 ), 148 svid=1, 149 l_offset=2, 150 l_len=3, 151 reclaim=1, 152 state=4 153) 154assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x04' 155 156pkt = UNLOCK_Call( 157 cookie=NLM4_Cookie( 158 length=6, 159 contents='COOKIE', 160 fill='\x00\x00' 161 ), 162 caller=Object_Name( 163 length=6, 164 _name='CALLER', 165 fill='\x00\x00' 166 ), 167 filehandle=File_Object( 168 length=4, 169 fh='file' 170 ), 171 owner=Object_Name( 172 length=5, 173 _name='OWNER', 174 fill='\x00' 175 ), 176 svid=1, 177 l_offset=2, 178 l_len=3 179) 180assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03' 181 182pkt = GRANTED_MSG_Call( 183 cookie=NLM4_Cookie( 184 length=6, 185 contents='COOKIE', 186 fill='\x00\x00' 187 ), 188 exclusive='YES', 189 caller=Object_Name( 190 length=6, 191 _name='CALLER', 192 fill='\x00\x00' 193 ), 194 filehandle=File_Object( 195 length=4, 196 fh='file' 197 ), 198 owner=Object_Name( 199 length=5, 200 _name='OWNER', 201 fill='\x00' 202 ), 203 svid=1, 204 l_offset=2, 205 l_len=3 206) 207assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03' 208 209pkt = GRANTED_RES_Call( 210 cookie=NLM4_Cookie( 211 length=6, 212 contents='COOKIE', 213 fill='\x00\x00' 214 ), 215 status='NLM4_BLOCKED' 216) 217assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x03' 218 219pkt = CANCEL_Call( 220 cookie=NLM4_Cookie( 221 length=6, 222 contents='COOKIE', 223 fill='\x00\x00' 224 ), 225 block='YES', 226 exclusive='YES', 227 caller=Object_Name( 228 length=6, 229 _name='CALLER', 230 fill='\x00\x00' 231 ), 232 filehandle=File_Object( 233 length=4, 234 fh='file' 235 ), 236 owner=Object_Name( 237 length=5, 238 _name='OWNER', 239 fill='\x00' 240 ), 241 svid=1, 242 l_offset=2, 243 l_len=3 244) 245assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03' 246 247pkt = TEST_Call( 248 cookie=NLM4_Cookie( 249 length=6, 250 contents='COOKIE', 251 fill='\x00\x00' 252 ), 253 exclusive='YES', 254 caller=Object_Name( 255 length=6, 256 _name='CALLER', 257 fill='\x00\x00' 258 ), 259 filehandle=File_Object( 260 length=4, 261 fh='file' 262 ), 263 owner=Object_Name( 264 length=5, 265 _name='OWNER', 266 fill='\x00' 267 ), 268 svid=1, 269 l_offset=2, 270 l_len=3 271) 272assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03' 273 274 275= NLM Replies vs Raw Strings 276pkt = SHARE_Reply( 277 cookie=NLM4_Cookie( 278 length=6, 279 contents='COOKIE', 280 fill='\x00\x00' 281 ), 282 status='NLM4_DENIED', 283 sequence=1 284) 285assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01' 286 287pkt = UNSHARE_Reply( 288 cookie=NLM4_Cookie( 289 length=6, 290 contents='COOKIE', 291 fill='\x00\x00' 292 ), 293 status='NLM4_DENIED', 294 sequence=1 295) 296assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01' 297 298pkt = LOCK_Reply( 299 cookie=NLM4_Cookie( 300 length=6, 301 contents='COOKIE', 302 fill='\x00\x00' 303 ), 304 status='NLM4_DENIED' 305) 306assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01' 307 308pkt = UNLOCK_Reply( 309 cookie=NLM4_Cookie( 310 length=6, 311 contents='COOKIE', 312 fill='\x00\x00' 313 ), 314 status='NLM4_DENIED' 315) 316assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01' 317 318pkt = CANCEL_Reply( 319 cookie=NLM4_Cookie( 320 length=6, 321 contents='COOKIE', 322 fill='\x00\x00' 323 ), 324 status='NLM4_DENIED' 325) 326assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01' 327 328pkt = TEST_Reply( 329 cookie=NLM4_Cookie( 330 length=6, 331 contents='COOKIE', 332 fill='\x00\x00' 333 ), 334 status='NLM4_DENIED' 335) 336assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01' 337