#!/bin/sh # The ARP Scanner (arp-scan) is Copyright (C) 2005-2016 Roy Hills, # NTA Monitor Ltd. # # This file is part of arp-scan. # # arp-scan is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # arp-scan is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with arp-scan. If not, see <http://www.gnu.org/licenses/>. # # check-host-list - Shell script to test arp-scan host list creation # # Author: Roy Hills # Date: 4 February 2011 # # This script checks that arp-scan creates the host list correctly. # It uses the undocumented arp-scan option --readpktfromfile to # read the packets from a pcap file rather than from the network. # ARPSCANOUTPUT=/tmp/arp-scan-output.$$.tmp EXAMPLEOUTPUT=/tmp/example-output.$$.tmp # SAMPLE01="$srcdir/pkt-net1921681-response.pcap" # 56 ARP responses from a Class-C sized network with various vendors echo "Checking host list creation using $SAMPLE01 ..." cat >$EXAMPLEOUTPUT <<_EOF_ Host List: Entry IP Address 1 192.168.1.0 2 192.168.1.1 3 192.168.1.2 4 192.168.1.3 5 192.168.1.4 6 192.168.1.5 7 192.168.1.6 8 192.168.1.7 9 192.168.1.8 10 192.168.1.9 11 192.168.1.10 12 192.168.1.11 13 192.168.1.12 14 192.168.1.13 15 192.168.1.14 16 192.168.1.15 17 192.168.1.16 18 192.168.1.17 19 192.168.1.18 20 192.168.1.19 21 192.168.1.20 22 192.168.1.21 23 192.168.1.22 24 192.168.1.23 25 192.168.1.24 26 192.168.1.25 27 192.168.1.26 28 192.168.1.27 29 192.168.1.28 30 192.168.1.29 31 192.168.1.30 32 192.168.1.31 33 192.168.1.32 34 192.168.1.33 35 192.168.1.34 36 192.168.1.35 37 192.168.1.36 38 192.168.1.37 39 192.168.1.38 40 192.168.1.39 41 192.168.1.40 42 192.168.1.41 43 192.168.1.42 44 192.168.1.43 45 192.168.1.44 46 192.168.1.45 47 192.168.1.46 48 192.168.1.47 49 192.168.1.48 50 192.168.1.49 51 192.168.1.50 52 192.168.1.51 53 192.168.1.52 54 192.168.1.53 55 192.168.1.54 56 192.168.1.55 57 192.168.1.56 58 192.168.1.57 59 192.168.1.58 60 192.168.1.59 61 192.168.1.60 62 192.168.1.61 63 192.168.1.62 64 192.168.1.63 65 192.168.1.64 66 192.168.1.65 67 192.168.1.66 68 192.168.1.67 69 192.168.1.68 70 192.168.1.69 71 192.168.1.70 72 192.168.1.71 73 192.168.1.72 74 192.168.1.73 75 192.168.1.74 76 192.168.1.75 77 192.168.1.76 78 192.168.1.77 79 192.168.1.78 80 192.168.1.79 81 192.168.1.80 82 192.168.1.81 83 192.168.1.82 84 192.168.1.83 85 192.168.1.84 86 192.168.1.85 87 192.168.1.86 88 192.168.1.87 89 192.168.1.88 90 192.168.1.89 91 192.168.1.90 92 192.168.1.91 93 192.168.1.92 94 192.168.1.93 95 192.168.1.94 96 192.168.1.95 97 192.168.1.96 98 192.168.1.97 99 192.168.1.98 100 192.168.1.99 101 192.168.1.100 102 192.168.1.101 103 192.168.1.102 104 192.168.1.103 105 192.168.1.104 106 192.168.1.105 107 192.168.1.106 108 192.168.1.107 109 192.168.1.108 110 192.168.1.109 111 192.168.1.110 112 192.168.1.111 113 192.168.1.112 114 192.168.1.113 115 192.168.1.114 116 192.168.1.115 117 192.168.1.116 118 192.168.1.117 119 192.168.1.118 120 192.168.1.119 121 192.168.1.120 122 192.168.1.121 123 192.168.1.122 124 192.168.1.123 125 192.168.1.124 126 192.168.1.125 127 192.168.1.126 128 192.168.1.127 129 192.168.1.128 130 192.168.1.129 131 192.168.1.130 132 192.168.1.131 133 192.168.1.132 134 192.168.1.133 135 192.168.1.134 136 192.168.1.135 137 192.168.1.136 138 192.168.1.137 139 192.168.1.138 140 192.168.1.139 141 192.168.1.140 142 192.168.1.141 143 192.168.1.142 144 192.168.1.143 145 192.168.1.144 146 192.168.1.145 147 192.168.1.146 148 192.168.1.147 149 192.168.1.148 150 192.168.1.149 151 192.168.1.150 152 192.168.1.151 153 192.168.1.152 154 192.168.1.153 155 192.168.1.154 156 192.168.1.155 157 192.168.1.156 158 192.168.1.157 159 192.168.1.158 160 192.168.1.159 161 192.168.1.160 162 192.168.1.161 163 192.168.1.162 164 192.168.1.163 165 192.168.1.164 166 192.168.1.165 167 192.168.1.166 168 192.168.1.167 169 192.168.1.168 170 192.168.1.169 171 192.168.1.170 172 192.168.1.171 173 192.168.1.172 174 192.168.1.173 175 192.168.1.174 176 192.168.1.175 177 192.168.1.176 178 192.168.1.177 179 192.168.1.178 180 192.168.1.179 181 192.168.1.180 182 192.168.1.181 183 192.168.1.182 184 192.168.1.183 185 192.168.1.184 186 192.168.1.185 187 192.168.1.186 188 192.168.1.187 189 192.168.1.188 190 192.168.1.189 191 192.168.1.190 192 192.168.1.191 193 192.168.1.192 194 192.168.1.193 195 192.168.1.194 196 192.168.1.195 197 192.168.1.196 198 192.168.1.197 199 192.168.1.198 200 192.168.1.199 201 192.168.1.200 202 192.168.1.201 203 192.168.1.202 204 192.168.1.203 205 192.168.1.204 206 192.168.1.205 207 192.168.1.206 208 192.168.1.207 209 192.168.1.208 210 192.168.1.209 211 192.168.1.210 212 192.168.1.211 213 192.168.1.212 214 192.168.1.213 215 192.168.1.214 216 192.168.1.215 217 192.168.1.216 218 192.168.1.217 219 192.168.1.218 220 192.168.1.219 221 192.168.1.220 222 192.168.1.221 223 192.168.1.222 224 192.168.1.223 225 192.168.1.224 226 192.168.1.225 227 192.168.1.226 228 192.168.1.227 229 192.168.1.228 230 192.168.1.229 231 192.168.1.230 232 192.168.1.231 233 192.168.1.232 234 192.168.1.233 235 192.168.1.234 236 192.168.1.235 237 192.168.1.236 238 192.168.1.237 239 192.168.1.238 240 192.168.1.239 241 192.168.1.240 242 192.168.1.241 243 192.168.1.242 244 192.168.1.243 245 192.168.1.244 246 192.168.1.245 247 192.168.1.246 248 192.168.1.247 249 192.168.1.248 250 192.168.1.249 251 192.168.1.250 252 192.168.1.251 253 192.168.1.252 254 192.168.1.253 255 192.168.1.254 256 192.168.1.255 Total of 256 host entries. _EOF_ ARPARGS="--retry=1 --ouifile=$srcdir/ieee-oui.txt --iabfile=$srcdir/ieee-iab.txt --macfile=$srcdir/mac-vendor.txt -v -v -v" $srcdir/arp-scan $ARPARGS --readpktfromfile=$SAMPLE01 192.168.1.0/24 2>&1 | sed -n -e '/^Host List:/,/^Total of /p' > $ARPSCANOUTPUT 2>&1 if test $? -ne 0; then rm -f $ARPSCANOUTPUT rm -f $EXAMPLEOUTPUT echo "FAILED" exit 1 fi cmp -s $ARPSCANOUTPUT $EXAMPLEOUTPUT if test $? -ne 0; then rm -f $ARPSCANOUTPUT rm -f $EXAMPLEOUTPUT echo "FAILED" exit 1 fi echo "ok" rm -f $ARPSCANOUTPUT rm -f $EXAMPLEOUTPUT # echo "Checking random host list creation using $SAMPLE01 ..." cat >$EXAMPLEOUTPUT <<_EOF_ Host List: Entry IP Address 1 192.168.1.149 2 192.168.1.211 3 192.168.1.122 4 192.168.1.254 5 192.168.1.45 6 192.168.1.15 7 192.168.1.226 8 192.168.1.84 9 192.168.1.47 10 192.168.1.80 11 192.168.1.113 12 192.168.1.247 13 192.168.1.118 14 192.168.1.191 15 192.168.1.196 16 192.168.1.210 17 192.168.1.206 18 192.168.1.184 19 192.168.1.245 20 192.168.1.237 21 192.168.1.2 22 192.168.1.240 23 192.168.1.63 24 192.168.1.153 25 192.168.1.223 26 192.168.1.4 27 192.168.1.133 28 192.168.1.16 29 192.168.1.58 30 192.168.1.103 31 192.168.1.169 32 192.168.1.179 33 192.168.1.19 34 192.168.1.37 35 192.168.1.64 36 192.168.1.44 37 192.168.1.151 38 192.168.1.163 39 192.168.1.111 40 192.168.1.93 41 192.168.1.152 42 192.168.1.203 43 192.168.1.14 44 192.168.1.67 45 192.168.1.135 46 192.168.1.215 47 192.168.1.38 48 192.168.1.86 49 192.168.1.52 50 192.168.1.74 51 192.168.1.218 52 192.168.1.65 53 192.168.1.30 54 192.168.1.197 55 192.168.1.134 56 192.168.1.147 57 192.168.1.123 58 192.168.1.174 59 192.168.1.126 60 192.168.1.6 61 192.168.1.143 62 192.168.1.144 63 192.168.1.251 64 192.168.1.241 65 192.168.1.168 66 192.168.1.159 67 192.168.1.120 68 192.168.1.109 69 192.168.1.204 70 192.168.1.39 71 192.168.1.35 72 192.168.1.177 73 192.168.1.157 74 192.168.1.231 75 192.168.1.234 76 192.168.1.239 77 192.168.1.25 78 192.168.1.171 79 192.168.1.51 80 192.168.1.187 81 192.168.1.72 82 192.168.1.69 83 192.168.1.232 84 192.168.1.181 85 192.168.1.150 86 192.168.1.100 87 192.168.1.24 88 192.168.1.1 89 192.168.1.130 90 192.168.1.33 91 192.168.1.136 92 192.168.1.50 93 192.168.1.175 94 192.168.1.95 95 192.168.1.131 96 192.168.1.61 97 192.168.1.209 98 192.168.1.249 99 192.168.1.236 100 192.168.1.225 101 192.168.1.139 102 192.168.1.18 103 192.168.1.49 104 192.168.1.208 105 192.168.1.119 106 192.168.1.92 107 192.168.1.190 108 192.168.1.161 109 192.168.1.201 110 192.168.1.183 111 192.168.1.216 112 192.168.1.248 113 192.168.1.162 114 192.168.1.219 115 192.168.1.17 116 192.168.1.10 117 192.168.1.62 118 192.168.1.3 119 192.168.1.224 120 192.168.1.182 121 192.168.1.242 122 192.168.1.138 123 192.168.1.217 124 192.168.1.90 125 192.168.1.40 126 192.168.1.22 127 192.168.1.48 128 192.168.1.102 129 192.168.1.73 130 192.168.1.76 131 192.168.1.202 132 192.168.1.255 133 192.168.1.97 134 192.168.1.88 135 192.168.1.9 136 192.168.1.243 137 192.168.1.165 138 192.168.1.105 139 192.168.1.132 140 192.168.1.205 141 192.168.1.176 142 192.168.1.253 143 192.168.1.194 144 192.168.1.229 145 192.168.1.79 146 192.168.1.230 147 192.168.1.98 148 192.168.1.173 149 192.168.1.55 150 192.168.1.222 151 192.168.1.101 152 192.168.1.99 153 192.168.1.207 154 192.168.1.212 155 192.168.1.166 156 192.168.1.154 157 192.168.1.78 158 192.168.1.5 159 192.168.1.42 160 192.168.1.13 161 192.168.1.91 162 192.168.1.23 163 192.168.1.193 164 192.168.1.7 165 192.168.1.66 166 192.168.1.124 167 192.168.1.114 168 192.168.1.41 169 192.168.1.28 170 192.168.1.0 171 192.168.1.235 172 192.168.1.146 173 192.168.1.238 174 192.168.1.178 175 192.168.1.71 176 192.168.1.60 177 192.168.1.117 178 192.168.1.12 179 192.168.1.57 180 192.168.1.192 181 192.168.1.29 182 192.168.1.164 183 192.168.1.116 184 192.168.1.121 185 192.168.1.167 186 192.168.1.125 187 192.168.1.32 188 192.168.1.228 189 192.168.1.59 190 192.168.1.85 191 192.168.1.20 192 192.168.1.110 193 192.168.1.156 194 192.168.1.200 195 192.168.1.77 196 192.168.1.233 197 192.168.1.106 198 192.168.1.8 199 192.168.1.148 200 192.168.1.11 201 192.168.1.82 202 192.168.1.213 203 192.168.1.81 204 192.168.1.75 205 192.168.1.246 206 192.168.1.188 207 192.168.1.107 208 192.168.1.172 209 192.168.1.214 210 192.168.1.94 211 192.168.1.140 212 192.168.1.26 213 192.168.1.127 214 192.168.1.115 215 192.168.1.87 216 192.168.1.199 217 192.168.1.36 218 192.168.1.250 219 192.168.1.189 220 192.168.1.129 221 192.168.1.170 222 192.168.1.180 223 192.168.1.27 224 192.168.1.128 225 192.168.1.112 226 192.168.1.46 227 192.168.1.186 228 192.168.1.21 229 192.168.1.68 230 192.168.1.53 231 192.168.1.70 232 192.168.1.221 233 192.168.1.160 234 192.168.1.83 235 192.168.1.198 236 192.168.1.252 237 192.168.1.31 238 192.168.1.145 239 192.168.1.244 240 192.168.1.142 241 192.168.1.220 242 192.168.1.155 243 192.168.1.89 244 192.168.1.43 245 192.168.1.141 246 192.168.1.137 247 192.168.1.104 248 192.168.1.185 249 192.168.1.96 250 192.168.1.54 251 192.168.1.34 252 192.168.1.158 253 192.168.1.108 254 192.168.1.195 255 192.168.1.227 256 192.168.1.56 Total of 256 host entries. _EOF_ ARPARGS="--retry=1 --ouifile=$srcdir/ieee-oui.txt --iabfile=$srcdir/ieee-iab.txt --macfile=$srcdir/mac-vendor.txt -v -v -v --random --randomseed=0xdeadbeef" $srcdir/arp-scan $ARPARGS --readpktfromfile=$SAMPLE01 192.168.1.0/24 2>&1 | sed -n -e '/^Host List:/,/^Total of /p' > $ARPSCANOUTPUT 2>&1 if test $? -ne 0; then rm -f $ARPSCANOUTPUT rm -f $EXAMPLEOUTPUT echo "FAILED" exit 1 fi cmp -s $ARPSCANOUTPUT $EXAMPLEOUTPUT if test $? -ne 0; then rm -f $ARPSCANOUTPUT rm -f $EXAMPLEOUTPUT echo "FAILED" exit 1 fi echo "ok" rm -f $ARPSCANOUTPUT rm -f $EXAMPLEOUTPUT