【ちおちゃんの通学路】(TVアニメPV AnimeExpoバージョン) ☆2018年7月放送開始!
アニメ『ちおちゃんの通学路』
通学路では、いろんな出来事が起こるんですね。登場キャラが好きなので継続して見るけれど、ギャグアニメとして見るのは物足りない感じです。FPSやりこんでると、もっと面白かったかもですが。
今回はタイトルの通り、イメージファイルを編集したら、
マウントしてディレクトリ内のファイルの内容も変更されるかやってみます。
まずはイメージファイル作成。
takk@deb9:~/tmp$ truncate -s100M a.bin takk@deb9:~/tmp$ sudo mkfs -t ext3 a.bin mke2fs 1.43.4 (31-Jan-2017) Discarding device blocks: done Creating filesystem with 102400 1k blocks and 25688 inodes Filesystem UUID: c08fc04b-3fe9-4fd4-87ad-d051671fba36 Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done takk@deb9:~/tmp$
作成できたので、ディレクトリへマウントします。
takk@deb9:~/tmp$ mkdir test takk@deb9:~/tmp$ sudo mount -o loop a.bin test takk@deb9:~/tmp$
適当なファイルを作成。hello.txtにHELLOと書き込んで、ディレクトリをアンマウント。
takk@deb9:~/tmp$ sudo chmod 777 test takk@deb9:~/tmp$ cd test takk@deb9:~/tmp/test$ echo HELLO > hello.txt takk@deb9:~/tmp/test$ cd .. takk@deb9:~/tmp$ sudo umount test takk@deb9:~/tmp$
イメージファイル内に、さきほど書き込んだHELLOがどこに格納されているか確認。
takk@deb9:~/tmp$ hd a.bin | grep -i hello 0007f030 d4 03 09 01 68 65 6c 6c 6f 2e 74 78 74 00 00 00 |....hello.txt...| 00085c30 d4 03 09 01 68 65 6c 6c 6f 2e 74 78 74 00 00 00 |....hello.txt...| 00500400 48 45 4c 4c 4f 0a 00 00 00 00 00 00 00 00 00 00 |HELLO...........| takk@deb9:~/tmp$
面倒なので、strings使います。stringsはバイナリから文字列を抽出してくれます。-tdオプションで、文字列の位置も表示できます。
takk@deb9:~/tmp$ strings a.bin -td 1068 ;+h[]+h[ 1160 /home/takk/tmp/test 1272 =eAX 267400 ;+h[S+h[S+h[ 268680 S+h[S+h[S+h[ 520224 lost+found 520244 hello.txt 536712 ;+h[ 537652 [h+@#I7 539784 ;+h[F+h[ 540724 [h+K# 545160 S+h[S+h[S+h[ 545928 ;+h[S+h[S+h[ 547872 lost+found 547892 hello.txt 548908 ;+h[;+h[ 549000 /home/takk/tmp/test 549112 =eAX 550964 [h+Y( 5243904 HELLO 8389880 =eAX 25167096 =eAX 41944312 =eAX 58721528 =eAX 75498744 =eAX takk@deb9:~/tmp$
HELLOは、5243904バイト(0始まり)の位置ですね。
ddでイメージファイルを書き換え。HELLOの先頭1文字をTにして、TELLOに書き換えます。
takk@deb9:~/tmp$ echo T | dd seek=5243904 bs=1 count=1 of=a.bin conv=notrunc 1+0 レコード入力 1+0 レコード出力 1 byte copied, 0.00045496 s, 2.2 kB/s takk@deb9:~/tmp$
書き変わったか確認。
takk@deb9:~/tmp$ !st | 5243904 takk@deb9:~/tmp$ strings a.bin -td | grep 5243904 5243904 TELLO takk@deb9:~/tmp$
もう一度、イメージファイルをマウントして、中身を確認します。
takk@deb9:~/tmp$ sudo mount a.bin test takk@deb9:~/tmp$ sudo chmod 777 test takk@deb9:~/tmp$ cd test takk@deb9:~/tmp/test$ cat hello.txt TELLO takk@deb9:~/tmp/test$
hello.txtの中身がTELLOに変わってます。
まったく読めなくなると予想してたんですが、意外と簡単に操作できるものなんですね。
コメント