私はPythonを使用してスクリプトを書いたが、正常に動作した。私は、私の端末にaddr1,
addr2,
とaddr3
を取得し、識別し、印刷しました。しかし、これらの結果を辞書形式のCSVファイルに追加しようとすると、いくつかのエラーが発生しました。辞書フォーマットのScapy結果を追加するPython
私は私の結果は、端末で印刷しまったとき、これは以前に私のスクリプトです:
#!/usr/bin/env python3
from scapy.all import *
import os
devices = set()
interface = "wlan0mon"
iface = "wlan0mon"
def sniffmgmnt(p):
if p.haslayer(Dot11):
devices.add(p.addr1)
devices.add(p.addr2)
devices.add(p.addr3)
print(devices)
while True:
for channel in range(1, 14):
os.system("iwconfig" + iface + "channel" + str(channel))
sniff(iface=interface, prn=sniffmgmnt, count=3, timeout=3, store=0)
私はその後、addr3
がキーで辞書形式のCSVファイルにそれらの結果を追加しようとしました
#!/usr/bin/env python3
from scapy.all import *
from snifferCSV import CSV
import os
aps = dict()
devices = set()
headers = ['addr3', 'addr2', 'addr1']
csvFile = CSV('data.csv', headers)
interface = "wlan0mon"
iface = "wlan0mon"
def sniffmgmnt(p):
if p.haslayer(Dot11):
source.append(p.addr1);
receiving.append(p.addr2);
destination.append(p.addr3);
csvFile.addToCSV([addr3, addr2, addr1])
while True:
for channel in range(1, 14):
os.system("iwconfig" + iface + "channel" + str(channel))
sniff(iface=interface, prn=sniffmgmnt, count=3, timeout=3, store=0)
ただし、スクリプトは端末のヘッダーのみを出力し、CSVファイルは空のままです。
class CSV(object):
csvFile = None
fileName = data.csv
def __init__(self,fileName,headers):
self.fileName = fileName
self.prepareCSVFile(headers)
def prepareCSVFile(self,headers):
self.csvFile = open(self.fileName, 'w')
headerString = self.prepareValues(headers)
self.writeToCSV(headerString)
def prepareValues(self,valueList):
line = str()
for item in valueList[:-1]:
line = line + str(item) + ','
line += valueList[-1]
return line
def addToCSV(self,valueList):
valueLine = self.prepareValues(valueList)
self.writeToCSV(valueLine)
def writeToCSV(self,line):
print(line)
self.csvFile.write(line)
私の目標はaddr3
が鍵となるCSVファイルに辞書形式の私の結果を追加することです:私は私のCSVクラスsnifferCSV.pyが含まれている下
。しかし、このプロセスに関する私の論理は間違っています。誰かが私を正しい方向に向けることができますか?事前に
おかげ -jj
は '変更しようオープン(self.fileName、 'w') ' - >' open(self.fileName、 'a') ' – coder