logo
 2003年   2004年   2005年   2006年   2007年   2008年   2009年   2010年 
 9月 
 10月 
 11月 
 12月 
 1月  7月 
 2月  8月 
 3月  9月 
 4月  10月 
 5月  11月 
 6月  12月 
 1月  7月 
 2月  8月 
 3月  9月 
 4月  10月 
 5月  11月 
 6月  12月 
 1月  7月 
 2月  8月 
 3月  9月 
 4月  10月 
 5月  11月 
 6月  12月 
 1月  7月 
 2月  8月 
 3月  9月 
 4月  10月 
 5月  11月 
 6月  12月 
 1月  7月 
 2月  8月 
 3月  9月 
 4月  10月 
 5月  11月 
 6月  12月 
 1月  7月 
 2月  8月 
 3月  9月 
 4月  10月 
 5月  11月 
 6月  12月 
 1月 
 2月 
 3月 
 4月 
アイコンの説明
code:Haemophilus influenzae
ここに書かれていることは無保証です。同じことを行って問題が発生しても、 龍義は責任をとりません。

 5/1
Network
MZK-WDPR Rugby を購入したので、分解してみた。写真があるので、別ページに。
なんか、別ページ起こすの1年ぶりかも。

 5/2
Network
昨日の MZK-WDPR をざっくり使ってみた。やっぱり写真があるので、別ページに。
ファームをダウンロードしたいけど、手元に NIC が2つある PC がないので、
しばらく無理かもしれない。

 5/3
Network
MZK-WDPR をポートスキャンしてみた。内側 LAN でのポートスキャンの結果。

PORT   STATE SERVICE
80/tcp open  http

外側 LAN でのポートスキャンの結果。

PORT   STATE    SERVICE
23/tcp filtered telnet
80/tcp filtered http

外側は ping の応答もしないので(起動直後に応答することがあるが)、実験
するときに接続されているのか確認方法が無いので面倒。内側を OS detection
してみた。

# nmap -O --datadir /usr/pkg/share/nmap 192.168.111.1

