俺が実力をつけていくのを暖かく見守るスレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
使うディストリビューション
debian on android
debianバージョンは5
gnuのみなのでguiソフトウェアは使えない
なんの実力かって言われても正直困る
とりあえずまずはシェルスクリプトを極めようと思う 次は変数に文字ではなく数字を置き換えてみたいと思う
#!/bin/bash
u=10
echo $u
これで表示されるがこれに足し算をつける場合はecho $u+2ではない
echo `expr $u + 2`
である。
計算するときはexprと`を使う
+の間にスペースを開けるのも重要だ
実行してみる 実行した
掛け算の場合は/* で()で計算を指定したいときは\(\)である
つまり
#!/bin/bash
u=10
echo `expr \($u + 2. \) \* 3
これを実行する 次は配列だ
配列は一つの記号でいくつもの変数を使いたいときつかう
#!/bin/bash
a(2 3 4)
↑1つの記号に3つの変数がある
echo ${a[1]}
↑要素数を指す0が2、1が3、2が4
echo ${a[@]}
↑全部表示
echo ${#a[@]}
↑要素の数
2.3.4なので3を表示する a=(だったな
ちょいちょいみすがある
実行結果はこうなった
2
3
234
2 次に配列を置き換え、追加、使い方を学ぶ
#!/bin/bash
a=(2 3 4)
a[2]=10
echo ${a[@]}
これは要素2番目を10に置き換えてという意味
a+=(20 30)
echo ${a[@]}
これは変数20と30を追加する
d=(`date`)
echo ${d[3]}
これはdateコマンドの三番目を表示せよってことだ 実行すると俺のAndroidではこうなった
2 3 10
2 3 10 20 30
16:31:45 これで配列は終わりだ
配列を弄るときはechoの部分を自分が使うコマンドに変えるんだ
次は条件分岐に入る 条件分岐
正常終了なら0を返す
#!/bin/bash
test 1 -eq 2; echo $?
と打つ。
テストは評価コマンド。-eqは等しければ0を等しくなければ1
そして$?は直前に行った命令が正常に終了したかどうか判定するコマンドだ
つまり1と2が等しければ0等しくなければ1だ
もちろん等しくないので1を返す
実行してみよう 1
これが帰ってきたと思う
のでtest 1 -eq 1; echo $?に変えてみよう
そうすると0が帰ってくるはずだ
評価オプションはこの通り
-eqが等しければ
-neが等しくなければ
-gtはより大きければ
-geは以上であれば
-ltは小さければ
-leは以下であれば
評価 数字 条件 数字; 正常終了したか表示せよ
ってことだな そして評価は数値だけじゃなく文字列もある
文字列は
= 等しければ
!= 等しくなければ
ファイルの条件分岐は
-nt ファイルのどちらが新しいか比較
-ot
-e ファイルが存在するか確認
-d ディレクトリとかどうかを調べる
test -e unko.sh; echo $?
っとやってみよう
正常終了するので0が帰ってくるはずだ >>1 なんか変なスレがたったよぉ(;゚ Д゚)!? そしてこれらを組み合わせるものが
-a And
-o or
組み合わせは
test 1 -eq 1 -a 2 -eq 2; echo $?
1と1が等しいく2と2が等しいか評価せよ とりあえずtestの条件分岐はこれまでにして
次はif文での条件分岐をしていきたい #!/bin/bash
x=70
if test $x -gt 60
then
echo "OK"
fi
と書く
これはもしx70が60より大きかったらokと表示せよってことだ
fiは句読点みたいなもんだ みやすさでこう書いても良い
if [ $x -gt 60 ]; then
スペースを開けるのを忘れるなよ #!/bin/bash
x=70
if test $x -gt 60; then
echo "OK"
fi
のthen条件に合えばって意味だ
じゃあ条件似合わなかったらどうするか
elseを使う
#!/bin/bash
x=40
if test $x -gt 60; then
echo "OK"
else
echo "penis_|_"
fi
こうすると恐らくペニスがでるはずだ 更にelseからifで条件分岐もできる
#!/bin/bash
x=40
if test $x -gt 60; then
echo "OK"
elif [ $x -gt 40 ]; then
echo "penis_|_"
else
echo "manko(;)"
fi if文の使い方は終わったので
次はcase文をやりたいとおもう #!/bin/bash
signal="red"
case文は
評価式 変数 in
"変数") 実行コマンド
;;←終了の合図
case $signal in
"red")
echo "manko"
;;
↓は全てに当てはまらないとき
*)
echo "tinitin"
;;
esac さてこれでcase文は終わった
次はwhile文だぜ! Linux, MacOS X でも、PowerShell が動くし、
.NET も呼び出せるのに、なんで今さら、Bash? while文は繰り返すスクリプトだ
while 評価式
do
コマンド
done
#!/bin/bash
i=0
while test $i -lt 10
do
i=`expr $i + 1`
echo $i
done >>40
Debian on androidだから っていうかlinux板でwindowsのコマンドなんか使わんよ これで1から10まで表示できたと思う
これを応用して別の実行コマンドを使ってくれ
そして次は無限ループのやり方と抜け出し方だ 無限ループはwhileの最後に:をつけるだけでいい
ただ抜け出したいときはbreakかcontinueを使う
#!/bin/bash
i=0
while :
do
test $i -lt 10
i=`expr $i + 1`
if [$i -eq 3 ]; then
continue
fi
if [ $i -eq 10]; then
break
fi
echo $i
done 繰り返しでいえばfor文もある
for i in 配列
実行コマンド
だ!
#!/bin/bash
for i in (1 2 3 4 5)
do
echo $i
done `seq 1 100` や配列を入れたりして繰り返し使う 次はコマンド引数だ!
コマンドラインがよそのファイルへ実行するときの引数のことだ
#!/bin/bash
echo $0 ←これは引数の数
echo $1
echo $2
echo $@ 引数全部
echo $# 引数の個数
これをviで書いてsh unko.sh $0 $1を書く 実行すると引数を渡してそのファイルを実行すると思う
といってもつまり sh .sh 実行ファイルA
で実行ファイルAと.shを実行するわけだな
めんどくさくなってきたからだい部説明省いたけど 次はユーザーからの入力受付と選択肢だ
linux使ってるならy/nとか見てキーボード打ったことあるだろあれだあれ
#!/bin/bash
while :
do
read key ←読み込み宣言
echo "you pressed $key"
if[$key ="end"]; then
break
fi
done
だ
もうこれだけ見たら説明はいらんだろ
エンドってうったらループが終わる仕組みだぞ そんで選択肢をつけるぞ!
#!/bin/bash
select option in Y /n
do
echo "you press $option"
break;
done
yかnを選ぶと抜けられる さて次はお待ちかねソースコードに行番号を降っていくぜ
さっきのコマンドライン見て???ってなったやつはこれをみたらわかる #!/bin/bash
i=1
while read line 行番号宣言
do
echo "$i: $line"
i=`expr + 1` 1ずつ増やす
done<$1 コマンドライン引数
sh 名前.sh 別ファイルだ >>41
PowerShell_ise なら、
$i = 0
while( $i -lt 5 ){
$i = $i + 1
echo $i
} パワーシェル使ってないからパワーシェルの話しされてもボクチン困っちゃう 次は関数の使い方だな
複数の処理をまとめて使めるときのやーつな
名前() {
処理
}
これだけだ
関数内だけで処理したいときはlocalを頭につければいい
逆に関数外で呼び出したいときは
hello(){
echo "hello"
I=5
echo $i
}
echo $i
関数の外から中へ実行させたい場合は
echo "hello $1"
}
hello mike
とすればいい あとは煩わしいオプション覚えれば大体コマンド作れちゃうね つまり最初に行ってたソースコード比較はもう今の基礎だけで作れてしまうわけだ
コマンドライン渡して関数内で行番号ふってif文で変数かなんか使ってチェック
あとはnmapかぁ
こっちは凄まじく長く奥が深そう さてさて最初に行ったチェックスクリプト作ろうかな
ダルイけど自分の約束だからな nmapは筋トレしたあとやります
2時か一時かな
明日休みだったらいいのに 筋トレとかもってまわったいいまわしはしなくていいぞ。おなにーってはっきりいえ
それから、これまではあたたかく見守ってきたけど、これからは厳しくいくからな。 ワロタ
筋トレノコとオナニーって呼んでるのお前だけだぞwww さて書いていくか
いくら最新機種だと言っても遅いな nmap [オプション] {ターゲット}
オプション
-A OSとバージョンを検知しようとする
-sL 指定したネットワーク内のホスト一覧を表示する(リストスキャン)
-sP pingに応答するホストの一覧を表示する(Pingスキャン)
-sS TCPのSYNパケットを送ってSYN+ACKが返ってくるか調べる(TCP SYNスキャン/TCPハーフスキャン)
-sT TCPでポートに接続できるかを調べる(TCP Connectスキャン)
-sV ソフトウェア名とバージョンの表示を有効にする
-sU UDPポートをスキャンする(UDPスキャン)
-sF FINフラグだけのパケットを送って調べる(TCP FINスキャン)
-sN まったくフラグなしのパケットを送って調べる(TCP Nullスキャン)
-sX FIN/PSH/URGフラグを立てたパケットを送って調べる(Xmasスキャン)
-sA ACKフラグだけのパケットを送って調べる(TCP ACKスキャン) まだあるけどこんなもんだろ
nmapの使い方
指定したホストやネットワークに対し、いわゆるポートスキャンを実施し、開いているポート(稼働しているサービス)やそのバージョン、OSの種類を調査する。 -b FTP_HOST FTP_HOSTのFTPサーバを利用して調べる(FTPバウンススキャン)
-O OSを検出しようとする
-P0 Pingスキャンを行わない(アクティブなマシンを割り出すためのホスト発見プロセスが省略される)
-PS [PORTLIST] PORTLISTで指定したポート(デフォルトは80番)にSYNフラグ付きの空TCPパケットを送信する(TCP SYN Ping)
-PA [PORTLIST] PORTLISTで指定したポート(デフォルトは80番)にACKフラグ付きの空TCPパケットを送信する(TCP ACK Ping)
-PU [PORTLIST] PORTLISTで指定したポート(デフォルトは31338番)に空UDPパケットを送信する(UDP Ping)
-PE ICMPタイプ8(エコー要求)パケットをターゲットに送信する(ICMP Ping)
-PR IPベースのスキャンより高速なARPスキャンを行う(ARP Ping)
-n DNSによる逆引き名前解決を行わない
-R すべてのターゲットに対して常にDNSによる逆引き名前解決を行う
-p PORT スキャンするポートをPORTで指定する(1-1023、U:53,T:80)UはUDPポート、TはTCPポートを示す
-F 限定したポートのみ調べる(約1200ポート)
-r 調べるポートの順番を無作為(デフォルト)ではなく順に選ぶ ターゲット
IPADDR IPアドレスで指定する(「192.168.0.1-250」「192.168.0.1,3,5」といった指定も可能)
IPADDR/MASK IPアドレスとサブネットマスクでネットワークの範囲を指定する
HOSTNAME/MASK HOSTNAMEで指定したホストのIPアドレスとサブネットマスクでネットワークの範囲を指定する
-iL TARGETFILE ファイルTARGETFILEから指定するターゲットを読み込む
-iR NUM NUMで指定した数のホストを無作為に生成する(0なら無制限)
--exclude HOST... 指定したホストHOSTやネットワークをスキャン対象から除外する(","区切り)
--excludefile EXCLUDE_FILE ファイルEXCLUDE_FILEから除外するターゲットを読み込む ポートの状態
open ポートが開いている(TCPコネクションやUDPパケットをアクティブに受け入れている状態)
closed ポートが閉じている(探査パケットを受け入れたり応答したりするが、待機しているアプリケーションがない)
filtered パケットフィルタリングによりポートが開いているかどうかを判別できない
unfiltered ポートにアクセスできるもののポートが開いているかどうかを判別できない
open|filtered ポートが開いているのかパケットフィルタリングされているのかを判別できない
closed|filtered ポートが閉じているのかパケットフィルタリングされているのかを判別できない ネットワーク監視ツール
Zabbix, OSSのNagios
脆弱性診断
Vuls
ハニーポット・不正アクセス攻撃
Cowrie
GUIで、ポートスキャン(nmap)
Zenmap
Zenmap を使えばいい >>1よ、迷わず成仏して下さい。
南無阿弥陀仏南無阿弥陀仏 結局すぐ飽きて放棄されちゃうんだよね
日記スレでよかったじゃん >>88
お前ID:h6V4mIzlだろ
粘着してるとか気持ち悪い さて今回はDebian on androidをやっていきたいと思う linux on android自体完成されたプロジェクトだったし、Androidのバージョンが上がるにつれ皆開発に飽きてしまった経緯と、vncで動かせるアプリが完成してしまったという経緯があるのでそれでいいんじゃね?というリナクサー特有のそれcuiでできるじゃん思考が誕生...
結果開発がストップ
試したところ最新の適応してるアーキテクチャがDebian先輩だけだったので素人の俺がシェルスクリプトを完成させたいと思う ターミナルエミュレータってコピペできないのが玉に瑕だよね
俺のだけか知らんけどさ とりあえず入れてshしてみたところ
エラー libsigchain so
とでてきた なのでchroot のところと変数のところにunset LD_PRELOADと書いた するとリブシグチェインは消えた
元々パスが通ってなかったから関係ないと思うけどな
いくつかのapt-getはでパッケージは入れられるものの問題が生じる
またapt-get upgradeもしくはupdateを使うとエラーが生じる
それとgnuバージョンが5.0なので8.0に上げる
今回の課題はこれだ 何を使っててどんなことを望んでるのかよくわからないが xterm なら shift+左ボタンでコピーできるよ。
script コマンドなんかも知ってて損は無いと思うよ。 あとcuiでlinuxを使うことを目的としてるのでguiを期待してる人はDebian no rootでも使ってくれ
てかぶっちゃけそっちのほうが早いと思う >>98
すまんそっちじゃなくてAndroid Terminal emulaterで動かすことを想定してる 何を望んでるかって言われるとそうだな
自分でディストリビューション配布できるくらいにはなりたいね
何がしたいとかじゃなくて俺の場合は単純に作って終わり理解して終わりが大半かもな
何がしたいのか俺もわからん とりあえず興味がある人はlinux on androidのurl貼っていくのでそこでDebianのスクリプトとcoreパッケージをダウンロードしてくれ
完成次第俺がcui版Debian on android 6.0版を配布したい
7.0は知らない ここからスクリプトとコアパッケージを入れて解答sh debian〜で動くと思う
でも新しいAndroidのsd内蔵型は多分エラーでるぞ
https://sourceforge.net/projects/linuxonandroid/files/Debian/ あと動かしたあとmkdirやろうとするとAndroidが邪魔してくることがあるのでマウント リマウントは行っといてくれ まずこのスクリプトを動かそうとするとpassword打ってくれと言われるがsuidとやらを設定しないとpassword打とうが打たまいがあまり関係ない
俺の携帯だけかも知らんがとりあえずまずはsuidの設定から始めようと思うでごんすよ とりあえず今ん所マニュアル化
debianのscriptとcoreをダウンロードした後に解凍 sh 〜で動く
Androidバージョン4.0はこれでおしまい
4.0以降は進む
おそらくリブシグチェインのエラーが出るのでスクリプトをviで書き換え
変数とchrootのところに unset LD_PRELOAD
これで残りはaptとsuid、バージョンアップデートか 元々がvncで動かすようで作られてるからちょっと面倒だな
nmapとかはダウンロードできてすぐ動かせるんだけど うーん apt以外は普通のlinuxなんだけどな
apt使えないdebianってarch… apt updateの前に必要なupdateしてそのまた必要なupdate…
蟻地獄ワロタ いや違うわこれ
initがsdカード設定になってるからディレクトリが存在しないんだ
だからなんか知らんけど動いてる状態になってるのか ■ このスレッドは過去ログ倉庫に格納されています