Mark data as sensitive in python

python compare two strings character by character
how to compare two strings in python using for loop
python compare two strings and return the difference
python masking sensitive data
asymmetric encryption python
python string comparison not working
python compare strings if
python string comparison case insensitive

I need to store a user's password for a short period of time in memory. How can I do so yet not have such information accidentally disclosed in coredumps or tracebacks? Is there a way to mark a value as "sensitive", so it's not saved anywhere by a debugger?


I have made a solution that uses ctypes (which in turn uses C) to zero memory.

import sys
import ctypes

def zerome(string):
    location = id(string) + 20
    size     = sys.getsizeof(string) - 20

    memset =  ctypes.cdll.msvcrt.memset
    # For Linux, use the following. Change the 6 to whatever it is on your computer.
    # memset =  ctypes.CDLL("").memset

    print "Clearing 0x%08x size %i bytes" % (location, size)

    memset(location, 0, size)

I make no guarantees of the safety of this code. It is tested to work on x86 and CPython 2.6.2. A longer writeup is here.

Decrypting and encrypting in Python will not work. Strings and Integers are interned and persistent, which means you are leaving a mess of password information all over the place.

Hashing is the standard answer, though of course the plaintext eventually needs to be processed somewhere.

The correct solution is to do the sensitive processes as a C module.

But if your memory is constantly being compromised, I would rethink your security setup.

Asymmetric Encrypting of sensitive data in memory (Python), Sometimes it is necessary to encrypt data between read and write cycles, where for instance we have a device which takes sensitive data and Asymmetric Encrypting of sensitive data in memory (Python) label=None It is also possible to encrypt data with the private key, such that it is only read using the public key, but this is bad practice and causes more problems than it solves. Cryptography — the python package. The python package which we shall be using is called cryptography and can be installed using pip install cryptography. Key Generation

Hiding Sensitive Data from Logs with Python, relaxdiego Mark Maglana's Technical Blog. Hiding Sensitive Data from Logs with Python 05 Jul 2014 : 10 minute read  Masks in python. When working with data arrays masks can be extremely useful. Masks are an array of boolean values for which a condition is met (examples below). These boolean arrays are then used to sort in the original data array (say we only want values above a given value). Here we will use numpy arrays which are especially good for

No way to "mark as sensitive", but you could encrypt the data in memory and decrypt it again when you need to use it -- not a perfect solution but the best I can think of.

Comparing Strings using Python, In order to compare strings, Python offers a few different operators to do so. First, we will To allow case-insensitive comparisons Python offers special string methods such as upper() and lower() . Both of them are Furthermore, lines with changes start with a question mark. Changes are golangpythoncdata science  the secure way is encrypt your sensitive data by AES and the encryption key is derivation by password-based key derivation function (PBE), the master password used to encrypt/decrypt the encrypt key for AES. master password -> secure key-> encrypt data by the key You can use pbkdf2

Programming Python, Mark Lutz. the HTML reply stream from the server, and as parameters in the Because this data is sensitive, we'd ideally like some way to hide it in transit and​  Discover where your sensitive data has been leaked. Very often it happens that when mocking/just starting out with a new project on github, sensitive data gets added. API keys, usernames, passwords and emails are easily added. and then forgotten. Use this tool to detect where the mistakes are in your repos.

based on culix's answer: the following works with Linux 64-bit architecture. Tested on Debian based systems.

import sys 
import ctypes

def nuke(var_to_nuke):
    strlen = len(var_to_nuke)
    offset = sys.getsizeof(var_to_nuke) - strlen - 1
    ctypes.memset(id(var_to_nuke) + offset, 0, strlen)
    del var_to_nuke               # derefrencing the pointer.

Sensitive Data, We recommend filtering or scrubbing sensitive data within the SDK, so that data is not Stack-locals → some SDKs (Python + PHP), will pick up variable values. Create a python GUI mark sheet. Where credits of each subject are given, enter the grades obtained in each subject and click on Submit. The credits per subject, the total credits as well as the SGPA is displayed after being calculated automatically.

Python String equals, Python String equals case-insensitive check. Sometimes we don't care about the case while checking if two strings are equal, we can use casefold() , lower  Among the data enthusiasts, Jupyter notebook is in trend. On the other hand, code cells allow you to write and run program code like Python. Note: Link IDs are not case-sensitive.

Text as String Objects, How to represent and operate on text values using the Python str object. Converting other data objects to strings; Counting characters in a string; Detecting the quotation marks, is interpreted completely different by the Python interpreter: Note that this is case-sensitive: "hello" and "Hello" are completely different values  Prerequisite : Underscore in Python In Python, there is no existence of “Private” instance variables which cannot be accessed except inside an object. However, a convention is being followed by most Python code and coders i.e., a name prefixed with an underscore, For e.g. _geek should be treated as a non-public part of the API or any Python code, whether it is a function, a method or a

Variables in Python, improve readability. Remember that variable names are case sensitive. Python is dynamically typed, which means that you don't have to declare  In this tutorial you'll learn how to use Python's rich set of operators, functions, and methods for working with strings. You'll learn how to access and extract portions of strings, and also become familiar with the methods that are available to manipulate and modify string data in Python 3.

  • See also this question:…
  • This is right. If you /ever/ read the password into a Python object, there is the potential for it being compromised by a dump. Even using C isn't perfect (you can still freeze the program and use a kernel-level debugger), but it should be good enough.
  • If this is the same memset as is mentioned in the following article, this too is unsafe. or
  • Danny: memset is safe. The articles you link to are about C compilers removing memset calls. When we call memset explicitly from Python, it is called.
  • @Barry strikes again! Here is a backup of the writeup
  • This solution crashes Python 2.7.2 (Segmentation fault:11) under Mac OS 10.8.5 (using memset=ctypes.CDLL("libc.dylib").memset)
  • As a variant: using this technique to populate a bytearray results in an object which can be used in place of a bytes instance in a lot of python code ... and can be equivalently cleared afterwards.