Starting Nmap 4.76 ( http://nmap.org ) at 2010-05-03 11:24 JST
Interesting ports on 192.168.111.1:
Not shown: 997 closed ports
PORT      STATE SERVICE
80/tcp    open  http
49152/tcp open  unknown
49153/tcp open  unknown
MAC Address: 00:22:CF:xx:xx:xx (Planex Communications)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.13 - 2.6.28
Network Distance: 1 hop

予想通り Linux 2.6 だって。UPnP 用の 49152/49153 番も空いているみたい。
80 番と合わせて、突っついてみた。

[root@mustafar]% curl -v 192.168.111.1
* About to connect() to 192.168.111.1 port 80 (#0)
*   Trying 192.168.111.1... connected
* Connected to 192.168.111.1 (192.168.111.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.20.0 (i386--netbsdelf) libcurl/7.20.0 OpenSSL/0.9.9
> Host: 192.168.111.1
> Accept: */*
> 
< HTTP/1.1 401 Unauthorized
< Server: GoAhead-Webs
< Date: Sat Jan  1 21:19:26 2000
< WWW-Authenticate: Basic realm="3G 11n Broadband Router"
< Pragma: no-cache
< Cache-Control: no-cache
< Content-Type: text/html
* no chunk, no close, no size. Assume close to signal end
< 
<html><head><title>Document Error: Unauthorized<title></head>
            <body><h2>Access Error: Unauthorized</h2>
            <p>Access to this document requires a User ID</p></body></html>

* Closing connection #0
[root@mustafar]% curl -v 192.168.111.1:49152
* About to connect() to 192.168.111.1 port 49152 (#0)
*   Trying 192.168.111.1... connected
* Connected to 192.168.111.1 (192.168.111.1) port 49152 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.20.0 (i386--netbsdelf) libcurl/7.20.0 OpenSSL/0.9.9
> Host: 192.168.111.1:49152
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< SERVER: Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.3.1
< CONNECTION: close
< CONTENT-LENGTH: 48
< CONTENT-TYPE: text/html
< 
<html><body><h1>404 Not Found</h1></body></html>
* Closing connection #0

Linux/2.6.21 って出ちゃった。いじり甲斐が湧いてくる。

 5/4
Network
MZK-WDPR の中にあっさりログインできてしまった。一応、順を追って。管理の
ページを眺めていたら、コメントになっていたけど、/adm/system_command.asp
というページを発見。ここでコマンドが発行できることがわかった。いくつか
コマンドを実行してみる。

# uname
Linux PCI.com 2.6.21 #12 Mon Dec 28 01:46:25 CST 2009 mips unknown

# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
proc on /proc type proc (rw)
none on /var type ramfs (rw)
none on /etc type ramfs (rw)
none on /tmp type ramfs (rw)
none on /media type ramfs (rw)
/proc/bus/usb on /proc/bus/usb type usbfs (rw)
devpts on /dev/pts type devpts (rw)
sysfs on /sys type sysfs (rw)
mdev on /dev type ramfs (rw)
devpts on /dev/pts type devpts (rw)

# df
Filesystem           1k-blocks      Used Available Use% Mounted on
rootfs                    2560      2560         0 100% /
/dev/root                 2560      2560         0 100% /

/usr/sbin に telnetd があったので、実行してみた。どうやら、動いた予感。
さっそく telnet で接続したら、あっさりと繋がった。中のコマンドはほとんど
busybox 化されていて、その他で特に面白いコマンドは無く。ついでに ps の
結果を。

# ps
  PID USER       VSZ STAT COMMAND
    1 admin     2020 S    init       
    2 admin        0 SWN  [ksoftirqd/0]
    3 admin        0 SW<  [events/0]
    4 admin        0 SW<  [khelper]
    5 admin        0 SW<  [kthread]
   23 admin        0 SW<  [kblockd/0]
   26 admin        0 SW<  [khubd]
   38 admin        0 SW<  [kswapd0]
   39 admin        0 SW   [pdflush]
   40 admin        0 SW   [pdflush]
   41 admin        0 SW<  [aio/0]
   46 admin        0 DW   [swapper]
   47 admin        0 SW   [swapper]
  576 admin        0 SW   [mtdblockd]
  614 admin     1108 S    nvram_daemon 
  615 admin     1628 S    goahead 
  642 admin        0 SW<  [dwc_otg]
  674 admin     1028 S <  /sbin/udevd --daemon --debug-trace 
  710 admin     2024 S    /bin/sh 
  734 admin        0 SW   [rtmpWscHandle]
 1013 admin     2020 S    udhcpd /etc/udhcpd.conf 
 1148 admin     2048 D    /bin/sh /sbin/lan-post-wan.sh 
 1162 admin     1636 S    upnpd -f eth2.2 br0 
 1171 admin     1636 S    upnpd -f eth2.2 br0 
 1172 admin     1636 S    upnpd -f eth2.2 br0 
 1174 admin     1636 S    upnpd -f eth2.2 br0 
 1175 admin     1636 S    upnpd -f eth2.2 br0 
 1182 admin     1636 S    upnpd -f eth2.2 br0 
 1184 admin     1636 S    upnpd -f eth2.2 br0 
 1185 admin     1636 S    upnpd -f eth2.2 br0 
 1187 admin     1636 S    upnpd -f eth2.2 br0 
 1193 admin     1636 S    upnpd -f eth2.2 br0 
 1396 admin     2024 S    /usr/sbin/crond -c /var/spool/cron/crontabs -l 5 
 1420 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1423 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1424 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1425 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1428 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1430 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1431 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1432 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1434 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1435 admin     1624 S    wscd -m 1 -a 192.168.111.1 -i ra0 
 1440 admin     2024 S    syslogd -C8 
 1467 admin     1320 S    /bin/dnrd -s 192.168.3.1 -s 158.205.225.34 
 2262 admin     2020 R    /usr/sbin/telnetd 
 2263 admin     2028 S    -sh 
 2306 admin     2020 R    ps 

dmesg も起動してみたけど、
RT305x_ESW: Link Status Changed
で埋め尽くされているので、再起動後に実行してみる予定。

 5/5
Network
再起動したので、MZK-WDPR の dmesg の内容を。適当に折り返しが入っている。

Linux version 2.6.21 (root@localhost.localdomain) (gcc version 3.4.2) #12 Mon D
ec 28 01:46:25 CST 2009

 The CPU feqenuce set to 320 MHz
CPU revision is: 0001964c
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
  DMA zone: 32 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 4064 pages, LIFO batch:0
  Normal zone: 0 pages used for memmap
Built 1 zonelists.  Total pages: 4064
Kernel command line: console=ttyS1,57600n8 root=/dev/mtdblock4
Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 16kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
cause = 800008, status = 1100ff00
PID hash table entries: 64 (order: 6, 256 bytes)
calculating r4koff... 00138800(1280000)
CPU frequency 320.00 MHz
Using 160.000 MHz high precision timer.
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13032k/16384k available (2421k kernel code, 3352k reserved, 562k data, 
120k init, 0k highmem)
Calibrating delay loop... 212.99 BogoMIPS (lpj=425984)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Time: MIPS clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro
fuse init (API version 7.8)
io scheduler noop registered (default)
Ralink gpio driver initialized
HDLC line discipline: version $Revision: 1.1.1.1 $, maxframe=4096
N_HDLC line discipline registered.
Serial: 8250/16550 driver $Revision: 1.3 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A
serial8250: ttyS1 at I/O 0xb0000c00 (irq = 12) is a 16550A
loop: loaded (max 8 devices)
rdm_major = 254
GDMA1_MAC_ADRH -- : 0x00000000
GDMA1_MAC_ADRL -- : 0x00000000
Ralink APSoC Ethernet Driver Initilization. v1.60  256 rx/tx descriptors alloca
ted, mtu = 1500!
GDMA1_MAC_ADRH -- : 0x00000022
GDMA1_MAC_ADRL -- : 0xcf24xxxx
PROC INIT OK!
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
ralink flash device: 0x1000000 at 0xbf000000
Ralink SoC physically mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
Ralink SoC physically mapped flash: Found an alias at 0x400000 for the chip at 
0x0
Ralink SoC physically mapped flash: Found an alias at 0x800000 for the chip at 
0x0
Ralink SoC physically mapped flash: Found an alias at 0xc00000 for the chip at 
0x0
 Amd/Fujitsu Extended Query Table at 0x0040
Ralink SoC physically mapped flash: Swapping erase regions for broken CFI table.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 6 MTD partitions on "Ralink SoC physically mapped flash":
0x00000000-0x00030000 : "Bootloader"
0x00030000-0x00040000 : "Config"
0x00040000-0x00050000 : "Factory"
0x00050000-0x00160000 : "Kernel"
0x00160000-0x003f0000 : "RootFS"
0x003f0000-0x00400000 : "Data3G"
block2mtd: version $Revision: 1.1.1.1 $
NET: Registered protocol family 26
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (128 buckets, 1024 max)
IPv4 over IPv4 tunneling driver
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Linux
arp_tables: (C) 2002 David S. Miller
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 120k freed
Algorithmics/MIPS FPU Emulator v1.5
Set direction only
Disabe IPv6 fast bridge
Not get ack , retry
dwc_otg: version 2.72a 24-JUN-2008
DWC_otg: Core Release: 2.66a
DWC_otg: Periodic Transfer Interrupt Enhancement - disabled
DWC_otg: Multiprocessor Interrupt Enhancement - disabled
DWC_otg: Using DMA mode
DWC_otg: Device using Buffer DMA mode
dwc_otg lm0: DWC OTG Controller
drivers/usb/core/inode.c: creating file 'devices'
drivers/usb/core/inode.c: creating file '001'
dwc_otg lm0: new USB bus registered, assigned bus number 1
dwc_otg lm0: irq 18, io mem 0x00000000
DWC_otg: Init: Port Power? op_state=1
DWC_otg: Init: Power Port (0)
usb usb1: default language 0x0409
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: DWC OTG Controller
usb usb1: Manufacturer: Linux 2.6.21 dwc_otg_hcd
usb usb1: SerialNumber: lm0
usb usb1: uevent
usb usb1: usb_probe_device
usb usb1: configuration #1 chosen from 1 choice
usb usb1: adding 1-0:1.0 (config #1, interface 0)
usb 1-0:1.0: uevent
hub 1-0:1.0: usb_probe_interface
hub 1-0:1.0: usb_probe_interface - got id
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
hub 1-0:1.0: standalone hub
hub 1-0:1.0: ganged power switching
hub 1-0:1.0: individual port over-current protection
hub 1-0:1.0: Single TT
hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
hub 1-0:1.0: power on to power good time: 2ms
hub 1-0:1.0: local power source is good
hub 1-0:1.0: enabling power on all ports
hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
drivers/usb/core/inode.c: creating file '001'
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
Not get ack , retry

phy_tx_ring = 0x00ba0000, tx_ring = 0xa0ba0000, size: 16 bytes

phy_rx_ring = 0x00ba1000, rx_ring = 0xa0ba1000, size: 16 bytes
RT305x_ESW: Link Status Changed
port 1 (LAN) up
GDMA1_FWD_CFG = 710000
Retry give up
Not get ack , retry
rt2860v2_ap: module license 'unspecified' taints kernel.
2860 version : 2.0.0.0 (Nov 25 2009)


=== pAd = c1080000, size = 485360 ===

 RTMPAllocAdapterBlock, Status=0
RX DESC a061b000  size = 2048
 RTMPAllocTxRxRingMemory, Status=0
1. Phy Mode = 9
2. Phy Mode = 9
3. Phy Mode = 9
MCS Set = ff 00 00 00 00
Not get ack , retry
Retry give up
Not get ack , retry
Main bssid = 00:22:cf:xx:xx:xx
The UUID Hex string is:28802880xxxxxxxxxxxxxxxxxxxxxxxx
The UUID ASCII string is:28802880-xxxx-xxxx-xxxx-xxxxxxxxxxxx!
== RTMPInitialize, Status=0
0x1300 = 00064380
Not get ack , retry
eth2.2: Setting MAC address to  00 22 cf xx xx xx.
device eth2 entered promiscuous mode
VLAN (eth2.2):  Setting underlying device (eth2) to promiscious mode.
eth2.1: add 01:00:5e:00:00:01 mcast address to master interface
eth2.2: add 01:00:5e:00:00:01 mcast address to master interface
Retry give up
device ra0 entered promiscuous mode
eth2.1: dev_set_promiscuity(master, 1)
device eth2.1 entered promiscuous mode
device ra1 entered promiscuous mode
br0: port 3(ra1) entering learning state
br0: port 2(eth2.1) entering learning state
br0: port 1(ra0) entering learning state
RT305x_ESW: Link Status Changed
port 1 (LAN) down
RT305x_ESW: Link Status Changed
Not get ack , retry
RT305x_ESW: Link Status Changed
port 1 (LAN) up
Not get ack , retry
RT305x_ESW: Link Status Changed
dev1[eth2.2]
dev2[eth2.1]
eth2.2: dev_set_promiscuity(master, 1)
device eth2.2 entered promiscuous mode
Retry give up
Not get ack , retry
Not get ack , retry
Retry give up
Not get ack , retry
Not get ack , retry
Retry give up
br0: topology change detected, propagating
br0: port 3(ra1) entering forwarding state
br0: topology change detected, propagating
br0: port 2(eth2.1) entering forwarding state
br0: topology change detected, propagating
br0: port 1(ra0) entering forwarding state
RT305x_ESW: Link Status Changed

なんだか、ラジオ機能とかがある向こう側がさっぱり見えてこない。基板が別に
なっているし、ほとんど切り離されてしまっているみたい。向こう側をいじり
たいのに、困ったもんだ。

 5/6
Network
今日は仕事なので、外からサーバに入って、さらに MZK-WDPR にログインして
ゴニョゴニョやったり、NetBSD の kernel のコンパイルなんかをやっていたら、
突然ネットワークが不通に。家に帰ると YahooBB の Trio3-G plus という ADSL
ルータが、固まっていた。再起動したら PC の接続ができなくなった。MZK-WDPR
の LAN ポートを Trio3-G plus に繋いでいるため、PC が IP を MZK-WDPR から
もらってしまったようである。そもそも Trio3-G plus の4ポートはハブ動作
するだろう、という前提で 192.168.0.0/24 と 192.168.111.0/24 のネットワークを
混在させていたのが、固まった原因なのかもしれないけど。Trio3-G plus には
MZK-WDPR の WAN ポートを繋いで、telnetd を起動した後に iptables の内容を
削除して WAN 側からでも telnet で接続できるようにして、 192.168.0.0/24 の
ネットワークだけに収めてみた。で、インターネット側からアクセスしてみたら、
アクセスできない。調べると、Trio3-G plus のポートフォワード情報の設定が
全て消えていた。あーあ。

 5/7
OptiPlex SX260 NetBSD
NetBSD 5.0.2 の kernel の作成。X なんかインストールしなかったし、他に何も
デバイスを追加する予定もないので、USB からサウンド、マウスまで、全て無効に
した。isa も無効にしたいのだけど、
isa0    at ichlpcib?
を無効にすると、

ld -Map netbsd.map --cref -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0
100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
ioconf.o:(.rodata+0x338): undefined reference to `sysbeep_ca'
kern_clock.o: In function `statclock':
kern_clock.c:(.text+0xb8): undefined reference to `setstatclockrate'
kern_clock.c:(.text+0x1ae): undefined reference to `setstatclockrate'
cpu.o: In function `cpu_get_tsc_freq':
cpu.c:(.text+0x87): undefined reference to `i8254_delay'
cpu.o: In function `mp_cpu_start':
cpu.c:(.text+0x1b3): undefined reference to `i8254_delay'
cpu.c:(.text+0x1f6): undefined reference to `i8254_delay'
cpu.c:(.text+0x236): undefined reference to `i8254_delay'
cpu.o: In function `cpu_boot_secondary_processors':
cpu.c:(.text+0x3d6): undefined reference to `i8254_delay'
cpu.o:cpu.c:(.text+0x117a): more undefined references to `i8254_delay' follow
identcpu.o: In function `cpu_probe_cyrix_cmn':
identcpu.c:(.text+0x7ca): undefined reference to `clock_broken_latch'
lapic.o: In function `lapic_calibrate_timer':
lapic.c:(.text+0x29b): undefined reference to `gettick'
lapic.c:(.text+0x2a9): undefined reference to `rtclock_tval'
lapic.c:(.text+0x2bc): undefined reference to `gettick'
lapic.c:(.text+0x432): undefined reference to `initrtclock'
lapic.o: In function `x86_ipi_init':
lapic.c:(.text+0x5ab): undefined reference to `i8254_delay'
acpi_wakeup.o: In function `acpi_md_sleep':
acpi_wakeup.c:(.text+0x787): undefined reference to `initrtclock'
pciide_machdep.o: In function `pciide_machdep_compat_intr_establish':
pciide_machdep.c:(.text+0x3c): undefined reference to `isa_intr_establish'
autoconf.o: In function `cpu_configure':
autoconf.c:(.text+0x8): undefined reference to `startrtclock'
machdep.o:(.data+0x1c): undefined reference to `i8254_delay'
machdep.o:(.data+0x20): undefined reference to `i8254_initclocks'
pcib.o: In function `pcibmatch':
pcib.c:(.text+0x73): undefined reference to `clock_broken_latch'
cmos.o: In function `cmos_fetch':
cmos.c:(.text+0x6a): undefined reference to `mc146818_read'
cmos.o: In function `cmos_write':
cmos.c:(.text+0x143): undefined reference to `mc146818_write'
pckbc_acpi.o: In function `pckbc_acpi_intr_establish':
pckbc_acpi.c:(.text+0x46a): undefined reference to `isa_intr_establish'
npx_acpi.o: In function `npx_acpi_attach':
npx_acpi.c:(.text+0x176): undefined reference to `isa_intr_establish'
*** Error code 1

Stop.
make: stopped in /usr/src/sys/arch/i386/compile/MUSTAFAR_5

となる。
ichlpcib* at pci? dev ? function ?  # Intel ICH PCI-ISA w/ timecounter,
とあるように、タイマか何かで使っているみたい。すっきりしないけど、仕方が
ない。完成した kernel のサイズは。

mustafar# ls -la netbsd
-rwxr-xr-x  1 root  wheel  3447372 May  7 14:33 netbsd
mustafar# ls -la /netbsd
-rwxr-xr-x  1 root  wheel  11481810 Feb  7 02:53 /netbsd

だいぶ小さくなった。それでも 3M 超える。kernel はどんどん肥大化していく
ばかり。もうフロッピーディスクなんかには入りきることは無理なのか。

 5/8
Other
ソフトをインストールしようとしたら、必要環境じゃない、と出た。調べてみると、
XP だと SP3 が対象みたい。手元の PC は XP SP2 で放置していたのだけど、
仕方なくダウンロードする。容量を見たら 325M もあるし。インストールしたら、
1.5G ほどディスクが減っているし。再起動後、特に問題なかったので。

C:\WINDOWS\$NtServicePackUninstall$
C:\WINDOWS\$hf_mig$

をごっそり削除した。それでも、300M ぐらい増えてる感じ。

 5/9
Network LAN-iCN2
久しぶりにこの web サーバを見たら、アクセスランプがもの凄い勢いで点滅して
いて、ディスクもガリガリいってる。とうとうディスクの寿命か、と中に入って
見てみたら、どうやら ssh での Brute force attack を受けている真っ最中の
ようだった。で、パタとディスクの音が落ち着く。ログを見てみると。

May  9 20:16:46 kamino sshd: Illegal user carambola from 220.110.156.146
May  9 20:16:46 kamino sshd: Failed password for illegal user carambola from 
220.110.156.146 port 30647 ssh2
May  9 20:16:46 kamino sshd: Illegal user papaya from 220.110.156.146
May  9 20:16:46 kamino sshd: Failed password for illegal user papaya from 
220.110.156.146 port 10434 ssh2
May  9 20:16:46 kamino sshd: error: fork: Resource temporarily unavailable

sshd が音を上げたみたい。都合良いのか悪いのか、よくわからないけど。それに
しても、接続元の 220.110.156.146 って

a. [IPネットワークアドレス]     220.110.156.144/29
b. [ネットワーク名]             SAKKA-NET
f. [組織名]                     札幌花き園芸株式会社

なんだかなぁ、って感じ。やられちゃったのだろうか。web ページには何も書いて
ないようだけど。

 5/10
Network
MZK-WDPR で find コマンドが欲しいな、cal コマンドなんか選ばずに find でしょ
なんて呟きながら、linux-mips.org を探していたら、mips の findutils を発見。
えらく古いけど、ダウンロードしてきた。

[toyota@mustafar]% wget ftp://ftp.linux-mips.org/pub/linux/mips/redhat/
7.3/RPMS/mips/findutils-4.1.7-4.mips.rpm

RedHat 7.3 って mips 対応していたのだ、とちょっと感動して。NetBSD 機で
分解して、バイナリだけ取りだそうとしたら。

[toyota@mustafar]% rpm2cpio.pl findutils-4.1.7-4.mips.rpm
rpm2cpio, perl version by orabidoo <odar@pobox.com> +sw
dumps the contents to stdout as a cpio archive

use: rpm2cpio [file.rpm] > file.cpio

Here's how to use cpio:
     list of contents:   cpio -t -i < /file/name
        extract files:   cpio -d -i < /file/name

なぜか rpm2cpio が Perl スクリプトだし、うまく動いていないし。perl なのを
良いことに中を覗くと、出力の指定をしてないとダメみたい。やってみた。

[toyota@mustafar]% rpm2cpio.pl findutils-4.1.7-4.mips.rpm | cpio -id

分解できた。バイナリをどうやって転送しようか悩む。MZK-WDPR を眺めていたら、
wget があるみたいなので、find コマンドのバイナリだけ web サーバに置いて、
wget させることにした。

# wget http://mustafar/find

やっと、実行。

# ./find
-sh: ./find: Permission denied
# chmod a+x find
# ./find
./find: line 1: syntax error: word unexpected (expecting ")")

なんか、ダメみたい。明日別なファイルでやり直しだ。

 5/11
NetBSD Linux
昨日の続きで。Debian にも mips 用のバイナリがあって新しそうなので、それを
使うことにした。

[toyota@mustafar]% wget http://ftp.jaist.ac.jp/pub/Linux/Debian/pool/main/f/
findutils/findutils_4.4.2-1_mips.deb
[toyota@mustafar]% dpkg -x findutils_4.4.2-1_mips.deb
dpkg: Command not found.

dpkg を入れないとダメみたい。NetBSD のパッケージにはなかったので、ソース
からコンパイル。

[toyota@mustafar]% wget http://ftp.jaist.ac.jp/pub/Linux/Debian/pool/main/d/
dpkg/dpkg_1.15.7.1.tar.bz2
[toyota@mustafar]% tar xfj dpkg_1.15.7.1.tar.bz2
[toyota@mustafar]% cd dpkg-1.15.7.1/
[toyota@mustafar]% ./configure
[toyota@mustafar]% make
~snip~
  CC     main.o
  CCLD   dpkg-deb
../lib/compat/libcompat.a(obstack.o): In function `print_and_abort':
/tmp/dpkg-1.15.7.1/lib/compat/obstack.c:477: undefined reference to `gettext'
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1/dpkg-deb
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1

gettext は入っているので、-lintl を付ければ良さそう。dpkg-deb/Makefile
には、INTLLIBS とか LIBINTL があって、-lintl を追加したけど、全く影響が
なかった。LIBS に追加するしかないみたいなので、configure から付けてやって
みた。

[toyota@mustafar]% ./configure LIBS="-lintl"
[toyota@mustafar]% make
~snip~
  CCLD   dpkg-split
make: don't know how to make mksplit. Stop

make: stopped in /tmp/dpkg-1.15.7.1/dpkg-split
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1

mksplit を作っているようなのだけど、既に mksplit.pl というのがあるので、
いらない気がする。dpkg-split/Makefile を編集して、mksplit のコンパイルを
しないようにした。

[toyota@mustafar]% vi dpkg-split/Makefile

#all-am: Makefile $(PROGRAMS) $(SCRIPTS)
all-am: Makefile $(PROGRAMS)

これで再度 make 。

[toyota@mustafar]% make
~snip~
  CCLD   dpkg-trigger
Making all in utils
  CC     start-stop-daemon.o
start-stop-daemon.c: In function 'pid_is_user':
start-stop-daemon.c:1025: error: dereferencing pointer to incomplete type
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1/utils
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1
*** Error code 1

Stop.
make: stopped in /tmp/dpkg-1.15.7.1

これは根が深そう。utils/start-stop-daemon.c の問題部分は。

        kvm_read(kd, (u_long)&(kp->kp_proc.p_cred->p_ruid),
                 (void *)&proc_uid, (size_t)sizeof(uid_t));

kvm_read の2番目の引数、kp->kp_proc.p_cred->p_ruid が問題みたい。少し
辿ってみた。kp は、
struct kinfo_proc *kp;
で、宣言されている。

/usr/include/sys/sysctl.h
struct kinfo_proc {
    struct  proc kp_proc;           /* proc structure */

kp->kp_proc は struct  proc kp_proc; なので。

/usr/include/sys/proc.h
struct proc {
    LIST_ENTRY(proc) p_list;    /* l: List of all processes */
   
    kmutex_t    p_auxlock;  /* :: secondary, longer term lock */
    kmutex_t    *p_lock;    /* :: general mutex */
    kmutex_t    p_stmutex;  /* :: mutex on profiling state */
    krwlock_t   p_reflock;  /* p: lock for debugger, procfs */
    kcondvar_t  p_waitcv;   /* p: wait, stop CV on children */
    kcondvar_t  p_lwpcv;    /* p: wait, stop CV on LWPs */
   
    /* Substructures: */
    struct kauth_cred *p_cred;  /* p: Master copy of credentials */

で、この struct kauth_cred が見つからない。web で検索してみると、どうも
kern_auth.h とか kauth.h というファイルで宣言されているようなのだけど、
どちらのファイルも見つからない。ふと、思って、kernel のソースの中を探して
みたら、kern_auth.c の中で見つかった。

struct kauth_cred {
        /*
         * Ensure that the first part of the credential resides in its own
         * cache line.  Due to sharing there aren't many kauth_creds in a
         * typical system, but the reference counts change very often.
         * Keeping it seperate from the rest of the data prevents false
         * sharing between CPUs.
         */
        u_int cr_refcnt;                /* reference count */
#if COHERENCY_UNIT > 4
        uint8_t cr_pad[COHERENCY_UNIT - 4];
#endif
        uid_t cr_uid;                   /* user id */
        uid_t cr_euid;                  /* effective user id */
        uid_t cr_svuid;                 /* saved effective user id */
        gid_t cr_gid;                   /* group id */
        gid_t cr_egid;                  /* effective group id */
        gid_t cr_svgid;                 /* saved effective group id */
        u_int cr_ngroups;               /* number of groups */
        gid_t cr_groups[NGROUPS];       /* group memberships */
        specificdata_reference cr_sd;   /* specific data */
};

ここだけファイルに追加しても駄目だし、どうしたものかな、と思っていたら、
既に dpkg バイナリはできていて、util 部分のコンパイルで止まっていただけの
ようなので、分解できるかやってみた。

[toyota@mustafar]% /tmp/dpkg-1.15.7.1/src/dpkg -x findutils_4.4.2-1_mips.deb
dpkg: unable to execute dpkg-deb (dpkg-deb): No such file or directory

実質 dpkg-deb コマンドが実行しているみたい。直接実行してみた。

[toyota@mustafar]% /tmp/dpkg-1.15.7.1/dpkg-deb/dpkg-deb -x
findutils_4.4.2-1_mips.deb ./

やっと分解できた。取り出した find コマンドを MZK-WDPR で実行してみた。

# ./find
./find: line 1: syntax error: word unexpected (expecting ")")

何だったのでしょう、この無駄な努力は。

 5/12
Linux Network
5日に書いた MZK-WDPR の dmesg の結果を眺めていたら、ダメダメな typo を
見つけた。
The CPU feqenuce set to 320 MHz
frequence が feqenuce と2か所も間違っている。手元のターミナルの文字化け
かもしれないと思って、「The CPU feqenuce」で検索してみたら、結構出るので
文字化けじゃないみたい。いくつか、feqenuce なページを見たけど、見たページの
全てが Linux 2.6.21 で、CPU revision は 0001906c か 0001964c かだった。
見た感じ、OpenWrt のネットワーク機器がほとんど。これって何かのトラップで
密かに識別をするために埋め込まれたのじゃないか、なんて想像してしまった。
単純なミスの可能性の方が高いだろうけど。

 5/13
NetBSD
やっと動き出している NetBSD 5.0.2 の PC なのだが、messages を見ると、動き
出してから ntpd が変なログをはいている。今日分だと。

May 13 01:34:08 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 02:42:26 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 03:33:42 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 04:24:54 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 04:59:06 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 05:16:11 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 06:24:31 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 07:15:46 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 08:07:03 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 08:24:06 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 09:15:19 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 09:32:25 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 11:31:51 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 11:48:54 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 12:23:04 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>

こんな感じで、1時間に1回ほど。ちょっと、調べてみることにした。

[toyota@mustafar]% ps ax | grep ntp
  227 ?     Ss   0:07.87 /usr/sbin/ntpd 
[toyota@mustafar]% /usr/sbin/ntpd --version
ntpd - NTP daemon program - Ver. 4.2.4p6

NetBSD の ntpd は特殊なものを使っていた筈なのだけど、いつの間にか独自の
ものではなくなったみたい。ソースを探して、追ってみた。

[toyota@mustafar]% wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.4p6.tar.gz
[toyota@mustafar]% tar xfz ntp-4.2.4p6.tar.gz
[toyota@mustafar]% cd ntp-4.2.4p6/
[toyota@mustafar]% grep -r "kernel time sync status change" *
ntpd/ntp_loopfilter.c:              "kernel time sync status change %04x",
[toyota@mustafar]% less ntpd/ntp_loopfilter.c

                /*
                 * Pass the stuff to the kernel. If it squeals, turn off
                 * the pig. In any case, fetch the kernel offset and
                 * frequency and pretend we did it here.
                 */
                if (ntp_adjtime(&ntv) == TIME_ERROR) {
                        NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
                            msyslog(LOG_NOTICE,
                            "kernel time sync error %04x", ntv.status);
                        ntv.status &= ~(STA_PPSFREQ | STA_PPSTIME);
                } else {
                        if ((ntv.status ^ pll_status) & ~STA_FLL)
                                NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
                                    msyslog(LOG_NOTICE,
                                    "kernel time sync status change %04x",
                                    ntv.status);
                }

ntp_adjtime 関数の返りを見ているみたい。ntp_adjtime は define 扱いかと
思ったら、システムコールで見つかったので、man ntp_adjtime してみた。

ntp_adjtime(2)
     status     System clock status bits (read-write).  Bitwise OR of the fol-
                lowing:
                      STA_PLL        Enable PLL updates (read-write).
                      STA_PPSFREQ    Enable PPS freq discipline (read-write).
                      STA_PPSTIME    Enable PPS time discipline (read-write).
                      STA_FLL        Select frequency-lock mode (read-write).
                      STA_INS        Insert leap (read-write).
                      STA_DEL        Delete leap (read-write).
                      STA_UNSYNC     Clock unsynchronized (read-write).
                      STA_FREQHOLD   Hold frequency (read-write).
                      STA_PPSSIGNAL  PPS signal present (read-only).
                      STA_PPSJITTER  PPS signal jitter exceeded (read-only).
                      STA_PPSWANDER  PPS signal wander exceeded (read-only).
                      STA_PPSERROR   PPS signal calibration error (read-only).
                      STA_CLOCKERR   Clock hardware fault (read-only).

全く意味が分からなくなった。とりあえず、システムクロックのステータスが
変わったということなので、どうしたものかを考える隙が無いみたい。目障りに
なったら、syslog のログレベルを変えて対処することにしよう。

 5/14
Linux Network
MZK-WDPR のファームウェアをこれまであげてなかった。何故かと言うと、間に
PC を挟んキャプチャしたいため。でも、NIC が2つある PC なんか手元にない
ので、実家に寄ったついでに、ADM AN986 なチップの USB-Ether を持ってきた。
さっそく接続して、いつもテレビ用に使っている PC を knoppix で起動させた。
USB 1.1 で凄い遅いだろうけど、Pegasus な感じで無事に認識した。設定する
ため、まず MZK-WDPR の LAN 側と直結させて、ごにょごにょ。

root@Knoppix:/tmp# /sbin/ifconfig eth1 192.168.111.2
root@Knoppix:/tmp# wget -O /dev/null 
'http://admin:password@192.168.111.1/goform/SystemCommand?command=telnetd'
root@Knoppix:/tmp# wget -O /dev/null 
'http://admin:password@192.168.111.1/goform/SystemCommand?command=iptables%20-F'
root@Knoppix:/tmp# wget -O /dev/null 
'http://admin:password@192.168.111.1/goform/SystemCommand?
command=ifconfig%20eth2.2%20192.168.8.2'
root@Knoppix:/tmp# wget -O /dev/null 
'http://admin:password@192.168.111.1/goform/SystemCommand?
command=route%20add%20default%20gw%20192.168.8.1'

これで、WAN 側に付け替える。

root@Knoppix:/tmp# /sbin/ifconfig eth1 192.168.8.1
root@Knoppix:/tmp# echo 1 > /proc/sys/net/ipv4/ip_forward
root@Knoppix:/tmp# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.8.0/24
 -j MASQUERADE
root@Knoppix:/tmp# tcpdump -i eth1 -s 65535 -w wdpr.dump

これで、MZK-WDPR のファームウェアのバージョンアップを行う。30M ちょっと
ダウンロードして。

電源を切らずに接続を
維持してください

更新中…
処理が終わったら再起動します

の画面が10分ぐらい続いて再起動した。再起動したので、また設定のやり直し。
面倒臭い。そこそこでかいので wireshark に入れて http.request.method==GET
で絞ってみた。

http://www.planex.co.jp/support/driver/router/MZK-WDPR/MZK-WDPR.xml
http://www.planex.co.jp/support/driver/router/MZK-WDPR/firmware.AT035N00_1_1_53.tgz
http://www.planex.co.jp/support/driver/router/MZK-WDPR/root_uImage_v1.0.0.65
http://www.planex.co.jp/support/driver/router/MZK-WDPR/MZK-WDPR_checksum.md5

4つのアクセス。最初のアクセスがファームウェアの場所が記述してある XML 。
この中に、3つのアクセス先が書いてある。とりあえず、手元にダウンロードして
みる。明日解析予定。

 5/15
Linux Network
MZK-WDPR のファームウェアの解析。あっち側、つまりフォトフレーム側であろう
firmware.AT035N00_1_1_53.tgz の解析から。

root@Knoppix:/tmp# tar xfz firmware.AT035N00_1_1_53.tgz
root@Knoppix:/tmp/upgrade# cd upgrade
root@Knoppix:/tmp/upgrade# ls -la
total 225820
drwxr-xr-x 2 root root      200 Apr  9 18:29 .
drwxr-xr-x 3 root root       80 May 16 02:12 ..
-rw------- 1 root root       14 Apr  9 18:29 fwinfo
-rw------- 1 root root 10485760 May 16 02:16 upgrade_rootfs0.img
-rw------- 1 root root 10485760 May 16 02:18 upgrade_rootfs1.img
-rw-r--r-- 1 root root   285384 Apr  9 18:29 upgrade_uboot.bin
-rw-r--r-- 1 root root 41943040 Apr  9 18:29 upgrade_umdi0.img
-rw-r--r-- 1 root root 62914560 Apr  9 18:29 upgrade_umdi1.img
-rw-r--r-- 1 root root 41943040 Apr  9 18:29 upgrade_umdi2.img
-rw-r--r-- 1 root root 62914560 Apr  9 18:29 upgrade_umdi3.img
root@Knoppix:/tmp/firm/upgrade# file *
fwinfo:              ASCII text
upgrade_rootfs0.img: Linux rev 1.0 ext2 filesystem data (mounted or unclean)
upgrade_rootfs1.img: Linux rev 1.0 ext2 filesystem data (mounted or unclean)
upgrade_uboot.bin:   data
upgrade_umdi0.img:   x86 boot sector, mkdosfs boot message display
upgrade_umdi1.img:   x86 boot sector, mkdosfs boot message display
upgrade_umdi2.img:   x86 boot sector, mkdosfs boot message display
upgrade_umdi3.img:   x86 boot sector, mkdosfs boot message display

まさかの ext2 と fat12 。こうなったら、マウントでしょ。

root@Knoppix:/tmp/upgrade# mkdir /mnt/loop0
root@Knoppix:/tmp/upgrade# mkdir /mnt/loop1
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu0
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu1
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu2
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu3
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_rootfs0.img /mnt/loop0
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_rootfs1.img /mnt/loop1
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi0.img /mnt/loopu0
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi1.img /mnt/loopu1
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi2.img /mnt/loopu2
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi3.img /mnt/loopu3

何だかよくわからないけど、upgrade_rootfs0.img と upgrade_rootfs1.img は
中身が同じみたい。同じように upgrade_umdi0.img と upgrade_umdi2.img が、
upgrade_umdi1.img と upgrade_umdi3.img が同じみたい。理由はよくわからない
けど。なんと、あっち側も Linux みたい。つまり、MZK-WDPR は CPU が2つの
Linux が2つ動いているみたい。なんだか、贅沢なような、そうじゃないような。
あっち側の Linux は。

Linux version 2.6.19-04142008-default (pinyuchen@R220-linux4) (gcc version 4.2.1
 (ARC_2.2.Skymedi.20081020)) #1 Wed Jan 27 15:37:58 CST 2010

なんだか、テンション上がってきた。

root@Knoppix:/tmp# cat /mnt/loop0/etc/init.d/rcS
#!/bin/sh
echo "Mounting proc"
mount -t proc none /proc
mount -t tmpfs none /tmp
sysctl -w vm.overcommit_memory=1
mount -t vfat /dev/sknande /mnt/umdi0
mount -t vfat /dev/sknandf /mnt/umdi1
mount -t vfat /dev/sknandg /mnt/umdi2
mount -t vfat /dev/sknandh /mnt/umdi3
mount -t vfat /dev/sknandi /mnt/umdi4
mount -t usbfs none /proc/bus/usb
ln -sf /mnt/umdi3/conf /tmp/conf
cat /etc/version > /proc/versions
cd /sky
/sky/respawn_tardis &
root@Knoppix:/tmp# file /mnt/loop0/bin/busybox
/mnt/loop0/bin/busybox: ELF 32-bit LSB executable, ARC Cores Tangent-A5, version
 1 (SYSV), dynamically linked (uses shared libs), stripped

ARC って聞いたことがない CPU だな。調べてみたら、Argonaut RISC Core の
略みたいで、任天堂の SuperFX が元だとか、なんとか。ARC International と
いうところが作ってたけど、Virage Logic に買収されたらしく。
http://www.arc.com/software/linux/
それにしても、Linux って何の CPU でも動くんだな。あとは、telnetd がある
のは確認したけど、あっち側で実行してログインできるかどうか。

 5/16
Linux Network
MZK-WDPR の解析の続き。あっち側(フォトフレーム側)は、10.88.88.95 の IP
が振られているみたい。こっち側の br0:1 に 10.88.88.88 が振られていた理由が
わかった。LAN 側に knoppix の PC を繋いで、knoppix 側から突っついてみる。

root@Knoppix:/tmp# ifconfig eth1:0 10.88.88.1
root@Knoppix:/tmp# nmap -sP 10.88.88.0/24

Starting Nmap 4.53 ( http://insecure.org ) at 2010-05-16 13:40 JST
Host 10.88.88.1 appears to be up.
Host 10.88.88.88 appears to be up.
Host 10.88.88.95 appears to be up.
Nmap done: 256 IP addresses (3 hosts up) scanned in 8.162 seconds

root@Knoppix:/tmp# nmap -p 1-65535 10.88.88.95

Starting Nmap 4.53 ( http://insecure.org ) at 2010-05-16 13:42 JST
All 65535 scanned ports on 10.88.88.95 are closed

Nmap done: 1 IP address (1 host up) scanned in 66.946 seconds

ポート全滅。正攻法じゃ、コマンドを実行したりすることができないみたい。
これはちょっと予想が外れた。こっち側(ルータ側)には fuse が入っていて、
うまく使うとマウントできるもの思っていたので。
とりあえず、内部侵入は置いて、ファームウェアを新しくしたので、 youtube
を見てみた。思ったよりもマトモに見られる。一回一回検索して、選択して、
実行、という作業が面倒だけど。この再生機能は、ファームウェアを見る限り
curl もしくは wget + mplayer で実行されている。多分、ラジオも mplayer で
実行されている。手元の DVD をリッピングした DivX な avi(705x300) も再生
できて驚いたりして。wmv が駄目なのは少し痛いけど。なんか、まだしばらく
これで遊べそう。自分のためにも、まとめのページを書こうかな。

 5/17
Linux Network
MZK-WDPR の解析の続き。こっち側(ルータ側)のファームをマウントしてみる。
とりあえず、squashfs の部分を取り出して、マウント。

# dd if=root_uImage_v1.0.0.65 of=sqfs.image bs=1024 skip=1088
# mkdir /mnt/sqfs
# mount -o loop -t squashfs sqfs.image /mnt/sqfs
mount: unknown filesystem type 'squashfs'

knoppix じゃ駄目みたい。戦場を CentOS 5.4 の PC に移動してやってみた。

[toyota@centos54]# mount -t squashfs -o loop ./sqfs.image /mnt/sqfs
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

駄目。嫌な予感はしていて、こっち側の dmesg には。

squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro

とあったので、LZMA な squashfs を使ってるみたいなんだよね。少し web で
調べて、http://www.squashfs-lzma.org/ からダウンロードしようと思ったが、
kernel 2.6.27 以上が必要みたい。手元の CentOS 5.4 は 2.6.18 だし、0 から
kernel を作るのも面倒。少し悩む。
で、ふと思った。こっち側の kernel って 2.6.21 なのに、何で squashfs-lzma
が動いているのだろうと。さらに調べてみたら、2.6.17 用のバックポートをした
人がいて、patch があるみたい。
https://sourceforge.net/project/showfiles.php?group_id=116780&package_id=222970
どちらにしても、slax で起動し直した方が楽そう。

 5/18
Linux Network
11日の続き。別に昨日の続きでも良いのだけど。LZMA な SquashFS がマウント
できなかったので、直接 MZK-WDPR からファイルをもってくることにした。で、
どうやってファイルを持ってくるか。MZK-WDPR の web サーバの設定を変えよう
かと、設定がどこにあるのか見るため、
# goahead --help
してみたら、ネットワークが繋がらなくなるし。仕方なく再起動して、別な方法を
考えていたら、ftpput というコマンドを発見。中身は busybox なんだけど。
これを使ってみることにした。
まず、knoppix で ftp サーバの起動をする。設定を確認したら、inetd の起動
だけで良さそう。

root@Knoppix:/etc# /usr/sbin/inetd
root@Knoppix:/tmp# ftp localhost
Connected to Knoppix.
220 Knoppix FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
Name (localhost:knoppix): knoppix
331 Password required for knoppix.
Password:
230- Welcome to Knoppix!
230 User knoppix logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

あっさり動く。MZK-WDPR から ftpget してみたら、接続できない。どうやら、
iptables か tcpwrapper 辺りの問題みたい。iptables -F を実行してみ改善が
されないので、/etc/hosts.allow の確認。

root@Knoppix:/tmp# cat /etc/hosts.allow

ssh sshd : ALL@ALL : ALLOW
ALL : 127.0.0.1 LOCAL : ALLOW
ALL : ALL@ALL : DENY

これだ。
ALL : 192.168. : ALLOW
を追加して、inetd の再起動。これで MZK-WDPR から ftpget できた。MZK-WDPR
の中のバイナリを knoppix に送る。なるべく、サイズが小さい brctl にした。

# ftpput -u knoppix -p xxxxxxxx duro /tmp/brctl /usr/sbin/brctl

knoppix で file コマンドを実行。

knoppix@Knoppix:/tmp$ file brctl
brctl: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically 
linked (uses shared libs), stripped

この前送って動かなかった find コマンドは。

knoppix@Knoppix:/tmp$ file find
find: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), for GNU/Linux 
2.6.18, dynamically linked (uses shared libs), stripped

MZK-WDPR の mips はリトルエンディアンで動作してるんだ。リトルエンディアン
用のバイナリを取ってきて、やってみる。

knoppix@Knoppix:/tmp$ wget http://ftp.jaist.ac.jp/pub/Linux/Debian/pool/main/f/
findutils/findutils_4.4.2-1_mipsel.deb
knoppix@Knoppix:/tmp$ dpkg-deb -x findutils_4.4.2-1_mipsel.deb ./
knoppix@Knoppix:/tmp$ file /tmp/usr/bin/find
/tmp/usr/bin/find: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), for
 GNU/Linux 2.6.18, dynamically linked (uses shared libs), stripped

knoppix は dpkg(-deb) がインストールされているので助かる。MZK-WDPR から
取りに行く。

# ftpget -u knoppix -p xxxxxxxx duro /tmp/find /tmp/usr/bin/find
# chmod a+x /tmp/find
# /tmp/find
-sh: /tmp/find: not found

何が起きたのかわからなかった。タイプミスをしたものかと、何度かやってみた
けど、結果は同じ。ふと思って、ldd を実行してみた。

knoppix@Knoppix:/tmp$ ldd /tmp/usr/bin/find
        not a dynamic executable

そりゃそうか。readelf を実行。

knoppix@Knoppix:/tmp$ readelf -d /tmp/usr/bin/find

Dynamic section at offset 0x19c contains 24 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [librt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000c (INIT)                       0x402ed8
 0x0000000d (FINI)                       0x4255a0
 0x00000004 (HASH)                       0x400284
 0x00000005 (STRTAB)                     0x401ecc
 0x00000006 (SYMTAB)                     0x400b7c
 0x0000000a (STRSZ)                      3330 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x70000016 (MIPS_RLD_MAP)               0x43c0f0
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x43c100
 0x70000001 (MIPS_RLD_VERSION)           1
 0x70000005 (MIPS_FLAGS)                 NOTPOT
 0x70000006 (MIPS_BASE_ADDRESS)          0x400000
 0x7000000a (MIPS_LOCAL_GOTNO)           12
 0x70000011 (MIPS_SYMTABNO)              309
 0x70000012 (MIPS_UNREFEXTNO)            40
 0x70000013 (MIPS_GOTSYM)                0x6
 0x6ffffffe (VERNEED)                    0x402e38
 0x6fffffff (VERNEEDNUM)                 3
 0x6ffffff0 (VERSYM)                     0x402bce
 0x00000000 (NULL)                       0x0

ライブラリを3つ使っている。とりあえず libc を確認してみた。

# ls -la /lib/libc*
lrwxrwxrwx 1 admin root    18 Jan 12 18:38 /lib/libcrypt.so.0 -> libcrypt-0.9.28.so
lrwxrwxrwx 1 admin root    18 Jan 12 18:38 /lib/libcrypt.so -> libcrypt-0.9.28.so
-rw-r--r-- 1 admin root 13528 Jan 12 18:38 /lib/libcrypt-0.9.28.so
lrwxrwxrwx 1 admin root    19 Jan 12 18:38 /lib/libc.so.0 -> libuClibc-0.9.28.so
lrwxrwxrwx 1 admin root    19 Jan 12 18:38 /lib/libc.so -> libuClibc-0.9.28.so
# ls -la /usr/lib/libc*
ls: /usr/lib/libc*: No such file or directory

予想通り無い。そもそも libc は、uClibc だし。小さそうな tree コマンドを
ダウンロードして見てみたけど、やっぱり libc.so.6 が必要だし。Debian の
パッケージを使うことはできないようである。かと言って、わざわざ mips の
リトルエンディアンなクロスコンパイル環境を作るのも面倒。他のディストリ
ビューションを探してみるかな。

 5/19
OptiPlex SX260 NetBSD
設定がほぼ終わった NetBSD 5.0.2 の PC で ps を実行すると、大量の postdrop
が溜まっていた。同じ量の sendmail も溜まっている。ちょっと原因調査。

[toyota@mustafar]% ps axuw | grep postdrop
root     632  0.0  0.1    4796   1780 ?     S     9May10 0:18.61 postdrop -r 
root     730  0.0  0.1    4796   1828 ?     S    Fri03AM 0:09.39 postdrop -r 
root     850  0.0  0.1    4796   1780 ?     I     9May10 0:00.12 postdrop -r 
root     985  0.0  0.1    4796   1828 ?     I    Fri03AM 0:00.08 postdrop -r 
root    1148  0.0  0.1    4796   1828 ?     S    12May10 0:11.67 postdrop -r 
root    1168  0.0  0.1    4796   1828 ?     I    11May10 0:00.08 postdrop -r 
root    1918  0.0  0.1    4796   1780 ?     S    10May10 0:15.03 postdrop -r 
root    2023  0.0  0.1    4796   1780 ?     I    10May10 0:00.08 postdrop -r 
root    2207  0.0  0.1    4796   1828 ?     I    Mon03AM 0:00.08 postdrop -r 
root    2603  0.0  0.1    4796   1828 ?     I    Sat04AM 0:00.10 postdrop -r 
root    3366  0.0  0.1    4796   1828 ?     S    Sat04AM 0:06.87 postdrop -r 
root    3451  0.0  0.1    4796   1828 ?     S    Mon03AM 0:04.30 postdrop -r 
root    4275  0.0  0.1    4796   1828 ?     I    Sun03AM 0:00.08 postdrop -r 
root    4842  0.0  0.1    4796   1828 ?     I     3:15AM 0:00.08 postdrop -r 
root    5155  0.0  0.1    4796   1828 ?     S    Tue03AM 0:02.22 postdrop -r 
root    5783  0.0  0.1    4796   1828 ?     I    Tue03AM 0:00.08 postdrop -r 
root    7919  0.0  0.1    4796   1828 ?     I    Sat03AM 0:00.08 postdrop -r 
root    9176  0.0  0.1    4796   1828 ?     S     3:15AM 0:00.82 postdrop -r 
root   14594  0.0  0.1    4796   1828 ?     I    12May10 0:00.08 postdrop -r 
root   14812  0.0  0.1    4796   1828 ?     I    Thu03AM 0:00.08 postdrop -r 
root   16430  0.0  0.1    4796   1828 ?     S    Thu03AM 0:10.25 postdrop -r 
root   26746  0.0  0.1    4796   1828 ?     S    Sat03AM 0:07.94 postdrop -r 
root   27080  0.0  0.1    4796   1828 ?     S    11May10 0:14.70 postdrop -r 
root   27706  0.0  0.1    4796   1828 ?     S    Sun03AM 0:04.99 postdrop -r 

送信時間を見ると、cron からのメールみたい。とりあえず、全部 kill する。

[toyota@mustafar]% su
# pkill postdrop

sendmail のプロセスも全部落ちた。cron ジョブの確認。

# crontab -l
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
CRON_WITHIN=7200
*/10 * * * * /usr/libexec/atrun
0    * * * * /usr/bin/newsyslog
15   3 * * * /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | sendmail -t
30   4 * * 6 /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | sendmail -t

cron の結果をファイル出力していると同時に sendmail にも渡しているので、
ファイル出力のみに変更。

15   3 * * * /bin/sh /etc/daily 2>&1 > /var/log/daily.out
30   4 * * 6 /bin/sh /etc/weekly 2>&1 > /var/log/weekly.out

ここまでが、一昨日の話。昨日プロセスを見ると、postdrop のプロセスが増えて
いる。何かまだ設定が必要みたい、ということで調べると cron 自体からメールが
やってくるみたい。cron の頭に MAILTO の設定を入れた。

MAILTO=""

ここまでが、昨日の話。今日プロセスを見たら、postdrop のプロセスは増えて
なかった。これで解決。

 5/20
Linux Network
ということで、MZK-WDPR のあっち側(画面側)のファームを作成して、 telnet
を起動させる。素材を取ってくる。

root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/MZK-WDPR.xml
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/firmware.AT035N00_1_1_53.tgz
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/root_uImage_v1.0.0.65
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/MZK-WDPR_checksum.md5
root@Knoppix# cd /tmp/support/driver/router/MZK-WDPR/

ファームウェアの中身をいじる。

root@Knoppix# tar xfz firmware.AT035N00_1_1_53.tgz frm.tgz
root@Knoppix# mkdir /mnt/rootfs0
root@Knoppix# mount -o loop upgrade/upgrade_rootfs0.img /mnt/rootfs0
root@Knoppix# vi /mnt/rootfs0/etc/passwd
root@Knoppix# vi /mnt/rootfs0/etc/init.d/rcS
root@Knoppix# vi /mnt/rootfs0/etc/version

/etc/passwd にパスワードなしのユーザを作成。/etc/init.d/rcS で telnetd を
起動するように追加。最後に念のため /etc/version のバージョンを増やした。
改造ファームのセットを作成。

root@Knoppix# umount /mnt/rootfs0
root@Knoppix# rm upgrade/upgrade_rootfs1.img
root@Knoppix# cp -p upgrade/upgrade_rootfs0.img upgrade/upgrade_rootfs1.img
root@Knoppix# tar cvfz firmware.AT035N00_1_1_54.tgz upgrade
root@Knoppix# md5sum firmware.AT035N00_1_1_54.tgz > MZK-WDPR_checksum.md5

大元の xml ファイルを編集。

root@Knoppix# vi MZK-WDPR.xml

AT035N00_1_1_53 の部分を AT035N00_1_1_54 にした。knoppix 側での Apache の
設定。

root@Knoppix# cp -p /etc/apache/httpd.conf /etc/apache/httpd.conf.org
root@Knoppix# vi /etc/apache/httpd.conf
root@Knoppix# diff /etc/apache/httpd.conf.org /etc/apache/httpd.conf

270c270
< #ServerName localhost
---
> ServerName localhost
272c272
< ServerName www.planex.co.jp
---
> #ServerName new.host.name
279c279
< DocumentRoot /tmp
---
> DocumentRoot /var/www
root@Knoppix# touch /tmp/index.html
root@Knoppix# /etc/init.d/apache start
root@Knoppix# telnet localhost 80
Trying 127.0.0.1...
Connected to Knoppix.
Escape character is '^]'.
GET /index.html HTTP/1.0

HTTP/1.1 200 OK
Date: Tue, 18 May 2010 15:05:59 GMT
Server: Apache/1.3.34 (Debian) mod_ssl/2.8.25 OpenSSL/0.9.8c mod_perl/1.29
Last-Modified: Tue, 18 May 2010 15:05:12 GMT
ETag: "55c1-0-4bf2aca8"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html; charset=iso-8859-1

Connection closed by foreign host.

完璧。MZK-WDPR のこっち側(ルータ側)で www.planex.co.jp の IP をでっち
あげて、設定した knoppix のPC に向ける。

root@Knoppix# telnet 192.168.111.1
Trying 192.168.111.1...
Connected to 192.168.111.1.
Escape character is '^]'.
PCI.com login: admin
Password: 

BusyBox v1.12.1 (2010-04-08 10:45:39 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

# echo "192.168.0.3 www.planex.co.jp" >> /etc/hosts
# ping -c 1 www.planex.co.jp
PING www.planex.co.jp (192.168.0.3): 56 data bytes
64 bytes from 192.168.0.3: seq=0 ttl=64 time=1.129 ms

--- www.planex.co.jp ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.129/1.129/1.129 ms
# wget -O - http://www.planex.co.jp/
Connecting to www.planex.co.jp (192.168.0.3:80)
-                    100% |*****************************|     0  --:--:-- ETA

これで準備が整った。あっち側で、ファームウェアのアップデートをしてみる。
が、うまくいかない。こっち側の設定を変更して、手っ取り早く /etc/hosts の
追加した行を削除して、knoppix 側の IP を www.planex.co.jp の IP である
210.197.79.10 にして、MZK-WDPR の WAN 側に knoppix の PC を接続すると、
やっとファームウェアのアップデートができるようになった。再起動したが、
telnet での接続ができず。

knoppix@Knoppix$ telnet 192.168.111.100
Trying 192.168.111.100...
Connected to 192.168.111.100.
Escape character is '^]'.

ポートは空いてるみたいだけど、応答がないんだよね。どうしたものか。

 5/21
Linux Network
昨日の telnet がログインできない問題。-l オプションで色々指定してみたり、
xinetd 経由で起動してみたけど、現象は変わらず。並行して、ftp デーモンを
起動させることも行う。xinetd 経由での vsftpd なので、とりあえず xinetd を
起動するだけで、ftp の動作はした。しかし、一般ユーザのログインはできず、
さらに anonymous で入っても /mnt/sknand ディレクトリ以下の参照。これじゃ、
USB で PC に接続したのと変わらない。/etc/vsftpd/vsftpd.conf の設定を変更
した。

local_root=/mnt/sknand
anon_root=/mnt/sknand

なのを。

local_root=/
anon_root=/

にしてみた。

knoppix@Knoppix$ ftp 192.168.111.100
Connected to 192.168.111.100.
220 Welcome to PDF FTP service.
Name (192.168.111.100:knoppix): anonymous
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.

だって。一般ユーザでは、引き続き
530 Login incorrect.
念のため、3種類のユーザを作ってみた。

・パスワードなしのユーザ
・/etc/passwd にハッシュのパスワードがあるユーザ
・/etc/shadow にハッシュのパスワードがあるユーザ

どのユーザでもログインできず。どうしてだろう。

 5/22
Linux Network
今日も何度か loop デバイスの mount と umount を繰り返していた。すると、

mount: could not find any free loop device

なんてメッセージが出た。調べると、knoppix では loop デバイス /dev/loopx
は8つしかない。つまり、8回マウントすると umount していても上記のエラーが
出るみたい。使ってないので再利用できないかと調べてみたら。

losetup -d /dev/loop0

で再利用できるみたい。でも、今どの loop デバイスを使っていて、どのデバイス
が umount したのかわからないな、なんて考えてやってみたら、現在使っている
デバイスは

# losetup -d /dev/loop3
ioctl: LOOP_CLR_FD: Device or resource busy

と出て losetup -d ができない。とりあえず、loop デバイスの再利用はできた
ので、作業の再開。

 5/23
Linux Network
一昨日の続き。ftp に一般ユーザで入れない+anonymous では / へ行けないという
状態。vsftpd version 2.0.7 のソースを眺めること20分。一般ユーザでログイン
できないのは、/etc/shells がないからだ、と気が付いた。/etc/shells を作成
してもよいけど、/etc/vsftpd/vsftpd.conf に
check_shell=NO
を追加して、一般ユーザでログインすることができた。/etc/init.d/rcS での
コマンド実行と組み合わせて、色々実行はできた。

# cat /proc/cpuinfo
Processor Number :      0
Processor version :     0 (ARCtangent A4 processor family) 
CPU speed :     162.00 Mhz
Bogo MIPS :     80.89
Timers:         TIMER1 TIMER0 
INT_VECBASE:    0x80008000 
PERIPHERAL_BASE:        0x0 
Icache:(type/size/length):      2 way/32KB/32B
Dcache:(type/size/length):      4 way/32KB/32B
MMU:(Version/uDTLB/uITLB/JTLB/JA):Extensions:CRC TEL_INSTR MAC SWAP NORM 
MIN/MAX MUL(32*32) BARREL
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sknandc              9912      9120       280  97% /
none                      6392        24      6368   0% /tmp
/dev/sknande             40928      1680     39248   4% /mnt/umdi0
/dev/sknandf             61302     31006     30296  51% /mnt/umdi1
/dev/sknandg             40928      1680     39248   4% /mnt/umdi2
/dev/sknandh             61302     35782     25520  58% /mnt/umdi3
/dev/sknandi             10212         4     10208   0% /mnt/umdi4
# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:22:CF:xx:xx:xx  
          inet addr:192.168.111.100  Bcast:192.168.111.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1718 (1.6 KiB)  TX bytes:1780 (1.7 KiB)

eth0:1    Link encap:Ethernet  HWaddr 00:22:CF:xx:xx:xx  
          inet addr:10.88.88.95  Bcast:10.88.88.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

な、感じ。dmesg は、えらい量のデバッグメッセージみたいなのを吐いている
みたいで、頭の部分がなかったので省略。ps コマンドの結果は。

# ps -ef
  PID  Uid        VSZ Stat Command
    1 root       1160 SW  init       
    2 root            Z   [splash]
    3 root            SWN [ksoftirqd/0]
    4 root            SW< [events/0]
    5 root            SW< [khelper]
    6 root            SW< [kthread]
    7 root            SW< [kblockd/0]
    8 root            SW< [khubd]
    9 root            SW  [pdflush]
   10 root            SW  [pdflush]
   11 root            SW< [kswapd0]
   12 root            SW< [aio/0]
   13 root            SW< [krfcommd]
   15 root       1160 SW  init       
   16 root       1256 SW  /bin/sh /etc/init.d/rcS 
   30 root        784 SW  /sky/respawn_tardis 
   31 root       1544 DW  tardis 
   33 root       1280 SW  /sbin/xinetd 
   35 root       1160 SW  /usr/sbin/telnetd
   36 root       1160 RW  /bin/ps -ef 

telnetd は動いているみたいなんだけど、どうしてログインメッセージがでない
のだろう。

 5/24
Linux Network
MZK-WDPR は、2G の MLC NAND フラッシュが搭載されているので、メールサーバに
してしまおうかと少し考えていた。しかし、あっち側のCPU のクロックが 160MHz
だし、メモリも 32M とかなり寂しい。クロスコンパイル環境を少し作ろうかと
binutils を用意してやってみたけど、いきなり大変そうだし。メールサーバの
計画はやめることにした。そもそもマルチメディア用の CPU なので、用途向き
ではないし。で、ちょうど良い画面が付いているのから、Android が入れば凄く
遊べそうなのだけど、arc じゃ Android 入らないし。どうしたもんかの、と少し
考えている状況。

 5/25
WWW Network
なんだか、BBC の週末にあった Big Weekend が終わってから、rtsp での聴取が
できなくなった。iPlayer 以外での受信ができなくなる、という制限の一環なの
だろうか。ちょっと色々調べてみたけど、解決策は見つからず。これは iPlayer
を使うしかないみたい。残念。

 5/26
OptiPlex SX260 NetBSD
NetBSD 5.0.2 の PC で起動している httpd の設定の変更。cgi の実行ができない
みたいなので、実行させる。とりあえず、得体のしれない httpd を確認する。

[toyota@mustafar]% ps axw | grep httpd
  268 ?     Is   0:00.00 /usr/libexec/httpd -U _httpd -b /var/www

手動で叩いてみる。

[toyota@mustafar]% /usr/libexec/httpd -v
httpd: option requires an argument -- v
usage: httpd [options] slashdir [myname]
options:
   -s                   always log to stderr
   -u                   enable ~user/public_html support
   -p dir               change `public_html' directory name]
   -M arg t c c11       add this mime extenstion
   -C arg prog          add this CGI handler
   -c cgibin            enable cgi-bin support in this directory
   -b                   background and go into daemon mode
   -f                   keep daemon mode in the foreground
   -i address           bind on this address (daemon mode only)
   -I port              bind on this port (daemon mode only)
   -S version           set server version string
   -t dir               chroot to `dir'
   -U username          change user to `user'
   -e                   don't clean the environment (-t and -U only)
   -v virtualroot       enable virtual host support in this directory
   -r                   make sure sub-pages come from this host via referrer
   -X                   enable automatic directory index support
   -H                   hide files starting with a period (.) in index mode
   -x index             change default `index.html' file name
   -Z cert privkey      specify path to server certificate and private key file
                        in pem format and enable bozohttpd in SSL mode
httpd failed to start

設定は、設定ファイルで行うのではなく、全てオプションで行うみたい。起動
させるときの設定ファイル /etc/defaults/rc.conf の。

httpd=YES               httpd_flags=""
                        httpd_wwwdir="/var/www"
                        httpd_wwwuser="_httpd"

部分で -c オプションの設定をすれば良いのかな。確認のため、httpd の man を
眺めていたら。

HISTORY
     The httpd program was first written in perl, based on another perl http
     server called ``tinyhttpd''.  It was then rewritten from scratch in perl,
     and then once again in C.  It was known for many years as ``bozohttpd''.
     ``bozohttpd'' version 20060517 was integrated into NetBSD 5.0 as httpd.
     The focus has always been simplicity and security, with minimal features
     and regular code audits.  This manual documents httpd version 20080303.

ということらしい。httpd のアクセスログはどこに吐かれるのかしらべたら、
/var/log/xferlog だった。

May 26 15:59:54 mustafar httpd[20880]: got request ``GET /''
 from host localhost to port 80
May 26 16:19:03 mustafar httpd[21532]: got request ``GET / HTTP/1.1''
 from host localhost to port 80

こんな感じ。User-Agent を出して欲しいなぁ。あと、できれば Referer も。
ま、アクセス解析は Google Analytics にやらせているので、そんなに必要でも
ないけど。

 5/27
Other
今度の旅行でデジカメを買ってしまおうか、と調べていた。多分買わないけど。
で、GPS 付きのデジカメがあったので、調べてみた。見つけたのは3機種。

SONYCybershot DSC-HX5V
PanasonicLUMIX DMC-TZ10
NIKONCOOLPIX P6000
各メーカの web ページのサンプル写真の EXIF を見てみた。P6000 のサンプル 画像は GPS 情報が入っていない。折角 GPS 機能があるのに何で入ってないの? という気分。そんなことは置いて、EXIF 情報を見てみると、GPS Date Stamp とか GPS Time Stamp が入っていて、デジカメの時計がずれていても正確な時刻が記録 されるみたい。これはありがたい。web ページで拾った iPhone の GPS 記録が ある写真も入れて色々見てみたら、TZ10 以外はどの方角を向いて撮影をされた のかも記録されていた。さらに DSC-HX5V は進行方向までもが。何だかすごいと 思ったけど、良く考えるとそんな記録がある分、余計なデータ量を使ってしまう んだよなと。でも、便利そうだなぁ。電池の持ちが良ければ、買おうか悩む。 5/28 Other Network iPad が発売されたようで、巷は騒いでいるようである。あれって、一体どんな 人が使うのだろうと考えてしまう。通勤に毎日持っていくには大きくて邪魔だし、 電車で本代わりにするにも重すぎ、家で使うなら PC があるのでいらないし。 携帯電話以上、ノート PC 未満だけど、通話できないから両方の良いところが 無くなったような気もする。機能的に画期的という感じもしないけど、安いなら 買っても良いかな、と思うぐらい。2万円を切ったら、ちょっと考えようかな。 5/29 Other Network Skype を起動したら、見慣れないウィンドウが出た。 Skype - 便利なヒント SkypeNames2.exeがSkypeの使用をリクエストしています アクセスを許可 / アクセスを拒否 全くもって、便利なヒント、じゃない気がするけど、そもそもこれは何か調べて みた。この SkypeNames2.exe は、C:\Program Files\Skype\Toolbars\Shared に あった。そんなに新しいファイルじゃないので、今日突然出てきた理由は不明。 それ以上わからなかったので、web で調べると、ブラウザと連携するものらしい。 ブラウザ上の電話番号とかをリンクにして、クリックすると Skype が起動する ようなプログラムみたい。いらないので、拒否した。 5/30 Other デジカメの Jpeg を眺めて思っていたのだけど、格納されているサムネイルって 大きさが 160×120 がほとんどで、これって固定なのかなと EXIF の仕様なんかを 眺めてみた。このサムネイルは EXIF 2.0 に規定されたもので、大きさの制限は 特にないみたい。サンプルの EXIF を見ると 80×60 なので、固定でもないみたい だし。ただ、サイズの制限があって、全ての EXIF(?) で 64kb 以内じゃないと 駄目ということみたい。このぐらいあったら、640×480 ぐらいいけそう。元の 画像より大きいサムネイルとかできそうだし。 ついでに、GPS 周りも調べてみた。exif.org のページでは、EXIF 2.1 と EXIF 2.2 とが見られるのだけど、1998年の EXIF 2.1 で既に GPS についての記述が あった。すごい先見の明だな、と感心した。 5/31 Other 27日に GPS のことを調べたけど、色々考えていたら準天頂のことを思い出した。 そう言えば、国産の準天頂を三菱が作っていた気がしたな、と。で、少し調べて みると、既に衛星は種子島にあって、夏に打ち上げらしい。名前は「みちびき」 だって。必ず真上に近い場所に衛星があるので、あとアメリカの GPS 衛星が2つ 捕捉できれば位置が割り出せる。これからの製品で対応できれば、精度がかなり あがるのだろうか。楽しみな気がする。
21st projects Tatsuyoshi Networks Prompt Works
by Tatsuyoshi since 2003