web関連tips備忘録

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | >>

レンタルサーバーとSSH接続する手順


クライアント環境:linux OS、KDEデスクトップのDolphinファイルマネージャー

手順概要
1)端末で秘密鍵と公開鍵のペアを作成する。
2)作成した公開鍵の内容をレンタルサーバーのSSH設定項目の公開鍵手順に従って登録する。
3)Dolphinにネットワークフォルダーを追加する。

1)端末で秘密鍵と公開鍵のペアを作成する。
~user$ cd ~/.ssh ↩(Enterkey)
~/.ssh$ ssh-keygen -t rsa ↩
Generating public/private rsa key pair.
Enter file in which to save the key (/yourhome/.ssh/id_rsa):
↑秘密鍵のデフォルト名「id_rsa」と違うファイル名にしたいときはファイル名を入力する
Enter passphrase (empty for no passphrase):
↑SSHアプリを起動する際にパスワードを入力を求めたいなら適当なパスワードを入力する。ここで、何も入力しないで Enterキーを押すと公開鍵認証で相手方と即接続される。
Enter same passphrase again:

Your identification has been saved in /home/toc/.ssh/id_rsa.
Your public key has been saved in /home/toc/.ssh/id_rsa.pub.
↑(秘密鍵のファイル名を入力しなかったので)デフォルトのid_rsa名で作成されました。
The key fingerprint is:
SHA256:ZnU7Tr2ituoEM2tMVguGeUqs2K+pfC7bkw7JCyjRuJ4
The key's randomart image is:
+---[RSA 2048]----+
〜〜
|.EO+. .ooo. |
+----[SHA256]-----+

2)作成した公開鍵の内容をレンタルサーバーのSSH設定項目の公開鍵登録する。
相手方サーバーのSSH設定→公開鍵登録手順に従って1)で作成した公開鍵を登録する。

3)Dolphinにネットワークフォルダーを追加する。
Dolphinを起動→Network→ネットワークフォルダを追加→Execute→セキュアシェル(ssh)の順にクリックしていき、開いたネットワークフォルダ情報を入力後、「保存して接続」をクリックすると接続される。
上記1)でパスワードを入力しなかったら公開鍵認証だけで即接続される。

名前(N):適当なネットワークフォルダ名
ユーザ(U):ログインするユーザーID
サーバ(R):サーバーホストアドレスもしくはIPアドレス
ポート(P):相手方のSSHポート番号 デフォルト(22)番号とは限らない。
Protocol:sftp
フォルダ(F):/home/user ログインするユーザーのホーム等
エンコーディング:通常は「Unicoude(UTF-8)」文字化けしないエンコーディングを選択する。

次回からの接続はDolphinで追加したネットワークフォルダ名をクリックするだけで相手方と接続される。

尚、秘密鍵/公開鍵を作成した側を複数の端末に接続を許可したい場合は、許可したい端末に公開鍵のコピーを渡せばよい。

セキュリティー 2019-03-16(土) 22:39:14 - kei - TrackBacks

x86アセンブリ言語での関数コールの検証


〇〇塾の講師からアセンブリ言語の関数コールの仕組みを理解するために判りやすく、よくできたサイトとして紹介された
X86アセンブリ言語での関数コールのサンプル.TEXTをコンパイルして説明通りの動きになるか検証してみた。

注1:
当該サイトは32ビットPCで説明されているようなので、64ビットPCではレジスタ名の先頭の「e」を「r」に書き換えて検証する。

汎用レジスターの通例での役割
ax(アキュームレータレジスタ):演算の結果を格納する。
cx(カウンタレジスタ):ループの回数などのカウントを格納する。
dx(データレジスタ):演算に用いるデータを格納する。
bx(ベースレジスタ):アドレスのベース値を格納する。
si(ソースインデックスレジスタ):一部のデータ転送命令において、データの転送元を格納する。
di(ディストネーションインデックスレジスタ):一部のデータ転送命令において、データの転送先を格納する。

特殊レジスタの専用用途
bp(ベースポインタレジスタ):現在のスタックフレームにおける底のアドレスを保持する。
sp(スタックポインタレジスタ):現在のスタックトップのあどれすを保持する。
ip(インストラクションポインタレジスタ):次に実行するアセンブリ命令のアドレスを保持する。

注2:
gccでコンパイル:
インテル記法で説明されているのでサンプル.TEXTの上部に次の2行を挿入する。
.intel_syntax noprefix
.global スタート関数名

nasmでコンパイル:
サンプル.TEXTの上部に次の2行を挿入する。
section .text
global _start

注3:
gccでコンパイル:
ターミに下記の要領いずれかでタイプして実行する。
$ gcc sample1.s -o sample1
$ gcc -nostdlib sample1.s -o sample1 (ライセンス表示を出さない)
(”-o 出力ファイル名”を付けなかったらa.outで出力される?)

