Linux

2010年6月 9日 (水)

Ubuntu10.04にjNetHackをインストール

この記事 がどうしても気になり、ゲームをしている暇はないのですが、インストールするだけしてみました。
すごく気になります。
なんだか今のゲームは複雑過ぎるような気がします。
最近はこういった昔のゲームのほうが楽しめるんじゃないかと思います。

インストールした手順です。

jNetHackインストール

1. ここからnethack-343-src.tgzとjnethack-3.4.3-0.10.diff.gzをダウンロード
http://sourceforge.jp/projects/jnethack/releases/

2. 展開とパッチ当て

% tar zxf nethack-343-src.tgz
% cd nethack-3.4.3
% zcat ../jnethack-3.4.3-0.9.diff.gz | patch -p1
% sh sys/unix/setup.sh

3. ソースの修正
• japanease/Install.lnxの内容を参照し、XI18N以外のところを反映
• include/config.hの#define XI18Nの行をコメントアウト
• include/config.hの#define COMPRESSの行を/bin/gzipに修正

4. make

%sudo apt-get install build-essential libncurses5-dev bison flex  
% make all
% sudo make install
% sudo chmod -R g+w /usr/local/games/lib/jnethackdir

5. 端末の設定
• 文字コードをEUC-JPにする

6. 起動

% /usr/local/games/jnethack

参考URL
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0115?page=2
http://yahny.tm.land.to/game/install_jnh_ubuntu.html

| | コメント (0) | トラックバック (0)

2010年5月18日 (火)

load averageの見方

LinuxやUnixでtopコマンド、uptimeコマンド、wコマンドを実行すると表示されるload average。
これっていったい何なんでしょう。

「load average」は、run queueに入っているジョブ*の数を表しています。run queueとはCPUに割り当てられたジョブが入れられる待ち行列のことで、CPU数が1つのときに「2」と表示された場合、CPUは2つのジョブを実行しています。この平均値が「load average」であり、左から1分、5分、15分間のrun queueにあるジョブ数となります。

引用元:http://www.itmedia.co.jp/enterprise/articles/0802/22/news074.html

要するに数が多いほどCPUに負荷がかかってるってことです。

| | コメント (0) | トラックバック (0)

2010年5月16日 (日)

tail -f を lessで行う

tail -f コマンドはテキストの内容表示を自動更新し追跡してくれるので便利です。
同じようなことがlessコマンドでも出来ます。
lessでファイルを開いたあと、F(大文字)を入力するだけです。
止めるときはctrl+cです。

参考URL:http://memo.jj-net.jp/265

| | コメント (0) | トラックバック (0)

2010年4月26日 (月)

アセンブラプログラムをデバッグする

アセンブラプログラムをデバッグするにはgdbを使用します。

こういったソースがあるとします。

.data
msg:    .ascii    "hello world\n"
msgend:    .equ    len, msgend - msg

.global main
main:
    movl $4,    %eax
    movl $1,    %ebx
    movl $msg,    %ecx
    movl $len,    %edx
    int $0x80
    ret

これをgccでコンパイルします。

gcc helloworld.s -o hw

そうするとhwという実行ファイルが出来るのでデバッグしてみます。

gdb hw

(gdb) break main
Breakpoint 1 at 0x804a01c
(gdb) run
Starting program: /home/hirosandesu/hw

Breakpoint 1, 0x0804a01c in msgend ()

(gdb) disassemble
Dump of assembler code for function msgend:
0x0804a01c <msgend+0>:    mov    $0x4,%eax
0x0804a021 <msgend+5>:    mov    $0x1,%ebx
0x0804a026 <msgend+10>:    mov    $0x804a010,%ecx
0x0804a02b <msgend+15>:    mov    $0xc,%edx
0x0804a030 <msgend+20>:    int    $0x80
0x0804a032 <msgend+22>:    ret   
0x0804a033 <msgend+23>:    add    %al,(%eax)
End of assembler dump.

(gdb) i r
eax            0xbffff494    -1073744748
ecx            0xd0951f80    -795533440
edx            0x1    1
ebx            0x27eff4    2617332
esp            0xbffff3ec    0xbffff3ec
ebp            0xbffff468    0xbffff468
esi            0x0    0
edi            0x0    0
eip            0x804a01c    0x804a01c <msgend>
eflags         0x200246    [ PF ZF IF ID ]
cs             0x73    115
ss             0x7b    123
ds             0x7b    123
es             0x7b    123
fs             0x0    0
gs             0x33    51

(gdb) p/x $eax
$1 = 0xbffff494
(gdb) stepi
0x0804a021 in msgend ()
(gdb) p/x $eax
$2 = 0x4
(gdb) stepi
0x0804a021 in msgend ()
(gdb) x/s 0xbffff3ec
0xbffff3ec:     "VK\025"
(gdb) stepi
0x0804a030 in msgend ()
(gdb)
hello world
(gdb) c
Continuing.

Program exited with code 014.
(gdb) q

こんな感じです。
簡単に説明すると
gdb 実行ファイルで起動
break mainでmainにブレークポイントをセット
runで実行
disassembleでアセンブラを表示
i r(info register)でレジスタ情報の表示
p/x $eaxでeaxレジスタを16進数で表示
x/s アドレスでアドレス位置の文字列を表示
c(continue)で続行
qで終了

といった感じです。
楽しいですね。


| | コメント (0) | トラックバック (0)

2010年4月25日 (日)

vimで自動インデント

アセンブラコードを書いているときにvimで自動インデントが出来ないかと調べてみました。

