問題点
- SHODANのAPIは1度に100件ずつしか取得できない。
-
page
パラメータがあり、101件目~200件目はpage=2
とすることで引き出すことができる。 - しかし、数万、時には数十万の情報が必要となるとき、途中で
500
エラーや不正なクエリなどのエラーが発生し、不安定な動作をするときがある。 - おそらくSHODANのアーキテクチャーとして数万件単位のクエリは想定していない。
解決手法
- ネットブロックで区切って問い合わせる
- クエリに
net:1.0.0.0/8
を付けて問い合わせる - クエリに
net:2.0.0.0/8
を付けて問い合わせる - クエリに
net:3.0.0.0/8
を付けて問い合わせる
中略 - クエリに
net:223.0.0.0/8
を付けて問い合わせる
- クエリに
- こうすることで網羅的かつ細切れに情報を得ることができる
- また一括で取得した際に漏れがあったのが解消されるケースもあった。
メリット:安定性が圧倒的に増す
デメリット:クエリ数が増えて、時間とAPI消費数が増加する
例えば、30000件の場合
- 従来の一括取得だと300回の問い合わせが必要(
page=1
~300
) - 本記事の方法で、仮に各ネットブロックで150件ずつだとすると、ネットブロックごとに2回の問い合わせ(
page=1
とpage=2
)が必要となり、合計で220ネットブロック×2回
で440回問い合わせる必要がある
別のアイディア
country:jp
のように国ごとに問いあわせることもできるが、ネットブロックよりも偏りが大きいと思われる(アメリカとか)
参考:パブリックなクラスAのネットブロック
[
"1.0.0.0/8",
"2.0.0.0/8",
"3.0.0.0/8",
"4.0.0.0/8",
"5.0.0.0/8",
"6.0.0.0/8",
"7.0.0.0/8",
"8.0.0.0/8",
"9.0.0.0/8",
"11.0.0.0/8",
"12.0.0.0/8",
"13.0.0.0/8",
"14.0.0.0/8",
"15.0.0.0/8",
"16.0.0.0/8",
"17.0.0.0/8",
"18.0.0.0/8",
"19.0.0.0/8",
"20.0.0.0/8",
"21.0.0.0/8",
"22.0.0.0/8",
"23.0.0.0/8",
"24.0.0.0/8",
"25.0.0.0/8",
"26.0.0.0/8",
"27.0.0.0/8",
"28.0.0.0/8",
"29.0.0.0/8",
"30.0.0.0/8",
"31.0.0.0/8",
"32.0.0.0/8",
"33.0.0.0/8",
"34.0.0.0/8",
"35.0.0.0/8",
"36.0.0.0/8",
"37.0.0.0/8",
"38.0.0.0/8",
"39.0.0.0/8",
"40.0.0.0/8",
"41.0.0.0/8",
"42.0.0.0/8",
"43.0.0.0/8",
"44.0.0.0/8",
"45.0.0.0/8",
"46.0.0.0/8",
"47.0.0.0/8",
"48.0.0.0/8",
"49.0.0.0/8",
"50.0.0.0/8",
"51.0.0.0/8",
"52.0.0.0/8",
"53.0.0.0/8",
"54.0.0.0/8",
"55.0.0.0/8",
"56.0.0.0/8",
"57.0.0.0/8",
"58.0.0.0/8",
"59.0.0.0/8",
"60.0.0.0/8",
"61.0.0.0/8",
"62.0.0.0/8",
"63.0.0.0/8",
"64.0.0.0/8",
"65.0.0.0/8",
"66.0.0.0/8",
"67.0.0.0/8",
"68.0.0.0/8",
"69.0.0.0/8",
"70.0.0.0/8",
"71.0.0.0/8",
"72.0.0.0/8",
"73.0.0.0/8",
"74.0.0.0/8",
"75.0.0.0/8",
"76.0.0.0/8",
"77.0.0.0/8",
"78.0.0.0/8",
"79.0.0.0/8",
"80.0.0.0/8",
"81.0.0.0/8",
"82.0.0.0/8",
"83.0.0.0/8",
"84.0.0.0/8",
"85.0.0.0/8",
"86.0.0.0/8",
"87.0.0.0/8",
"88.0.0.0/8",
"89.0.0.0/8",
"90.0.0.0/8",
"91.0.0.0/8",
"92.0.0.0/8",
"93.0.0.0/8",
"94.0.0.0/8",
"95.0.0.0/8",
"96.0.0.0/8",
"97.0.0.0/8",
"98.0.0.0/8",
"99.0.0.0/8",
"100.0.0.0/8",
"101.0.0.0/8",
"102.0.0.0/8",
"103.0.0.0/8",
"104.0.0.0/8",
"105.0.0.0/8",
"106.0.0.0/8",
"107.0.0.0/8",
"108.0.0.0/8",
"109.0.0.0/8",
"110.0.0.0/8",
"111.0.0.0/8",
"112.0.0.0/8",
"113.0.0.0/8",
"114.0.0.0/8",
"115.0.0.0/8",
"116.0.0.0/8",
"117.0.0.0/8",
"118.0.0.0/8",
"119.0.0.0/8",
"120.0.0.0/8",
"121.0.0.0/8",
"122.0.0.0/8",
"123.0.0.0/8",
"124.0.0.0/8",
"125.0.0.0/8",
"126.0.0.0/8",
"128.0.0.0/8",
"129.0.0.0/8",
"130.0.0.0/8",
"131.0.0.0/8",
"132.0.0.0/8",
"133.0.0.0/8",
"134.0.0.0/8",
"135.0.0.0/8",
"136.0.0.0/8",
"137.0.0.0/8",
"138.0.0.0/8",
"139.0.0.0/8",
"140.0.0.0/8",
"141.0.0.0/8",
"142.0.0.0/8",
"143.0.0.0/8",
"144.0.0.0/8",
"145.0.0.0/8",
"146.0.0.0/8",
"147.0.0.0/8",
"148.0.0.0/8",
"149.0.0.0/8",
"150.0.0.0/8",
"151.0.0.0/8",
"152.0.0.0/8",
"153.0.0.0/8",
"154.0.0.0/8",
"155.0.0.0/8",
"156.0.0.0/8",
"157.0.0.0/8",
"158.0.0.0/8",
"159.0.0.0/8",
"160.0.0.0/8",
"161.0.0.0/8",
"162.0.0.0/8",
"163.0.0.0/8",
"164.0.0.0/8",
"165.0.0.0/8",
"166.0.0.0/8",
"167.0.0.0/8",
"168.0.0.0/8",
"169.0.0.0/8",
"170.0.0.0/8",
"171.0.0.0/8",
"172.0.0.0/8",
"173.0.0.0/8",
"174.0.0.0/8",
"175.0.0.0/8",
"176.0.0.0/8",
"177.0.0.0/8",
"178.0.0.0/8",
"179.0.0.0/8",
"180.0.0.0/8",
"181.0.0.0/8",
"182.0.0.0/8",
"183.0.0.0/8",
"184.0.0.0/8",
"185.0.0.0/8",
"186.0.0.0/8",
"187.0.0.0/8",
"188.0.0.0/8",
"189.0.0.0/8",
"190.0.0.0/8",
"191.0.0.0/8",
"192.0.0.0/8",
"193.0.0.0/8",
"194.0.0.0/8",
"195.0.0.0/8",
"196.0.0.0/8",
"197.0.0.0/8",
"198.0.0.0/8",
"199.0.0.0/8",
"200.0.0.0/8",
"201.0.0.0/8",
"202.0.0.0/8",
"203.0.0.0/8",
"204.0.0.0/8",
"205.0.0.0/8",
"206.0.0.0/8",
"207.0.0.0/8",
"208.0.0.0/8",
"209.0.0.0/8",
"210.0.0.0/8",
"211.0.0.0/8",
"212.0.0.0/8",
"213.0.0.0/8",
"214.0.0.0/8",
"215.0.0.0/8",
"216.0.0.0/8",
"217.0.0.0/8",
"218.0.0.0/8",
"219.0.0.0/8",
"220.0.0.0/8",
"221.0.0.0/8",
"222.0.0.0/8",
"223.0.0.0/8"
]
適当なポート54321でホスト数を調べた結果
- 一括だと
23169
台 (231クエリ) - 細切れだと
23171
台見つかった(351クエリ)
[+] Query:port:54321 net:1.0.0.0/8 Num:63
[+] Query:port:54321 net:2.0.0.0/8 Num:14
[+] Query:port:54321 net:3.0.0.0/8 Num:536
[+] Query:port:54321 net:4.0.0.0/8 Num:50
[+] Query:port:54321 net:5.0.0.0/8 Num:45
[+] Query:port:54321 net:6.0.0.0/8 Num:0
[+] Query:port:54321 net:7.0.0.0/8 Num:0
[+] Query:port:54321 net:8.0.0.0/8 Num:19
[+] Query:port:54321 net:9.0.0.0/8 Num:0
[+] Query:port:54321 net:11.0.0.0/8 Num:0
[+] Query:port:54321 net:12.0.0.0/8 Num:167
[+] Query:port:54321 net:13.0.0.0/8 Num:617
[+] Query:port:54321 net:14.0.0.0/8 Num:67
[+] Query:port:54321 net:15.0.0.0/8 Num:191
[+] Query:port:54321 net:16.0.0.0/8 Num:65
[+] Query:port:54321 net:17.0.0.0/8 Num:0
[+] Query:port:54321 net:18.0.0.0/8 Num:336
[+] Query:port:54321 net:19.0.0.0/8 Num:0
[+] Query:port:54321 net:20.0.0.0/8 Num:45
[+] Query:port:54321 net:21.0.0.0/8 Num:0
[+] Query:port:54321 net:22.0.0.0/8 Num:0
[+] Query:port:54321 net:23.0.0.0/8 Num:188
[+] Query:port:54321 net:24.0.0.0/8 Num:715
[+] Query:port:54321 net:25.0.0.0/8 Num:0
[+] Query:port:54321 net:26.0.0.0/8 Num:0
[+] Query:port:54321 net:27.0.0.0/8 Num:81
[+] Query:port:54321 net:28.0.0.0/8 Num:0
[+] Query:port:54321 net:29.0.0.0/8 Num:0
[+] Query:port:54321 net:30.0.0.0/8 Num:0
[+] Query:port:54321 net:31.0.0.0/8 Num:37
[+] Query:port:54321 net:32.0.0.0/8 Num:129
[+] Query:port:54321 net:33.0.0.0/8 Num:0
[+] Query:port:54321 net:34.0.0.0/8 Num:108
[+] Query:port:54321 net:35.0.0.0/8 Num:224
[+] Query:port:54321 net:36.0.0.0/8 Num:42
[+] Query:port:54321 net:37.0.0.0/8 Num:36
[+] Query:port:54321 net:38.0.0.0/8 Num:63
[+] Query:port:54321 net:39.0.0.0/8 Num:27
[+] Query:port:54321 net:40.0.0.0/8 Num:18
[+] Query:port:54321 net:41.0.0.0/8 Num:29
[+] Query:port:54321 net:42.0.0.0/8 Num:52
[+] Query:port:54321 net:43.0.0.0/8 Num:93
[+] Query:port:54321 net:44.0.0.0/8 Num:43
[+] Query:port:54321 net:45.0.0.0/8 Num:147
[+] Query:port:54321 net:46.0.0.0/8 Num:49
[+] Query:port:54321 net:47.0.0.0/8 Num:332
[+] Query:port:54321 net:48.0.0.0/8 Num:0
[+] Query:port:54321 net:49.0.0.0/8 Num:188
[+] Query:port:54321 net:50.0.0.0/8 Num:1362
[+] Query:port:54321 net:51.0.0.0/8 Num:39
[+] Query:port:54321 net:52.0.0.0/8 Num:279
[+] Query:port:54321 net:53.0.0.0/8 Num:0
[+] Query:port:54321 net:54.0.0.0/8 Num:296
[+] Query:port:54321 net:55.0.0.0/8 Num:0
[+] Query:port:54321 net:56.0.0.0/8 Num:0
[+] Query:port:54321 net:57.0.0.0/8 Num:0
[+] Query:port:54321 net:58.0.0.0/8 Num:115
[+] Query:port:54321 net:59.0.0.0/8 Num:68
[+] Query:port:54321 net:60.0.0.0/8 Num:75
[+] Query:port:54321 net:61.0.0.0/8 Num:95
[+] Query:port:54321 net:62.0.0.0/8 Num:114
[+] Query:port:54321 net:63.0.0.0/8 Num:140
[+] Query:port:54321 net:64.0.0.0/8 Num:192
[+] Query:port:54321 net:65.0.0.0/8 Num:171
[+] Query:port:54321 net:66.0.0.0/8 Num:210
[+] Query:port:54321 net:67.0.0.0/8 Num:179
[+] Query:port:54321 net:68.0.0.0/8 Num:271
[+] Query:port:54321 net:69.0.0.0/8 Num:236
[+] Query:port:54321 net:70.0.0.0/8 Num:423
[+] Query:port:54321 net:71.0.0.0/8 Num:555
[+] Query:port:54321 net:72.0.0.0/8 Num:240
[+] Query:port:54321 net:73.0.0.0/8 Num:453
[+] Query:port:54321 net:74.0.0.0/8 Num:310
[+] Query:port:54321 net:75.0.0.0/8 Num:460
[+] Query:port:54321 net:76.0.0.0/8 Num:284
[+] Query:port:54321 net:77.0.0.0/8 Num:28
[+] Query:port:54321 net:78.0.0.0/8 Num:50
[+] Query:port:54321 net:79.0.0.0/8 Num:29
[+] Query:port:54321 net:80.0.0.0/8 Num:46
[+] Query:port:54321 net:81.0.0.0/8 Num:26
[+] Query:port:54321 net:82.0.0.0/8 Num:20
[+] Query:port:54321 net:83.0.0.0/8 Num:64
[+] Query:port:54321 net:84.0.0.0/8 Num:43
[+] Query:port:54321 net:85.0.0.0/8 Num:64
[+] Query:port:54321 net:86.0.0.0/8 Num:20
[+] Query:port:54321 net:87.0.0.0/8 Num:74
[+] Query:port:54321 net:88.0.0.0/8 Num:45
[+] Query:port:54321 net:89.0.0.0/8 Num:98
[+] Query:port:54321 net:90.0.0.0/8 Num:25
[+] Query:port:54321 net:91.0.0.0/8 Num:87
[+] Query:port:54321 net:92.0.0.0/8 Num:61
[+] Query:port:54321 net:93.0.0.0/8 Num:67
[+] Query:port:54321 net:94.0.0.0/8 Num:39
[+] Query:port:54321 net:95.0.0.0/8 Num:50
[+] Query:port:54321 net:96.0.0.0/8 Num:974
[+] Query:port:54321 net:97.0.0.0/8 Num:171
[+] Query:port:54321 net:98.0.0.0/8 Num:450
[+] Query:port:54321 net:99.0.0.0/8 Num:334
[+] Query:port:54321 net:100.0.0.0/8 Num:15
[+] Query:port:54321 net:101.0.0.0/8 Num:46
[+] Query:port:54321 net:102.0.0.0/8 Num:96
[+] Query:port:54321 net:103.0.0.0/8 Num:103
[+] Query:port:54321 net:104.0.0.0/8 Num:247
[+] Query:port:54321 net:105.0.0.0/8 Num:5
[+] Query:port:54321 net:106.0.0.0/8 Num:32
[+] Query:port:54321 net:107.0.0.0/8 Num:222
[+] Query:port:54321 net:108.0.0.0/8 Num:408
[+] Query:port:54321 net:109.0.0.0/8 Num:37
[+] Query:port:54321 net:110.0.0.0/8 Num:78
[+] Query:port:54321 net:111.0.0.0/8 Num:66
[+] Query:port:54321 net:112.0.0.0/8 Num:123
[+] Query:port:54321 net:113.0.0.0/8 Num:127
[+] Query:port:54321 net:114.0.0.0/8 Num:81
[+] Query:port:54321 net:115.0.0.0/8 Num:85
[+] Query:port:54321 net:116.0.0.0/8 Num:80
[+] Query:port:54321 net:117.0.0.0/8 Num:67
[+] Query:port:54321 net:118.0.0.0/8 Num:63
[+] Query:port:54321 net:119.0.0.0/8 Num:108
[+] Query:port:54321 net:120.0.0.0/8 Num:57
[+] Query:port:54321 net:121.0.0.0/8 Num:92
[+] Query:port:54321 net:122.0.0.0/8 Num:53
[+] Query:port:54321 net:123.0.0.0/8 Num:140
[+] Query:port:54321 net:124.0.0.0/8 Num:47
[+] Query:port:54321 net:125.0.0.0/8 Num:71
[+] Query:port:54321 net:126.0.0.0/8 Num:626
[+] Query:port:54321 net:128.0.0.0/8 Num:10
[+] Query:port:54321 net:129.0.0.0/8 Num:12
[+] Query:port:54321 net:130.0.0.0/8 Num:10
[+] Query:port:54321 net:131.0.0.0/8 Num:21
[+] Query:port:54321 net:132.0.0.0/8 Num:11
[+] Query:port:54321 net:133.0.0.0/8 Num:5
[+] Query:port:54321 net:134.0.0.0/8 Num:102
[+] Query:port:54321 net:135.0.0.0/8 Num:6
[+] Query:port:54321 net:136.0.0.0/8 Num:4
[+] Query:port:54321 net:137.0.0.0/8 Num:107
[+] Query:port:54321 net:138.0.0.0/8 Num:27
[+] Query:port:54321 net:139.0.0.0/8 Num:65
[+] Query:port:54321 net:140.0.0.0/8 Num:15
[+] Query:port:54321 net:141.0.0.0/8 Num:21
[+] Query:port:54321 net:142.0.0.0/8 Num:25
[+] Query:port:54321 net:143.0.0.0/8 Num:65
[+] Query:port:54321 net:144.0.0.0/8 Num:108
[+] Query:port:54321 net:145.0.0.0/8 Num:5
[+] Query:port:54321 net:146.0.0.0/8 Num:5
[+] Query:port:54321 net:147.0.0.0/8 Num:30
[+] Query:port:54321 net:148.0.0.0/8 Num:11
[+] Query:port:54321 net:149.0.0.0/8 Num:23
[+] Query:port:54321 net:150.0.0.0/8 Num:30
[+] Query:port:54321 net:151.0.0.0/8 Num:17
[+] Query:port:54321 net:152.0.0.0/8 Num:71
[+] Query:port:54321 net:153.0.0.0/8 Num:18
[+] Query:port:54321 net:154.0.0.0/8 Num:36
[+] Query:port:54321 net:155.0.0.0/8 Num:7
[+] Query:port:54321 net:156.0.0.0/8 Num:38
[+] Query:port:54321 net:157.0.0.0/8 Num:27
[+] Query:port:54321 net:158.0.0.0/8 Num:13
[+] Query:port:54321 net:159.0.0.0/8 Num:35
[+] Query:port:54321 net:160.0.0.0/8 Num:22
[+] Query:port:54321 net:161.0.0.0/8 Num:50
[+] Query:port:54321 net:162.0.0.0/8 Num:157
[+] Query:port:54321 net:163.0.0.0/8 Num:4
[+] Query:port:54321 net:164.0.0.0/8 Num:10
[+] Query:port:54321 net:165.0.0.0/8 Num:14
[+] Query:port:54321 net:166.0.0.0/8 Num:261
[+] Query:port:54321 net:167.0.0.0/8 Num:12
[+] Query:port:54321 net:168.0.0.0/8 Num:8
[+] Query:port:54321 net:169.0.0.0/8 Num:4
[+] Query:port:54321 net:170.0.0.0/8 Num:24
[+] Query:port:54321 net:171.0.0.0/8 Num:53
[+] Query:port:54321 net:172.0.0.0/8 Num:158
[+] Query:port:54321 net:173.0.0.0/8 Num:555
[+] Query:port:54321 net:174.0.0.0/8 Num:301
[+] Query:port:54321 net:175.0.0.0/8 Num:90
[+] Query:port:54321 net:176.0.0.0/8 Num:40
[+] Query:port:54321 net:177.0.0.0/8 Num:15
[+] Query:port:54321 net:178.0.0.0/8 Num:48
[+] Query:port:54321 net:179.0.0.0/8 Num:18
[+] Query:port:54321 net:180.0.0.0/8 Num:84
[+] Query:port:54321 net:181.0.0.0/8 Num:16
[+] Query:port:54321 net:182.0.0.0/8 Num:143
[+] Query:port:54321 net:183.0.0.0/8 Num:80
[+] Query:port:54321 net:184.0.0.0/8 Num:160
[+] Query:port:54321 net:185.0.0.0/8 Num:121
[+] Query:port:54321 net:186.0.0.0/8 Num:14
[+] Query:port:54321 net:187.0.0.0/8 Num:23
[+] Query:port:54321 net:188.0.0.0/8 Num:85
[+] Query:port:54321 net:189.0.0.0/8 Num:26
[+] Query:port:54321 net:190.0.0.0/8 Num:32
[+] Query:port:54321 net:191.0.0.0/8 Num:9
[+] Query:port:54321 net:192.0.0.0/8 Num:65
[+] Query:port:54321 net:193.0.0.0/8 Num:34
[+] Query:port:54321 net:194.0.0.0/8 Num:40
[+] Query:port:54321 net:195.0.0.0/8 Num:34
[+] Query:port:54321 net:196.0.0.0/8 Num:47
[+] Query:port:54321 net:197.0.0.0/8 Num:16
[+] Query:port:54321 net:198.0.0.0/8 Num:67
[+] Query:port:54321 net:199.0.0.0/8 Num:23
[+] Query:port:54321 net:200.0.0.0/8 Num:19
[+] Query:port:54321 net:201.0.0.0/8 Num:18
[+] Query:port:54321 net:202.0.0.0/8 Num:43
[+] Query:port:54321 net:203.0.0.0/8 Num:174
[+] Query:port:54321 net:204.0.0.0/8 Num:73
[+] Query:port:54321 net:205.0.0.0/8 Num:31
[+] Query:port:54321 net:206.0.0.0/8 Num:34
[+] Query:port:54321 net:207.0.0.0/8 Num:111
[+] Query:port:54321 net:208.0.0.0/8 Num:141
[+] Query:port:54321 net:209.0.0.0/8 Num:85
[+] Query:port:54321 net:210.0.0.0/8 Num:112
[+] Query:port:54321 net:211.0.0.0/8 Num:118
[+] Query:port:54321 net:212.0.0.0/8 Num:64
[+] Query:port:54321 net:213.0.0.0/8 Num:73
[+] Query:port:54321 net:214.0.0.0/8 Num:1
[+] Query:port:54321 net:215.0.0.0/8 Num:0
[+] Query:port:54321 net:216.0.0.0/8 Num:69
[+] Query:port:54321 net:217.0.0.0/8 Num:55
[+] Query:port:54321 net:218.0.0.0/8 Num:89
[+] Query:port:54321 net:219.0.0.0/8 Num:192
[+] Query:port:54321 net:220.0.0.0/8 Num:74
[+] Query:port:54321 net:221.0.0.0/8 Num:81
[+] Query:port:54321 net:222.0.0.0/8 Num:103
[+] Query:port:54321 net:223.0.0.0/8 Num:45