先日、鎌倉で4軒連続ではしごするという贅沢な体験をしてきたのですが、そこのお店がとてもよかったので、次回自分がいくためのことも考えてまとめです。本当は写真もあると良かったと思ったんですが、ちょっとそういう会ではなかったので、後日改めて行きたいところです。
田楽 (でんがく)
http://r.tabelog.com/kanagawa/A1404/A140402/14001490/
炉端焼きのお店。お店の真ん中に炉端があり、店員の方が焼いて(暖めて?)くれる。炭で焼くので時間もかかるが、その間の香りを楽しみ、そしてできた料理を食べるのはなかなかの贅沢。ちなみに店内は全部で10席と少し。金、土はかなり混雑するらしい。
いさむ
http://isamu.hanamizake.com/
いわゆる居酒屋だが、特筆するべきは自分でお燗をつけられるカウンター席。席にお湯がはってある部分があって、そこに徳利をいれて自分の好みの熱さで飲むことができる。頼んだお酒がぬるすぎになってしまうこともない。店舗はとても新しいが、かなり歴史のあるお店だそう。
ミルクホール
http://www.milkhall.co.jp/
ジャズが流れているとても雰囲気のよいお店。とても奥まったところにあり、道知らないととてもたどり着けない(と思った)ようなところにあるのだが、昼間などは店の外まで列ができているとか。閉店直前にいったので奇跡的に貸切のような状態だったが、短い時間しか滞在出来なかったのが残念。
MIKE's BAR
http://rp.gnavi.co.jp/3115695/
建物内の通路から入らないとならないため、こちらも事前に知らないと辿りつけないと思われる…。二種類しかお酒は飲まなかったが、お酒選びには妥協がないようでとても美味しい洋酒を飲ませてもらった。こちらもまた40年以上の歴史があるお店とのこと。ローストビーフがすばらしい逸品でした。
2011年9月26日月曜日
2011年9月8日木曜日
rotating tcpdump
tcpdumpでネットワークのダンプを取り続ける際、任意のタイミングでダンプを保存するファイルを切り替えるシェルスクリプトです。なんか5回ぐらい同じシェルスクリプト書いて、さすがに飽きてきたので、そこそこ使いまわせるように書いたものをgistにおいておきました。
冒頭部分のNIC, FILTERを編集すればあとは深く考えずに使えるはずです。まあ、一瞬で読めるので、解説も何も無いですけど。。
2011.9.9追記
最近のtcpdumpにもrotate機能があると某氏からのご指摘。
tcpdump version 4.1.1のmanより。
-Cオプションがファイルサイズベースのrotate、-Gオプションが時間ベースのrotateとのことです。-Gオプションはちゃんとファイル名に時間までいれてくれるらしいが、time formatは自分でstrftime書式で指定しないとダメらしいですね。たとえば
のように書くと
というようにファイルが生成されていくようです。任意のタイミングではrotateできないけど、とても便利そうです。
冒頭部分のNIC, FILTERを編集すればあとは深く考えずに使えるはずです。まあ、一瞬で読めるので、解説も何も無いですけど。。
2011.9.9追記
最近のtcpdumpにもrotate機能があると某氏からのご指摘。
tcpdump version 4.1.1のmanより。
-C Before writing a raw packet to a savefile, check whether the file is currently larger than file_size and, if so, close the current savefile and open a new one. Savefiles after the first savefile will have the name specified with the -w flag, with a number after it, starting at 1 and continuing upward. The units of file_size are millions of bytes (1,000,000 bytes, not 1,048,576 bytes). -G If specified, rotates the dump file specified with the -w option every rotate_seconds seconds. Savefiles will have the name specified by -w which should include a time format as defined by strftime(3). If no time format is specified, each new file will overwrite the previous.
-Cオプションがファイルサイズベースのrotate、-Gオプションが時間ベースのrotateとのことです。-Gオプションはちゃんとファイル名に時間までいれてくれるらしいが、time formatは自分でstrftime書式で指定しないとダメらしいですね。たとえば
tcpdump -w /tmp/timed_dumps.%s -G 10
のように書くと
% ls /tmp/ timed_dumps.1315521248 timed_dumps.1315521259 timed_dumps.1315521270
というようにファイルが生成されていくようです。任意のタイミングではrotateできないけど、とても便利そうです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/zsh | |
PID_FILE=$HOME/local/var/run/`basename $0`.pid | |
NIC=en0 | |
DATA_DIR=$HOME/local/var/data | |
FNAME_PREFIX="dump" | |
FILTER="port not 80" | |
if [ "`id -u`" != "0" ] | |
then | |
echo "need root privillege" | |
exit | |
fi | |
if [ $# -ne 1 ] | |
then | |
echo "syntax)" `basename $0` "[start|rotate|stop]" | |
exit | |
fi | |
mkdir -p `dirname $PID_FILE` | |
mkdir -p $DATA_DIR | |
stop () { | |
if [ -e $PID_FILE ] | |
then | |
kill `cat $PID_FILE` | |
rm $PID_FILE | |
fi | |
} | |
start () | |
{ | |
SUFFIX=`date "+%Y%m%d%H%M%S"` | |
tcpdump -s 0 -w $DATA_DIR/$FNAME_PREFIX-$SUFFIX.pcap -ni $NIC $FILTER 2> /dev/null & | |
disown | |
PID=$! | |
echo $PID > $PID_FILE | |
} | |
case $1 in | |
"start") | |
start | |
;; | |
"rotate") | |
stop | |
start | |
;; | |
"stop") | |
stop | |
;; | |
*) | |
echo "syntax)" `basename $0` "[start|rotate|stop]" | |
;; | |
esac |
2011年9月4日日曜日
dpkt&pcapyでパケット解析 in Python
Impacketでパケット解析をしていたのですが、対応しているプロトコルがあまり充実していなかったので、dpktに鞍替え。
dpkt (http://code.google.com/p/dpkt/)
最終更新は今年の1月でとまっているものの、すでにかなりのプロトコルに対応してくれているのでかなり有用です。
NetBIOS名やmDNSを拾ってくるコードは以下のような感じ。
dpkt (http://code.google.com/p/dpkt/)
最終更新は今年の1月でとまっているものの、すでにかなりのプロトコルに対応してくれているのでかなり有用です。
NetBIOS名やmDNSを拾ってくるコードは以下のような感じ。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding: utf-8 | |
#---------------------------------------------------- | |
# packet capture & decoding | |
import pcapy | |
import dpkt | |
class network_monitor: | |
def __init__ (self): | |
pass | |
def start (self): | |
# TODO: specify a device or select all devices | |
# dev = pcapy.findalldevs()[0] | |
dev = 'en1' | |
p = pcapy.open_live(dev, 65536, False, 1) | |
p.loop(-1, self.handle_packet) | |
def handle_packet (self, header, data): | |
eth = dpkt.ethernet.Ethernet (data) | |
# print "%04X" % eth.type | |
if eth.type == dpkt.ethernet.ETH_TYPE_IP: | |
ip = eth.data | |
ip_data = ip.data | |
if isinstance (ip_data, dpkt.udp.UDP): | |
udp = ip_data | |
if udp.sport == 137: | |
nb = dpkt.netbios.NS(udp.data) | |
print "NetBIOS:" | |
for q in nb.qd: | |
print 'qd:', dpkt.netbios.decode_name(q.name) | |
for a in nb.an: | |
print 'an:', dpkt.netbios.decode_name(a.name) | |
for n in nb.ns: | |
print 'ns:'. dpkt.netbios.decode_name(n.name) | |
print '' | |
if udp.dport == 5353: | |
mdns = dpkt.dns.DNS (udp.data) | |
print "MDNS:" | |
print mdns.qd | |
print mdns.an | |
print mdns.ns | |
def main(): | |
network_monitor ().start () | |
if __name__=="__main__": | |
main () |
登録:
投稿 (Atom)