Didier Stevens

Thursday 6 March 2025

Update: oledump.py Version 0.0.79

Filed under: My Software,Update — Didier Stevens @ 0:00

This is a bug fix version.

oledump_V0_0_79.zip (http)
MD5: 5463B7660B15EA1AE4C9F2792CECB512
SHA256: EA56C4A4C261C499ECE5C19EB0E53607E497253110953F6050177516C0728E02

Wednesday 5 March 2025

Update: zoneidentifier.exe Version 0.0.2

Filed under: My Software,Update — Didier Stevens @ 0:00

zoneidentifier.exe, my tool to manage MoTW (ADS Zone.Identifier) data received a small update.

A new option, -show, can be used to display the Zone.Identifier data.

zoneidentifier_V0_0_2.zip (http)
MD5: AD0A127384EA8C0D85CC2701B6CA7739
SHA256: C1CFD764F4345ACE924F0449F89337E57A648B2D75226E467E0366A6EF22C96E

Wednesday 12 February 2025

Update: cs-decrypt-metadata.py VersionĀ 0.0.5

Filed under: My Software,Update — Didier Stevens @ 0:00

This is a bugfix version.

cs-decrypt-metadata_V0_0_5.zip (http)
MD5: 3C37C994709AAE7F56FEC8C8A35F6A61
SHA256: A47616A8C7A484A70D011EA4B8189097CF6FD61358DAEA883760C208BEDE2075

Tuesday 11 February 2025

Update: Python Templates Version 0.0.12

Filed under: My Software,Update — Didier Stevens @ 0:03

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)
MD5: D36BDFA9F730E2A838B3DCDF796DAD91
SHA256: F7643248A901296AF4FE70D5E7F1F63BDED61B79618EAF445412FE4EE5FBBD24

Sunday 9 February 2025

Update: strings.py Version 0.0.11

Filed under: My Software,Update — Didier Stevens @ 8:50

This new version brings @ support for option search.

strings_V0_0_11.zip (http)
MD5: 2047669C7F4AB00F75553F396C812E2D
SHA256: 08DF9078B5EA41D50A3B06D2915B54246D02A932193D06C6130F9B9B8AD9F7A9

Wednesday 25 December 2024

Update: oledump.py Version 0.0.78

Filed under: My Software,Update — Didier Stevens @ 0:00

This is a bugfix version.

oledump_V0_0_78.zip (http)
MD5: EAE4457988371D88FED6F063BBBDADC7
SHA256: 01D314C505C1C5A0AFF8CE8A5910223FA8511E27F1B2DB6054864723B5677581

Tuesday 3 December 2024

Update: 1768.py Version 0.0.22

Filed under: My Software,Update — Didier Stevens @ 0:00

This is a bug fix version.

1768_v0_0_22.zip (http)
MD5: 6446F5C09BF70FAFBB3171734844B350
SHA256: 4716A4A72FB4C0265CAF541D5FF709615B9CB4129C20C98F1BBA535AA5D40717

Sunday 24 November 2024

Update: base64dump.py Version 0.0.27

Filed under: My Software,Update — Didier Stevens @ 21:13

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)
MD5: 6C3AE99A7FA0C525FF17B938A632AE53
SHA256: CDD84F574E25C93675BC0C14D954B59799B1FFEECC253A906B72A6DD669BDF4C

Friday 22 November 2024

Interfacing With A Cheap Geiger Counter

Filed under: Hardware,My Software — Didier Stevens @ 0:00

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()

Wednesday 20 November 2024

Update: base64dump.py Version 0.0.26

Filed under: My Software,Update — Didier Stevens @ 20:04

This is a bugfix version.

base64dump_V0_0_26.zip (http)
MD5: CD4370499288015C7EE13B59CB062129
SHA256: 3EEB76875ECCA782293D4486286F8155D1BB04DF23E3D3433E36C6373389B81D
« Previous PageNext Page »

Blog at WordPress.com.