簡體   English   中英

縮進錯誤:將數據寫入 csv

[英]IndentationError: writing data to csv

當運行 SNIFF 的 python 腳本時,我試圖將 Scapy SNIFF 中的“數據”直接寫入 CSV,但在運行腳本時出現以下錯誤:

py_compile.PyCompileError:抱歉:IndentationError:意外縮進(prog.py,第 33 行)

這里出了什么問題?

這是我的代碼:

from scapy.all import *
import datetime
import csv
import sys

PROBE_REQUEST_TYPE=0
PROBE_REQUEST_SUBTYPE=4

STAMP = datetime.datetime.now().isoformat()

WHITELIST = ['00:00:00:00:00:00',] # Replace this with your phone's MAC address


def PacketHandler(pkt):
if pkt.haslayer(Dot11):
    if pkt.type==PROBE_REQUEST_TYPE and pkt.subtype == PROBE_REQUEST_SUBTYPE and ( pkt.addr2.lower() not in WHITELIST or pkt.addr2.upper() not in WHITELIST):
        PrintPacket(pkt)

def PrintPacket(pkt):
print "Probe Request Captured:"
try:
    extra = pkt.notdecoded
except:
    extra = None
if extra!=None:
    signal_strength = -(256-ord(extra[-4:-3]))
else:
    signal_strength = -100
    print "No signal strength found"    
print "Target: %s Source: %s SSID: %s RSSi: %d"%(pkt.addr3,pkt.addr2,pkt.getlayer(Dot11ProbeReq).info,signal_strength)
f = open('/mtn/sda1/logger.csv', 'w')
filename = 'logger.csv'.format(STAMP)
    open(filename, 'a') as f:
           f.write('Target: %s Source: %s SSID: %s RSSi: %d"%(pkt.addr3,pkt.addr2,pkt.getlayer(Dot11ProbeReq).info,signal_strength)'.format(STAMP))
f.close()

def main():
from datetime import datetime
print "[%s] Starting scan"%datetime.now()
print "Scanning ..."
print "\n"
sniff(iface=sys.argv[1],prn=PacketHandler,store=0)

if __name__=="__main__":
main()

你錯過了with關鍵字:

filename = 'logger.csv'.format(STAMP)
     open(filename, 'a') as f:
           f.write('Target: %s Source: %s SSID: %s RSSi: %d"%(pkt.addr3,pkt.addr2,pkt.getlayer(Dot11ProbeReq).info,signal_strength)'.format(STAMP))
f.close() # unnecessary

此外,如果您使用with關鍵字,則無需手動關閉文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM