ASA の OS イメージからカーネルとファイルを切り出す

Qemu で Cisco ASA をホストすることにより、GNS3 上で Cisco ASA を利用することが出来ます。

Zip ヘッダーの位置を推測することで ASA の OS イメージやファイルを抽出することが出来ますが、その為には大前提として Zip ヘッダーの位置を特定する必要があります。しかし、世の先人が Any hope to run 8.2/8.3 code? Page 3 of 4 にカーネルとファイル部分の切り出し方法をまとめてくださっているようです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
kernel extraction: 

For 804 it is: 
dd if=asa804.bin of=asa804.kernel skip=94208 bs=1 count=1095871 
For 805 it is: 
dd if=asa805.bin of=asa805.kernel skip=94208 bs=1 count=1097120 
For 824 it is: 
dd if=asa824-k8.bin of=asa824.kernel skip=102400 bs=1 count=1338129 
For 831 it is: 
dd if=asa831-k8.bin of=asa831.kernel skip=94208 bs=1 count=1338768 

skip=x count=y means kernel start at x bytes from .bin file start, and has a size of y. 
We clearly see than between 80X and 82X/83X some bytes are added. 

To unpack/repack, see http://ers.msk.ru/cisco/pix7-asa8.html 
asa802-k8.bin ---> tail -c 13334352 asa802-k8.bin > asa802-k8.gz (1228B0) 
asa803-k8.bin ---> tail -c 13444944 asa803-k8.bin > asa803-k8.gz (1228B0) 
asa804-k8.bin ---> tail -c 12947265 asa804-k8.bin > asa804-k8.gz (1228BF) 
asa805-k8.bin ---> tail -c 12743983 asa805-k8.bin > asa805-k8.gz (122AD1) 
asa821-k8.bin ---> tail -c 15083928 asa821-k8.bin > asa821-k8.gz (122E68) 
asa822-k8.bin ---> tail -c 15083246 asa822-k8.bin > asa822-k8.gz (150112) 
asa824-k8.bin ---> tail -c 13821168 asa824-k8.bin > asa824-k8.gz 
asa831-k8.bin ---> tail -c 14510704 asa831-k8.bin > asa831-k8.gz (15dd90) 

ただ、上手く動作せず、Shell に落ちてしまう、という記載もある為、Qemu 上で Cisco ASA をホストするには、他に対処が必要なのかも知れません...