已创建数据库文件,无数据/架构

2024-07-02 12:14:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在提供的路径中创建.db文件。打印输出显示在终端窗口中,但.db文件中没有数据/架构。没有出现错误,语法似乎正确。这是密码。我不知道为什么,conn.commit()在正确的区域。如有任何信息,将不胜感激

from scapy.all import *
from scapy.layers import dhcp
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
runtime = logging.getLogger('scapy.runtime')
runtime.setLevel(logging.ERROR)
loading = logging.getLogger('scapy.loading')
loading.setLevel(logging.ERROR)
from scapy.layers.l2 import Ether
from scapy.layers.all import BOOTP
from scapy.layers.all import DHCP, DHCPTypes, DHCPOptions, DHCPRevOptions
from scapy import route
import urllib
import urllib3
from urllib.request import urlopen
import os
import sqlite3
from datetime import datetime
import sys


DIR_NAME = os.path.dirname(__file__)
db_path = os.path.join(DIR_NAME, "/home/dtman/Desktop/Secure_DHCP  /secureDHCP-DB.db")

conn = sqlite3.connect(db_path)
c = conn.cursor()
conn.commit()


def make_table():
   c.execute('CREATE TABLE IF NOT EXISTS secureDHCP(mac VARCHAR(50), vendorId VARCHAR(50), time VARCHAR(50), oData VARCHAR(50)')
   conn.commit()
   c.close()
   conn.close()


def the_data():
   mac = src_mac()
   vendorId = vendor()
   time = timeData()
   oData = optData()
   c.execute("INSERT INTO secureDHCP (mac, vendorId, time, oData) VALUES (?, ?, ?, ?)",
          (src_mac, vendor, timeDate, optData))
   conn.commit()


s=socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0800))

print("Input network interface")
interface = input()


def pkt_data(pkt):
    src_mac = pkt.getlayer(Ether).fields['src']
    url = 'http://api.macvendors.com/' + src_mac
    r = urlopen(url)
    vendor = r.read()
    timeData = str(datetime.now())
    full_options = pkt.getlayer(DHCP).fields['options']
    dhcp_options = [o for o in full_options if isinstance(o, tuple)]
    for x in dhcp_options:
        if x[0] in ('message-type', 'requested_addr', 'hostname'):
            optData = x[1]
            print('MAC: {} /// Vendor: {} /// Time {} /// optData: {}'.format(src_mac, vendor, timeData, optData))

sniff(iface=interface, prn=pkt_data, filter='udp port (67 or 68)', store=0)

终端中的输出:

`MAC: 00:00:00:00:00:00 /// Vendor: b'BRAND, Inc.' /// Other Data: 3
 MAC: 00:00:00:00:00:00 /// Vendor: b'BRAND, Inc.' /// Other Data: 192.168.1.4
 MAC: 00:00:00:00:00:00 /// Vendor: b'BRAND, Inc.' /// Other Data: b'HOSTNAME'`

Tags: fromimportsrcdbmaclayersloggingsocket
1条回答
网友
1楼 · 发布于 2024-07-02 12:14:15

首先,您没有像make_table()那样调用该方法。其次,您调用make_table() 在它里面,为什么要关闭conn?你的the_data()如何插入日期?请给出最小样本。下面这样的东西永远不会出错

conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS secureDHCP(mac VARCHAR(50), vendorId VARCHAR(50), time VARCHAR(50), oData VARCHAR(50)')
conn.commit()
c.execute("INSERT INTO secureDHCP (mac, vendorId, time, oData) VALUES (?, ?, ?, ?)",
      (src_mac, vendor, timeDate, optData))
conn.commit()
c.close()
conn.close()

相关问题 更多 >