nasmでコンパイル:
ソースをコンパイルしてオブジェクトファイルを作成後、オブジェクトファイルから実行ファイルを作成する。
これらを1行で一気に行うには次のようにタイプする。
nasm -g -f elf64 sample1.asm && ld sample1.o -o sample1asm

参考サイト:アセンブリ言語をコンパイル・実行してみる


事例1:スタック(PUSH・POP命令)
sample1.s
====
/*.intel_syntax noprefix*/
.intel_syntax noprefix
.global _start

_start:
push 1
push 2
push 3
pop rax
pop rcx
pop rax
=======

【gdb】で逆アセンブル
gccでコンパイルした実行ファイルの場合
$ gdb sample1
nasmでコンパイルした実行ファイルの場合
$ gdb -ex 'set disassembly-flavor intel' sample1asm
(-ex 'set disassembly-flavor intel'無しはAT&T記法になる)

GNU gdb 〜ライセンス表示〜
Reading symbols from sample1...(no debugging symbols found)...done.
(gdb) b _start
Breakpoint 1 at 0x241
(gdb) r
Starting program: /yourfolder/sample1
Breakpoint 1, 0x0000555555554241 in _start ()
(gdb) disas _start
Dump of assembler code for function _start:
=> 0x0000555555554241 <+0>: pushq $0x1
0x0000555555554243 <+2>: pushq $0x2
0x0000555555554245 <+4>: pushq $0x3
0x0000555555554247 <+6>: pop %rax
0x0000555555554248 <+7>: pop %rcx
0x0000555555554249 <+8>: pop %rax
End of assembler dump.
(gdb) i r rax rcx rsp rip
rax 0x1c 28
rcx 0x7fffffffe0c8 140737488347336
rsp 0x7fffffffe0b0 0x7fffffffe0b0
rip 0x555555554241 0x555555554241 <_start>
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000000
0x7fffffffe0a0: 0x0000000000000000 0x00007ffff7dd9c5a
(gdb) si
0x0000555555554243 in _start ()
(gdb) disas _start
Dump of assembler code for function _start:
0x0000555555554241 <+0>: pushq $0x1
=> 0x0000555555554243 <+2>: pushq $0x2
0x0000555555554245 <+4>: pushq $0x3
0x0000555555554247 <+6>: pop %rax
0x0000555555554248 <+7>: pop %rcx
0x0000555555554249 <+8>: pop %rax
End of assembler dump.
(gdb) i r rax rcx rsp rip
rax 0x1c 28
rcx 0x7fffffffe0c8 140737488347336
rsp 0x7fffffffe0a8 0x7fffffffe0a8
rip 0x555555554243 0x555555554243 <_start+2>
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000000
0x7fffffffe0a0: 0x0000000000000000 0x0000000000000001
(gdb) si
0x0000555555554245 in _start ()
(gdb) disas _start
Dump of assembler code for function _start:
0x0000555555554241 <+0>: pushq $0x1
0x0000555555554243 <+2>: pushq $0x2
=> 0x0000555555554245 <+4>: pushq $0x3
0x0000555555554247 <+6>: pop %rax
0x0000555555554248 <+7>: pop %rcx
0x0000555555554249 <+8>: pop %rax
End of assembler dump.
(gdb) i r rax rcx rsp rip
rax 0x1c 28
rcx 0x7fffffffe0c8 140737488347336
rsp 0x7fffffffe0a0 0x7fffffffe0a0
rip 0x555555554245 0x555555554245 <_start+4>
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000000
0x7fffffffe0a0: 0x0000000000000002 0x0000000000000001
(gdb) si
0x0000555555554247 in _start ()
(gdb) disas _start
Dump of assembler code for function _start:
0x0000555555554241 <+0>: pushq $0x1
0x0000555555554243 <+2>: pushq $0x2
0x0000555555554245 <+4>: pushq $0x3
=> 0x0000555555554247 <+6>: pop %rax
0x0000555555554248 <+7>: pop %rcx
0x0000555555554249 <+8>: pop %rax
End of assembler dump.
(gdb) i r rax rcx rsp rip
rax 0x1c 28
rcx 0x7fffffffe0c8 140737488347336
rsp 0x7fffffffe098 0x7fffffffe098
rip 0x555555554247 0x555555554247 <_start+6>
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000003
0x7fffffffe0a0: 0x0000000000000002 0x0000000000000001
(gdb) si
0x0000555555554248 in _start ()
(gdb) disas _start
Dump of assembler code for function _start:
0x0000555555554241 <+0>: pushq $0x1
0x0000555555554243 <+2>: pushq $0x2
0x0000555555554245 <+4>: pushq $0x3
0x0000555555554247 <+6>: pop %rax
=> 0x0000555555554248 <+7>: pop %rcx
0x0000555555554249 <+8>: pop %rax
End of assembler dump.
(gdb) i r rax rcx rsp rip
rax 0x3 3
rcx 0x7fffffffe0c8 140737488347336
rsp 0x7fffffffe0a0 0x7fffffffe0a0
rip 0x555555554248 0x555555554248 <_start+7>
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000003
0x7fffffffe0a0: 0x0000000000000002 0x0000000000000001
(gdb) si
0x0000555555554249 in _start ()
(gdb) disas _start
Dump of assembler code for function _start:
0x0000555555554241 <+0>: pushq $0x1
0x0000555555554243 <+2>: pushq $0x2
0x0000555555554245 <+4>: pushq $0x3
0x0000555555554247 <+6>: pop %rax
0x0000555555554248 <+7>: pop %rcx
=> 0x0000555555554249 <+8>: pop %rax
End of assembler dump.
(gdb) i r rax rcx rsp rip
rax 0x3 3
rcx 0x2 2
rsp 0x7fffffffe0a8 0x7fffffffe0a8
rip 0x555555554249 0x555555554249 <_start+8>
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000003
0x7fffffffe0a0: 0x0000000000000002 0x0000000000000001
(gdb) si
0x000055555555424a in ?? ()
(gdb) i r rax rcx rsp rip
rax 0x1 1
rcx 0x2 2
rsp 0x7fffffffe0b0 0x7fffffffe0b0
rip 0x55555555424a 0x55555555424a
(gdb) x/-6gx 0x7fffffffe0b0
0x7fffffffe080: 0x0000000000000000 0x0000555555554241
0x7fffffffe090: 0x00007fffffffe0b0 0x0000000000000003
0x7fffffffe0a0: 0x0000000000000002 0x0000000000000001
(gdb) quit
A debugging session is active.