有効
:set autoindent
無効
:set noautoindent

短縮形
:se ai
:se noai

簡単に出来ちゃうんですね。

参考URL:vi 自動インデントを無効にする方法

| | コメント (0) | トラックバック (0)

2010年4月24日 (土)

ophcrackを試してみた。

USBメモリからブートするubuntu9.10でwindowsのパスワードを解析してみました。

ubuntu9.10でaptitude install ophcrackでインストール出来ます。
こんなものまでパッケージで存在するなんてさすがLinuxだなと感心しました。

http://ophcrack.sourceforge.net/tables.php
ここからxp free fastの辞書をダウンロードして適当なフォルダに解凍します。
結構でかいです。

usbメモリからブートするとwindowsのディスクは簡単にマウントできます。

dfコマンドでマウント位置を確認。

ophcrack -g -w disk/WINDOWS/system32/config -t /home/k/tables_xp_free_fast

コマンドの引数では、windowsのsystem32/configフォルダのパスと辞書ファイルがあるディレクトリのパスをしていしてやります。

そうするとwindowsの全ユーザのパスワードがあっという間に解析されちゃいます。

これがブルートフォースアタックの威力なのですね。

参考URL:USBメモリ上のUbuntuでophcrackを使う

| | コメント (0) | トラックバック (0)

2010年4月22日 (木)

iconvによるテキストファイルの文字コード変換

sjisからutf8へ変換する例

iconv -f sjis -t utf8 input.txt

文字コードチェック

iconv -f utf8 -t utf8 input.txt || echo "not utf8"

| | コメント (0) | トラックバック (0)

2010年4月21日 (水)

NetBIOS名からIPを調べる。 IPからNetBIOS名を調べる。 in Linux

nmblookup NetBIOS名

nmblookup IPアドレス

相手側がファイルとプリンタの共有が有効になっている必要がある。

| | コメント (0) | トラックバック (0)

2010年4月17日 (土)

ubuntu9.10にvmware playerを入れてwindowsを動かす

ubuntu9.10でwindowsを動かしてみたくなったのでvmware playerを入れてみました。

そのときの手順です。

1.https://www.vmware.com/jp/products/player/
   ここからVMware Playerをダウンロード
  ・氏名、住所等を入力してから、送られてきたメールのリンクをクリック。
  ・VMware Player for 32-bit LinuxのBundleファイルをダウンロード

2. ダウンロードしたファイルをbashより起動

  bash ./VMware-Player-3.0.1-227600.i386.bundle

     参考URL: http://emasaka.blog65.fc2.com/blog-entry-457.html

3.windowsXP のインストールcdをイメージファイルに出力 iso9660
  ※3~4、7はネットブックでCD-ROMドライブがないためイメージを使用した。

4.ubunt9.10マシンへコピー

5.vmware player起動

6.Create a New Virtual Machine

7.isoイメージを選択

8.Windows のセットアップが始まる

セットアップ完了。

最新のvmware playerはイメージも作れるようで、すごく簡単に出来ました。

| | コメント (0) | トラックバック (0)

2010年3月31日 (水)

i-nodeに関連するメモ

           

i-nodeとは

ext2などのUnix系ファイルシステムで古くから使われているデータ構造である。inode にはファイルディレクトリなどのファイルシステム上のオブジェクトに関する基本情報が格納される。

ls -iでファイルやディレクトリのi-nodeを確認することが出来る。
1537577 %backup%~  1537512 a.out    1537497 aiueo

stat aiueoでさらに詳細な内容が見れる
  File: `aiueo'
  Size: 5               Blocks: 8          IO Block: 4096   通常ファイル
Device: fc00h/64512d    Inode: 1537497     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1003/  hogehoge)   Gid: ( 1003/  hogehoge)
Access: 2010-01-26 12:35:07.000000000 +0900
Modify: 2009-07-27 15:43:00.000000000 +0900
Change: 2010-03-25 13:02:07.000000000 +0900


i-nodeによるハードリンクとシンボリックリンクの違い




ハードリンクは同じi-nodeのポインタを示しているだけ
シンボリックリンクは別のi-nodeが出来てしまう。
そのため、シンボリックリンクはbbb.txtを削除してもaaa.txtは消えない。


1. ls -lでハードリンクの数を確認できる。

  -rw-r--r-- 1 hogehoge hogehoge      5 2009-07-27 15:43 aiueo
            ↑ ハードリンクの数

2.hogehoge@rose:~$ ln aiueo aiueo2
3.hogehoge@rose:~$ ls -l

  -rw-r--r-- 2 hogehoge hogehoge      5 2009-07-27 15:43 aiueo
  -rw-r--r-- 2 hogehoge hogehoge      5 2009-07-27 15:43 aiueo2

   ハードリンクの数が2になった。

4.hogehoge@rose:~$ ls -i
  1537497 aiueo    1537497 aiueo2

 同じi-node

5. hogehoge@rose:~$ rm aiueo2

   aiueo2だけ削除される

※ハードリンクはファイルにしか出来ない
※ハードリンクは同じパーティション内しかダメ


inodeを指定してファイルを削除


find . -inum 12345 -ok rm '{}' \;

-ok は確認用につけてあるだけ


inodeを元に12ブロック以下のファイルをダンプ

1.dfでパーティションのデバイスを取得 /dev/sda1とする

2.debugfs /dev/sda1

3.stat <i-node番号>
   詳細を表示

4.正しければ、dump <i-node番号> /home/hogehoge/filename


| | コメント (0) | トラックバック (0)