icat for JSON について

- [サイバーセキュリティ注意喚起サービス「icat for JSON」：IPA 独立行政法人 情報処理推進機構](https://www.ipa.go.jp/security/vuln/icat.html)

以前からセキュリティ・リスクの高い Flash でセキュリティ脆弱性情報を発信するとかどんなギャグかと思っていたが，ようやく Flash 以外の提供を始めるようだ[^t]。ただ提供されるのは jQuery ベースのブログパーツだったりするのが相変わらずの IPA クオリティである。

[^t]: ちなみに @[ICATalerts](https://twitter.com/ICATalerts/) アカウントで Twitter による情報発信は以前から行われている。普段はこれでも大丈夫だろう。

提供される JavaScript ファイルを見ると内部で JSON データを取得してるみたい。以下の API で取れそうだ。

```
$ curl -i "http://isec-myjvn-feed1.ipa.go.jp/IPARssReader.php?1456207434&tool=icatw"
HTTP/1.1 200 OK
Date: Tue, 23 Feb 2016 06:05:32 GMT
Server: Apache
X-Frame-Options: DENY
Access-Control-Allow-Origin: *
X-XSS-Protection: 1; mode=block
Content-Security-Policy: reflected-xss block
Content-Length: 2358
Content-Type: application/json; charset=utf-8; X-Content-Type-Options: nosniff;

{"itemdata":[{"item_title":...
```

- `1456207434` の部分にはリクエスト時点の UNIX Time が入る。なくてもいけるっぽいが...
- `tool=icatw` は出力フォーマットを指しているようだ？ `itacth` と `icatw` の2種類が指定できるようだが，両者で出力の違いは分からなかった。

JSON データの中身は以下のとおり（見やすいように適当に改行・インデントしているが，実際は圧縮されている）。

```json
{
	"itemdata":[
		{
			"item_title":"Microsoft \u88fd\u54c1\u306e\u8106\u5f31\u6027\u5bfe\u7b56\u306b\u3064\u3044\u3066(2016\u5e7402\u6708)",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160210-ms.html",
			"item_date":"2016-02-10T12:00:00+09:00",
			"item_identifier":[]
		},
		{
			"item_title":"Adobe Flash Player \u306e\u8106\u5f31\u6027\u5bfe\u7b56\u306b\u3064\u3044\u3066(APSB16-04)(CVE-2016-0985\u7b49)",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160210-adobeflashplayer.html",
			"item_date":"2016-02-10T12:00:00+09:00",
			"item_identifier":[]
		},
		{
			"item_title":"Oracle Java \u306e\u8106\u5f31\u6027\u5bfe\u7b56\u306b\u3064\u3044\u3066(CVE-2016-0494\u7b49)",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160120-jre.html",
			"item_date":"2016-01-20T12:00:00+09:00",
			"item_identifier":[]
		},
		{
			"item_title":"Microsoft \u88fd\u54c1\u306e\u8106\u5f31\u6027\u5bfe\u7b56\u306b\u3064\u3044\u3066(2016\u5e7401\u6708)",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160113-ms.html",
			"item_date":"2016-01-13T12:00:00+09:00",
			"item_identifier":[]
		},
		{
			"item_title":"Adobe Reader \u304a\u3088\u3073 Acrobat \u306e\u8106\u5f31\u6027\u5bfe\u7b56\u306b\u3064\u3044\u3066(APSB16-02)(CVE-2016-0932\u7b49)",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160113-adobereader.html",
			"item_date":"2016-01-13T12:00:00+09:00",
			"item_identifier":[]
		},
		{
			"item_title":"\u3010\u6ce8\u610f\u559a\u8d77\u3011\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u63a5\u7d9a\u3059\u308b\u8907\u5408\u6a5f\u7b49\u306e\u30aa\u30d5\u30a3\u30b9\u6a5f\u5668\u306e\u518d\u70b9\u691c\u3092\uff01",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160106-printer.html",
			"item_date":"2016-01-06T16:40:00+09:00",
			"item_identifier":[]
		},
		{
			"item_title":"\u300cDX\u30e9\u30a4\u30d6\u30e9\u30ea\u300d\u306b\u304a\u3051\u308b\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306e\u8106\u5f31\u6027\u5bfe\u7b56\u306b\u3064\u3044\u3066(JVN#49476817)",
			"item_link":"http:\/\/www.ipa.go.jp\/security\/ciadr\/vul\/20160105-jvn.html",
			"item_date":"2016-01-05T14:00:00+09:00",
			"item_identifier":[]
		}
	],
	"docTitle":"IPA\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30bb\u30f3\u30bf\u30fc:\u91cd\u8981\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u60c5\u5831",
	"docTitleFix":null,
	"docLink":"https:\/\/www.ipa.go.jp\/security\/vuln\/icat.html",
	"docDate":"2016-02-10T11:58:22+09:00"
}
```

中身が空の項目については何が入るかわからないが，これだけ情報があれば，皆さんならどうにでも加工できるだろう。ちなみに curl を任意のコードに変換するには [cURL as DSL](https://shibukawa.github.io/curl_as_dsl/) がオススメである。

- [cURL as DSL — cURL as DSL 1.0 documentation](https://shibukawa.github.io/curl_as_dsl/)
- [Shibu's Diary: cURL as DSLとは何だったのか。あるいは細かすぎて伝わらないcURL as DSL。](http://blog.shibu.jp/article/115602749.html)

では，安全なネットライフを。

**【追記】**

手遊びに Go 言語用のパッケージを作ってみた。

- [icat4json 公開 — しっぽのさきっちょ | text.Baldanders.info](http://text.baldanders.info/remark/2016/02/icat4json/)