Inferior 1 [process 15161] will be killed.

Quit anyway? (y or n) y

バイナリー解析 2018-10-16(火) 13:27:10 - kei - TrackBacks

pythonでmysqlを使う手順


1.
github.com/PyMySQL/mysqlclient-python
のサイトで
「Clone or download」をクリックしてmysqlclient-python-master.zipをダウンロード
2.mysqlclient-python-master.zipを解凍する
$ unzip mysqlclient-python-master.zip
解凍してできたmysqlclient-python-master/README.mdに従ってインストール&設定する。

debianにおける準備
# apt-get install python-dev default-libmysqlclient-dev

python3を使うならpython3-devをインストールする。

# apt-get install python3-dev
# apt-get install python3-pip
$ pip install mysqlclient
$ pip3 install mysqlclient

3.mysqlclientの動作確認
  
mysqlと接続するときの重要部分
sample.pyの冒頭を次のように書く。
=========
import MySQLdb

def showUser():

connector = MySQLdb.connect(
user='USER_NAME',
passwd='PASSWORD',
host='localhost',
db='DATABASE_NAME' ,
charset='utf8')

以下、省略
========
*python3ではMySQLdb.connectにcharset='utf8'を入れないと文字化けする。

参考サイト:クロの思考ノート
Python3でMySQLに接続する環境をLinuxで整える

Linux 2018-09-26(水) 00:27:36 - kei - TrackBacks

python2.7からpython3.5をデフォルトにする


バージョンが違うpythonがインストールされているとき、
pythonコマンドで立ち上げるpythonは/usr/bin/pythonにシンボリックリンクを作成してで決定しているもよう。

python2.7とpython3.5がインストールされていて、デフォルトがpython2.7となっている場合にデフォルトをpython3.5に切り替えるには下記のようにする。

1./usr/bin/pythonのバックアップをとる。
# cd /usr/bin ↩
# cp python python-bak ↩

2.現在のシンボリックリンクを削除する。
# unlink ./python ↩

3.python3.5にシンボリックリンクを作成する。
# ln -s /usr/bin/python3.5 ./python ↩

4.標準のバージョンがで3.5になっていることを確認する。
# python -V ↩

問題なければ、1.で作成したバックアップを削除する。

参考
Ubuntu:Python3.6への切り替え
シンボリックリンクの作成と削除

Linux 2018-09-25(火) 14:20:05 - kei - TrackBacks

Delphin フォルダーとファイルを分けて表示させる方法


Delphinを起動した時、フォルダーとファイルを分けて表示させたいときの設定手順:

ツールバーから
設定(S)→ツールバーを設定(B):
利用可能なアクション(V)欄から「Folders First」を選択して「>」をクリックして現在のアクション(E)に持ってくる。

Linux 2018-09-20(木) 10:48:41 - kei - TrackBacks
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | >>
LINK