iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

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 tutorial has also been written in English in Medium.

目錄

  • Netcat II

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


Let's get started! 開始吧!


Netcat II

# netcat.py

...

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='BHP Net Tool',
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog=textwrap.dedent('''Example: 
            netcat.py -t 192.16.1.108 -p 5555 -l -c #command shell
            netcat.py -t 192.16.1.108 -p 5555 -l -u=mytest.text #upload file
            netcat.py -t 192.16.1.108 -p 5555 -l -e=\"cat /etc/passwd\" #execute command
            echo 'ABC' | ./netcat.py -t 192.168.1.108 -p 135 #echo text to server port 135
            netcat.py -t 192.168.1.108 -p 5555 #connect to server
        '''))
    parser.add_argument('-c', '--command', action='store_true', help='command shell')
    parser.add_argument('-e', '--execute', help='execute specified command')
    parser.add_argument('-l', '--listen', action='store_true', help='listen')
    parser.add_argument('-p', '--port', type=int, default=5555, help='specified port')
    parser.add_argument('-t', '--target', default='192.168.1.203', help='specified IP')
    parser.add_argument('-u', '--upload', help='upload file')
    args = parser.parse_args()

    if args.listen:
        buffer = ''
    else:
        buffer = sys.stdin.read()

    nc = NetCat(args, buffer.encode())
    nc.run()

模組argparse讓我們更容易寫出對使用者友善的命令列介面(command-line interfaces)

epilog=textwrap.dedent('''Example: 
    netcat.py -t 192.16.1.108 -p 5555 -l -c #command shell
    netcat.py -t 192.16.1.108 -p 5555 -l -u=mytest.text #upload file
    netcat.py -t 192.16.1.108 -p 5555 -l -e=\"cat /etc/passwd\" #execute command
    echo 'ABC' | ./netcat.py -t 192.168.1.108 -p 135 #echo text to server port 135
    netcat.py -t 192.168.1.108 -p 5555 #connect to server
'''))
  • 只要使用者呼叫(invoke) 並在後面加上--help,就會出現範例用法
  • 這六個引數各代表不同我們希望程式表現的行為
parser.add_argument('-c', '--command', action='store_true', help='command shell')
parser.add_argument('-e', '--execute', help='execute specified command')
parser.add_argument('-l', '--listen', action='store_true', help='listen')
parser.add_argument('-p', '--port', type=int, default=5555, help='specified port')
parser.add_argument('-t', '--target', default='192.168.1.203', help='specified IP')
parser.add_argument('-u', '--upload', help='upload file')
  • -c, 設置有互動性的殼層(shell)
  • -e, 執行一個特定的指令(command)
  • -l, 表明該設置listener(indicates the listener should be set up)
  • -p, 具體指出該去溝通的通訊埠(specifies the port on which to communicate)
  • -t, 具體指出目標IP(specifies the target IP)
  • -u, 具體指出要上傳的檔案名稱(specifies the name of a file to upload)

引數-c, -e & -u 指(imply) -l, 因為這些能應用在聆聽端listener side
-p & -t, 指傳送端(sender side),可用來代表目標聆聽者(target listener)

if args.listen:
        buffer = ''
else:
    buffer = sys.stdin.read()
  • If 設置了一個聆聽者(listener), 等於我們使用空緩衝區字串(empty buffer string)),呼叫了一個Netcat物件(we invoke the Netcat object with an empty buffer string)
  • Else, 我們從stdin 傳送了一個buffer

Reference參考資料

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

原始碼
Github - Python For Cybersecurity | Monles


上一篇
Day 06 - Netcat I
下一篇
Day 08 - Netcat III
系列文
為駭而生 - Python 18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言