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
tracdrouteTTLを一つずつ増やして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