Pythonで16進数文字列を扱う際のメモ書き
やりたいこと
Pythonで16進数を扱うときにbyteに変換したり文字列に変換したり,LittleEndianとBigEndianを変換したりしたい。
型変換
class 'int' → class 'bytes'
num = 0x68656c6c6f str_num = format(num, 'x') #文字列に変換 print(str_num) # '68656c6c6f' bytes_num = bytes.fromhex(str_num) #bytesに変換 print(bytes_num) # b'hello'
class 'str' → class 'bytes'
greet = 'hello' bytes_greet = 'hello'.encode() #bytesに変換 print(bytes_greet) # b'hello' bytes_greet_num = bytes_greet.hex() print(bytes_greet_num) # '68656c6c6f'
Endian変換
16進数文字列は1文字1バイト
つまり1文字表すのに16進数2桁で表現する。
16進文字列の単純な並び替えではうまくいかない。
BigEndian → LittleEndian
... #変換したいbytes型の変数を用意する print(bytes_num) # b'hello' pirnt(bytes_num.hex()) # '68656c6c6f' rev =bytes_num[::-1] print(rev) #b'olleh' print(rev.hex()) # '6f6c6c6568'
LittleEndian → BigEndian
ほぼ上と同じなので割愛
接続しているネットワークの情報確認など(Unix系コマンド)のメモ
自分用のメモなのでかなり雑です。
ルーティング テーブルを確認したい時
netstat -r
NICの情報を確認したい時
ifconfig
ネットワークの経路を確認したい時
traceroute
tracdrouteはTTLを一つずつ増やしてICMPエラーデータグラム (11 - Time Exceeded) をルータから受け取ることで経路を確認しているらしい
名前解決
dig
とかnslookup
とか
ICMPで接続状況をチェック
ping
ポートスキャニング
nc
ARP
arp
ARP使ってLANに接続されているエンドポイントのIPアドレスとMACアドレスを確認もできる。
arp -i (インターフェース) -a
一回LAN内でブロードキャストしとくとARPのキャッシュが更新されて多くのエンドポイントが認識されることもあるかも。
ping xxx.xxx.xxx.255