This is a bugfix version.
cs-decrypt-metadata_V0_0_5.zip (http)MD5: 3C37C994709AAE7F56FEC8C8A35F6A61
SHA256: A47616A8C7A484A70D011EA4B8189097CF6FD61358DAEA883760C208BEDE2075
This is a bugfix version.
cs-decrypt-metadata_V0_0_5.zip (http)This is an update for process-file-text.py:
I added \t support for option withfilename and added option hasheader.
Option –hasheader makes that the first line of the first file is processed, and for all other files, the first line is ignored.
python-templates_V0_0_12.zip (http)This new version brings @ support for option search.
strings_V0_0_11.zip (http)This is a bugfix version.
oledump_V0_0_78.zip (http)This is a bug fix version.
1768_v0_0_22.zip (http)When all items are selected with -s A and option -d from this new version on, items are decoded and dumped to stdout en separated by end-of-line character(s).
base64dump_V0_0_27.zip (http)I got a cheap Geiger counter from Aliexpress:

This picture was taken on an airplane: you have more radiation (cosmic rays) at high altitude.
I figured out how to interface with this counter in Python to log real time data:
#!/usr/bin/env python
from __future__ import print_function
__description__ = "Program for geiger meter"
__author__ = 'Didier Stevens'
__version__ = '0.0.1'
__date__ = '2024/05/11'
"""
Source code put in the public domain by Didier Stevens, no Copyright
https://DidierStevens.com
Use at your own risk
History:
2024/05/11: start
Todo:
"""
import optparse
import serial
import time
def FormatTime(epoch=None):
if epoch == None:
epoch = time.time()
return '%04d%02d%02d-%02d%02d%02d' % time.localtime(epoch)[0:6]
def FindCOMPorts():
ports = []
for number in range(1, 10):
try:
comport = 'COM%d' % number
with serial.Serial(comport) as oSerial:
ports.append(comport)
except serial.serialutil.SerialException as e:
if 'PermissionError' in e.args[0]:
ports.append(comport)
return ports
def LogToCSV(comport):
ser = serial.Serial(comport, 115200, timeout=0, write_timeout=0)
ser.write(b'\xAA\x05\x0E\x01\xBE\x55\x00')
alldata = b''
fOut = open('geiger.csv', 'a')
while True:
data = ser.read(1000)
if data != b'':
alldata += data
lines = alldata.split(b'\xaaU\x0e')
alldata = lines[-1]
lines = lines[:-1]
for line in lines:
if line != b'':
out = FormatTime() + ';' + line.decode('latin')
print(out)
fOut.write(out + '\n')
if alldata.endswith(b'U') and not alldata.endswith(b'\xaaU'):
out = FormatTime() + ';' + alldata.decode('latin')
print(out)
fOut.write(out + '\n')
alldata = b''
time.sleep(0.40)
def Main():
oParser = optparse.OptionParser(usage='usage: %prog [options]\n' + __description__ , version='%prog ' + __version__)
oParser.add_option('-l', '--listports', action='store_true', default=False, help='List ports')
(options, args) = oParser.parse_args()
comports = FindCOMPorts()
if options.listports:
print('Available ports:')
for comport in comports:
print(' %s' % comport)
return
if len(args) == 1:
LogToCSV(args[0])
elif len(comports) == 1:
print('Using %s' % comports[0])
LogToCSV(comports[0])
else:
print('Provide the COM port as argument')
print('Available ports:')
for comport in comports:
print(' %s' % comport)
if __name__ == '__main__':
Main()
This is a bugfix version.
base64dump_V0_0_26.zip (http)This small update brings support for ZIP 2.0 via the pyzipper module.
strings_V0_0_10.zip (http)This is a post for version updates 0.0.8 and 0.0.9.
Added command officeprotection and option -j for pretty.
xmldump_V0_0_9.zip (http)