-
Linux
-
俺が実力をつけていくのを暖かく見守るスレ [無断転載禁止]©2ch.net
-
UPLIFTで広告なしで体験しましょう!快適な閲覧ライフをお約束します!
使うディストリビューション
debian on android
debianバージョンは5
gnuのみなのでguiソフトウェアは使えない
なんの実力かって言われても正直困る
とりあえずまずはシェルスクリプトを極めようと思う - コメントを投稿する
-
シェルスクリプトはスクリプトを見比べて違ってる部分を表示するってスクリプトにしたい
そこでifを使うことにした
スクリプトに行番号をわりふりifで判定違う部分を出力とする
俺の実力は素人に毛が生えた程度なのであしからず -
あとはnmapの使い方を学びたい
当分の目標はこれにする -
まずシェルスクリプトを書くには
vimで適当なファイルを作る
別につけなくてもいいが.shをつけるのが通例だそうだ
なので作ってみた
unko.sh
できない…めんどくさいのでAndroidでシェルスクリプトを作ろうとしたができなくなってる
Androidの方でリードオンリーになってるからか…
mount -o rw,remount /
できた
Debianのほうも多分そうなってるので後で解除しとく -
日記スレはもうあるからそっち使ってよ
http://hayabusa6.2ch...gi/linux/1444805068/ -
初心者が成長してくのを暖かく見守るって方向だからスレの趣旨が違うじゃん
-
同じだよ
-
debianの方はできなかったのでAndroidで適当なディレクトリを作った
ディレクトリというのはファイルのファイルだ
mkdir unko
cd unko
unko.shを作成
シェルスクリプトは始めた#!/bin/bashからだそうなので
取りあえず
#!/bin/bash
echo "unko"
っとしてみた -
unko
と表示した
#!/bin/bashはシェルスクリプト呼び出し
echoは表示せよ
echo "unko";
で一区切りにして
echo "unko"; #うんこ表示
と区切らず1行に書くこともできる
#はそもそも表示されないから実行として扱われるか知らんがそうしておこう -
次は変数を使ってみたいと思う
変数とは文字の置き換えだ
変数を表示したいときは$変数と書く
#!/bin/bash
u="unko"
echo $u
echo "$u"
echo "${u}"
と書く
{}がないと実行されない恐れがあるらしい
ちなみに連結する場合は
echo "$u$u"
''は変数が実行されずそのまま表示するというパターンらしい
echo '$u'
実行してみる -
unko
unko
unkounko
$u
と表示された
どうやら本当のようだ -
次は変数に文字ではなく数字を置き換えてみたいと思う
#!/bin/bash
u=10
echo $u
これで表示されるがこれに足し算をつける場合はecho $u+2ではない
echo `expr $u + 2`
である。
計算するときはexprと`を使う
+の間にスペースを開けるのも重要だ
実行してみる -
実行した
掛け算の場合は/* で()で計算を指定したいときは\(\)である
つまり
#!/bin/bash
u=10
echo `expr \($u + 2. \) \* 3
これを実行する -
36
実行した
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が等しいか評価せよ -
>>26
俺の成長を見守るスレ -
とりあえず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 -
少し休憩
あと少しでシェルスクリプトマスターだな -
てかこれc言語に似てるな
-
よーしがんばるぞー
天才ハッカー目指そう -
さてこれで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 別ファイルだ -
パワーシェル使ってないからパワーシェルの話しされてもボクチン困っちゃう
-
もうほとんど終わりだ
ラスト行くぞー -
次は関数の使い方だな
複数の処理をまとめて使めるときのやーつな
名前() {
処理
}
これだけだ
関数内だけで処理したいときはlocalを頭につければいい
逆に関数外で呼び出したいときは
hello(){
echo "hello"
I=5
echo $i
}
echo $i
関数の外から中へ実行させたい場合は
echo "hello $1"
}
hello mike
とすればいい -
基礎終わったぁああああああ
-
あとは煩わしいオプション覚えれば大体コマンド作れちゃうね
-
つまり最初に行ってたソースコード比較はもう今の基礎だけで作れてしまうわけだ
コマンドライン渡して関数内で行番号ふってif文で変数かなんか使ってチェック
あとはnmapかぁ
こっちは凄まじく長く奥が深そう -
いざできるとなるとめんどくさくなってきた
-
とりあえずまずは少し休もう
-
さてさて最初に行ったチェックスクリプト作ろうかな
ダルイけど自分の約束だからな -
>>57
$iが抜けてる -
作る必要性がなくなったわ
すまぬ -
問題が解決した
-
nmapは筋トレしたあとやります
2時か一時かな
明日休みだったらいいのに -
筋トレとかもってまわったいいまわしはしなくていいぞ。おなにーってはっきりいえ
それから、これまではあたたかく見守ってきたけど、これからは厳しくいくからな。 -
ワロタ
筋トレノコとオナニーって呼んでるのお前だけだぞwww -
nmapしようかな
-
さて書いていくか
いくら最新機種だと言っても遅いな -
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 ポートが閉じているのかパケットフィルタリングされているのかを判別できない -
自分のpcで試してみようかな
-
うーん奥が深いなぁ
-
otintin
-
ネットワーク監視ツール
Zabbix, OSSのNagios
脆弱性診断
Vuls
ハニーポット・不正アクセス攻撃
Cowrie
GUIで、ポートスキャン(nmap)
Zenmap
Zenmap を使えばいい -
zenmap使えねーし使うきねー
-
chrootすリナックス使えまくるな
-
>>1よ、迷わず成仏して下さい。
南無阿弥陀仏南無阿弥陀仏 -
結局すぐ飽きて放棄されちゃうんだよね
日記スレでよかったじゃん -
ばけつに氷水を張ってそこに入れることだな
-
あ
-
さて今回は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で動かすことを想定してる
↑今すぐ読める無料コミック大量配信中!↑