誰かが以下のコードがどのように機能するかを説明できますか? IPアドレスをランダムに生成することはわかっていますが、どのように生成されるのかわかりません。
while
set $(dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -An -tu1)
[ $1 -lt 224 ] &&
[ $1 -ne 10 ] &&
{ [ $1 -ne 192 ] || [ $2 -ne 168 ]; } &&
{ [ $1 -ne 172 ] || [ $2 -lt 16 ] || [ $2 -gt 31 ]; }
do :; done
ip_address=$1.$2.$3.$4
ベストアンサー1
注文する
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -An -tu1
類似データの生成
251 113 126 026
dd
デバイスから4バイトの読み込みを要求しurandom
、それぞれ1バイトの一連の符号なし整数に変換しますod
。
set
これは、位置引数$(...)
とともにコマンド置換()を介して渡され、整数に設定されます。set
$1
$2
$3
$4
その後、これらの整数に対していくつかのチェックが実行され、テストの1つが失敗するまでループが続きます。ループ本文の内容には:
作業がなく、シェルの構文を満たすだけです。
任意のIPアドレスを生成する別の方法(個人アドレスの範囲内ではない):
$ nmap -n -iR 10 -sL | awk '/report for/ { print $NF }'
221.37.208.42
121.3.97.158
203.225.119.103
145.139.220.88
95.153.25.126
149.73.57.221
165.178.177.39
11.187.21.175
175.211.240.124
130.89.42.47