Python Multiline Replace Help - using Regex

Help
2014-02-12
2014-02-12
  • whitetiger78

    whitetiger78 - 2014-02-12

    Hello,

    Need some help if someone has some time. I am in the process of writing a script in Python that will find a private key and a certificate and just replace them with some junk.

    Based on the below text, I was able to somehow come up with a regex to locate the text in the document, but I can't get the python section to work in Notepad++. Can someone help me on where I messed up on the syntax of my python script? I am currently using Notepad++ 6.3

    Regex is: ^DEK-Info: .[\t\r\n\v\f]-----END CERTIFICATE-----.$

    Python Line is: editor.pymlreplace(r"^DEK-Info: .[\t\r\n\v\f]-----END CERTIFICATE-----.$", "TOP SECRET INFORMATION")

    Source Text:

    config vpn certificate local
    edit "FF-0123"
    set password ENC XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    set private-key "-----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: DES-EDE3-CBC,A0C806460D1CB123

    1sE6QWq7DHWQPV6cY6CwbfYXAuKjNjTeNPBmcAnPKo6RbRValHsjG01PkvbcFkl2
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    3mUmbqqsTRRrk0fJl6VjBd1RogI8TD2oKApSDHVLaTVD2W8srGO8KmdbZCVL1im1
    4Xlp9Tff9AkXKAj+jNc7Uw6PkKWQwzJ2ej+iZnqVaaqg2xvIB1WBF8mGVmc95Qs2
    5N+13rVgDUHjgrbMb3ZbTym1HHMDlEqZ/ZU3/qDHDtaVx7pdXFkz4hUYSZEK1sa3
    6NqJT1qpDTK3upYwPTHGK07AOEvhIWSLXWHZRGduAwtxGBh5IrqMHvXL37ydNYN4
    7bYe1nSZtNf9wqWngnXs3Cts7ep27DilytWKb3Cjqixibfsp7zZMqIrtyqRutb85
    8VQQnLQtPgrmf5GVf0RQvZdkElyy+VkTJm7wtEk9Ilz58XpB6r7O5hAXzt/DN+c6
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    138rcAUyVkHAEplvrvubetzGWl04o8cvbTYpzxqic56gDTC+rxBqNeUrZT8d89t8
    2rWET7IhQxfWI0BoHkFpGxCZQzDb+0odNW2Uzh/zbQoRg8wsYpYWbx8TrBNI1Wf9
    3ybh5NIbmjHfHAGjiPtJqs9xp5014t0gAr2GdBQquASAixKfbOMAf9b7n/tBMGM0
    4ZQCI23CjTfeeMxntOeNlGQMbmddf0gqOFHlhjNkdW6q/gry4QpLKDZZk9xGma41
    5z7PXnh6JFlsVwussZK4NgBv8XvCwh0Ylrpl+PfIjrFEsdzUzOlUmRglMe5pmAR2
    63LxjVEa/QZjcCNCW4bdR6qe9CYX5VJht6yyfv8tbq1BxQAquM37IukyJw72zOb3
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    8KbpMbjjDyySuxqXiUDAFmLqdP8Sm+7SSh9HQ5TWwtthlnBaFxLgQAleEPvT6mf5
    9oMF3S+SjmbPaY2lGi2bLnUayRIhW/rlncdUiH1Zcy7ktkchpSsQU59Fiu4YDsW6
    1uTDSI5BkUZNh1MTadBxdIwTYgC6Li2UW309YAAw1hUaXsWllrv05uZSjq/OC0X7
    2oyJa4Js95/p3qLU1EW2xshQSGW+7Yoy1FCrN0DNScigMMQ3woIyw/9L+jboiKK8
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    4Gue2mrDeTXDJVksHZ6s3dMpCTmVat8VSZ3rwZgoMBJw7nJnLavAz3fqwro2fpJ0
    5qmWBb3Wf81mi6JRVAw5lXB1wcbaKT7BNBAN2q4t4V2tAx3Of6mQnP7AIdqfdCx1
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxt2
    75Aifdswlf08Y/6nxGJ7mvYhswcAUvn/AT304dHFXbnamWFCKoMGZQ==
    -----END RSA PRIVATE KEY-----"
    set certificate "-----BEGIN CERTIFICATE-----
    1IIEzjCCA7agAwIBAgIEUVDg3jANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJ1
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2
    3ml0aWVzMR0wGwYDVQQDExRFbmhhbmNlZCBJc3N1YW5jZSBDQTAeFw0xMzEwMjI3
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    5XJnaW5pYTERMA8GA1UEBxMIUmljaG1vbmQxDDAKBgNVBAoTA0ZSQjEQMA4GA1U5
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    7w0BAQEFAAOCAQ8AMIIBCgKCAQEAp3f7Mo4X7/wq25pEgKYFsIvNDvRjrHqU3bc7
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    9vM8jkocPg90esF9W+RfhYvlycckd1O1TTDQkUIwvcJykFK9yI/1++DToBCxvVO9
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    1eymNR2KudDNZw09RQvV3KkYH+DL8/FgDRCN03QtFxDYPOx5OoHYzj6JxQtq32m1
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    AXwwCwYDVR0PBAQDAgCgMBsGA1UdCQQUMBIwEAYJKoZIhvZ9B0QdMQMCARMwgbw3
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    aW50SXNzdWFuY2VDQS5jcmwweKB2oHSkcjBwMQswCQYDVQQGEwJ1czEPMA0GA1U5
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    GwYDVQQDExRFbmhhbmNlZCBJc3N1YW5jZSBDQTENMAsGA1UEAxMEQ1JMNDArBgN7
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    GDAWgBS3aDrfjKIWjcqDmMGpwx2w8XbZsjAdBgNVHQ4EFgQUbjoaui8gfdVcENQ9
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    BgkqhkiG9w0BAQsFAAOCAQEATxY8iHUoFa5/NHdZZPsCYizGAUyaDmNELeuT92S1
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xU8jyYrILQRF1UiVmc+wysk22ZpTjvN1sgSSMl5QEBPSiq6LrmYO/DAl2JhVyrA2
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    OXkeDg9h4O4DisIx9Jg6ZEpIzGz1f0W6OYdzuHCnGnPCNGdqTT+nr4kQlx48Vmb4
    keqo17Sh2PawO+o7ZUHXesp7Pvam1KyTPiegbI83XEB25Q==
    -----END CERTIFICATE-----"
    set scep-url "http://X.X.X.X/cgi-bin/pkiclient.exe"
    set source-ip X.X.X.X
    set auto-regenerate-days 30
    set auto-regenerate-days-warning 15

     
  • Dave Brotherstone

    You're being bitten by a couple of things here. The easy one is you need the dot (.) character to match newlines, which you can do by adding re.DOTALL to the flags, which is the fourth parameter to pymlreplace(). However, adding that flag doesn't fix it.

    The second thing is uglier, and I'm hoping will be solved in the new version (but I've not tested it yet, so no promises!). $ is a non-capturing match that only matches \n. Assuming your document is \r\n, you need a \r before the $ to match the \r at the end of the line. This is buried in the docs somewhere.

    So the line that works is:

    editor.pymlreplace(r"^DEK-Info: .*[\t\r\n\v\f]*-----END CERTIFICATE-----.\r$", "TOP SECRET INFORMATION", None, re.DOTALL)
    
     
    Last edit: Dave Brotherstone 2014-02-12

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks