iT邦幫忙

2023 iThome 鐵人賽

DAY 2
1

This series of tutorials is aimed to share the notes taken while I was learning python for cybersecurity with the book - Black Hat Python.
這系列教學文章為學習筆記+延伸資源,旨在分享學習書籍 Black Hat Python時所思所學,也希望能幫助想了解Python和資安的大大們入門。

This tutorail has also been written in English in Medium.

目錄

  • Proxy II

看文前, 你應該要具備以下基礎能力:


Let's get started! 開始吧!


Proxy II

定義一個函式hexdump,它會:

  • 接收一些輸入(input)當作bytes或(字串)string(),並印出hexdump到console
  • 輸出packet細節,以十六進位的值,或ASCII印得出來的字元為格式(hexadecimal values and ASCII-printable characters)
  • 對了解不知名的協議(protocol)、找到以空白檔案紀錄的使用者的身分驗證資訊( finding user credentials in plaintext protocols),and much more...
import sys
import socket
import threading

HEX_FILTER = ''.join(
    [(len(repr(chr(i))) == 3) and chr(i) or '.' for i in range(256)])

def hexdump(src, length=16, show=True):
    if isinstance(src, bytes):
        src = src.decode()
    results = list()
    for i in range(0, len(src), length):
        word = str(src[i:i+length])
        printable = word.translate(HEX_FILTER)
        hexa = ' '.join([f'{ord(c):02X}' for c in word])
        hexwidth = length*3
        results.append(f'{i:04x}  {hexa:<{hexwidth}}  {printable}')
    if show:
        for line in results:
            print(line)
    else:
        return results


HEX_FILTER 字串包含了:

  • 如果表徵(representation)存在的話,有ASCII印得出來的字元(ASCII-printable characters) ((len(repr(chr(i)))))
  • 如果表徵(representation)不存在,就是一個句點dot(.)

字元表徵(Character representation)

Example 01 - 基本範例

  • 65 在字元表徵(character representation)中印得出來(printable),長度3
  • 30 在字元表徵(character representation)中印不出來

Reference參考資料

推薦影片
絕讚! Youtube 教學影片 | Elevate Cyber

原始碼
Github - Python For Cybersecurity | Monles


上一篇
Day 10 - Proxy I. 說明和步驟分解
下一篇
Day 12 - Proxy III
系列文
為駭而生 - Python 18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言