forked from doronz88/pymobiledevice3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextract_plist_from_pcaps.py
executable file
·41 lines (35 loc) · 1.11 KB
/
extract_plist_from_pcaps.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/local/bin/python3
import plistlib
import pprint
import xml
import click
import pcapy
BPLIST_MAGIC = b'bplist'
PLIST_MAGIC = b'<plist'
@click.command()
@click.argument('pcap', type=click.Path(exists=True, file_okay=True, dir_okay=False))
@click.argument('out', type=click.File('wt'))
def main(pcap, out):
pcap = pcapy.open_offline(pcap)
while True:
packet = pcap.next()[1]
if BPLIST_MAGIC in packet:
try:
plist = plistlib.loads(packet[packet.find(BPLIST_MAGIC):])
print(plist)
out.write('---\n')
out.write(pprint.pformat(plist))
out.write('\n---\n')
except plistlib.InvalidFileException:
pass
if PLIST_MAGIC in packet:
try:
plist = plistlib.loads(packet[packet.find(PLIST_MAGIC):])
print(plist)
out.write('---\n')
out.write(pprint.pformat(plist))
out.write('\n---\n')
except xml.parsers.expat.ExpatError:
pass
if __name__ == '__main__':
main()