[PATCH] auditd - TTY support for audisp-prelude
Matteo Sessa <[email protected]> Fri, 17 Jun 2011 16:34:43 +0200 (CEST)
| Newsgroups | gmane.comp.security.ids.prelude.devel |
|---|---|
| Message-ID | <[email protected]> |
--=_4cbd6d4b-44d0-4563-83c6-130598736494 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi all, Attached is a patch for auditd to add support for TTY audits ( pam_tty_audit session module ) to audisp-prelude. Alerts are reported with: alert.classification.text = "Keylogger" alert.assessment.impact.severity = LOW and actual keystrokes carried on alert.additional_data. Attached you will find also a basic python commandline script to query keylogger data from prelude database. Hope it helps. Matteo Sessa IT Systems Administrator D.B.M. srl Via Enrico Noe, 23 20133 Milano (MI), Italy Landline: (+39) 02-266005-21 Mobile: (+39) 334-6220662 --=_4cbd6d4b-44d0-4563-83c6-130598736494 Content-Type: text/x-patch; name=audisp-prelude-tty.patch Content-Disposition: attachment; filename=audisp-prelude-tty.patch Content-Transfer-Encoding: base64 ZGlmZiAtcnVwIGF1ZGl0LTEuNy4xOC9hdWRpc3AvcGx1Z2lucy9wcmVsdWRlL2F1ZGlzcC1wcmVs dWRlLmMgYXVkaXQtMS43LjE4LWJhL2F1ZGlzcC9wbHVnaW5zL3ByZWx1ZGUvYXVkaXNwLXByZWx1 ZGUuYwotLS0gYXVkaXQtMS43LjE4L2F1ZGlzcC9wbHVnaW5zL3ByZWx1ZGUvYXVkaXNwLXByZWx1 ZGUuYwkyMDEwLTA5LTE5IDIxOjU1OjA3LjAwMDAwMDAwMCArMDIwMAorKysgYXVkaXQtMS43LjE4 LWJhL2F1ZGlzcC9wbHVnaW5zL3ByZWx1ZGUvYXVkaXNwLXByZWx1ZGUuYwkyMDExLTA0LTI4IDEw OjQ1OjIwLjAwMDAwMDAwMCArMDIwMApAQCAtNDQsNyArNDQsNyBAQAogdHlwZWRlZiBlbnVtIHsg QVNfTE9HSU4sIEFTX01BWF9MT0dJTl9GQUlMLCBBU19NQVhfTE9HSU5fU0VTUywgQVNfQUJFTkQs CiAJQVNfUFJPTSwgQVNfTUFDX1NUQVQsIEFTX0xPR0lOX0xPQ0FUSU9OLCBBU19MT0dJTl9USU1F LCBBU19NQUMsCiAJQVNfQVVUSCwgQVNfV0FUQ0hFRF9MT0dJTiwgQVNfV0FUQ0hFRF9GSUxFLCBB U19XQVRDSEVEX0VYRUMsIEFTX01LX0VYRSwKLQlBU19NTUFQMCwgQVNfV0FUQ0hFRF9TWVNDQUxM LCBBU19UT1RBTCB9IGFzX2Rlc2NyaXB0aW9uX3Q7CisJQVNfTU1BUDAsIEFTX1dBVENIRURfU1lT Q0FMTCwgQVNfVFRZLCBBU19UT1RBTCB9IGFzX2Rlc2NyaXB0aW9uX3Q7CiBjb25zdCBjaGFyICph c3Nlc3NtZW50X2Rlc2NyaXB0aW9uW0FTX1RPVEFMXSA9IHsKICAiQSB1c2VyIGhhcyBhdHRlbXB0 ZWQgdG8gbG9naW4iLAogICJUaGUgbWF4aW11bSBhbGxvd2VkIGxvZ2luIGZhaWx1cmVzIGZvciB0 aGlzIGFjY291bnQgaGFzIGJlZW4gcmVhY2hlZC4gVGhpcyBjb3VsZCBiZSBhbiBhdHRlbXB0IHRv IGdhaW4gYWNjZXNzIHRvIHRoZSBhY2NvdW50IGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiB0aGUgcmVh bCBhY2NvdW50IGhvbGRlci4iLApAQCAtNjEsNyArNjEsOCBAQCBjb25zdCBjaGFyICphc3Nlc3Nt ZW50X2Rlc2NyaXB0aW9uW0FTX1RPCiAgIkEgdXNlciBoYXMgYXR0ZW1wdGVkIHRvIGV4ZWN1dGUg YSBwcm9ncmFtIHRoYXQgaXMgYmVpbmcgd2F0Y2hlZC4iLAogICJBIHVzZXIgaGFzIGF0dGVtcHRl ZCB0byBjcmVhdGUgYW4gZXhlY3V0YWJsZSBwcm9ncmFtIiwKICAiQSBwcm9ncmFtIGhhcyBhdHRl bXB0ZWQgbW1hcCBhIGZpeGVkIG1lbW9yeSBwYWdlIGF0IGFuIGFkZHJlc3Mgc29tZXRpbWVzIHVz ZWQgYXMgcGFydCBvZiBhIGtlcm5lbCBleHBsb2l0IiwKLSAiQSB1c2VyIGhhcyBydW4gYSBjb21t YW5kIHRoYXQgaXNzdWVkIGEgd2F0Y2hlZCBzeXNjYWxsIgorICJBIHVzZXIgaGFzIHJ1biBhIGNv bW1hbmQgdGhhdCBpc3N1ZWQgYSB3YXRjaGVkIHN5c2NhbGwiLAorICJBIHVzZXIgaGFzIGVudGVy ZWQga2V5c3Ryb2tlcyBvbiBhIHRlcm1pbmFsIgogfTsKIHR5cGVkZWYgZW51bSB7IE1fTk9STUFM LCBNX1RFU1QgfSBvdXRwdXRfdDsKIHR5cGVkZWYgZW51bSB7IFdfTk8sIFdfRklMRSwgV19FWEVD LCBXX01LX0VYRSB9IHdhdGNoZWRfdDsKQEAgLTE5ODEsNiArMTk4Miw4MyBAQCBzdGF0aWMgdm9p ZCBoYW5kbGVfd2F0Y2hlZF9zeXNjYWxscyhhdXBhCiAJfQogfQogCitzdGF0aWMgaW50IHR0eV9h bGVydChhdXBhcnNlX3N0YXRlX3QgKmF1LCBpZG1lZl9tZXNzYWdlX3QgKmlkbWVmLAorCQlpZG1l Zl9hbGVydF90ICphbGVydCkKK3sKKwlpbnQgcmV0OworCisJaWRtZWZfc291cmNlX3QgKnNvdXJj ZTsKKwlpZG1lZl91c2VyX3QgKnN1c2VyOworCWlkbWVmX3VzZXJfaWRfdCAqdXNlcl9pZDsKKwlp ZG1lZl9pbXBhY3RfdHlwZV90IGltcGFjdF90eXBlOworICAgIGlkbWVmX2Fzc2Vzc21lbnRfdCAq YXNzZXNzbWVudDsKKwlpZG1lZl9pbXBhY3RfdCAqaW1wYWN0OworCWlkbWVmX2ltcGFjdF9zZXZl cml0eV90IHNldmVyaXR5OworCXByZWx1ZGVfc3RyaW5nX3QgKnN0cjsKKwlpZG1lZl9pbXBhY3Rf Y29tcGxldGlvbl90IGNvbXBsZXRpb24gPSBJRE1FRl9JTVBBQ1RfQ09NUExFVElPTl9FUlJPUjsK KworCS8qIEZpbGwgaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50J3Mgc291cmNlICovCisJ cmV0ID0gaWRtZWZfYWxlcnRfbmV3X3NvdXJjZShhbGVydCwgJnNvdXJjZSwgLTEpOworCVBSRUxV REVfRkFJTF9DSEVDSzsKKworCXJldCA9IGlkbWVmX3NvdXJjZV9uZXdfdXNlcihzb3VyY2UsICZz dXNlcik7CisJUFJFTFVERV9GQUlMX0NIRUNLOworCWlkbWVmX3VzZXJfc2V0X2NhdGVnb3J5KHN1 c2VyLCBJRE1FRl9VU0VSX0NBVEVHT1JZX0FQUExJQ0FUSU9OKTsKKwlyZXQgPSBpZG1lZl91c2Vy X25ld191c2VyX2lkKHN1c2VyLCAmdXNlcl9pZCwgMCk7CQorCVBSRUxVREVfRkFJTF9DSEVDSzsK KwlpZG1lZl91c2VyX2lkX3NldF90eXBlKHVzZXJfaWQsIElETUVGX1VTRVJfSURfVFlQRV9PUklH SU5BTF9VU0VSKTsKKwlyZXQgPSBnZXRfbG9naW51aWRfaW5mbyhhdSwgdXNlcl9pZCk7CisJUFJF TFVERV9GQUlMX0NIRUNLOworCisJcmV0ID0gZ2V0X3R0eV9pbmZvKGF1LCB1c2VyX2lkKTsKKwlQ UkVMVURFX0ZBSUxfQ0hFQ0s7CisKKwlyZXQgPSBnZXRfY29tbV9pbmZvKGF1LCBzb3VyY2UsIE5V TEwpOworCVBSRUxVREVfRkFJTF9DSEVDSzsKKworCXJldCA9IGFkZF9leGVjdmVfZGF0YShhdSwg YWxlcnQpOworCVBSRUxVREVfRkFJTF9DSEVDSzsKKworCXJldCA9IGFkZF9zZXJpYWxfbnVtYmVy X2RhdGEoYXUsIGFsZXJ0KTsKKwlQUkVMVURFX0ZBSUxfQ0hFQ0s7CisKKwkvKiBEZXNjcmliZSBl dmVudCAqLworCXJldCA9IHNldF9jbGFzc2lmaWNhdGlvbihhbGVydCwgIktleWxvZ2dlciIpOwor CVBSRUxVREVfRkFJTF9DSEVDSzsKKworCS8qIEFzc2VzcyBpbXBhY3QgKi8KKwlpZiAoZ2V0X2xv Z2ludWlkKGF1KSA9PSAwKQorCQlpbXBhY3RfdHlwZSA9IElETUVGX0lNUEFDVF9UWVBFX0FETUlO OworCWVsc2UKKwkJaW1wYWN0X3R5cGUgPSBJRE1FRl9JTVBBQ1RfVFlQRV9VU0VSOworCS8vIEFk anVzdCB0aGUgcmF0aW5nIG9uIEFWQydzIGJhc2VkIG9uIGlmIHRoZXkgc3VjY2VlZGVkIG9yIG5v dAorCWNvbXBsZXRpb24gPSBJRE1FRl9JTVBBQ1RfQ09NUExFVElPTl9TVUNDRUVERUQ7CisJc2V2 ZXJpdHkgPSBJRE1FRl9JTVBBQ1RfU0VWRVJJVFlfTE9XOworCQorCXJldCA9IGlkbWVmX2FsZXJ0 X25ld19hc3Nlc3NtZW50KGFsZXJ0LCAmYXNzZXNzbWVudCk7CisJUFJFTFVERV9GQUlMX0NIRUNL OworCXJldCA9IGlkbWVmX2Fzc2Vzc21lbnRfbmV3X2ltcGFjdChhc3Nlc3NtZW50LCAmaW1wYWN0 KTsKKwlQUkVMVURFX0ZBSUxfQ0hFQ0s7CisJaWRtZWZfaW1wYWN0X3NldF9zZXZlcml0eShpbXBh Y3QsIHNldmVyaXR5KTsKKwlQUkVMVURFX0ZBSUxfQ0hFQ0s7CisJaWRtZWZfaW1wYWN0X3NldF90 eXBlKGltcGFjdCwgaW1wYWN0X3R5cGUpOworCVBSRUxVREVfRkFJTF9DSEVDSzsKKwlyZXQgPSBp ZG1lZl9pbXBhY3RfbmV3X2Rlc2NyaXB0aW9uKGltcGFjdCwgJnN0cik7CisJUFJFTFVERV9GQUlM X0NIRUNLOworCXByZWx1ZGVfc3RyaW5nX3NldF9yZWYoc3RyLCBhc3Nlc3NtZW50X2Rlc2NyaXB0 aW9uW0FTX1dBVENIRURfRVhFQ10pOworCVBSRUxVREVfRkFJTF9DSEVDSzsKKworCXNlbmRfaWRt ZWYoY2xpZW50LCBpZG1lZik7CisJaWRtZWZfbWVzc2FnZV9kZXN0cm95KGlkbWVmKTsKKworICAg ICAgICByZXR1cm4gMDsKKworIGVycjoKKwlzeXNsb2coTE9HX0VSUiwgIndhdGNoZWRfZXhlY19h bGVydDogSURNRUYgZXJyb3I6ICVzLlxuIiwgCisJCXByZWx1ZGVfc3RyZXJyb3IocmV0KSk7Cisg ICAgICAgIGlkbWVmX21lc3NhZ2VfZGVzdHJveShpZG1lZik7CisgICAgICAgIHJldHVybiAtMTsK K30KIHN0YXRpYyB2b2lkIGhhbmRsZV9ldmVudChhdXBhcnNlX3N0YXRlX3QgKmF1LAogCQlhdXBh cnNlX2NiX2V2ZW50X3QgY2JfZXZlbnRfdHlwZSwgdm9pZCAqdXNlcl9kYXRhKQogewpAQCAtMjEy OSw2ICsyMjA3LDE1IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9ldmVudChhdXBhcnNlX3N0YXRlX3QK IAkJCQkvLyBUaGUgcHJldmlvdXMgY2FsbCBtb3ZlcyB0aGUgY3VycmVudCByZWNvcmQKIAkJCQlh dXBhcnNlX2dvdG9fcmVjb3JkX251bShhdSwgbnVtKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVVE SVRfVFRZOgorCQkJCWlmIChjb25maWcudHR5ID09IEVfTk8pCisJCQkJCWJyZWFrOworCQkJCWlm IChjb25maWcudHR5X2FjdCAhPSBBX0lETUVGKQorCQkJCQlicmVhazsKKwkJCQlpZiAobmV3X2Fs ZXJ0X2NvbW1vbihhdSwgJmlkbWVmLCAmYWxlcnQpID49IDApeworCQkJCQl0dHlfYWxlcnQoYXUs IGlkbWVmLCBhbGVydCk7CisJCQkJfQorCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlicmVh azsKIAkJfQpkaWZmIC1ydXAgYXVkaXQtMS43LjE4L2F1ZGlzcC9wbHVnaW5zL3ByZWx1ZGUvYXVk aXNwLXByZWx1ZGUuY29uZiBhdWRpdC0xLjcuMTgtYmEvYXVkaXNwL3BsdWdpbnMvcHJlbHVkZS9h dWRpc3AtcHJlbHVkZS5jb25mCi0tLSBhdWRpdC0xLjcuMTgvYXVkaXNwL3BsdWdpbnMvcHJlbHVk ZS9hdWRpc3AtcHJlbHVkZS5jb25mCTIwMTAtMDktMTkgMjE6NTU6MDcuMDAwMDAwMDAwICswMjAw CisrKyBhdWRpdC0xLjcuMTgtYmEvYXVkaXNwL3BsdWdpbnMvcHJlbHVkZS9hdWRpc3AtcHJlbHVk ZS5jb25mCTIwMTEtMDYtMTcgMTI6MTk6MTMuMDAwMDAwMDAwICswMjAwCkBAIC01NiwzICs1Niw2 IEBAIHdhdGNoZWRfZXhlY19hY3Rpb24gPSBpZG1lZgogZGV0ZWN0X3dhdGNoZWRfbWtfZXhlID0g eWVzCiB3YXRjaGVkX21rX2V4ZV9hY3Rpb24gPSBpZG1lZgogCitkZXRlY3RfdHR5ID0geWVzCit0 dHlfYWN0aW9uID0gaWRtZWYKKwpPbmx5IGluIGF1ZGl0LTEuNy4xOC1iYS9hdWRpc3AvcGx1Z2lu cy9wcmVsdWRlOiAuYXVkaXNwLXByZWx1ZGUuYy5zd28KT25seSBpbiBhdWRpdC0xLjcuMTgtYmEv YXVkaXNwL3BsdWdpbnMvcHJlbHVkZTogbGlicHJlbHVkZWRiLTEuMC4wCmRpZmYgLXJ1cCBhdWRp dC0xLjcuMTgvYXVkaXNwL3BsdWdpbnMvcHJlbHVkZS9wcmVsdWRlLWNvbmZpZy5jIGF1ZGl0LTEu Ny4xOC1iYS9hdWRpc3AvcGx1Z2lucy9wcmVsdWRlL3ByZWx1ZGUtY29uZmlnLmMKLS0tIGF1ZGl0 LTEuNy4xOC9hdWRpc3AvcGx1Z2lucy9wcmVsdWRlL3ByZWx1ZGUtY29uZmlnLmMJMjAxMC0wOS0x OSAyMTo1NTowNy4wMDAwMDAwMDAgKzAyMDAKKysrIGF1ZGl0LTEuNy4xOC1iYS9hdWRpc3AvcGx1 Z2lucy9wcmVsdWRlL3ByZWx1ZGUtY29uZmlnLmMJMjAxMS0wNC0yOCAxMDo0NToyNy4wMDAwMDAw MDAgKzAyMDAKQEAgLTEyMiw2ICsxMjIsMTAgQEAgc3RhdGljIGludCB3YXRjaGVkX21rX2V4ZV9w YXJzZXIoc3RydWN0IAogCQlwcmVsdWRlX2NvbmZfdCAqY29uZmlnKTsKIHN0YXRpYyBpbnQgd2F0 Y2hlZF9ta19leGVfYWN0X3BhcnNlcihzdHJ1Y3QgbnZfcGFpciAqbnYsIGludCBsaW5lLCAKIAkJ cHJlbHVkZV9jb25mX3QgKmNvbmZpZyk7CitzdGF0aWMgaW50IHR0eV9wYXJzZXIoc3RydWN0IG52 X3BhaXIgKm52LCBpbnQgbGluZSwgCisJCXByZWx1ZGVfY29uZl90ICpjb25maWcpOworc3RhdGlj IGludCB0dHlfYWN0X3BhcnNlcihzdHJ1Y3QgbnZfcGFpciAqbnYsIGludCBsaW5lLCAKKwkJcHJl bHVkZV9jb25mX3QgKmNvbmZpZyk7CiBzdGF0aWMgaW50IHNhbml0eV9jaGVjayhwcmVsdWRlX2Nv bmZfdCAqY29uZmlnLCBjb25zdCBjaGFyICpmaWxlKTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBr d19wYWlyIGtleXdvcmRzW10gPSAKQEAgLTE1OCw2ICsxNjIsOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGt3X3BhaXIga2V5d29yZHNbXSA9CiAgIHsid2F0Y2hlZF9leGVjX2FjdGlvbiIsICAgICAg ICB3YXRjaGVkX2V4ZWNfYWN0X3BhcnNlciwJMCB9LAogICB7ImRldGVjdF93YXRjaGVkX21rX2V4 ZSIsICAgICAgd2F0Y2hlZF9ta19leGVfcGFyc2VyLAkJMCB9LAogICB7IndhdGNoZWRfbWtfZXhl X2FjdGlvbiIsICAgICAgd2F0Y2hlZF9ta19leGVfYWN0X3BhcnNlciwJMCB9LAorICB7ImRldGVj dF90dHkiLCAgICAgICAgICAgICAgICAgdHR5X3BhcnNlciwJCTAgfSwKKyAgeyJ0dHlfYWN0aW9u IiwgICAgICAgICAgICAgICAgIHR0eV9hY3RfcGFyc2VyLAkwIH0sCiAgIHsgTlVMTCwgICAgICAg ICAgICAgTlVMTCB9CiB9OwogCkBAIC0yMTUsNiArMjIxLDggQEAgdm9pZCBjbGVhcl9jb25maWco cHJlbHVkZV9jb25mX3QgKmNvbmZpZwogCWNvbmZpZy0+d2F0Y2hlZF9leGVjX2FjdCA9IEFfSURN RUY7CiAJY29uZmlnLT53YXRjaGVkX21rX2V4ZSA9IEVfWUVTOwogCWNvbmZpZy0+d2F0Y2hlZF9t a19leGVfYWN0ID0gQV9JRE1FRjsKKwljb25maWctPnR0eSA9IEVfWUVTOworCWNvbmZpZy0+dHR5 X2FjdCA9IEFfSURNRUY7CiAJaWxpc3RfY3JlYXRlKCZjb25maWctPndhdGNoZWRfYWNjb3VudHMp OwogfQogCkBAIC03OTAsNiArNzk4LDIzIEBAIHN0YXRpYyBpbnQgd2F0Y2hlZF9ta19leGVfYWN0 X3BhcnNlcihzdHIKICAgICAgICAgcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBpbnQgdHR5X3BhcnNl cihzdHJ1Y3QgbnZfcGFpciAqbnYsIGludCBsaW5lLAorCXByZWx1ZGVfY29uZl90ICpjb25maWcp Cit7CisJaWYgKGxvb2t1cF9lbmFibGVyKG52LT52YWx1ZSwgJmNvbmZpZy0+dHR5KSA9PSAwKQor CQlyZXR1cm4gMDsKKyAgICAgICAgc3lzbG9nKExPR19FUlIsICJPcHRpb24gJXMgbm90IGZvdW5k IC0gbGluZSAlZCIsIG52LT52YWx1ZSwgbGluZSk7CisgICAgICAgIHJldHVybiAxOworfQorCitz dGF0aWMgaW50IHR0eV9hY3RfcGFyc2VyKHN0cnVjdCBudl9wYWlyICpudiwgaW50IGxpbmUsCisJ cHJlbHVkZV9jb25mX3QgKmNvbmZpZykKK3sKKwlpZiAobG9va3VwX2FjdGlvbihudi0+dmFsdWUs ICZjb25maWctPnR0eV9hY3QpID09IDApCisJCXJldHVybiAwOworICAgICAgICBzeXNsb2coTE9H X0VSUiwgIk9wdGlvbiAlcyBub3QgZm91bmQgLSBsaW5lICVkIiwgbnYtPnZhbHVlLCBsaW5lKTsK KyAgICAgICAgcmV0dXJuIDE7Cit9CiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB3ZSBk byB0aGUgaW50ZWdyYXRlZCBjaGVjayBvZiB0aGUgYXVkaXNwZCBjb25maWcKICAqIG9wdGlvbnMu IEF0IHRoaXMgcG9pbnQsIGFsbCBmaWVsZHMgaGF2ZSBiZWVuIHJlYWQuIFJldHVybnMgMCBpZiBu bwpkaWZmIC1ydXAgYXVkaXQtMS43LjE4L2F1ZGlzcC9wbHVnaW5zL3ByZWx1ZGUvcHJlbHVkZS1j b25maWcuaCBhdWRpdC0xLjcuMTgtYmEvYXVkaXNwL3BsdWdpbnMvcHJlbHVkZS9wcmVsdWRlLWNv bmZpZy5oCi0tLSBhdWRpdC0xLjcuMTgvYXVkaXNwL3BsdWdpbnMvcHJlbHVkZS9wcmVsdWRlLWNv bmZpZy5oCTIwMTAtMDktMTkgMjE6NTU6MDcuMDAwMDAwMDAwICswMjAwCisrKyBhdWRpdC0xLjcu MTgtYmEvYXVkaXNwL3BsdWdpbnMvcHJlbHVkZS9wcmVsdWRlLWNvbmZpZy5oCTIwMTEtMDQtMjcg MTI6MzQ6MjEuMDAwMDAwMDAwICswMjAwCkBAIC02NCw2ICs2NCw4IEBAIHR5cGVkZWYgc3RydWN0 IHByZWx1ZGVfY29uZgogCWFjdGlvbl90IHdhdGNoZWRfZXhlY19hY3Q7CiAJZW5hYmxlX3Qgd2F0 Y2hlZF9ta19leGU7CiAJYWN0aW9uX3Qgd2F0Y2hlZF9ta19leGVfYWN0OworCWVuYWJsZV90IHR0 eTsKKwlhY3Rpb25fdCB0dHlfYWN0OwogfSBwcmVsdWRlX2NvbmZfdDsKIAogdm9pZCBjbGVhcl9j b25maWcocHJlbHVkZV9jb25mX3QgKmNvbmZpZyk7Cg== --=_4cbd6d4b-44d0-4563-83c6-130598736494 Content-Type: text/x-python; name=preludetty.py Content-Disposition: attachment; filename=preludetty.py Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmltcG9ydCBzeXMKaW1wb3J0IGFyZ3BhcnNlCmltcG9ydCB0 aW1lCmZyb20gY2dpIGltcG9ydCBlc2NhcGUKZnJvbSBwcmV0dHl0YWJsZSBpbXBvcnQgUHJldHR5 VGFibGUKZnJvbSBwcmV3aWtrYSBpbXBvcnQgSURNRUZEYXRhYmFzZQpmcm9tIHByZXdpa2thIGlt cG9ydCBDb25maWcKZnJvbSBwcmVsdWRlZGIgaW1wb3J0ICoKZnJvbSBwcmVsdWRlIGltcG9ydCAq CgpjbGFzcyBTdG9yZURhdGUoYXJncGFyc2UuQWN0aW9uKToKCWRlZiBfX2luaXRfXyhzZWxmLG9w dGlvbl9zdHJpbmdzLGRlc3QsIG5hcmdzPU5vbmUsIGNvbnN0PU5vbmUsIGRlZmF1bHQ9Tm9uZSwg dHlwZT1Ob25lLCBjaG9pY2VzPU5vbmUsIHJlcXVpcmVkPUZhbHNlLCBoZWxwPU5vbmUsIG1ldGF2 YXI9Tm9uZSk6CgkJYXJncGFyc2UuQWN0aW9uLl9faW5pdF9fKHNlbGYsIG9wdGlvbl9zdHJpbmdz PW9wdGlvbl9zdHJpbmdzLCBkZXN0PWRlc3QsIG5hcmdzPW5hcmdzLCBjb25zdD1jb25zdCwgZGVm YXVsdD1kZWZhdWx0LCB0eXBlPXR5cGUsCgkJCQkJY2hvaWNlcz1jaG9pY2VzLCByZXF1aXJlZD1y ZXF1aXJlZCwgaGVscD1oZWxwLCBtZXRhdmFyPW1ldGF2YXIgKQoJZGVmIF9fY2FsbF9fKHNlbGYs IHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CgkJdGltZV9i ZWdpbiA9IHRpbWUuc3RycHRpbWUodmFsdWVzLCAiJVktJW0tJWQgJUg6JU06JVMiKQoJCXNldGF0 dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIHRpbWVfYmVnaW4pCgpjbGFzcyBQcmVsdWRlS2V5bG9n Z2VyOgoJcGFyc2VkX2FyZ3MgPSBOb25lCglkZWYgX19pbml0X18oc2VsZixhcmdzKToKCQlzZWxm LnBhcnNlQXJncyhhcmdzKQoKCWRlZiBwYXJzZUFyZ3Moc2VsZiwgYXJndik6CgkJcGFyc2VyID0g YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQoJCXBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0t dXNlcicsIGFjdGlvbj0nYXBwZW5kJywgZGVzdD0ndXNlcicsIGRlZmF1bHQ9W10sIGhlbHA9J1Nw ZWNpZmljIHVzZXIgdG8gcXVlcnksIHJlcGVhdCBmb3IgbXVsdGlwbGUgdXNlcnMnICkKCQlwYXJz ZXIuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb20tdGltZScsIGRlc3Q9J3RpbWVfYmVnaW4nLCBh Y3Rpb249U3RvcmVEYXRlLCBkZWZhdWx0PU5vbmUsIGhlbHA9J1NwZWNpZnkgc3RhcnQgdGltZSBm b3IgcXVlcnlpbmcnKQoJCXBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdG8tdGltZScsIGRl c3Q9J3RpbWVfZW5kJywgYWN0aW9uPVN0b3JlRGF0ZSwgZGVmYXVsdD1Ob25lLCBoZWxwPSdTcGVj aWZ5IGVuZCB0aW1lIGZvciBxdWVyeWluZycpCgkJcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAn LS1ub2RlJywgZGVzdD0nbm9kZScsIGFjdGlvbj0nYXBwZW5kJywgZGVmYXVsdD1bXSwgaGVscD0n U3BlY2lmaWMgbm9kZSB0byBxdWVyeSwgcmVwZWF0IGZvciBtdWx0aXBsZSBub2RlcycpCgkJcGFy c2VyLmFkZF9hcmd1bWVudCgnLS1odG1sJywgZGVzdD0nb3V0cHV0X2h0bWwnLCBhY3Rpb249J3N0 b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdUcmlnZ2VyIEhUTUwgb3V0cHV0JykKCQl0 cnk6CgkJCXNlbGYucGFyc2VkX2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCgkJZXhjZXB0IFZh bHVlRXJyb3I6CgkJCXN5cy5zdGRlcnIud3JpdGUoJ0ludmFsaWQgZGF0ZXRpbWUgZm9ybWF0LCBm b3JtYXQgaXMgIllZWVktTU0tREQgaGg6bW06c3MiXG4nKQoJCQlzeXMuZXhpdCgtMikKCglkZWYg YnVpbGRDcml0ZXJpYShzZWxmKToKCQljcml0ZXJpYT0iYWxlcnQuY2xhc3NpZmljYXRpb24udGV4 dCA9IFwiS2V5bG9nZ2VyXCIiCgkJaWYgKCBzZWxmLnBhcnNlZF9hcmdzLnRpbWVfYmVnaW4gaXMg bm90IE5vbmUgKToKCQkJc3RydGltZSA9IHRpbWUuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVT Iiwgc2VsZi5wYXJzZWRfYXJncy50aW1lX2JlZ2luICkKCQkJY3JpdGVyaWEgPSBjcml0ZXJpYSAr ICcgJiYgYWxlcnQuZGV0ZWN0X3RpbWUgPj0gIicgKyBzdHJ0aW1lICsgJyInCgkJaWYgKCBzZWxm LnBhcnNlZF9hcmdzLnRpbWVfZW5kIGlzIG5vdCBOb25lICk6CgkJCXN0cnRpbWUgPSB0aW1lLnN0 cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsIHNlbGYucGFyc2VkX2FyZ3MudGltZV9lbmQgKQoJ CQljcml0ZXJpYSA9IGNyaXRlcmlhICsgJyAmJiBhbGVydC5kZXRlY3RfdGltZSA8PSAiJyArIHN0 cnRpbWUgKyAnIicKCgkJdXNlcnNfY3JpdGVyaWEgPSBbXQoJCWZvciB1c2VyIGluIHNlbGYucGFy c2VkX2FyZ3MudXNlcjoKCQkJdXNlcnNfY3JpdGVyaWEuYXBwZW5kKCdhbGVydC5zb3VyY2UoLTEp LnVzZXIudXNlcl9pZCgtMSkubmFtZSA9PSAiJyArIHVzZXIgKyAnIicpCgkJaWYgKGxlbih1c2Vy c19jcml0ZXJpYSkgIT0gMCk6CgkJCWNyaXRlcmlhID0gY3JpdGVyaWEgKyAnICYmICggJyArICcg fHwgJy5qb2luKHVzZXJzX2NyaXRlcmlhKSArICcgKScKCgkJbm9kZXNfY3JpdGVyaWEgPSBbXQoJ CWZvciBub2RlIGluIHNlbGYucGFyc2VkX2FyZ3Mubm9kZToKCQkJbm9kZXNfY3JpdGVyaWEuYXBw ZW5kKCdhbGVydC5hbmFseXplcigtMSkubm9kZS5uYW1lID09ICInICsgbm9kZSArICciJykKCQlp ZiAobGVuKG5vZGVzX2NyaXRlcmlhKSAhPSAwKToKCQkJY3JpdGVyaWEgPSBjcml0ZXJpYSArICcg JiYgKCAnICsgJyB8fCAnLmpvaW4obm9kZXNfY3JpdGVyaWEpICsgJyApJwoJCXJldHVybiBjcml0 ZXJpYQoJCQkKCWRlZiBtYWluKHNlbGYpOgoJCWNyaXRlcmlhID0gc2VsZi5idWlsZENyaXRlcmlh KCkKCQljb25maWcgPSBDb25maWcuQ29uZmlnKE5vbmUpCgkJcHJlbHVkZWRiX2luaXQoKQoJCWlk bWVmX2RiID0gSURNRUZEYXRhYmFzZS5JRE1FRkRhdGFiYXNlKGNvbmZpZy5pZG1lZl9kYXRhYmFz ZSkKCQlteV9zZWxlY3Rpb24gPSBwcmVsdWRlZGJfcGF0aF9zZWxlY3Rpb25fbmV3KCkKCQlyZXMg PSBpZG1lZl9kYi5nZXRWYWx1ZXMoWwoJCQkiYWxlcnQuZGV0ZWN0X3RpbWUiLAoJCQkiYWxlcnQu YW5hbHl6ZXIoLTEpLm5vZGUubmFtZSIsCgkJCSJhbGVydC5zb3VyY2UoLTEpLnVzZXIudXNlcl9p ZCgtMSkubmFtZSIsCgkJCSJhbGVydC5zb3VyY2UoLTEpLnVzZXIudXNlcl9pZCgtMSkubnVtYmVy IiwKCQkJImFsZXJ0LnNvdXJjZSgtMSkucHJvY2Vzcy5uYW1lIiwKCQkJImFsZXJ0LnNvdXJjZSgt MSkucHJvY2Vzcy5waWQiLAoJCQkiYWxlcnQuYWRkaXRpb25hbF9kYXRhKDApLmRhdGEiCgkJCV0s Y3JpdGVyaWEpCgkJeCA9IFByZXR0eVRhYmxlKFsnVGltZScsJ05vZGUnLCdVc2VyKHBpZCknLCdQ cm9jZXNzKHBpZCknLCdLZXlzdHJva2VzJ10pCgkJeC5zZXRfZmllbGRfYWxpZ24oIktleXN0cm9r ZXMiLCAibCIpCgkJeC5zZXRfcGFkZGluZ193aWR0aCgxKQoJCWZvciByZWNvcmQgaW4gcmVzOgoJ CQlkZXRlY3RfdGltZT1yZWNvcmRbMF0KCQkJbm9kZV9uYW1lPXJlY29yZFsxXQoJCQl1c2VyX2lk PXJlY29yZFsyXQoJCQl1c2VyX3BpZD1yZWNvcmRbM10KCQkJcHJvY2Vzc19uYW1lPXJlY29yZFs0 XQoJCQlwcm9jZXNzX3BpZD1yZWNvcmRbNV0KCQkJa2V5c3Ryb2tlcz1yZWNvcmRbNl0KCQkJeC5h ZGRfcm93KFtkZXRlY3RfdGltZSwgbm9kZV9uYW1lLCB1c2VyX2lkKycoJytzdHIodXNlcl9waWQp KycpJywgcHJvY2Vzc19uYW1lKycoJytzdHIocHJvY2Vzc19waWQpKycpJywga2V5c3Ryb2tlc10p CgkJCSNwcmludCAiJXNcdCVzXHQlcyglcylcdCVzKCVzKVx0JXMiICUgKCBkZXRlY3RfdGltZSwg bm9kZV9uYW1lLCB1c2VyX2lkLCB1c2VyX3BpZCwgcHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCwg a2V5c3Ryb2tlcykKCQlpZiAoIHNlbGYucGFyc2VkX2FyZ3Mub3V0cHV0X2h0bWwgKToKCQkJcHJp bnQgJzxodG1sPjxoZWFkPjx0aXRsZT5QcmVsdWRlIGtleWxvZ2dlciByZXBvcnQ8L3RpdGxlPjwv aGVhZD48Ym9keT4nCgkJCXByaW50ICc8c3Ryb25nPkNyaXRlcmlhOiA8L3N0cm9uZz48cCBzdHls ZT0iZm9udC1mYW1pbHk6IGZpeGVkc3lzLCBtb25vc3BhY2UiPicgKyBlc2NhcGUoY3JpdGVyaWEp ICsgJzwvcD48YnI+PGJyPicKCQkJeC5wcmludF9odG1sKCkKCQkJcHJpbnQgJzwvYm9keT48L2h0 bWw+JwoJCWVsc2U6CgkJCXByaW50ICJDcml0ZXJpYTogIiArIGNyaXRlcmlhCgkJCXgucHJpbnR0 KCkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CglzeXMuZXhpdChQcmVsdWRlS2V5bG9nZ2Vy KHN5cy5hcmd2KS5tYWluKCkpCgoKCg== --=_4cbd6d4b-44d0-4563-83c6-130598736494 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Prelude-devel site list [email protected] http://lists.prelude-technologies.com/mailman/listinfo/prelude-devel --=_4cbd6d4b-44d0-4563-83c6-130598736494--