僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
中にsshする方法を追加してみた。
別のサーバのsshdをポート指定で起動し、ルータをいらって
そのポート向けのパケットをそっちに振り向ける。そして外からは違うホスト
名(既に登録済み)でアクセスする(でないとknown_hostsの食い違いで
@に囲まれた警告
が出る)。
事に成功。
かくして不正侵入される危険性が、また一つ増えた。
~$ ssh -p XXXX REMOTE_HOST @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 警告: 遠隔ホストの認証が変更されています! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 誰かが悪いことをやった可能性があります! たった今、誰かがパケットの盗聴(中間者攻撃)をやったかもしれません! XXXホストキーが変更されているだけという可能性もあります。 遠隔ホストから送信されたXXXキーによるフィンガープリントは XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.です。 あなたのシステム管理者に連絡してください。 このメッセージが出なくなるように/DIR/USER/SECRET/known_hostsに正しい ホストキーを追記してください。 /DIR/USER/SECRET/known_hostsに必要なキーはXXです。 遠隔ホストのXXXホストキーが変更され、厳密にチェックされました。 ホストキーの認証に失敗しました。
net-snmp。tcpdump -n -i lo とか見ながら色々。
$ snmpwalk -v 1 localhost -c COMMUNITY sysContact SNMPv2-MIB::sysContact.0 = STRING: Me<ACCOUNT@example.com> $ snmpwalk -v 1 localhost -c COMMUNITY iso.org.dod.internet.mgmt.mib-2 (ry $ snmpwalk -v 1 localhost -c COMMUNITY iso.org.dod.internet.mgmt.mib-2.system.9.1
ノートに入れたmadwifiの動作確認が取れた。
Inspiron6000にはBCM4306が付いてるが、これはうまく動作しなかった。
デバイスとして見えてはいるが、起動中に切れてしまうようだ。
Fn+F2によるON/OFFもダメ。
$ dmesg | grep -n bcm 234:bcm43xx driver 236:bcm43xx: Chip ID 0x4306, rev 0x3 237:bcm43xx: Number of cores: 5 238:bcm43xx: Core 0: ID 0x800, rev 0x4, vendor 0x4243, enabled 239:bcm43xx: Core 1: ID 0x812, rev 0x5, vendor 0x4243, disabled 240:bcm43xx: Core 2: ID 0x80d, rev 0x2, vendor 0x4243, enabled 241:bcm43xx: Core 3: ID 0x807, rev 0x2, vendor 0x4243, disabled 242:bcm43xx: Core 4: ID 0x804, rev 0x9, vendor 0x4243, enabled 243:bcm43xx: PHY connected 244:bcm43xx: Detected PHY: Version: 2, Type 2, Revision 2 245:bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2) 246:bcm43xx: Radio turned off 247:bcm43xx: Radio turned off
Broadcomのサイトにも、めぼしい情報なさげ。
Plamo-4.21にデフォルトでFirefoxが入ってるとは全然知らなかった。
ずっとFirefox-2.0とごっちゃにしていた。
なにげなくwhich firefoxしてようやく気づく。
自分がインストールした/usr/local/firefoxは、
当然PATHの検索順がずっと後ろだった。
$ lv /var/log/removed_packages/firefox PACKAGE NAME: firefox-1.5.0.7-i386-P1 COMPRESSED PACKAGE SIZE: 14763 K UNCOMPRESSED PACKAGE SIZE: 56920 K PACKAGE LOCATION: /var/adm/mount/plamo/xap/firefox-1.5.0.7-i386-P1.tgz PACKAGE DESCRIPTION: firefox: Webブラウザ DeerPark firefox: firefox: Mozillaテクノロジを用いたオープンソースWebブラウザFirefoxの firefox: 独自ビルド版です。GTK+2が必要です。Geckoレンダリングエンジン firefox: のSDKが含まれており、GNOME2を使用する場合には必須です。 firefox: firefox: 本パッケージでは、日本語ロケール、Pluggerと、いくつかの検索 firefox: プラグインを追加しています。 (ry
Firefoxは野良ビルド(暖簾分け?)&&リリース大流行、なのかも。
Bon Echo 、DeerPark、あと何だったっけ。
$ nmap localhost (ry PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind 631/tcp open ipp 722/tcp open unknown 820/tcp open unknown 2049/tcp open nfs 7100/tcp open font-service Nmap finished: 1 IP address (1 host up) scanned in 0.136 seconds $ nmap -6 ::1 (ry PORT STATE SERVICE 22/tcp open ssh 631/tcp open ipp Nmap finished: 1 IP address (1 host up) scanned in 0.148 seconds
スライドの一番下のリンク([前へ(h)]|[次へ(L)])が見えない。
他のページは見えてるけど
WinXPのFirefox-1.5.0.8でダメ。それ以外ではOKなのに。
libpcap-0.9.5とtcpdump-3.9.5にオプションをつけて
再度make install。
./configure --help にはいずれも明記されてなかったが、
デフォルトは非対応らしい(libpcapを対応させれば
tcpdumpにはオプションは不要だったかもしれない)。
ポリタンクのetchからv6ホストめがけてping6してみた。
遅い。3発連続して打つのに10秒ほどもかかってる。
今度もDNSが原因らしい。/etc/resolv.confをいらってv4ルータからSargeを 見るようにしたら、まともになったから。
例によってtcpdumpでキャプチャして、Wiresharkで見てみる。
echo requestに先立って2回、数秒間をおいてPTRを探索している。タイムアウトになるのを
待ってからパケットを送信しているっぽい。
DNSサーバを変えた後のパケットも見たが、サーバからNo Such Name
が返るとすぐecho requestするようになった。
逆にPlamo-4.21のv6ホストからetchに向けてping6してみた。やっぱり 別のDNSサーバにPTRを聞きに行っている。
確認の意味合いでv4でping してみる。v4ではDNSには(当然?)問い合わせなど 出していない。
Device type: general purpose Running: FreeBSD 5.X, Linux 2.4.X, OpenBSD 3.X OS details: FreeBSD 5.2 - 5.4, FreeBSD 5.3-RELEASE, \ Linux 2.4.27 with grsec, OpenBSD 3.0 SPARC with pf \ "scrub in all", OpenBSD 3.6, OpenBSD 3.6 x86 with pf \ "scrub in all", OpenBSD 3.7 (ry
FreeBSDのバージョンが覗けるのは考えものかも。
OpenBSDは使ってないのだけど。
家のLANのなかでもう少し。
とあるv6 readyなホスト(Plamo4.21)からFreeBSDなホストに
向けてping6してみる。
ping6 -i 10 fe80::XXなどとやってる様子を、Wiresharkでもって
リアルタイムに眺める。
echo reqestとreplyの直後に、DNSサーバにPTRなQueryが飛び、No Such name。
家のDNS鯖も、AAAAを考えた方がいいかなぁ。
etchを入れなおすつもりでCD-RWを焼いた
が起動できない。別マシンも立たない。
もう一度繰り返したが、
やっぱりダメ。
ファイルシステムはちゃんと焼かれている
筈、と、マウントしかけて思い当たる節が。
historyを確認して、ppc向けのイメージを 何度も焼いていたことに漸く気づく。orz
etchを入れて、sources.listを書き換えて
apt-get。
VirtualBoxのためには、
deb http://www.virtualbox.org/debian xandros4.0-xn non-free
でうまくいったようだ。カーネルモジュールの
ためにカーネルも2.6.22に上げる。
Plamo-4.22とかを入れておく。キーマップがJP106だと
"\"が入力できないようだ。USなら問題なさげだが。
多分、それだけ。
簡単に死ぬとは限らないようだ。
少なくともPlamo-4.5 with kernel-2.6.27.2 と
Debian Etch with 2.6.24-etchnhalf.1-686 は
なんとか耐えていた。
ただし、どちらもスワップの嵐で、まず実用にならなくなる。
コンソールでのCtrl-Alt-Delete は効くが、なかなか
再起動に至らない(数十分かかった)。
外向きのsshdがyesになっていた...orz
まあ、鍵なしの、ほとんどのホストは蹴る設定になってはいるが。
たとえばbash。
出力方法の書式(${hoge[num]})に、少し嵌った。
配列の隙間詰めはしないみたい。
$ ARRAY=(foo bar) $ echo ${ARRAY[1]} bar $ ARRAY[100]=baz $ echo ${ARRAY[99]} $ echo ${ARRAY[100]} baz
PHP には、配列と連想配列の区別がないらしい。
キーを省略すれば、先頭から番号が振られる、というところか。
$ cat array.php <?php $array1 = array('first', 'second'); $array2 = array( 'one' => 'first', 'two' => 'second' ); echo 'array1[1] is ' . $array1[1] . "\n"; echo 'array2["two"] is ' . $array2['two'] . "\n"; ?>
$ php array.php array1[1] is second array2["two"] is second
fizzbuzzの冗長性は、あまりましにならなかったというか。
1 to: 100 do: [: x | (x \\ 3 == 0) & (x \\ 5 ~= 0) ifTrue: [Transcript show: 'fizz'; cr] . (x \\ 5) == 0 & (x \\ 3 ~= 0) ifTrue: [Transcript show: 'buzz'; cr] . (x \\ 3 == 0) & (x \\ 5 == 0) ifTrue: [Transcript show: 'fizzbuzz'; cr] . (x \\ 3 ~= 0) & (x \\ 5 ~= 0) ifTrue: [Transcript show: x printString; cr] . ]
やや複雑らしく、書きかけで動作確認していたら、77を出力した後、"fizz"を出力する前に、
77
"Global garbage collection... done"
fizz
と標準エラー出力が。完成するとばったり出なくなったけど。
それから、"!=" に当たりそうな演算子、じゃなくてメッセージは、"~=" らしい。
st> 3 ~= 4 true st> 3 == 4 false
fbarray := Array new: 100 1 to: 100 do: [: x | (x \\ 3) == 0 ifTrue: [fbarray at: x put: 'fizz']. (x \\ 5) == 0 ifTrue: [fbarray at: x put: 'buzz']. (x \\ 15) == 0 ifTrue: [fbarray at: x put: 'fizzbuzz']. (fbarray at: x) isNil ifTrue: [Transcript show: x printString; cr] ifFalse: [Transcript show: (fbarray at: x); cr] ]
Rasbian 上でビルドした、GNU Coreutils。
どちらもgmpが入っている。
8.19 $ time ./factor 4611686018427387903 4611686018427387903: 3 715827883 2147483647 real 2m3.874s user 2m3.030s sys 0m0.140s
8.21 $ time ./factor 4611686018427387903 4611686018427387903: 3 715827883 2147483647 real 0m0.023s user 0m0.020s sys 0m0.000s
高速化+桁上げは 8.20以降のはず
argv[1] が正解、 argv[2]が最大値。
思ったほど簡単にはできなかった。
#!/usr/bin/env python from sys import argv ans = int(argv[1]) largest = int(argv[2]) last = 0 def mlarger(num): last = num return int(round(num/2.0)) def smaller(num): return int(num + last/2+1) while largest != ans: print (largest, end=',') if largest > ans: largest = mlarger(largest) elif largest < ans: largest = smaller(largest) print (largest, 'is', ans)
$ for x in `seq 10`; do python3 div2.py3 $x 10; done 10,5,2,1 is 1 10,5,2 is 2 10,5,2,3 is 3 10,5,2,3,4 is 4 10,5 is 5 10,5,6 is 6 10,5,6,7 is 7 10,5,6,7,8 is 8 10,5,6,7,8,9 is 9 10 is 10
試した範囲内(1000)では一応たどり着くが、 後のほうはかなり非効率だったりする。
$ python3 div2.py3 29 30 30,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 is 29
手書きの何かはまだ必要なようだ。
#!/usr/bin/env python3 from sys import argv from time import sleep from math import ceil ans = int(argv[1]) largest = int(argv[2]) mynum = 0 temp = largest while mynum != ans: # sleep(0.3) print(mynum,end=',') if mynum < ans: temp = int(ceil(temp / 2)) mynum = mynum + temp elif mynum > ans: temp = int(ceil(temp / 2)) mynum = mynum - temp print (mynum, ' is' , ans)
$ python3 two_div.py3 29 30 0,15,23,27,29 is 29
1000以下で試したが、探索の最大が11回だった。
$ for x in `seq 1000` > do python3 two_div.py3 $x 1000 | > awk -F, '{print NF, $NF}' > done | sort -nr | head 11 999 is 999 11 997 is 997 11 995 is 995 11 993 is 993 11 991 is 991 11 99 is 99 11 989 is 989 11 987 is 987 11 985 is 985 11 983 is 983
$ python3 two_div.py3 985 1000 0,500,750,875,938,970,986,978,982,984,985 is 985
ずっと電話機として使用していたNichePhone-S 4G は、
来年1月には使えなくなる。
ので、SIMカードをiPhoneSE初代に入れてみた。
カードサイズは同一で、送受信も問題なし。
満充電して、ネットワーク機能/Bluetoothを切って
通話のみ有効にしておいて、10時間ほど試用。
テスト通話数回、一分ほどかけると1%は減った。
でも現在96%くらい。
待受だけならかなり使える、かもしれない。
省電力を有効にする。電話の着信音設定を いじっているうちに、バッテリー残量は95%になった。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。