#!/usr/bin/awk -f # # $Id: fdm-sanitize,v 1.8 2007/08/02 11:01:55 nicm Exp $ # # Copyright (c) 2006 Nicholas Marriott # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # If the output of fdm -vvvv is piped to this script, it will remove usernames # and passwords from IMAP/POP3 output, for example: # # fdm -vvvv f 2>&1|fdm-sanitize|tee saved-output # BEGIN { imap_user = 0; imap_pass = 0; } /> [0-9]+ LOGIN \{[0-9]+\}/ { imap_user = 1; print ($1 " " $2 " " $3 " {*}"); fflush(); next; } /> .+ \{[0-9]+\}/ { if (imap_user) { print ("> * {*}"); fflush(); imap_user = 0; imap_pass = 1; next; } print ($0); fflush(); next; } /> APOP .+/ { print ("> APOP * *"); fflush(); next; } /> USER .+/ { print ("> USER *"); fflush(); next; } /> PASS .+/ { print ("> PASS *"); fflush(); next; } /> .+/ { if (imap_pass) { print ("> *"); fflush(); imap_pass = 0; next; } print ($0); fflush(); next; } /.*/ { print ($0); fflush(); }