我正在使用python从api获取数据,试图获取进程,主机名,进程的开始时间,用户名,ip地址,域和每个连接的时间戳。对于需要向下移动每一行的以下列,每个过程可以有多个结果。发生的事情是,所有内容都将被覆盖而被写入行2。这是我的剧本。
wb = Workbook()
ws1 = wb.create_sheet("Sheet_A")
ws1.title = "Results"
ws1['A1'] = "Process"
ws1['B1'] = "Host Name"
ws1['C1'] = "Process Time"
ws1['D1'] = "User Name"
ws1['E1'] = "Domain"
ws1['F1'] = "Netconn Time"
c = CbResponseAPI()
rows = 1
base_query = c.select(Process).where('start:-500m (hostname:1 OR hostname:2 OR hostname:3 OR hostname:4) netconn_count:[1 TO *] -ipaddr:192.168.0.0/16 -ipaddr:10.0.0.0/8 -ipaddr:172.16.0.0/12 -ipaddr:127.0.0.1')
for proc in base_query:
# print proc
ws1['A2'] = proc.process_name
ws1['B2'] = proc.hostname
ws1['C2'] = proc.start
ws1['D2'] = proc.username
rows+=1
for netconn in proc.netconns:
ws1['E2'] = netconn.domain
ws1['F2'] = netconn.timestamp
ws1['G2'] = netconn.remote_ip
rows+=1
wb.save('Rav.xlsx')
这是我的编辑
for i, proc in enumerate(base_query):
# print proc
ws1[f'A{i+2}'] = proc.process_name
ws1[f'B{i+2}'] = proc.hostname
ws1[f'C{i+2}'] = proc.start
ws1[f'D{i+2}'] = proc.username
rows+=1
for netconn in proc.netconns:
ws1[f'E{i+2}'] = netconn.domain
ws1[f'F{i+2}'] = netconn.timestamp
ws1[f'G{i+2}'] = netconn.remote_ip
rows+=1
这是print(proc)和print(netconn)的输出
process_md5 : f8d0c92070e59a059a889d5e269c0da9
sensor_id : 656
filtering_known_dlls : False
modload_count : 45
parent_unique_id : 00000290-0000-023c-01d5-e25a6a09eddc-000000000001
cmdline : C:\Windows\ADWS\Microsoft.ActiveDirectory.WebServices.exe
last_update : 2020-02-17 14:48:26.878000
id : 00000290-0000-0760-01d5-e25a77d2e409
parent_name : services.exe
group : default group
parent_id : 00000290-0000-023c-01d5-e25a6a09eddc
hostname :
filemod_count : 0
start : 2020-02-13 10:43:46.254000
comms_ip : 0.0.0.0
regmod_count : 5
interface_ip : 10.140.51.10
process_pid : 1888
username : SYSTEM
process_sha256 : d40478a82bb2993f39a3ed6066cd0599be37ff9a0898636a680926fe145c64d6
terminated : False
emet_config :
process_name : microsoft.activedirectory.webservices.exe
emet_count : 0
last_server_update : 2020-02-17 14:49:19.877000
path : c:\windows\adws\microsoft.activedirectory.webservices.exe
netconn_count : 12008
parent_pid : 572
crossproc_count : 11
segment_id : 1581950959796
host_type : domain_controller
processblock_count : 0
os_type : windows
childproc_count : 0
unique_id : 00000290-0000-0760-01d5-e25a77d2e409-017053a000b4
Cb Network Connection event:
timestamp : 2020-02-17 14:44:26.844000
domain :
remote_ip : ::1
remote_port : 389
proto : IPPROTO_TCP
direction : Outbound
local_ip : ::1
local_port : 52995
proxy_ip : 0.0.0.0
proxy_port : 0
答案 0 :(得分:0)
您只需要enumerate for
循环来给自己一个计数器,进入下一行。然后将2加到i
,因为您是从row
2开始的,而i
将从0
开始。
for i, proc in enumerate(base_query):
# print proc
ws1[f'A{i+2}'] = proc.process_name
ws1[f'B{i+2}'] = proc.hostname
ws1[f'C{i+2}'] = proc.start
ws1[f'D{i+2}'] = proc.username
for netconn in proc.netconns:
ws1[f'E{i+2}'] = netconn.domain
ws1[f'F{i+2}'] = netconn.timestamp
ws1[f'G{i+2}'] = netconn.remote_ip
wb.save('Rav.xlsx')
这是我的工作示例:
import openpyxl
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet("Sheet_A")
ws1.title = "Results"
ws1['A1'] = "Process"
ws1['B1'] = "Host Name"
ws1['C1'] = "Process Time"
ws1['D1'] = "User Name"
ws1['E1'] = "Domain"
ws1['F1'] = "Netconn Time"
loop = [['process_name', 'hostname'],['process_name', 'hostname'],['process_name', 'hostname'],]
for i, proc in enumerate(loop):
# print proc
ws1[f'A{i+2}'] = proc[0]
ws1[f'B{i+2}'] = proc[1]
wb.save('Rav.xlsx')
输出