Преобразование списка Python3 (с аргументом str) в байты - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в программировании, а также python, я пытаюсь использовать приведенный ниже код для прослушивания http-пакетов.

Я получаю сообщение об ошибке ниже, я знаю, что вместо этого я могу использовать метод .encode (), попробуйте преобразование этого списка в байты сохраняет его в переменной.

просто хотел понять мой список ключевые слова это можно преобразовать в байты.

TypeError: объект 'str' не может быть интерпретированным как целое число

Мой код

#!/bin/python3

import scapy.all as scapy
from scapy.layers import http

def sniff(interface):
    scapy.sniff(iface=interface, store=False, prn=process_sniffed_packets)

def process_sniffed_packets(packet):
    if packet.haslayer(http.HTTPRequest):
        if packet.haslayer(scapy.Raw):
            load = (packet[scapy.Raw].load)
            keywords = ["usr", "username", "uname", "pwd", "pass", "password"]
            keyword_b = bytes(keywords)
            for eachword in keyword_b:
                if eachword in load:
                    print(load)
                        break
sniff(eth0)

Полная трассировка назад

root@kali:~/python_course_zaid/Writing a Packet Sniffer# ./packet_sniffer.py 
Traceback (most recent call last):
  File "./packet_sniffer.py", line 24, in <module>
    sniff("eth0")
  File "./packet_sniffer.py", line 7, in sniff
    scapy.sniff(iface=interface, store=False, prn=process_sniffed_packets)
  File "/usr/lib/python3/dist-packages/scapy/sendrecv.py", line 972, in sniff
    sniffer._run(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/scapy/sendrecv.py", line 925, in _run
    session.on_packet_received(p)
  File "/usr/lib/python3/dist-packages/scapy/sessions.py", line 47, in on_packet_received
    result = self.prn(pkt)
  File "./packet_sniffer.py", line 14, in process_sniffed_packets
    keyword_b = bytes(keywords)
TypeError: 'str' object cannot be interpreted as an integer

Я знаю, что ниже работает код

    keywords = ["usr", "username", "uname", "pwd", "pass", "password"]
    for eachword in keywords:
        if eachword.encode() in load:
            print(load)
            break
...